| 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, 2006, 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2003, 2006, 2007 Apple 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 // For inline replaced elements, the inline box that owns us. | 61 // For inline replaced elements, the inline box that owns us. |
| 62 InlineBox* m_inlineBoxWrapper; | 62 InlineBox* m_inlineBoxWrapper; |
| 63 | 63 |
| 64 LayoutUnit m_overrideLogicalContentHeight; | 64 LayoutUnit m_overrideLogicalContentHeight; |
| 65 LayoutUnit m_overrideLogicalContentWidth; | 65 LayoutUnit m_overrideLogicalContentWidth; |
| 66 | 66 |
| 67 // Set by RenderBox::updatePreviousBorderBoxSizeIfNeeded(). | 67 // Set by RenderBox::updatePreviousBorderBoxSizeIfNeeded(). |
| 68 LayoutSize m_previousBorderBoxSize; | 68 LayoutSize m_previousBorderBoxSize; |
| 69 }; | 69 }; |
| 70 | 70 |
| 71 | |
| 72 class RenderBox : public RenderBoxModelObject { | 71 class RenderBox : public RenderBoxModelObject { |
| 73 public: | 72 public: |
| 74 explicit RenderBox(ContainerNode*); | 73 explicit RenderBox(ContainerNode*); |
| 75 | 74 |
| 76 // hasAutoZIndex only returns true if the element is positioned or a flex-it
em since | 75 // hasAutoZIndex only returns true if the element is positioned or a flex-it
em since |
| 77 // position:static elements that are not flex-items get their z-index coerce
d to auto. | 76 // position:static elements that are not flex-items get their z-index coerce
d to auto. |
| 78 virtual LayerType layerTypeRequired() const OVERRIDE | 77 virtual LayerType layerTypeRequired() const OVERRIDE |
| 79 { | 78 { |
| 80 if (isPositioned() || createsGroup() || hasClipPath() || hasTransform()
|| hasHiddenBackface() || hasReflection() || style()->specifiesColumns() || !sty
le()->hasAutoZIndex() || style()->shouldCompositeForCurrentAnimations()) | 79 if (isPositioned() || createsGroup() || hasClipPath() || hasTransform()
|| hasHiddenBackface() || hasReflection() || style()->specifiesColumns() || !sty
le()->hasAutoZIndex() || style()->shouldCompositeForCurrentAnimations()) |
| 81 return NormalLayer; | 80 return NormalLayer; |
| (...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 { | 614 { |
| 616 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*t
his) : 0; | 615 return ShapeOutsideInfo::isEnabledFor(*this) ? ShapeOutsideInfo::info(*t
his) : 0; |
| 617 } | 616 } |
| 618 | 617 |
| 619 void markShapeOutsideDependentsForLayout() | 618 void markShapeOutsideDependentsForLayout() |
| 620 { | 619 { |
| 621 if (isFloating()) | 620 if (isFloating()) |
| 622 removeFloatingOrPositionedChildFromBlockLists(); | 621 removeFloatingOrPositionedChildFromBlockLists(); |
| 623 } | 622 } |
| 624 | 623 |
| 624 bool backgroundHasOpaqueTopLayer() const; |
| 625 |
| 625 protected: | 626 protected: |
| 626 virtual void willBeDestroyed() OVERRIDE; | 627 virtual void willBeDestroyed() OVERRIDE; |
| 627 | 628 |
| 629 |
| 628 virtual void styleWillChange(StyleDifference, const RenderStyle& newStyle) O
VERRIDE; | 630 virtual void styleWillChange(StyleDifference, const RenderStyle& newStyle) O
VERRIDE; |
| 629 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OV
ERRIDE; | 631 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OV
ERRIDE; |
| 630 virtual void updateFromStyle() OVERRIDE; | 632 virtual void updateFromStyle() OVERRIDE; |
| 631 | 633 |
| 632 // Returns false if it could not cheaply compute the extent (e.g. fixed back
ground), in which case the returned rect may be incorrect. | 634 // Returns false if it could not cheaply compute the extent (e.g. fixed back
ground), in which case the returned rect may be incorrect. |
| 633 bool getBackgroundPaintedExtent(LayoutRect&) const; | 635 bool getBackgroundPaintedExtent(LayoutRect&) const; |
| 634 virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect,
unsigned maxDepthToTest) const; | 636 virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect,
unsigned maxDepthToTest) const; |
| 635 virtual bool computeBackgroundIsKnownToBeObscured() OVERRIDE; | 637 virtual bool computeBackgroundIsKnownToBeObscured() OVERRIDE; |
| 636 | 638 |
| 637 void paintBackground(const PaintInfo&, const LayoutRect&, const Color& backg
roundColor, BackgroundBleedAvoidance = BackgroundBleedNone); | |
| 638 | |
| 639 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const
LayoutRect&, BackgroundBleedAvoidance, CompositeOperator, RenderObject* backgrou
ndObject, bool skipBaseColor = false); | |
| 640 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const
LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, CompositeOperator
= CompositeSourceOver, RenderObject* backgroundObject = 0); | |
| 641 | |
| 642 void paintMaskImages(const PaintInfo&, const LayoutRect&); | |
| 643 void paintBoxDecorationBackgroundWithRect(PaintInfo&, const LayoutPoint&, co
nst LayoutRect&); | |
| 644 | |
| 645 // Information extracted from RenderStyle for box painting. | |
| 646 // These are always needed during box painting and recomputing them takes ti
me. | |
| 647 struct BoxDecorationData { | |
| 648 BoxDecorationData(const RenderStyle&); | |
| 649 | |
| 650 Color backgroundColor; | |
| 651 bool hasBackground; | |
| 652 bool hasBorder; | |
| 653 bool hasAppearance; | |
| 654 }; | |
| 655 | |
| 656 BackgroundBleedAvoidance determineBackgroundBleedAvoidance(GraphicsContext*,
const BoxDecorationData&) const; | |
| 657 bool backgroundHasOpaqueTopLayer() const; | |
| 658 | |
| 659 void computePositionedLogicalWidth(LogicalExtentComputedValues&) const; | 639 void computePositionedLogicalWidth(LogicalExtentComputedValues&) const; |
| 660 | 640 |
| 661 LayoutUnit computeIntrinsicLogicalWidthUsing(const Length& logicalWidthLengt
h, LayoutUnit availableLogicalWidth, LayoutUnit borderAndPadding) const; | 641 LayoutUnit computeIntrinsicLogicalWidthUsing(const Length& logicalWidthLengt
h, LayoutUnit availableLogicalWidth, LayoutUnit borderAndPadding) const; |
| 662 LayoutUnit computeIntrinsicLogicalContentHeightUsing(const Length& logicalHe
ightLength, LayoutUnit intrinsicContentHeight, LayoutUnit borderAndPadding) cons
t; | 642 LayoutUnit computeIntrinsicLogicalContentHeightUsing(const Length& logicalHe
ightLength, LayoutUnit intrinsicContentHeight, LayoutUnit borderAndPadding) cons
t; |
| 663 | 643 |
| 664 virtual bool shouldComputeSizeAsReplaced() const { return isReplaced() && !i
sInlineBlockOrInlineTable(); } | 644 virtual bool shouldComputeSizeAsReplaced() const { return isReplaced() && !i
sInlineBlockOrInlineTable(); } |
| 665 | 645 |
| 666 virtual void mapLocalToContainer(const RenderLayerModelObject* paintInvalida
tionContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool*
wasFixed = 0, const PaintInvalidationState* = 0) const OVERRIDE; | 646 virtual void mapLocalToContainer(const RenderLayerModelObject* paintInvalida
tionContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool*
wasFixed = 0, const PaintInvalidationState* = 0) const OVERRIDE; |
| 667 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst OVERRIDE; | 647 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst OVERRIDE; |
| 668 | 648 |
| 669 void paintRootBoxFillLayers(const PaintInfo&); | |
| 670 | |
| 671 RenderObject* splitAnonymousBoxesAroundChild(RenderObject* beforeChild); | 649 RenderObject* splitAnonymousBoxesAroundChild(RenderObject* beforeChild); |
| 672 | 650 |
| 673 virtual void addLayerHitTestRects(LayerHitTestRects&, const RenderLayer* cur
rentCompositedLayer, const LayoutPoint& layerOffset, const LayoutRect& container
Rect) const OVERRIDE; | 651 virtual void addLayerHitTestRects(LayerHitTestRects&, const RenderLayer* cur
rentCompositedLayer, const LayoutPoint& layerOffset, const LayoutRect& container
Rect) const OVERRIDE; |
| 674 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint&
layerOffset) const OVERRIDE; | 652 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint&
layerOffset) const OVERRIDE; |
| 675 | 653 |
| 676 void updateIntrinsicContentLogicalHeight(LayoutUnit intrinsicContentLogicalH
eight) const { m_intrinsicContentLogicalHeight = intrinsicContentLogicalHeight;
} | 654 void updateIntrinsicContentLogicalHeight(LayoutUnit intrinsicContentLogicalH
eight) const { m_intrinsicContentLogicalHeight = intrinsicContentLogicalHeight;
} |
| 677 | 655 |
| 678 virtual InvalidationReason getPaintInvalidationReason(const RenderLayerModel
Object& paintInvalidationContainer, | 656 virtual InvalidationReason getPaintInvalidationReason(const RenderLayerModel
Object& paintInvalidationContainer, |
| 679 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva
lidationContainer, | 657 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva
lidationContainer, |
| 680 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInva
lidationContainer) OVERRIDE; | 658 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInva
lidationContainer) OVERRIDE; |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 803 if (UNLIKELY(inlineBoxWrapper() != 0)) | 781 if (UNLIKELY(inlineBoxWrapper() != 0)) |
| 804 deleteLineBoxWrapper(); | 782 deleteLineBoxWrapper(); |
| 805 } | 783 } |
| 806 | 784 |
| 807 ensureRareData().m_inlineBoxWrapper = boxWrapper; | 785 ensureRareData().m_inlineBoxWrapper = boxWrapper; |
| 808 } | 786 } |
| 809 | 787 |
| 810 } // namespace blink | 788 } // namespace blink |
| 811 | 789 |
| 812 #endif // RenderBox_h | 790 #endif // RenderBox_h |
| OLD | NEW |