diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderBoxModelObject.h')
-rw-r--r-- | Source/WebCore/rendering/RenderBoxModelObject.h | 65 |
1 files changed, 48 insertions, 17 deletions
diff --git a/Source/WebCore/rendering/RenderBoxModelObject.h b/Source/WebCore/rendering/RenderBoxModelObject.h index 553584769..8e7fdb088 100644 --- a/Source/WebCore/rendering/RenderBoxModelObject.h +++ b/Source/WebCore/rendering/RenderBoxModelObject.h @@ -40,7 +40,15 @@ enum BackgroundBleedAvoidance { BackgroundBleedUseTransparencyLayer }; -enum PaddingOptions { IncludeIntrinsicPadding, ExcludeIntrinsicPadding }; +enum ContentChangeType { + ImageChanged, + MaskImageChanged, + CanvasChanged, + VideoChanged, + FullScreenChanged +}; + +class KeyframeList; // This class is the base for all objects that adhere to the CSS box model as described // at http://www.w3.org/TR/CSS21/box.html @@ -64,7 +72,6 @@ public: int pixelSnappedOffsetLeft() const { return roundToInt(offsetLeft()); } int pixelSnappedOffsetTop() const { return roundToInt(offsetTop()); } - // FIXME: The implementation for these functions will change once we move to subpixel layout. See bug 60318. int pixelSnappedOffsetWidth() const; int pixelSnappedOffsetHeight() const; @@ -74,20 +81,31 @@ public: bool hasSelfPaintingLayer() const; RenderLayer* layer() const { return m_layer; } - virtual bool requiresLayer() const { return isRoot() || isPositioned() || isRelPositioned() || isTransparent() || hasTransform() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); } + virtual bool requiresLayer() const { return isRoot() || isPositioned() || isRelPositioned() || isTransparent() || hasTransform() || hasHiddenBackface() || hasMask() || hasReflection() || hasFilter() || style()->specifiesColumns(); } // This will work on inlines to return the bounding box of all of the lines' border boxes. - virtual LayoutRect borderBoundingBox() const = 0; - - // Virtual since table cells override - virtual LayoutUnit paddingTop(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingBottom(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingLeft(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingRight(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingBefore(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingAfter(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingStart(PaddingOptions = IncludeIntrinsicPadding) const; - virtual LayoutUnit paddingEnd(PaddingOptions = IncludeIntrinsicPadding) const; + virtual IntRect borderBoundingBox() const = 0; + + // These return the CSS computed padding values. + LayoutUnit computedCSSPaddingTop() const; + LayoutUnit computedCSSPaddingBottom() const; + LayoutUnit computedCSSPaddingLeft() const; + LayoutUnit computedCSSPaddingRight() const; + LayoutUnit computedCSSPaddingBefore() const; + LayoutUnit computedCSSPaddingAfter() const; + LayoutUnit computedCSSPaddingStart() const; + LayoutUnit computedCSSPaddingEnd() const; + + // These functions are used during layout. Table cells and the MathML + // code override them to include some extra intrinsic padding. + virtual LayoutUnit paddingTop() const { return computedCSSPaddingTop(); } + virtual LayoutUnit paddingBottom() const { return computedCSSPaddingBottom(); } + virtual LayoutUnit paddingLeft() const { return computedCSSPaddingLeft(); } + virtual LayoutUnit paddingRight() const { return computedCSSPaddingRight(); } + virtual LayoutUnit paddingBefore() const { return computedCSSPaddingBefore(); } + virtual LayoutUnit paddingAfter() const { return computedCSSPaddingAfter(); } + virtual LayoutUnit paddingStart() const { return computedCSSPaddingStart(); } + virtual LayoutUnit paddingEnd() const { return computedCSSPaddingEnd(); } virtual int borderTop() const { return style()->borderTopWidth(); } virtual int borderBottom() const { return style()->borderBottomWidth(); } @@ -146,6 +164,21 @@ public: virtual void setSelectionState(SelectionState s); +#if USE(ACCELERATED_COMPOSITING) + void contentChanged(ContentChangeType); + bool hasAcceleratedCompositing() const; + + bool startTransition(double, CSSPropertyID, const RenderStyle* fromStyle, const RenderStyle* toStyle); + void transitionPaused(double timeOffset, CSSPropertyID); + void transitionFinished(CSSPropertyID); + + bool startAnimation(double timeOffset, const Animation*, const KeyframeList& keyframes); + void animationPaused(double timeOffset, const String& name); + void animationFinished(const String& name); + + void suspendAnimations(double time = 0); +#endif + protected: virtual void willBeDestroyed(); @@ -195,7 +228,7 @@ protected: }; void calculateBackgroundImageGeometry(const FillLayer*, const LayoutRect& paintRect, BackgroundImageGeometry&); - void getBorderEdgeInfo(class BorderEdge[], bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true) const; + void getBorderEdgeInfo(class BorderEdge[], const RenderStyle*, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true) const; bool borderObscuresBackgroundEdge(const FloatSize& contextScale) const; bool borderObscuresBackground() const; @@ -211,8 +244,6 @@ public: RenderObject* firstLetterRemainingText() const; void setFirstLetterRemainingText(RenderObject*); - void ensureLayer(); - private: virtual bool isBoxModelObject() const { return true; } |