| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights
reserved. | 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. |
| 5 * All rights reserved. |
| 5 * | 6 * |
| 6 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| 10 * | 11 * |
| 11 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 * Library General Public License for more details. | 15 * Library General Public License for more details. |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 LayoutBoxModelObject* virtualContinuation() const final { | 176 LayoutBoxModelObject* virtualContinuation() const final { |
| 176 return continuation(); | 177 return continuation(); |
| 177 } | 178 } |
| 178 LayoutInline* inlineElementContinuation() const; | 179 LayoutInline* inlineElementContinuation() const; |
| 179 | 180 |
| 180 LayoutSize offsetForInFlowPositionedInline(const LayoutBox& child) const; | 181 LayoutSize offsetForInFlowPositionedInline(const LayoutBox& child) const; |
| 181 | 182 |
| 182 void addOutlineRects(Vector<LayoutRect>&, | 183 void addOutlineRects(Vector<LayoutRect>&, |
| 183 const LayoutPoint& additionalOffset, | 184 const LayoutPoint& additionalOffset, |
| 184 IncludeBlockVisualOverflowOrNot) const final; | 185 IncludeBlockVisualOverflowOrNot) const final; |
| 185 // The following methods are called from the container if it has already added
outline rects for line boxes | 186 // The following methods are called from the container if it has already added |
| 186 // and/or children of this LayoutInline. | 187 // outline rects for line boxes and/or children of this LayoutInline. |
| 187 void addOutlineRectsForChildrenAndContinuations( | 188 void addOutlineRectsForChildrenAndContinuations( |
| 188 Vector<LayoutRect>&, | 189 Vector<LayoutRect>&, |
| 189 const LayoutPoint& additionalOffset, | 190 const LayoutPoint& additionalOffset, |
| 190 IncludeBlockVisualOverflowOrNot) const; | 191 IncludeBlockVisualOverflowOrNot) const; |
| 191 void addOutlineRectsForContinuations(Vector<LayoutRect>&, | 192 void addOutlineRectsForContinuations(Vector<LayoutRect>&, |
| 192 const LayoutPoint& additionalOffset, | 193 const LayoutPoint& additionalOffset, |
| 193 IncludeBlockVisualOverflowOrNot) const; | 194 IncludeBlockVisualOverflowOrNot) const; |
| 194 | 195 |
| 195 using LayoutBoxModelObject::continuation; | 196 using LayoutBoxModelObject::continuation; |
| 196 using LayoutBoxModelObject::setContinuation; | 197 using LayoutBoxModelObject::setContinuation; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 } | 233 } |
| 233 const LayoutObjectChildList* children() const { return &m_children; } | 234 const LayoutObjectChildList* children() const { return &m_children; } |
| 234 LayoutObjectChildList* children() { return &m_children; } | 235 LayoutObjectChildList* children() { return &m_children; } |
| 235 | 236 |
| 236 bool isLayoutInline() const final { return true; } | 237 bool isLayoutInline() const final { return true; } |
| 237 | 238 |
| 238 LayoutRect culledInlineVisualOverflowBoundingBox() const; | 239 LayoutRect culledInlineVisualOverflowBoundingBox() const; |
| 239 InlineBox* culledInlineFirstLineBox() const; | 240 InlineBox* culledInlineFirstLineBox() const; |
| 240 InlineBox* culledInlineLastLineBox() const; | 241 InlineBox* culledInlineLastLineBox() const; |
| 241 | 242 |
| 242 // For visualOverflowRect() only, to get bounding box of visual overflow of li
ne boxes. | 243 // For visualOverflowRect() only, to get bounding box of visual overflow of |
| 244 // line boxes. |
| 243 LayoutRect linesVisualOverflowBoundingBox() const; | 245 LayoutRect linesVisualOverflowBoundingBox() const; |
| 244 | 246 |
| 245 template <typename GeneratorContext> | 247 template <typename GeneratorContext> |
| 246 void generateLineBoxRects(GeneratorContext& yield) const; | 248 void generateLineBoxRects(GeneratorContext& yield) const; |
| 247 template <typename GeneratorContext> | 249 template <typename GeneratorContext> |
| 248 void generateCulledLineBoxRects(GeneratorContext& yield, | 250 void generateCulledLineBoxRects(GeneratorContext& yield, |
| 249 const LayoutInline* container) const; | 251 const LayoutInline* container) const; |
| 250 | 252 |
| 251 void addChildToContinuation(LayoutObject* newChild, | 253 void addChildToContinuation(LayoutObject* newChild, |
| 252 LayoutObject* beforeChild); | 254 LayoutObject* beforeChild); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 277 | 279 |
| 278 PaintLayerType layerTypeRequired() const override; | 280 PaintLayerType layerTypeRequired() const override; |
| 279 | 281 |
| 280 LayoutUnit offsetLeft(const Element*) const final; | 282 LayoutUnit offsetLeft(const Element*) const final; |
| 281 LayoutUnit offsetTop(const Element*) const final; | 283 LayoutUnit offsetTop(const Element*) const final; |
| 282 LayoutUnit offsetWidth() const final { return linesBoundingBox().width(); } | 284 LayoutUnit offsetWidth() const final { return linesBoundingBox().width(); } |
| 283 LayoutUnit offsetHeight() const final { return linesBoundingBox().height(); } | 285 LayoutUnit offsetHeight() const final { return linesBoundingBox().height(); } |
| 284 | 286 |
| 285 LayoutRect absoluteClippedOverflowRect() const override; | 287 LayoutRect absoluteClippedOverflowRect() const override; |
| 286 | 288 |
| 287 // This method differs from visualOverflowRect in that it doesn't include the
rects | 289 // This method differs from visualOverflowRect in that it doesn't include the |
| 288 // for culled inline boxes, which aren't necessary for paint invalidation. | 290 // rects for culled inline boxes, which aren't necessary for paint |
| 291 // invalidation. |
| 289 LayoutRect localOverflowRectForPaintInvalidation() const override; | 292 LayoutRect localOverflowRectForPaintInvalidation() const override; |
| 290 | 293 |
| 291 bool mapToVisualRectInAncestorSpace( | 294 bool mapToVisualRectInAncestorSpace( |
| 292 const LayoutBoxModelObject* ancestor, | 295 const LayoutBoxModelObject* ancestor, |
| 293 LayoutRect&, | 296 LayoutRect&, |
| 294 VisualRectFlags = DefaultVisualRectFlags) const final; | 297 VisualRectFlags = DefaultVisualRectFlags) const final; |
| 295 | 298 |
| 296 PositionWithAffinity positionForPoint(const LayoutPoint&) final; | 299 PositionWithAffinity positionForPoint(const LayoutPoint&) final; |
| 297 | 300 |
| 298 IntRect borderBoundingBox() const final { | 301 IntRect borderBoundingBox() const final { |
| 299 IntRect boundingBox = enclosingIntRect(linesBoundingBox()); | 302 IntRect boundingBox = enclosingIntRect(linesBoundingBox()); |
| 300 return IntRect(0, 0, boundingBox.width(), boundingBox.height()); | 303 return IntRect(0, 0, boundingBox.width(), boundingBox.height()); |
| 301 } | 304 } |
| 302 | 305 |
| 303 virtual InlineFlowBox* createInlineFlowBox(); // Subclassed by SVG and Ruby | 306 virtual InlineFlowBox* createInlineFlowBox(); // Subclassed by SVG and Ruby |
| 304 | 307 |
| 305 void dirtyLinesFromChangedChild( | 308 void dirtyLinesFromChangedChild( |
| 306 LayoutObject* child, | 309 LayoutObject* child, |
| 307 MarkingBehavior markingBehaviour = MarkContainerChain) final { | 310 MarkingBehavior markingBehaviour = MarkContainerChain) final { |
| 308 m_lineBoxes.dirtyLinesFromChangedChild( | 311 m_lineBoxes.dirtyLinesFromChangedChild( |
| 309 LineLayoutItem(this), LineLayoutItem(child), | 312 LineLayoutItem(this), LineLayoutItem(child), |
| 310 markingBehaviour == MarkContainerChain); | 313 markingBehaviour == MarkContainerChain); |
| 311 } | 314 } |
| 312 | 315 |
| 313 // TODO(leviw): This should probably be an int. We don't snap equivalent lines
to different heights. | 316 // TODO(leviw): This should probably be an int. We don't snap equivalent lines |
| 317 // to different heights. |
| 314 LayoutUnit lineHeight( | 318 LayoutUnit lineHeight( |
| 315 bool firstLine, | 319 bool firstLine, |
| 316 LineDirectionMode, | 320 LineDirectionMode, |
| 317 LinePositionMode = PositionOnContainingLine) const final; | 321 LinePositionMode = PositionOnContainingLine) const final; |
| 318 int baselinePosition(FontBaseline, | 322 int baselinePosition(FontBaseline, |
| 319 bool firstLine, | 323 bool firstLine, |
| 320 LineDirectionMode, | 324 LineDirectionMode, |
| 321 LinePositionMode = PositionOnContainingLine) const final; | 325 LinePositionMode = PositionOnContainingLine) const final; |
| 322 | 326 |
| 323 void childBecameNonInline(LayoutObject* child) final; | 327 void childBecameNonInline(LayoutObject* child) final; |
| 324 | 328 |
| 325 void updateHitTestResult(HitTestResult&, const LayoutPoint&) final; | 329 void updateHitTestResult(HitTestResult&, const LayoutPoint&) final; |
| 326 | 330 |
| 327 void imageChanged(WrappedImagePtr, const IntRect* = nullptr) final; | 331 void imageChanged(WrappedImagePtr, const IntRect* = nullptr) final; |
| 328 | 332 |
| 329 void addAnnotatedRegions(Vector<AnnotatedRegionValue>&) final; | 333 void addAnnotatedRegions(Vector<AnnotatedRegionValue>&) final; |
| 330 | 334 |
| 331 void updateFromStyle() final; | 335 void updateFromStyle() final; |
| 332 | 336 |
| 333 LayoutInline* clone() const; | 337 LayoutInline* clone() const; |
| 334 | 338 |
| 335 LayoutBoxModelObject* continuationBefore(LayoutObject* beforeChild); | 339 LayoutBoxModelObject* continuationBefore(LayoutObject* beforeChild); |
| 336 | 340 |
| 337 LayoutObjectChildList m_children; | 341 LayoutObjectChildList m_children; |
| 338 LineBoxList | 342 // All of the line boxes created for this inline flow. For example, |
| 339 m_lineBoxes; // All of the line boxes created for this inline flow. For
example, <i>Hello<br>world.</i> will have two <i> line boxes. | 343 // <i>Hello<br>world.</i> will have two <i> line boxes. |
| 344 LineBoxList m_lineBoxes; |
| 340 }; | 345 }; |
| 341 | 346 |
| 342 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutInline, isLayoutInline()); | 347 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutInline, isLayoutInline()); |
| 343 | 348 |
| 344 } // namespace blink | 349 } // namespace blink |
| 345 | 350 |
| 346 #endif // LayoutInline_h | 351 #endif // LayoutInline_h |
| OLD | NEW |