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

Side by Side Diff: Source/core/rendering/RenderBlockLineLayout.cpp

Issue 889563002: Make RenderObject::style() return a const object (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Blind fix for Mac. Created 5 years, 10 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) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ight reserved. 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ight reserved.
4 * Copyright (C) 2010 Google Inc. All rights reserved. 4 * Copyright (C) 2010 Google Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 removeFloatingObjectsBelow(lastFloatFromPreviousLine, oldLogicalHeight); 778 removeFloatingObjectsBelow(lastFloatFromPreviousLine, oldLogicalHeight);
779 setLogicalHeight(newLogicalHeight); 779 setLogicalHeight(newLogicalHeight);
780 resolver.setPositionIgnoringNestedIsolates(oldEnd); 780 resolver.setPositionIgnoringNestedIsolates(oldEnd);
781 return oldEnd; 781 return oldEnd;
782 } 782 }
783 783
784 void RenderBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState, 784 void RenderBlockFlow::layoutRunsAndFloatsInRange(LineLayoutState& layoutState,
785 InlineBidiResolver& resolver, const InlineIterator& cleanLineStart, 785 InlineBidiResolver& resolver, const InlineIterator& cleanLineStart,
786 const BidiStatus& cleanLineBidiStatus) 786 const BidiStatus& cleanLineBidiStatus)
787 { 787 {
788 RenderStyle* styleToUse = style(); 788 const RenderStyle* styleToUse = style();
789 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated (); 789 bool paginated = view()->layoutState() && view()->layoutState()->isPaginated ();
790 LineMidpointState& lineMidpointState = resolver.midpointState(); 790 LineMidpointState& lineMidpointState = resolver.midpointState();
791 InlineIterator endOfLine = resolver.position(); 791 InlineIterator endOfLine = resolver.position();
792 bool checkForEndLineMatch = layoutState.endLine(); 792 bool checkForEndLineMatch = layoutState.endLine();
793 RenderTextInfo renderTextInfo; 793 RenderTextInfo renderTextInfo;
794 VerticalPositionCache verticalPositionCache; 794 VerticalPositionCache verticalPositionCache;
795 795
796 LineBreaker lineBreaker(this); 796 LineBreaker lineBreaker(this);
797 797
798 while (!endOfLine.atEnd()) { 798 while (!endOfLine.atEnd()) {
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 1146
1147 static LayoutUnit getBPMWidth(LayoutUnit childValue, Length cssUnit) 1147 static LayoutUnit getBPMWidth(LayoutUnit childValue, Length cssUnit)
1148 { 1148 {
1149 if (cssUnit.type() != Auto) 1149 if (cssUnit.type() != Auto)
1150 return (cssUnit.isFixed() ? static_cast<LayoutUnit>(cssUnit.value()) : c hildValue); 1150 return (cssUnit.isFixed() ? static_cast<LayoutUnit>(cssUnit.value()) : c hildValue);
1151 return LayoutUnit(); 1151 return LayoutUnit();
1152 } 1152 }
1153 1153
1154 static LayoutUnit getBorderPaddingMargin(RenderBoxModelObject* child, bool endOf Inline) 1154 static LayoutUnit getBorderPaddingMargin(RenderBoxModelObject* child, bool endOf Inline)
1155 { 1155 {
1156 RenderStyle* childStyle = child->style(); 1156 const RenderStyle* childStyle = child->style();
1157 if (endOfInline) { 1157 if (endOfInline) {
1158 return getBPMWidth(child->marginEnd(), childStyle->marginEnd()) + 1158 return getBPMWidth(child->marginEnd(), childStyle->marginEnd()) +
1159 getBPMWidth(child->paddingEnd(), childStyle->paddingEnd()) + 1159 getBPMWidth(child->paddingEnd(), childStyle->paddingEnd()) +
1160 child->borderEnd(); 1160 child->borderEnd();
1161 } 1161 }
1162 return getBPMWidth(child->marginStart(), childStyle->marginStart()) + 1162 return getBPMWidth(child->marginStart(), childStyle->marginStart()) +
1163 getBPMWidth(child->paddingStart(), childStyle->paddingStart()) + 1163 getBPMWidth(child->paddingStart(), childStyle->paddingStart()) +
1164 child->borderStart(); 1164 child->borderStart();
1165 } 1165 }
1166 1166
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 return LayoutUnit::fromFloatCeil(value); 1204 return LayoutUnit::fromFloatCeil(value);
1205 } 1205 }
1206 1206
1207 // FIXME: This function should be broken into something less monolithic. 1207 // FIXME: This function should be broken into something less monolithic.
1208 // FIXME: The main loop here is very similar to LineBreaker::nextSegmentBreak. T hey can probably reuse code. 1208 // FIXME: The main loop here is very similar to LineBreaker::nextSegmentBreak. T hey can probably reuse code.
1209 void RenderBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical Width, LayoutUnit& maxLogicalWidth) 1209 void RenderBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical Width, LayoutUnit& maxLogicalWidth)
1210 { 1210 {
1211 FloatWillBeLayoutUnit inlineMax; 1211 FloatWillBeLayoutUnit inlineMax;
1212 FloatWillBeLayoutUnit inlineMin; 1212 FloatWillBeLayoutUnit inlineMin;
1213 1213
1214 RenderStyle* styleToUse = style(); 1214 const RenderStyle* styleToUse = style();
1215 RenderBlock* containingBlock = this->containingBlock(); 1215 RenderBlock* containingBlock = this->containingBlock();
1216 LayoutUnit cw = containingBlock ? containingBlock->contentLogicalWidth() : L ayoutUnit(); 1216 LayoutUnit cw = containingBlock ? containingBlock->contentLogicalWidth() : L ayoutUnit();
1217 1217
1218 // If we are at the start of a line, we want to ignore all white-space. 1218 // If we are at the start of a line, we want to ignore all white-space.
1219 // Also strip spaces if we previously had text that ended in a trailing spac e. 1219 // Also strip spaces if we previously had text that ended in a trailing spac e.
1220 bool stripFrontSpaces = true; 1220 bool stripFrontSpaces = true;
1221 RenderObject* trailingSpaceChild = 0; 1221 RenderObject* trailingSpaceChild = 0;
1222 1222
1223 // Firefox and Opera will allow a table cell to grow to fit an image inside it under 1223 // Firefox and Opera will allow a table cell to grow to fit an image inside it under
1224 // very specific cirucumstances (in order to match common WinIE renderings). 1224 // very specific cirucumstances (in order to match common WinIE renderings).
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 // If the text string starts with whitespace, then we need to go ahe ad and 1272 // If the text string starts with whitespace, then we need to go ahe ad and
1273 // terminate our current line (unless we're already in a whitespace stripping 1273 // terminate our current line (unless we're already in a whitespace stripping
1274 // mode. 1274 // mode.
1275 // 1275 //
1276 // If the text string has a breakable character in the middle, but d idn't start 1276 // If the text string has a breakable character in the middle, but d idn't start
1277 // with whitespace, then we add the width of the first non-breakable run and 1277 // with whitespace, then we add the width of the first non-breakable run and
1278 // then end the current line. We then need to use the intermediate m in/max width 1278 // then end the current line. We then need to use the intermediate m in/max width
1279 // values (if any of them are larger than our current min/max). We t hen look at 1279 // values (if any of them are larger than our current min/max). We t hen look at
1280 // the width of the last non-breakable run and use that to start a n ew line 1280 // the width of the last non-breakable run and use that to start a n ew line
1281 // (unless we end in whitespace). 1281 // (unless we end in whitespace).
1282 RenderStyle* childStyle = child->style(); 1282 const RenderStyle* childStyle = child->style();
1283 FloatWillBeLayoutUnit childMin; 1283 FloatWillBeLayoutUnit childMin;
1284 FloatWillBeLayoutUnit childMax; 1284 FloatWillBeLayoutUnit childMax;
1285 1285
1286 if (!child->isText()) { 1286 if (!child->isText()) {
1287 // Case (1) and (2). Inline replaced and inline flow elements. 1287 // Case (1) and (2). Inline replaced and inline flow elements.
1288 if (child->isRenderInline()) { 1288 if (child->isRenderInline()) {
1289 // Add in padding/border/margin from the appropriate side of 1289 // Add in padding/border/margin from the appropriate side of
1290 // the element. 1290 // the element.
1291 FloatWillBeLayoutUnit bpm = getBorderPaddingMargin(toRenderI nline(child), childIterator.endOfInline); 1291 FloatWillBeLayoutUnit bpm = getBorderPaddingMargin(toRenderI nline(child), childIterator.endOfInline);
1292 childMin += bpm; 1292 childMin += bpm;
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
2051 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false).toFloat (); 2051 float logicalLeft = logicalLeftOffsetForLine(logicalHeight(), false).toFloat ();
2052 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal se) - logicalLeft; 2052 float availableLogicalWidth = logicalRightOffsetForLine(logicalHeight(), fal se) - logicalLeft;
2053 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid th, availableLogicalWidth, 0); 2053 updateLogicalWidthForAlignment(textAlign, 0, 0, logicalLeft, totalLogicalWid th, availableLogicalWidth, 0);
2054 2054
2055 if (!style()->isLeftToRightDirection()) 2055 if (!style()->isLeftToRightDirection())
2056 return logicalWidth() - logicalLeft; 2056 return logicalWidth() - logicalLeft;
2057 return logicalLeft; 2057 return logicalLeft;
2058 } 2058 }
2059 2059
2060 } 2060 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698