Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: Source/core/layout/LayoutMultiColumnFlowThread.cpp

Issue 1124133002: Rename findSetLayoutObjects() to mapDescendantToColumnSet() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 { 88 {
89 LayoutBox* sibling = multicolSet->nextSiblingMultiColumnBox(); 89 LayoutBox* sibling = multicolSet->nextSiblingMultiColumnBox();
90 if (!sibling) 90 if (!sibling)
91 return 0; // By right we should return lastLeafChild() here, but the cal ler doesn't care, so just return 0. 91 return 0; // By right we should return lastLeafChild() here, but the cal ler doesn't care, so just return 0.
92 // Adjacent column content sets should not occur. We would have no way of fi guring out what each 92 // Adjacent column content sets should not occur. We would have no way of fi guring out what each
93 // of them contains then. 93 // of them contains then.
94 ASSERT(sibling->isLayoutMultiColumnSpannerPlaceholder()); 94 ASSERT(sibling->isLayoutMultiColumnSpannerPlaceholder());
95 return toLayoutMultiColumnSpannerPlaceholder(sibling)->layoutObjectInFlowThr ead()->previousInPreOrder(multicolSet->flowThread()); 95 return toLayoutMultiColumnSpannerPlaceholder(sibling)->layoutObjectInFlowThr ead()->previousInPreOrder(multicolSet->flowThread());
96 } 96 }
97 97
98 LayoutMultiColumnSet* LayoutMultiColumnFlowThread::findSetLayoutObjects(LayoutOb ject* layoutObject) const 98 LayoutMultiColumnSet* LayoutMultiColumnFlowThread::mapDescendantToColumnSet(Layo utObject* layoutObject) const
99 { 99 {
100 ASSERT(!containingColumnSpannerPlaceholder(layoutObject)); // should not be used for spanners or content inside them. 100 ASSERT(!containingColumnSpannerPlaceholder(layoutObject)); // should not be used for spanners or content inside them.
101 ASSERT(layoutObject != this); 101 ASSERT(layoutObject != this);
102 ASSERT(layoutObject->isDescendantOf(this)); 102 ASSERT(layoutObject->isDescendantOf(this));
103 LayoutMultiColumnSet* multicolSet = firstMultiColumnSet(); 103 LayoutMultiColumnSet* multicolSet = firstMultiColumnSet();
104 if (!multicolSet) 104 if (!multicolSet)
105 return 0; 105 return 0;
106 if (!multicolSet->nextSiblingMultiColumnSet()) 106 if (!multicolSet->nextSiblingMultiColumnSet())
107 return multicolSet; 107 return multicolSet;
108 108
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 // which means that we simply insert a new spanner place holder at the 509 // which means that we simply insert a new spanner place holder at the
510 // beginning. 510 // beginning.
511 insertBefore = firstMultiColumnBox(); 511 insertBefore = firstMultiColumnBox();
512 } else if (LayoutMultiColumnSpannerPlaceholder* previousPlac eholder = containingColumnSpannerPlaceholder(previousLayoutObject)) { 512 } else if (LayoutMultiColumnSpannerPlaceholder* previousPlac eholder = containingColumnSpannerPlaceholder(previousLayoutObject)) {
513 // Before us is another spanner. We belong right after i t then. 513 // Before us is another spanner. We belong right after i t then.
514 insertBefore = previousPlaceholder->nextSiblingMultiColu mnBox(); 514 insertBefore = previousPlaceholder->nextSiblingMultiColu mnBox();
515 } else { 515 } else {
516 // We're inside regular column content with both feet. F ind out which column 516 // We're inside regular column content with both feet. F ind out which column
517 // set this is. It needs to be split it into two sets, s o that we can insert 517 // set this is. It needs to be split it into two sets, s o that we can insert
518 // a new spanner placeholder between them. 518 // a new spanner placeholder between them.
519 setToSplit = findSetLayoutObjects(previousLayoutObject); 519 setToSplit = mapDescendantToColumnSet(previousLayoutObje ct);
520 ASSERT(setToSplit == findSetLayoutObjects(objectAfterSub tree)); 520 ASSERT(setToSplit == mapDescendantToColumnSet(objectAfte rSubtree));
521 setToSplit->setNeedsLayoutAndFullPaintInvalidation(Layou tInvalidationReason::ColumnsChanged); 521 setToSplit->setNeedsLayoutAndFullPaintInvalidation(Layou tInvalidationReason::ColumnsChanged);
522 insertBefore = setToSplit->nextSiblingMultiColumnBox(); 522 insertBefore = setToSplit->nextSiblingMultiColumnBox();
523 // We've found out which set that needs to be split. Now proceed to 523 // We've found out which set that needs to be split. Now proceed to
524 // inserting the spanner placeholder, and then insert a second column set. 524 // inserting the spanner placeholder, and then insert a second column set.
525 } 525 }
526 } 526 }
527 ASSERT(setToSplit || insertBefore); 527 ASSERT(setToSplit || insertBefore);
528 } 528 }
529 createAndInsertSpannerPlaceholder(toLayoutBox(layoutObject), insertB efore); 529 createAndInsertSpannerPlaceholder(toLayoutBox(layoutObject), insertB efore);
530 if (setToSplit) 530 if (setToSplit)
(...skipping 18 matching lines...) Expand all
549 } 549 }
550 if (objectAfterSubtree) { 550 if (objectAfterSubtree) {
551 if (LayoutMultiColumnSpannerPlaceholder* placeholder = objectAfterSu btree->spannerPlaceholder()) { 551 if (LayoutMultiColumnSpannerPlaceholder* placeholder = objectAfterSu btree->spannerPlaceholder()) {
552 // If inserted right before a spanner, we need to make sure that there's a set for us there. 552 // If inserted right before a spanner, we need to make sure that there's a set for us there.
553 LayoutBox* previous = placeholder->previousSiblingMultiColumnBox (); 553 LayoutBox* previous = placeholder->previousSiblingMultiColumnBox ();
554 if (!previous || !previous->isLayoutMultiColumnSet()) 554 if (!previous || !previous->isLayoutMultiColumnSet())
555 createAndInsertMultiColumnSet(placeholder); 555 createAndInsertMultiColumnSet(placeholder);
556 } else { 556 } else {
557 // Otherwise, since |objectAfterSubtree| isn't a spanner, it has to mean that there's 557 // Otherwise, since |objectAfterSubtree| isn't a spanner, it has to mean that there's
558 // already a set for that content. We can use it for this layout Object too. 558 // already a set for that content. We can use it for this layout Object too.
559 ASSERT(findSetLayoutObjects(objectAfterSubtree)); 559 ASSERT(mapDescendantToColumnSet(objectAfterSubtree));
560 ASSERT(findSetLayoutObjects(layoutObject) == findSetLayoutObject s(objectAfterSubtree)); 560 ASSERT(mapDescendantToColumnSet(layoutObject) == mapDescendantTo ColumnSet(objectAfterSubtree));
561 } 561 }
562 } else { 562 } else {
563 // Inserting at the end. Then we just need to make sure that there's a column set at the end. 563 // Inserting at the end. Then we just need to make sure that there's a column set at the end.
564 LayoutBox* lastColumnBox = lastMultiColumnBox(); 564 LayoutBox* lastColumnBox = lastMultiColumnBox();
565 if (!lastColumnBox || !lastColumnBox->isLayoutMultiColumnSet()) 565 if (!lastColumnBox || !lastColumnBox->isLayoutMultiColumnSet())
566 createAndInsertMultiColumnSet(); 566 createAndInsertMultiColumnSet();
567 } 567 }
568 } 568 }
569 } 569 }
570 570
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 return; // Preceded by column content. Set still needed. 616 return; // Preceded by column content. Set still needed.
617 } 617 }
618 LayoutMultiColumnSpannerPlaceholder* adjacentNextSpannerPlaceholder = 0; 618 LayoutMultiColumnSpannerPlaceholder* adjacentNextSpannerPlaceholder = 0;
619 LayoutObject* nextLayoutObject = descendant->nextInPreOrderAfterChildren(thi s); 619 LayoutObject* nextLayoutObject = descendant->nextInPreOrderAfterChildren(thi s);
620 if (nextLayoutObject) { 620 if (nextLayoutObject) {
621 adjacentNextSpannerPlaceholder = containingColumnSpannerPlaceholder(next LayoutObject); 621 adjacentNextSpannerPlaceholder = containingColumnSpannerPlaceholder(next LayoutObject);
622 if (!adjacentNextSpannerPlaceholder) 622 if (!adjacentNextSpannerPlaceholder)
623 return; // Followed by column content. Set still needed. 623 return; // Followed by column content. Set still needed.
624 } 624 }
625 // We have now determined that, with the removal of |descendant|, we should remove a column 625 // We have now determined that, with the removal of |descendant|, we should remove a column
626 // set. Locate it and remove it. Do it without involving findSetLayoutObject s(), as that might be 626 // set. Locate it and remove it. Do it without involving mapDescendantToColu mnSet(), as that
627 // very slow. Deduce the right set from the spanner placeholders that we've already found. 627 // might be very slow. Deduce the right set from the spanner placeholders th at we've already
628 // found.
628 LayoutMultiColumnSet* columnSetToRemove; 629 LayoutMultiColumnSet* columnSetToRemove;
629 if (adjacentNextSpannerPlaceholder) { 630 if (adjacentNextSpannerPlaceholder) {
630 columnSetToRemove = toLayoutMultiColumnSet(adjacentNextSpannerPlaceholde r->previousSiblingMultiColumnBox()); 631 columnSetToRemove = toLayoutMultiColumnSet(adjacentNextSpannerPlaceholde r->previousSiblingMultiColumnBox());
631 ASSERT(!adjacentPreviousSpannerPlaceholder || columnSetToRemove == adjac entPreviousSpannerPlaceholder->nextSiblingMultiColumnBox()); 632 ASSERT(!adjacentPreviousSpannerPlaceholder || columnSetToRemove == adjac entPreviousSpannerPlaceholder->nextSiblingMultiColumnBox());
632 } else if (adjacentPreviousSpannerPlaceholder) { 633 } else if (adjacentPreviousSpannerPlaceholder) {
633 columnSetToRemove = toLayoutMultiColumnSet(adjacentPreviousSpannerPlaceh older->nextSiblingMultiColumnBox()); 634 columnSetToRemove = toLayoutMultiColumnSet(adjacentPreviousSpannerPlaceh older->nextSiblingMultiColumnBox());
634 } else { 635 } else {
635 // If there were no adjacent spanners, it has to mean that there's only one column set, 636 // If there were no adjacent spanners, it has to mean that there's only one column set,
636 // since it's only spanners that may cause creation of multiple sets. 637 // since it's only spanners that may cause creation of multiple sets.
637 columnSetToRemove = firstMultiColumnSet(); 638 columnSetToRemove = firstMultiColumnSet();
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 } 731 }
731 732
732 bool LayoutMultiColumnFlowThread::isPageLogicalHeightKnown() const 733 bool LayoutMultiColumnFlowThread::isPageLogicalHeightKnown() const
733 { 734 {
734 if (LayoutMultiColumnSet* columnSet = lastMultiColumnSet()) 735 if (LayoutMultiColumnSet* columnSet = lastMultiColumnSet())
735 return columnSet->pageLogicalHeight(); 736 return columnSet->pageLogicalHeight();
736 return false; 737 return false;
737 } 738 }
738 739
739 } 740 }
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutMultiColumnFlowThread.h ('k') | Source/core/layout/LayoutMultiColumnFlowThreadTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698