summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderBoxModelObject.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/RenderBoxModelObject.h')
-rw-r--r--Source/WebCore/rendering/RenderBoxModelObject.h65
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; }