| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 12 * Library General Public License for more details. | 12 * Library General Public License for more details. |
| 13 * | 13 * |
| 14 * You should have received a copy of the GNU Library General Public License | 14 * You should have received a copy of the GNU Library General Public License |
| 15 * along with this library; see the file COPYING.LIB. If not, write to | 15 * along with this library; see the file COPYING.LIB. If not, write to |
| 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 17 * Boston, MA 02110-1301, USA. | 17 * Boston, MA 02110-1301, USA. |
| 18 * | 18 * |
| 19 */ | 19 */ |
| 20 | 20 |
| 21 #ifndef InlineFlowBox_h | 21 #ifndef InlineFlowBox_h |
| 22 #define InlineFlowBox_h | 22 #define InlineFlowBox_h |
| 23 | 23 |
| 24 #include "core/layout/LayoutObjectInlines.h" | 24 #include "core/layout/LayoutObjectInlines.h" |
| 25 #include "core/layout/OverflowModel.h" | 25 #include "core/layout/OverflowModel.h" |
| 26 #include "core/layout/line/FloatToLayoutUnit.h" | |
| 27 #include "core/layout/line/InlineBox.h" | 26 #include "core/layout/line/InlineBox.h" |
| 28 #include "core/style/ShadowData.h" | 27 #include "core/style/ShadowData.h" |
| 29 | 28 |
| 30 namespace blink { | 29 namespace blink { |
| 31 | 30 |
| 32 class HitTestRequest; | 31 class HitTestRequest; |
| 33 class HitTestResult; | 32 class HitTestResult; |
| 34 class InlineTextBox; | 33 class InlineTextBox; |
| 35 class LineBoxList; | 34 class LineBoxList; |
| 36 class SimpleFontData; | 35 class SimpleFontData; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 { | 99 { |
| 101 InlineBox::setConstructed(); | 100 InlineBox::setConstructed(); |
| 102 for (InlineBox* child = firstChild(); child; child = child->nextOnLine()
) | 101 for (InlineBox* child = firstChild(); child; child = child->nextOnLine()
) |
| 103 child->setConstructed(); | 102 child->setConstructed(); |
| 104 } | 103 } |
| 105 | 104 |
| 106 void addToLine(InlineBox* child); | 105 void addToLine(InlineBox* child); |
| 107 virtual void deleteLine() override final; | 106 virtual void deleteLine() override final; |
| 108 virtual void extractLine() override final; | 107 virtual void extractLine() override final; |
| 109 virtual void attachLine() override final; | 108 virtual void attachLine() override final; |
| 110 virtual void adjustPosition(FloatWillBeLayoutUnit dx, FloatWillBeLayoutUnit
dy) override; | 109 virtual void adjustPosition(LayoutUnit dx, LayoutUnit dy) override; |
| 111 | 110 |
| 112 virtual void extractLineBoxFromLayoutObject(); | 111 virtual void extractLineBoxFromLayoutObject(); |
| 113 virtual void attachLineBoxToLayoutObject(); | 112 virtual void attachLineBoxToLayoutObject(); |
| 114 virtual void removeLineBoxFromLayoutObject(); | 113 virtual void removeLineBoxFromLayoutObject(); |
| 115 | 114 |
| 116 virtual void clearTruncation() override; | 115 virtual void clearTruncation() override; |
| 117 | 116 |
| 118 IntRect roundedFrameRect() const; | 117 IntRect roundedFrameRect() const; |
| 119 | 118 |
| 120 virtual void paint(const PaintInfo&, const LayoutPoint&, LayoutUnit lineTop,
LayoutUnit lineBottom) override; | 119 virtual void paint(const PaintInfo&, const LayoutPoint&, LayoutUnit lineTop,
LayoutUnit lineBottom) override; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 bool includeLogicalRightEdge() const { return m_includeLogicalRightEdge; } | 167 bool includeLogicalRightEdge() const { return m_includeLogicalRightEdge; } |
| 169 void setEdges(bool includeLeft, bool includeRight) | 168 void setEdges(bool includeLeft, bool includeRight) |
| 170 { | 169 { |
| 171 m_includeLogicalLeftEdge = includeLeft; | 170 m_includeLogicalLeftEdge = includeLeft; |
| 172 m_includeLogicalRightEdge = includeRight; | 171 m_includeLogicalRightEdge = includeRight; |
| 173 } | 172 } |
| 174 | 173 |
| 175 // Helper functions used during line construction and placement. | 174 // Helper functions used during line construction and placement. |
| 176 void determineSpacingForFlowBoxes(bool lastLine, bool isLogicallyLastRunWrap
ped, LayoutObject* logicallyLastRunLayoutObject); | 175 void determineSpacingForFlowBoxes(bool lastLine, bool isLogicallyLastRunWrap
ped, LayoutObject* logicallyLastRunLayoutObject); |
| 177 LayoutUnit getFlowSpacingLogicalWidth(); | 176 LayoutUnit getFlowSpacingLogicalWidth(); |
| 178 FloatWillBeLayoutUnit placeBoxesInInlineDirection(FloatWillBeLayoutUnit logi
calLeft, bool& needsWordSpacing); | 177 LayoutUnit placeBoxesInInlineDirection(LayoutUnit logicalLeft, bool& needsWo
rdSpacing); |
| 179 FloatWillBeLayoutUnit placeBoxRangeInInlineDirection(InlineBox* firstChild,
InlineBox* lastChild, | 178 LayoutUnit placeBoxRangeInInlineDirection(InlineBox* firstChild, InlineBox*
lastChild, |
| 180 FloatWillBeLayoutUnit& logicalLeft, FloatWillBeLayoutUnit& minLogicalLef
t, FloatWillBeLayoutUnit& maxLogicalRight, bool& needsWordSpacing); | 179 LayoutUnit& logicalLeft, LayoutUnit& minLogicalLeft, LayoutUnit& maxLogi
calRight, bool& needsWordSpacing); |
| 181 void beginPlacingBoxRangesInInlineDirection(FloatWillBeLayoutUnit logicalLef
t) { setLogicalLeft(logicalLeft); } | 180 void beginPlacingBoxRangesInInlineDirection(LayoutUnit logicalLeft) { setLog
icalLeft(logicalLeft); } |
| 182 void endPlacingBoxRangesInInlineDirection(FloatWillBeLayoutUnit logicalLeft,
FloatWillBeLayoutUnit logicalRight, FloatWillBeLayoutUnit minLogicalLeft, Float
WillBeLayoutUnit maxLogicalRight) | 181 void endPlacingBoxRangesInInlineDirection(LayoutUnit logicalLeft, LayoutUnit
logicalRight, LayoutUnit minLogicalLeft, LayoutUnit maxLogicalRight) |
| 183 { | 182 { |
| 184 setLogicalWidth(logicalRight - logicalLeft); | 183 setLogicalWidth(logicalRight - logicalLeft); |
| 185 if (knownToHaveNoOverflow() && (minLogicalLeft < logicalLeft || maxLogic
alRight > logicalRight)) | 184 if (knownToHaveNoOverflow() && (minLogicalLeft < logicalLeft || maxLogic
alRight > logicalRight)) |
| 186 clearKnownToHaveNoOverflow(); | 185 clearKnownToHaveNoOverflow(); |
| 187 } | 186 } |
| 188 | 187 |
| 189 void computeLogicalBoxHeights(RootInlineBox*, LayoutUnit& maxPositionTop, La
youtUnit& maxPositionBottom, int& maxAscent, int& maxDescent, bool& setMaxAscent
, bool& setMaxDescent, bool strictMode, GlyphOverflowAndFallbackFontsMap&, FontB
aseline, VerticalPositionCache&); | 188 void computeLogicalBoxHeights(RootInlineBox*, LayoutUnit& maxPositionTop, La
youtUnit& maxPositionBottom, int& maxAscent, int& maxDescent, bool& setMaxAscent
, bool& setMaxDescent, bool strictMode, GlyphOverflowAndFallbackFontsMap&, FontB
aseline, VerticalPositionCache&); |
| 190 void adjustMaxAscentAndDescent(int& maxAscent, int& maxDescent, int maxPosit
ionTop, int maxPositionBottom); | 189 void adjustMaxAscentAndDescent(int& maxAscent, int& maxDescent, int maxPosit
ionTop, int maxPositionBottom); |
| 191 void placeBoxesInBlockDirection(LayoutUnit logicalTop, LayoutUnit maxHeight,
int maxAscent, bool strictMode, LayoutUnit& lineTop, LayoutUnit& lineBottom, La
youtUnit& selectionBottom, bool& setLineTop, LayoutUnit& lineTopIncludingMargins
, LayoutUnit& lineBottomIncludingMargins, bool& hasAnnotationsBefore, bool& hasA
nnotationsAfter, FontBaseline); | 190 void placeBoxesInBlockDirection(LayoutUnit logicalTop, LayoutUnit maxHeight,
int maxAscent, bool strictMode, LayoutUnit& lineTop, LayoutUnit& lineBottom, La
youtUnit& selectionBottom, bool& setLineTop, LayoutUnit& lineTopIncludingMargins
, LayoutUnit& lineBottomIncludingMargins, bool& hasAnnotationsBefore, bool& hasA
nnotationsAfter, FontBaseline); |
| 192 void flipLinesInBlockDirection(LayoutUnit lineTop, LayoutUnit lineBottom); | 191 void flipLinesInBlockDirection(LayoutUnit lineTop, LayoutUnit lineBottom); |
| 193 FontBaseline dominantBaseline() const; | 192 FontBaseline dominantBaseline() const; |
| 194 | 193 |
| 195 LayoutUnit computeOverAnnotationAdjustment(LayoutUnit allowedPosition) const
; | 194 LayoutUnit computeOverAnnotationAdjustment(LayoutUnit allowedPosition) const
; |
| 196 LayoutUnit computeUnderAnnotationAdjustment(LayoutUnit allowedPosition) cons
t; | 195 LayoutUnit computeUnderAnnotationAdjustment(LayoutUnit allowedPosition) cons
t; |
| 197 | 196 |
| 198 void computeOverflow(LayoutUnit lineTop, LayoutUnit lineBottom, GlyphOverflo
wAndFallbackFontsMap&); | 197 void computeOverflow(LayoutUnit lineTop, LayoutUnit lineBottom, GlyphOverflo
wAndFallbackFontsMap&); |
| 199 | 198 |
| 200 void removeChild(InlineBox* child, MarkLineBoxes); | 199 void removeChild(InlineBox* child, MarkLineBoxes); |
| 201 | 200 |
| 202 virtual LayoutObject::SelectionState selectionState() const override; | 201 virtual LayoutObject::SelectionState selectionState() const override; |
| 203 | 202 |
| 204 virtual bool canAccommodateEllipsis(bool ltr, int blockEdge, int ellipsisWid
th) const override final; | 203 virtual bool canAccommodateEllipsis(bool ltr, int blockEdge, int ellipsisWid
th) const override final; |
| 205 virtual FloatWillBeLayoutUnit placeEllipsisBox(bool ltr, FloatWillBeLayoutUn
it blockLeftEdge, FloatWillBeLayoutUnit blockRightEdge, FloatWillBeLayoutUnit el
lipsisWidth, FloatWillBeLayoutUnit &truncatedWidth, bool&) override; | 204 virtual LayoutUnit placeEllipsisBox(bool ltr, LayoutUnit blockLeftEdge, Layo
utUnit blockRightEdge, LayoutUnit ellipsisWidth, LayoutUnit &truncatedWidth, boo
l&) override; |
| 206 | 205 |
| 207 bool hasTextChildren() const { return m_hasTextChildren; } | 206 bool hasTextChildren() const { return m_hasTextChildren; } |
| 208 bool hasTextDescendants() const { return m_hasTextDescendants; } | 207 bool hasTextDescendants() const { return m_hasTextDescendants; } |
| 209 void setHasTextDescendants() { m_hasTextDescendants = true; } | 208 void setHasTextDescendants() { m_hasTextDescendants = true; } |
| 210 | 209 |
| 211 void checkConsistency() const; | 210 void checkConsistency() const; |
| 212 void setHasBadChildList(); | 211 void setHasBadChildList(); |
| 213 | 212 |
| 214 // Line visual and layout overflow are in the coordinate space of the block.
This means that they aren't purely physical directions. | 213 // Line visual and layout overflow are in the coordinate space of the block.
This means that they aren't purely physical directions. |
| 215 // For horizontal-tb and vertical-lr they will match physical directions, bu
t for horizontal-bt and vertical-rl, the top/bottom and left/right | 214 // For horizontal-tb and vertical-lr they will match physical directions, bu
t for horizontal-bt and vertical-rl, the top/bottom and left/right |
| 216 // respectively are flipped when compared to their physical counterparts. F
or example minX is on the left in vertical-lr, but it is on the right in vertica
l-rl. | 215 // respectively are flipped when compared to their physical counterparts. F
or example minX is on the left in vertical-lr, but it is on the right in vertica
l-rl. |
| 217 LayoutRect layoutOverflowRect(LayoutUnit lineTop, LayoutUnit lineBottom) con
st | 216 LayoutRect layoutOverflowRect(LayoutUnit lineTop, LayoutUnit lineBottom) con
st |
| 218 { | 217 { |
| 219 // FIXME: the call to enclosingLayoutRect() below is temporary and shoul
d be removed once | 218 // FIXME: the call to enclosingLayoutRect() below is temporary and shoul
d be removed once |
| 220 // the transition to LayoutUnit-based types is complete (crbug.com/32123
7) | 219 // the transition to LayoutUnit-based types is complete (crbug.com/32123
7) |
| 221 return m_overflow ? m_overflow->layoutOverflowRect() : frameRectIncludin
gLineHeight(lineTop, lineBottom).enclosingLayoutRect(); | 220 return m_overflow ? m_overflow->layoutOverflowRect() : enclosingLayoutRe
ct(frameRectIncludingLineHeight(lineTop, lineBottom)); |
| 222 } | 221 } |
| 223 LayoutUnit logicalTopLayoutOverflow(LayoutUnit lineTop) const | 222 LayoutUnit logicalTopLayoutOverflow(LayoutUnit lineTop) const |
| 224 { | 223 { |
| 225 if (m_overflow) | 224 if (m_overflow) |
| 226 return isHorizontal() ? m_overflow->layoutOverflowRect().y() : m_ove
rflow->layoutOverflowRect().x(); | 225 return isHorizontal() ? m_overflow->layoutOverflowRect().y() : m_ove
rflow->layoutOverflowRect().x(); |
| 227 return lineTop; | 226 return lineTop; |
| 228 } | 227 } |
| 229 LayoutUnit logicalBottomLayoutOverflow(LayoutUnit lineBottom) const | 228 LayoutUnit logicalBottomLayoutOverflow(LayoutUnit lineBottom) const |
| 230 { | 229 { |
| 231 if (m_overflow) | 230 if (m_overflow) |
| 232 return isHorizontal() ? m_overflow->layoutOverflowRect().maxY() : m_
overflow->layoutOverflowRect().maxX(); | 231 return isHorizontal() ? m_overflow->layoutOverflowRect().maxY() : m_
overflow->layoutOverflowRect().maxX(); |
| 233 return lineBottom; | 232 return lineBottom; |
| 234 } | 233 } |
| 235 LayoutRect logicalLayoutOverflowRect(LayoutUnit lineTop, LayoutUnit lineBott
om) const | 234 LayoutRect logicalLayoutOverflowRect(LayoutUnit lineTop, LayoutUnit lineBott
om) const |
| 236 { | 235 { |
| 237 LayoutRect result = layoutOverflowRect(lineTop, lineBottom); | 236 LayoutRect result = layoutOverflowRect(lineTop, lineBottom); |
| 238 if (!layoutObject().isHorizontalWritingMode()) | 237 if (!layoutObject().isHorizontalWritingMode()) |
| 239 result = result.transposedRect(); | 238 result = result.transposedRect(); |
| 240 return result; | 239 return result; |
| 241 } | 240 } |
| 242 | 241 |
| 243 LayoutRect visualOverflowRect(LayoutUnit lineTop, LayoutUnit lineBottom) con
st | 242 LayoutRect visualOverflowRect(LayoutUnit lineTop, LayoutUnit lineBottom) con
st |
| 244 { | 243 { |
| 245 // FIXME: the call to enclosingLayoutRect() below is temporary and shoul
d be removed once | 244 // FIXME: the call to enclosingLayoutRect() below is temporary and shoul
d be removed once |
| 246 // the transition to LayoutUnit-based types is complete (crbug.com/32123
7) | 245 // the transition to LayoutUnit-based types is complete (crbug.com/32123
7) |
| 247 return m_overflow ? m_overflow->visualOverflowRect() : frameRectIncludin
gLineHeight(lineTop, lineBottom).enclosingLayoutRect(); | 246 return m_overflow ? m_overflow->visualOverflowRect() : enclosingLayoutRe
ct(frameRectIncludingLineHeight(lineTop, lineBottom)); |
| 248 } | 247 } |
| 249 LayoutUnit logicalLeftVisualOverflow() const { return m_overflow ? (isHorizo
ntal() ? m_overflow->visualOverflowRect().x() : m_overflow->visualOverflowRect()
.y()) : logicalLeft().toLayoutUnit(); } | 248 LayoutUnit logicalLeftVisualOverflow() const { return m_overflow ? (isHorizo
ntal() ? m_overflow->visualOverflowRect().x() : m_overflow->visualOverflowRect()
.y()) : logicalLeft(); } |
| 250 LayoutUnit logicalRightVisualOverflow() const { return m_overflow ? (isHoriz
ontal() ? m_overflow->visualOverflowRect().maxX() : m_overflow->visualOverflowRe
ct().maxY()) : static_cast<LayoutUnit>(ceilf(logicalRight())); } | 249 LayoutUnit logicalRightVisualOverflow() const { return m_overflow ? (isHoriz
ontal() ? m_overflow->visualOverflowRect().maxX() : m_overflow->visualOverflowRe
ct().maxY()) : static_cast<LayoutUnit>(logicalRight().ceil()); } |
| 251 LayoutUnit logicalTopVisualOverflow(LayoutUnit lineTop) const | 250 LayoutUnit logicalTopVisualOverflow(LayoutUnit lineTop) const |
| 252 { | 251 { |
| 253 if (m_overflow) | 252 if (m_overflow) |
| 254 return isHorizontal() ? m_overflow->visualOverflowRect().y() : m_ove
rflow->visualOverflowRect().x(); | 253 return isHorizontal() ? m_overflow->visualOverflowRect().y() : m_ove
rflow->visualOverflowRect().x(); |
| 255 return lineTop; | 254 return lineTop; |
| 256 } | 255 } |
| 257 LayoutUnit logicalBottomVisualOverflow(LayoutUnit lineBottom) const | 256 LayoutUnit logicalBottomVisualOverflow(LayoutUnit lineBottom) const |
| 258 { | 257 { |
| 259 if (m_overflow) | 258 if (m_overflow) |
| 260 return isHorizontal() ? m_overflow->visualOverflowRect().maxY() : m_
overflow->visualOverflowRect().maxX(); | 259 return isHorizontal() ? m_overflow->visualOverflowRect().maxY() : m_
overflow->visualOverflowRect().maxX(); |
| 261 return lineBottom; | 260 return lineBottom; |
| 262 } | 261 } |
| 263 LayoutRect logicalVisualOverflowRect(LayoutUnit lineTop, LayoutUnit lineBott
om) const | 262 LayoutRect logicalVisualOverflowRect(LayoutUnit lineTop, LayoutUnit lineBott
om) const |
| 264 { | 263 { |
| 265 LayoutRect result = visualOverflowRect(lineTop, lineBottom); | 264 LayoutRect result = visualOverflowRect(lineTop, lineBottom); |
| 266 if (!layoutObject().isHorizontalWritingMode()) | 265 if (!layoutObject().isHorizontalWritingMode()) |
| 267 result = result.transposedRect(); | 266 result = result.transposedRect(); |
| 268 return result; | 267 return result; |
| 269 } | 268 } |
| 270 | 269 |
| 271 void setOverflowFromLogicalRects(const LayoutRect& logicalLayoutOverflow, co
nst LayoutRect& logicalVisualOverflow, LayoutUnit lineTop, LayoutUnit lineBottom
); | 270 void setOverflowFromLogicalRects(const LayoutRect& logicalLayoutOverflow, co
nst LayoutRect& logicalVisualOverflow, LayoutUnit lineTop, LayoutUnit lineBottom
); |
| 272 | 271 |
| 273 FloatRectWillBeLayoutRect frameRectIncludingLineHeight(LayoutUnit lineTop, L
ayoutUnit lineBottom) const | 272 LayoutRect frameRectIncludingLineHeight(LayoutUnit lineTop, LayoutUnit lineB
ottom) const |
| 274 { | 273 { |
| 275 if (isHorizontal()) | 274 if (isHorizontal()) |
| 276 return FloatRectWillBeLayoutRect(m_topLeft.x(), lineTop.toFloat(), w
idth(), (lineBottom - lineTop).toFloat()); | 275 return LayoutRect(m_topLeft.x(), lineTop.toFloat(), width(), (lineBo
ttom - lineTop).toFloat()); |
| 277 return FloatRectWillBeLayoutRect(lineTop.toFloat(), m_topLeft.y(), (line
Bottom - lineTop).toFloat(), height()); | 276 return LayoutRect(lineTop.toFloat(), m_topLeft.y(), (lineBottom - lineTo
p).toFloat(), height()); |
| 278 } | 277 } |
| 279 | 278 |
| 280 FloatRectWillBeLayoutRect logicalFrameRectIncludingLineHeight(LayoutUnit lin
eTop, LayoutUnit lineBottom) const | 279 LayoutRect logicalFrameRectIncludingLineHeight(LayoutUnit lineTop, LayoutUni
t lineBottom) const |
| 281 { | 280 { |
| 282 return FloatRectWillBeLayoutRect(logicalLeft(), lineTop.toFloat(), logic
alWidth(), (lineBottom - lineTop).toFloat()); | 281 return LayoutRect(logicalLeft(), lineTop.toFloat(), logicalWidth(), (lin
eBottom - lineTop).toFloat()); |
| 283 } | 282 } |
| 284 | 283 |
| 285 bool descendantsHaveSameLineHeightAndBaseline() const { return m_descendants
HaveSameLineHeightAndBaseline; } | 284 bool descendantsHaveSameLineHeightAndBaseline() const { return m_descendants
HaveSameLineHeightAndBaseline; } |
| 286 void clearDescendantsHaveSameLineHeightAndBaseline() | 285 void clearDescendantsHaveSameLineHeightAndBaseline() |
| 287 { | 286 { |
| 288 m_descendantsHaveSameLineHeightAndBaseline = false; | 287 m_descendantsHaveSameLineHeightAndBaseline = false; |
| 289 if (parent() && parent()->descendantsHaveSameLineHeightAndBaseline()) | 288 if (parent() && parent()->descendantsHaveSameLineHeightAndBaseline()) |
| 290 parent()->clearDescendantsHaveSameLineHeightAndBaseline(); | 289 parent()->clearDescendantsHaveSameLineHeightAndBaseline(); |
| 291 } | 290 } |
| 292 | 291 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 309 virtual bool isInlineFlowBox() const override final { return true; } | 308 virtual bool isInlineFlowBox() const override final { return true; } |
| 310 | 309 |
| 311 InlineBox* m_firstChild; | 310 InlineBox* m_firstChild; |
| 312 InlineBox* m_lastChild; | 311 InlineBox* m_lastChild; |
| 313 | 312 |
| 314 InlineFlowBox* m_prevLineBox; // The previous box that also uses our LayoutO
bject | 313 InlineFlowBox* m_prevLineBox; // The previous box that also uses our LayoutO
bject |
| 315 InlineFlowBox* m_nextLineBox; // The next box that also uses our LayoutObjec
t | 314 InlineFlowBox* m_nextLineBox; // The next box that also uses our LayoutObjec
t |
| 316 | 315 |
| 317 // Maximum logicalTop among all children of an InlineFlowBox. Used to | 316 // Maximum logicalTop among all children of an InlineFlowBox. Used to |
| 318 // calculate the offset for TextUnderlinePositionUnder. | 317 // calculate the offset for TextUnderlinePositionUnder. |
| 319 void computeMaxLogicalTop(FloatWillBeLayoutUnit& maxLogicalTop) const; | 318 void computeMaxLogicalTop(LayoutUnit& maxLogicalTop) const; |
| 320 | 319 |
| 321 private: | 320 private: |
| 322 unsigned m_includeLogicalLeftEdge : 1; | 321 unsigned m_includeLogicalLeftEdge : 1; |
| 323 unsigned m_includeLogicalRightEdge : 1; | 322 unsigned m_includeLogicalRightEdge : 1; |
| 324 unsigned m_hasTextChildren : 1; | 323 unsigned m_hasTextChildren : 1; |
| 325 unsigned m_hasTextDescendants : 1; | 324 unsigned m_hasTextDescendants : 1; |
| 326 unsigned m_descendantsHaveSameLineHeightAndBaseline : 1; | 325 unsigned m_descendantsHaveSameLineHeightAndBaseline : 1; |
| 327 | 326 |
| 328 protected: | 327 protected: |
| 329 // The following members are only used by RootInlineBox but moved here to ke
ep the bits packed. | 328 // The following members are only used by RootInlineBox but moved here to ke
ep the bits packed. |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 } | 364 } |
| 366 | 365 |
| 367 } // namespace blink | 366 } // namespace blink |
| 368 | 367 |
| 369 #ifndef NDEBUG | 368 #ifndef NDEBUG |
| 370 // Outside the WebCore namespace for ease of invocation from gdb. | 369 // Outside the WebCore namespace for ease of invocation from gdb. |
| 371 void showTree(const blink::InlineFlowBox*); | 370 void showTree(const blink::InlineFlowBox*); |
| 372 #endif | 371 #endif |
| 373 | 372 |
| 374 #endif // InlineFlowBox_h | 373 #endif // InlineFlowBox_h |
| OLD | NEW |