Home | History | Annotate | Download | only in rendering

Lines Matching refs:layoutState

716 static void deleteLineRange(LineLayoutState& layoutState, RootInlineBox* startLine, RootInlineBox* stopLine = 0)
720 layoutState.updatePaintInvalidationRangeFromBox(boxToDelete);
729 void RenderBlockFlow::layoutRunsAndFloats(LineLayoutState& layoutState)
733 RootInlineBox* startLine = determineStartPosition(layoutState, resolver);
736 layoutState.setLastFloat(m_floatingObjects->set().last().get());
742 if (!layoutState.isFullLayout() && startLine)
743 determineEndPosition(layoutState, startLine, cleanLineStart, cleanLineBidiStatus);
746 if (!layoutState.usesPaintInvalidationBounds())
747 layoutState.setPaintInvalidationRange(logicalHeight());
748 deleteLineRange(layoutState, startLine);
751 if (!layoutState.isFullLayout() && lastRootBox() && lastRootBox()->endsWithBreak()) {
767 layoutRunsAndFloatsInRange(layoutState, resolver, cleanLineStart, cleanLineBidiStatus);
768 linkToEndLineIfNeeded(layoutState);
769 markDirtyFloatsForPaintInvalidation(layoutState.floats());
781 void RenderBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState,
786 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
789 bool checkForEndLineMatch = layoutState.endLine();
798 layoutState.setEndLineMatched(matchedEndLine(layoutState, resolver, cleanLineStart, cleanLineBidiStatus));
799 if (layoutState.endLineMatched()) {
807 layoutState.lineInfo().setEmpty(true);
808 layoutState.lineInfo().resetRunsFromLeadingWhitespace();
811 bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly();
815 endOfLine = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), renderTextInfo,
823 layoutState.setCheckForFloatsFromLastLine(true);
831 if (layoutState.lineInfo().isEmpty()) {
842 constructBidiRunsForLine(resolver, bidiRuns, endOfLine, override, layoutState.lineInfo().previousLineBrokeCleanly(), isNewUBAParagraph);
855 RootInlineBox* lineBox = createLineBoxesFromBidiRuns(resolver.status().context->level(), bidiRuns, endOfLine, layoutState.lineInfo(), verticalPositionCache, trailingSpaceRun, wordMeasurements);
862 if (layoutState.usesPaintInvalidationBounds())
863 layoutState.updatePaintInvalidationRangeFromBox(lineBox);
867 adjustLinePositionForPagination(lineBox, adjustment, layoutState.flowThread());
869 LayoutUnit oldLineWidth = availableLogicalWidthForLine(oldLogicalHeight, layoutState.lineInfo().isFirstLine());
871 if (layoutState.usesPaintInvalidationBounds())
872 layoutState.updatePaintInvalidationRangeFromBox(lineBox);
874 if (availableLogicalWidthForLine(oldLogicalHeight + adjustment, layoutState.lineInfo().isFirstLine()) != oldLineWidth) {
890 if (!layoutState.lineInfo().isEmpty()) {
891 layoutState.lineInfo().setFirstLine(false);
899 if (layoutState.lastFloat()) {
900 FloatingObjectSetIterator lastFloatIterator = floatingObjectSet.find(layoutState.lastFloat());
908 ASSERT(f->renderer() == layoutState.floats()[layoutState.floatIndex()].object);
910 if (layoutState.floats()[layoutState.floatIndex()].rect != f->frameRect())
912 layoutState.setFloatIndex(layoutState.floatIndex() + 1);
914 layoutState.setLastFloat(!floatingObjectSet.isEmpty() ? floatingObjectSet.last().get() : 0);
984 void RenderBlockFlow::linkToEndLineIfNeeded(LineLayoutState& layoutState)
986 if (layoutState.endLine()) {
987 if (layoutState.endLineMatched()) {
988 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
990 LayoutUnit delta = logicalHeight() - layoutState.endLineLogicalTop();
991 for (RootInlineBox* line = layoutState.endLine(); line; line = line->nextRootBox()) {
995 adjustLinePositionForPagination(line, delta, layoutState.flowThread());
998 layoutState.updatePaintInvalidationRangeFromBox(line, delta);
1015 deleteLineRange(layoutState, layoutState.endLine());
1019 if (m_floatingObjects && (layoutState.checkForFloatsFromLastLine() || positionNewFloats()) && lastRootBox()) {
1026 if (layoutState.lastFloat()) {
1027 FloatingObjectSetIterator lastFloatIterator = floatingObjectSet.find(layoutState.lastFloat());
1032 layoutState.setLastFloat(!floatingObjectSet.isEmpty() ? floatingObjectSet.last().get() : 0);
1037 if (layoutState.checkForFloatsFromLastLine()) {
1511 LineLayoutState layoutState(isFullLayout, paintInvalidationLogicalTop, paintInvalidationLogicalBottom, flowThread);
1546 if (!layoutState.hasInlineChild() && o->isInline())
1547 layoutState.setHasInlineChild(true);
1557 layoutState.floats().append(FloatWithRect(box));
1568 toRenderInline(o)->updateAlwaysCreateLineBoxes(layoutState.isFullLayout());
1569 if (layoutState.isFullLayout() || o->selfNeedsLayout())
1570 dirtyLineBoxesForRenderer(o, layoutState.isFullLayout());
1578 layoutRunsAndFloats(layoutState);
1637 RootInlineBox* RenderBlockFlow::determineStartPosition(LineLayoutState& layoutState, InlineBidiResolver& resolver)
1644 if (!layoutState.isFullLayout()) {
1646 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
1652 adjustLinePositionForPagination(curr, paginationDelta, layoutState.flowThread());
1654 if (containsFloats() || !layoutState.floats().isEmpty()) {
1656 layoutState.markForFullLayout();
1660 layoutState.updatePaintInvalidationRangeFromBox(curr, paginationDelta);
1667 checkFloatsInCleanLine(curr, layoutState.floats(), floatIndex, encounteredNewFloat, dirtiedByFloat);
1669 layoutState.markForFullLayout();
1671 if (dirtiedByFloat || layoutState.isFullLayout())
1675 if (!curr && floatIndex < layoutState.floats().size())
1676 layoutState.markForFullLayout();
1679 if (layoutState.isFullLayout()) {
1681 if (layoutState.hasInlineChild() && !selfNeedsLayout()) {
1718 if (!layoutState.floats().isEmpty()) {
1731 ASSERT(layoutState.floats()[numCleanFloats].object == *f);
1739 layoutState.setFloatIndex(numCleanFloats);
1741 layoutState.lineInfo().setFirstLine(!last);
1742 layoutState.lineInfo().setPreviousLineBrokeCleanly(!last || last->endsWithBreak());
1760 void RenderBlockFlow::determineEndPosition(LineLayoutState& layoutState, RootInlineBox* startLine, InlineIterator& cleanLineStart, BidiStatus& cleanLineBidiStatus)
1762 ASSERT(!layoutState.endLine());
1763 size_t floatIndex = layoutState.floatIndex();
1769 checkFloatsInCleanLine(curr, layoutState.floats(), floatIndex, encounteredNewFloat, dirtiedByFloat);
1788 layoutState.setEndLineLogicalTop(prev->lineBottomWithLeading());
1794 layoutState.setEndLine(last);
1797 bool RenderBlockFlow::checkPaginationAndFloatsAtEndLine(LineLayoutState& layoutState)
1799 LayoutUnit lineDelta = logicalHeight() - layoutState.endLineLogicalTop();
1801 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
1802 if (paginated && layoutState.flowThread()) {
1805 for (RootInlineBox* lineBox = layoutState.endLine(); lineBox; lineBox = lineBox->nextRootBox()) {
1811 adjustLinePositionForPagination(lineBox, lineDelta, layoutState.flowThread());
1821 LayoutUnit logicalTop = std::min(logicalHeight(), layoutState.endLineLogicalTop());
1823 RootInlineBox* lastLine = layoutState.endLine();
1840 bool RenderBlockFlow::matchedEndLine(LineLayoutState& layoutState, const InlineBidiResolver& resolver, const InlineIterator& endLineStart, const BidiStatus& endLineStatus)
1845 return checkPaginationAndFloatsAtEndLine(layoutState);
1851 RootInlineBox* originalEndLine = layoutState.endLine();
1861 layoutState.setEndLine(result);
1863 layoutState.setEndLineLogicalTop(line->lineBottomWithLeading());
1864 matched = checkPaginationAndFloatsAtEndLine(layoutState);
1868 deleteLineRange(layoutState, originalEndLine, result);