Home | History | Annotate | Download | only in rendering

Lines Matching refs:layoutState

861 static void deleteLineRange(LineLayoutState& layoutState, RootInlineBox* startLine, RootInlineBox* stopLine = 0)
865 layoutState.updateRepaintRangeFromBox(boxToDelete);
874 void RenderBlockFlow::layoutRunsAndFloats(LineLayoutState& layoutState)
878 RootInlineBox* startLine = determineStartPosition(layoutState, resolver);
887 layoutState.setLastFloat(m_floatingObjects->set().last().get());
893 if (!layoutState.isFullLayout() && startLine)
894 determineEndPosition(layoutState, startLine, cleanLineStart, cleanLineBidiStatus);
897 if (!layoutState.usesRepaintBounds())
898 layoutState.setRepaintRange(logicalHeight());
899 deleteLineRange(layoutState, startLine);
902 if (!layoutState.isFullLayout() && lastRootBox() && lastRootBox()->endsWithBreak()) {
918 layoutRunsAndFloatsInRange(layoutState, resolver, cleanLineStart, cleanLineBidiStatus, consecutiveHyphenatedLines);
919 linkToEndLineIfNeeded(layoutState);
920 repaintDirtyFloats(layoutState.floats());
932 void RenderBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState, InlineBidiResolver& resolver, const InlineIterator& cleanLineStart, const BidiStatus& cleanLineBidiStatus, unsigned consecutiveHyphenatedLines)
935 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
938 bool checkForEndLineMatch = layoutState.endLine();
949 layoutState.setEndLineMatched(matchedEndLine(layoutState, resolver, cleanLineStart, cleanLineBidiStatus));
950 if (layoutState.endLineMatched()) {
958 layoutState.lineInfo().setEmpty(true);
959 layoutState.lineInfo().resetRunsFromLeadingWhitespace();
962 bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly();
966 endOfLine = lineBreaker.nextLineBreak(resolver, layoutState.lineInfo(), renderTextInfo, lastFloatFromPreviousLine, consecutiveHyphenatedLines, wordMeasurements);
973 layoutState.setCheckForFloatsFromLastLine(true);
981 if (layoutState.lineInfo().isEmpty()) {
992 constructBidiRunsForLine(this, resolver, bidiRuns, endOfLine, override, layoutState.lineInfo().previousLineBrokeCleanly(), isNewUBAParagraph);
1008 RootInlineBox* lineBox = createLineBoxesFromBidiRuns(resolver.status().context->level(), bidiRuns, endOfLine, layoutState.lineInfo(), verticalPositionCache, trailingSpaceRun, wordMeasurements);
1015 if (layoutState.usesRepaintBounds())
1016 layoutState.updateRepaintRangeFromBox(lineBox);
1020 adjustLinePositionForPagination(lineBox, adjustment, layoutState.flowThread());
1022 LayoutUnit oldLineWidth = availableLogicalWidthForLine(oldLogicalHeight, layoutState.lineInfo().isFirstLine());
1024 if (layoutState.usesRepaintBounds())
1025 layoutState.updateRepaintRangeFromBox(lineBox);
1027 if (availableLogicalWidthForLine(oldLogicalHeight + adjustment, layoutState.lineInfo().isFirstLine()) != oldLineWidth) {
1043 if (!layoutState.lineInfo().isEmpty()) {
1044 layoutState.lineInfo().setFirstLine(false);
1052 if (layoutState.lastFloat()) {
1053 FloatingObjectSetIterator lastFloatIterator = floatingObjectSet.find(layoutState.lastFloat());
1061 ASSERT(f->renderer() == layoutState.floats()[layoutState.floatIndex()].object);
1063 if (layoutState.floats()[layoutState.floatIndex()].rect != f->frameRect())
1065 layoutState.setFloatIndex(layoutState.floatIndex() + 1);
1067 layoutState.setLastFloat(!floatingObjectSet.isEmpty() ? floatingObjectSet.last().get() : 0);
1137 void RenderBlockFlow::linkToEndLineIfNeeded(LineLayoutState& layoutState)
1139 if (layoutState.endLine()) {
1140 if (layoutState.endLineMatched()) {
1141 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
1143 LayoutUnit delta = logicalHeight() - layoutState.endLineLogicalTop();
1144 for (RootInlineBox* line = layoutState.endLine(); line; line = line->nextRootBox()) {
1148 adjustLinePositionForPagination(line, delta, layoutState.flowThread());
1151 layoutState.updateRepaintRangeFromBox(line, delta);
1168 deleteLineRange(layoutState, layoutState.endLine());
1172 if (m_floatingObjects && (layoutState.checkForFloatsFromLastLine() || positionNewFloats()) && lastRootBox()) {
1176 if (layoutState.checkForFloatsFromLastLine()) {
1196 if (layoutState.lastFloat()) {
1197 FloatingObjectSetIterator lastFloatIterator = floatingObjectSet.find(layoutState.lastFloat());
1204 layoutState.setLastFloat(!floatingObjectSet.isEmpty() ? floatingObjectSet.last().get() : 0);
1663 LineLayoutState layoutState(isFullLayout, repaintLogicalTop, repaintLogicalBottom, flowThread);
1694 layoutState.hasInlineChild() && o->isInline())
1695 layoutState.setHasInlineChild(true);
1705 layoutState.floats().append(FloatWithRect(box));
1716 toRenderInline(o)->updateAlwaysCreateLineBoxes(layoutState.isFullLayout());
1717 if (layoutState.isFullLayout() || o->selfNeedsLayout())
1718 dirtyLineBoxesForRenderer(o, layoutState.isFullLayout());
1726 layoutRunsAndFloats(layoutState);
1781 RootInlineBox* RenderBlockFlow::determineStartPosition(LineLayoutState& layoutState, InlineBidiResolver& resolver)
1788 if (!layoutState.isFullLayout()) {
1790 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
1796 adjustLinePositionForPagination(curr, paginationDelta, layoutState.flowThread());
1798 if (containsFloats() || !layoutState.floats().isEmpty()) {
1800 layoutState.markForFullLayout();
1804 layoutState.updateRepaintRangeFromBox(curr, paginationDelta);
1811 checkFloatsInCleanLine(curr, layoutState.floats(), floatIndex, encounteredNewFloat, dirtiedByFloat);
1813 layoutState.markForFullLayout();
1815 if (dirtiedByFloat || layoutState.isFullLayout())
1819 if (!curr && floatIndex < layoutState.floats().size())
1820 layoutState.markForFullLayout();
1823 if (layoutState.isFullLayout()) {
1825 if (layoutState.hasInlineChild() && !selfNeedsLayout()) {
1863 if (!layoutState.floats().isEmpty()) {
1876 ASSERT(layoutState.floats()[numCleanFloats].object == *f);
1884 layoutState.setFloatIndex(numCleanFloats);
1886 layoutState.lineInfo().setFirstLine(!last);
1887 layoutState.lineInfo().setPreviousLineBrokeCleanly(!last || last->endsWithBreak());
1905 void RenderBlockFlow::determineEndPosition(LineLayoutState& layoutState, RootInlineBox* startLine, InlineIterator& cleanLineStart, BidiStatus& cleanLineBidiStatus)
1907 ASSERT(!layoutState.endLine());
1908 size_t floatIndex = layoutState.floatIndex();
1914 checkFloatsInCleanLine(curr, layoutState.floats(), floatIndex, encounteredNewFloat, dirtiedByFloat);
1933 layoutState.setEndLineLogicalTop(prev->lineBottomWithLeading());
1939 layoutState.setEndLine(last);
1942 bool RenderBlockFlow::checkPaginationAndFloatsAtEndLine(LineLayoutState& layoutState)
1944 LayoutUnit lineDelta = logicalHeight() - layoutState.endLineLogicalTop();
1946 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated();
1947 if (paginated && layoutState.flowThread()) {
1950 for (RootInlineBox* lineBox = layoutState.endLine(); lineBox; lineBox = lineBox->nextRootBox()) {
1956 adjustLinePositionForPagination(lineBox, lineDelta, layoutState.flowThread());
1966 LayoutUnit logicalTop = min(logicalHeight(), layoutState.endLineLogicalTop());
1968 RootInlineBox* lastLine = layoutState.endLine();
1985 bool RenderBlockFlow::matchedEndLine(LineLayoutState& layoutState, const InlineBidiResolver& resolver, const InlineIterator& endLineStart, const BidiStatus& endLineStatus)
1990 return checkPaginationAndFloatsAtEndLine(layoutState);
1996 RootInlineBox* originalEndLine = layoutState.endLine();
2006 layoutState.setEndLine(result);
2008 layoutState.setEndLineLogicalTop(line->lineBottomWithLeading());
2009 matched = checkPaginationAndFloatsAtEndLine(layoutState);
2013 deleteLineRange(layoutState, originalEndLine, result);