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

Side by Side Diff: Source/core/layout/line/LineWidth.cpp

Issue 763173003: Convert RenderBlockFlow code to use FloatingObject references (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 5 years, 6 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
« no previous file with comments | « Source/core/layout/line/LineWidth.h ('k') | Source/core/layout/shapes/ShapeOutsideInfo.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 2 * Copyright (C) 2013 Adobe Systems Incorporated. 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 * 7 *
8 * 1. Redistributions of source code must retain the above 8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following 9 * copyright notice, this list of conditions and the following
10 * disclaimer. 10 * disclaimer.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 void LineWidth::updateAvailableWidth(LayoutUnit replacedHeight) 53 void LineWidth::updateAvailableWidth(LayoutUnit replacedHeight)
54 { 54 {
55 LayoutUnit height = m_block.logicalHeight(); 55 LayoutUnit height = m_block.logicalHeight();
56 LayoutUnit logicalHeight = m_block.minLineHeightForReplacedObject(m_isFirstL ine, replacedHeight); 56 LayoutUnit logicalHeight = m_block.minLineHeightForReplacedObject(m_isFirstL ine, replacedHeight);
57 m_left = m_block.logicalLeftOffsetForLine(height, shouldIndentText(), logica lHeight).toFloat(); 57 m_left = m_block.logicalLeftOffsetForLine(height, shouldIndentText(), logica lHeight).toFloat();
58 m_right = m_block.logicalRightOffsetForLine(height, shouldIndentText(), logi calHeight).toFloat(); 58 m_right = m_block.logicalRightOffsetForLine(height, shouldIndentText(), logi calHeight).toFloat();
59 59
60 computeAvailableWidthFromLeftAndRight(); 60 computeAvailableWidthFromLeftAndRight();
61 } 61 }
62 62
63 void LineWidth::shrinkAvailableWidthForNewFloatIfNeeded(FloatingObject* newFloat ) 63 void LineWidth::shrinkAvailableWidthForNewFloatIfNeeded(const FloatingObject& ne wFloat)
64 { 64 {
65 LayoutUnit height = m_block.logicalHeight(); 65 LayoutUnit height = m_block.logicalHeight();
66 if (height < m_block.logicalTopForFloat(newFloat) || height >= m_block.logic alBottomForFloat(newFloat)) 66 if (height < m_block.logicalTopForFloat(newFloat) || height >= m_block.logic alBottomForFloat(newFloat))
67 return; 67 return;
68 68
69 ShapeOutsideDeltas shapeDeltas; 69 ShapeOutsideDeltas shapeDeltas;
70 if (ShapeOutsideInfo* shapeOutsideInfo = newFloat->layoutObject()->shapeOuts ideInfo()) { 70 if (ShapeOutsideInfo* shapeOutsideInfo = newFloat.layoutObject()->shapeOutsi deInfo()) {
71 LayoutUnit lineHeight = m_block.lineHeight(m_isFirstLine, m_block.isHori zontalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes ); 71 LayoutUnit lineHeight = m_block.lineHeight(m_isFirstLine, m_block.isHori zontalWritingMode() ? HorizontalLine : VerticalLine, PositionOfInteriorLineBoxes );
72 shapeDeltas = shapeOutsideInfo->computeDeltasForContainingBlockLine(m_bl ock, *newFloat, m_block.logicalHeight(), lineHeight); 72 shapeDeltas = shapeOutsideInfo->computeDeltasForContainingBlockLine(m_bl ock, newFloat, m_block.logicalHeight(), lineHeight);
73 } 73 }
74 74
75 if (newFloat->type() == FloatingObject::FloatLeft) { 75 if (newFloat.type() == FloatingObject::FloatLeft) {
76 float newLeft = m_block.logicalRightForFloat(newFloat).toFloat(); 76 float newLeft = m_block.logicalRightForFloat(newFloat).toFloat();
77 if (shapeDeltas.isValid()) { 77 if (shapeDeltas.isValid()) {
78 if (shapeDeltas.lineOverlapsShape()) 78 if (shapeDeltas.lineOverlapsShape())
79 newLeft += shapeDeltas.rightMarginBoxDelta(); 79 newLeft += shapeDeltas.rightMarginBoxDelta();
80 else // Per the CSS Shapes spec, If the line doesn't overlap the sha pe, then ignore this shape for this line. 80 else // Per the CSS Shapes spec, If the line doesn't overlap the sha pe, then ignore this shape for this line.
81 newLeft = m_left; 81 newLeft = m_left;
82 } 82 }
83 if (shouldIndentText() && m_block.style()->isLeftToRightDirection()) 83 if (shouldIndentText() && m_block.style()->isLeftToRightDirection())
84 newLeft += floorToInt(m_block.textIndentOffset()); 84 newLeft += floorToInt(m_block.textIndentOffset());
85 m_left = std::max<float>(m_left, newLeft); 85 m_left = std::max<float>(m_left, newLeft);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 } 190 }
191 updateLineDimension(lastFloatLogicalBottom, newLineWidth, newLineLeft, newLi neRight); 191 updateLineDimension(lastFloatLogicalBottom, newLineWidth, newLineLeft, newLi neRight);
192 } 192 }
193 193
194 void LineWidth::computeAvailableWidthFromLeftAndRight() 194 void LineWidth::computeAvailableWidthFromLeftAndRight()
195 { 195 {
196 m_availableWidth = max(0.0f, m_right - m_left) + m_overhangWidth; 196 m_availableWidth = max(0.0f, m_right - m_left) + m_overhangWidth;
197 } 197 }
198 198
199 } 199 }
OLDNEW
« no previous file with comments | « Source/core/layout/line/LineWidth.h ('k') | Source/core/layout/shapes/ShapeOutsideInfo.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698