summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderBoxModelObject.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/RenderBoxModelObject.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/rendering/RenderBoxModelObject.h')
-rw-r--r--Source/WebCore/rendering/RenderBoxModelObject.h257
1 files changed, 116 insertions, 141 deletions
diff --git a/Source/WebCore/rendering/RenderBoxModelObject.h b/Source/WebCore/rendering/RenderBoxModelObject.h
index 6ed226991..93ec2ce8a 100644
--- a/Source/WebCore/rendering/RenderBoxModelObject.h
+++ b/Source/WebCore/rendering/RenderBoxModelObject.h
@@ -21,8 +21,7 @@
*
*/
-#ifndef RenderBoxModelObject_h
-#define RenderBoxModelObject_h
+#pragma once
#include "LayoutRect.h"
#include "RenderLayerModelObject.h"
@@ -41,6 +40,12 @@ enum BackgroundBleedAvoidance {
BackgroundBleedBackgroundOverBorder
};
+enum BaseBackgroundColorUsage {
+ BaseBackgroundColorUse,
+ BaseBackgroundColorOnly,
+ BaseBackgroundColorSkip
+};
+
enum ContentChangeType {
ImageChanged,
MaskImageChanged,
@@ -51,12 +56,50 @@ enum ContentChangeType {
FullScreenChanged
};
+class BorderEdge;
class ImageBuffer;
class InlineFlowBox;
class KeyframeList;
+class RenderNamedFlowFragment;
class RenderTextFragment;
class StickyPositionViewportConstraints;
+class BackgroundImageGeometry {
+public:
+ BackgroundImageGeometry(const LayoutRect& destinationRect, const LayoutSize& tile, const LayoutSize& phase, const LayoutSize& space, bool fixedAttachment)
+ : m_destRect(destinationRect)
+ , m_destOrigin(m_destRect.location())
+ , m_tileSize(tile)
+ , m_phase(phase)
+ , m_space(space)
+ , m_hasNonLocalGeometry(fixedAttachment)
+ {
+ }
+
+ LayoutRect destRect() const { return m_destRect; }
+ LayoutSize phase() const { return m_phase; }
+ LayoutSize tileSize() const { return m_tileSize; }
+ LayoutSize spaceSize() const { return m_space; }
+ bool hasNonLocalGeometry() const { return m_hasNonLocalGeometry; }
+
+ LayoutSize relativePhase() const
+ {
+ LayoutSize phase = m_phase;
+ phase += m_destRect.location() - m_destOrigin;
+ return phase;
+ }
+
+ void clip(const LayoutRect& clipRect) { m_destRect.intersect(clipRect); }
+
+private:
+ LayoutRect m_destRect;
+ LayoutPoint m_destOrigin;
+ LayoutSize m_tileSize;
+ LayoutSize m_phase;
+ LayoutSize m_space;
+ bool m_hasNonLocalGeometry; // Has background-attachment: fixed. Implies that we can't always cheaply compute destRect.
+};
+
// 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
@@ -67,7 +110,8 @@ public:
LayoutSize relativePositionOffset() const;
LayoutSize relativePositionLogicalOffset() const { return style().isHorizontalWritingMode() ? relativePositionOffset() : relativePositionOffset().transposedSize(); }
- void computeStickyPositionConstraints(StickyPositionViewportConstraints&, const FloatRect& viewportRect) const;
+ FloatRect constrainingRectForStickyPosition() const;
+ void computeStickyPositionConstraints(StickyPositionViewportConstraints&, const FloatRect& constrainingRect) const;
LayoutSize stickyPositionOffset() const;
LayoutSize stickyPositionLogicalOffset() const { return style().isHorizontalWritingMode() ? stickyPositionOffset() : stickyPositionOffset().transposedSize(); }
@@ -80,17 +124,12 @@ public:
virtual LayoutUnit offsetWidth() const = 0;
virtual LayoutUnit offsetHeight() const = 0;
- int pixelSnappedOffsetLeft() const { return roundToInt(offsetLeft()); }
- int pixelSnappedOffsetTop() const { return roundToInt(offsetTop()); }
- virtual int pixelSnappedOffsetWidth() const;
- virtual int pixelSnappedOffsetHeight() const;
+ void updateFromStyle() override;
- virtual void updateFromStyle() override;
-
- virtual bool requiresLayer() const override { return isRoot() || isPositioned() || createsGroup() || hasClipPath() || hasTransform() || hasHiddenBackface() || hasReflection() || style().specifiesColumns(); }
+ bool requiresLayer() const override { return isDocumentElementRenderer() || isPositioned() || createsGroup() || hasClipPath() || hasTransformRelatedProperty() || hasHiddenBackface() || hasReflection(); }
// This will work on inlines to return the bounding box of all of the lines' border boxes.
- virtual IntRect borderBoundingBox() const = 0;
+ virtual LayoutRect borderBoundingBox() const = 0;
// These return the CSS computed padding values.
LayoutUnit computedCSSPaddingTop() const { return computedCSSPadding(style().paddingTop()); }
@@ -113,21 +152,23 @@ public:
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(); }
- virtual int borderLeft() const { return style().borderLeftWidth(); }
- virtual int borderRight() const { return style().borderRightWidth(); }
- virtual int borderBefore() const { return style().borderBeforeWidth(); }
- virtual int borderAfter() const { return style().borderAfterWidth(); }
- virtual int borderStart() const { return style().borderStartWidth(); }
- virtual int borderEnd() const { return style().borderEndWidth(); }
+ virtual LayoutUnit borderTop() const { return style().borderTopWidth(); }
+ virtual LayoutUnit borderBottom() const { return style().borderBottomWidth(); }
+ virtual LayoutUnit borderLeft() const { return style().borderLeftWidth(); }
+ virtual LayoutUnit borderRight() const { return style().borderRightWidth(); }
+ virtual LayoutUnit horizontalBorderExtent() const { return borderLeft() + borderRight(); }
+ virtual LayoutUnit verticalBorderExtent() const { return borderTop() + borderBottom(); }
+ virtual LayoutUnit borderBefore() const { return style().borderBeforeWidth(); }
+ virtual LayoutUnit borderAfter() const { return style().borderAfterWidth(); }
+ virtual LayoutUnit borderStart() const { return style().borderStartWidth(); }
+ virtual LayoutUnit borderEnd() const { return style().borderEndWidth(); }
LayoutUnit borderAndPaddingStart() const { return borderStart() + paddingStart(); }
LayoutUnit borderAndPaddingBefore() const { return borderBefore() + paddingBefore(); }
LayoutUnit borderAndPaddingAfter() const { return borderAfter() + paddingAfter(); }
- LayoutUnit borderAndPaddingHeight() const { return borderTop() + borderBottom() + paddingTop() + paddingBottom(); }
- LayoutUnit borderAndPaddingWidth() const { return borderLeft() + borderRight() + paddingLeft() + paddingRight(); }
+ LayoutUnit verticalBorderAndPaddingExtent() const { return borderTop() + borderBottom() + paddingTop() + paddingBottom(); }
+ LayoutUnit horizontalBorderAndPaddingExtent() const { return borderLeft() + borderRight() + paddingLeft() + paddingRight(); }
LayoutUnit borderAndPaddingLogicalHeight() const { return borderAndPaddingBefore() + borderAndPaddingAfter(); }
LayoutUnit borderAndPaddingLogicalWidth() const { return borderStart() + borderEnd() + paddingStart() + paddingEnd(); }
LayoutUnit borderAndPaddingLogicalLeft() const { return style().isHorizontalWritingMode() ? borderLeft() + paddingLeft() : borderTop() + paddingTop(); }
@@ -146,12 +187,12 @@ public:
virtual LayoutUnit marginBottom() const = 0;
virtual LayoutUnit marginLeft() const = 0;
virtual LayoutUnit marginRight() const = 0;
- virtual LayoutUnit marginBefore(const RenderStyle* otherStyle = 0) const = 0;
- virtual LayoutUnit marginAfter(const RenderStyle* otherStyle = 0) const = 0;
- virtual LayoutUnit marginStart(const RenderStyle* otherStyle = 0) const = 0;
- virtual LayoutUnit marginEnd(const RenderStyle* otherStyle = 0) const = 0;
- LayoutUnit marginHeight() const { return marginTop() + marginBottom(); }
- LayoutUnit marginWidth() const { return marginLeft() + marginRight(); }
+ virtual LayoutUnit marginBefore(const RenderStyle* otherStyle = nullptr) const = 0;
+ virtual LayoutUnit marginAfter(const RenderStyle* otherStyle = nullptr) const = 0;
+ virtual LayoutUnit marginStart(const RenderStyle* otherStyle = nullptr) const = 0;
+ virtual LayoutUnit marginEnd(const RenderStyle* otherStyle = nullptr) const = 0;
+ LayoutUnit verticalMarginExtent() const { return marginTop() + marginBottom(); }
+ LayoutUnit horizontalMarginExtent() const { return marginLeft() + marginRight(); }
LayoutUnit marginLogicalHeight() const { return marginBefore() + marginAfter(); }
LayoutUnit marginLogicalWidth() const { return marginStart() + marginEnd(); }
@@ -160,29 +201,26 @@ public:
virtual LayoutUnit containingBlockLogicalWidthForContent() const;
- virtual void childBecameNonInline(RenderObject* /*child*/) { }
+ virtual void childBecameNonInline(RenderElement&) { }
- void paintBorder(const PaintInfo&, const LayoutRect&, const RenderStyle*, BackgroundBleedAvoidance = BackgroundBleedNone, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
- bool paintNinePieceImage(GraphicsContext*, const LayoutRect&, const RenderStyle*, const NinePieceImage&, CompositeOperator = CompositeSourceOver);
- void paintBoxShadow(const PaintInfo&, const LayoutRect&, const RenderStyle*, ShadowStyle, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
- void paintFillLayerExtended(const PaintInfo&, const Color&, const FillLayer*, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox* = 0, const LayoutSize& = LayoutSize(), CompositeOperator = CompositeSourceOver, RenderElement* backgroundObject = 0);
+ void paintBorder(const PaintInfo&, const LayoutRect&, const RenderStyle&, BackgroundBleedAvoidance = BackgroundBleedNone, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
+ bool paintNinePieceImage(GraphicsContext&, const LayoutRect&, const RenderStyle&, const NinePieceImage&, CompositeOperator = CompositeSourceOver);
+ void paintBoxShadow(const PaintInfo&, const LayoutRect&, const RenderStyle&, ShadowStyle, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
+ void paintFillLayerExtended(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox* = nullptr, const LayoutSize& = LayoutSize(), CompositeOperator = CompositeSourceOver, RenderElement* backgroundObject = nullptr, BaseBackgroundColorUsage = BaseBackgroundColorUse);
- virtual bool boxShadowShouldBeAppliedToBackground(BackgroundBleedAvoidance, InlineFlowBox* = 0) const;
+ virtual bool boxShadowShouldBeAppliedToBackground(const LayoutPoint& absolutePaintPostion, BackgroundBleedAvoidance, InlineFlowBox* = nullptr) const;
// Overridden by subclasses to determine line height and baseline position.
virtual LayoutUnit lineHeight(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const = 0;
virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const = 0;
- virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const override;
-
- void highQualityRepaintTimerFired(Timer<RenderBoxModelObject>*);
+ void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const override;
- virtual void setSelectionState(SelectionState) override;
+ void setSelectionState(SelectionState) override;
- bool canHaveBoxInfoInRegion() const { return !isFloating() && !isReplaced() && !isInline() && !hasColumns() && !isTableCell() && isRenderBlock() && !isRenderSVGBlock(); }
+ bool canHaveBoxInfoInRegion() const { return !isFloating() && !isReplaced() && !isInline() && !isTableCell() && isRenderBlock() && !isRenderSVGBlock(); }
- void getGeometryForBackgroundImage(const RenderLayerModelObject* paintContainer, IntRect& destRect, IntPoint& phase, IntSize& tileSize) const;
-#if USE(ACCELERATED_COMPOSITING)
+ void getGeometryForBackgroundImage(const RenderLayerModelObject* paintContainer, const LayoutPoint& paintOffset, FloatRect& destRect, FloatSize& phase, FloatSize& tileSize) const;
void contentChanged(ContentChangeType);
bool hasAcceleratedCompositing() const;
@@ -195,92 +233,34 @@ public:
void animationFinished(const String& name);
void suspendAnimations(double time = 0);
-#endif
+
+ RenderBoxModelObject* continuation() const;
protected:
- RenderBoxModelObject(Element&, PassRef<RenderStyle>, unsigned baseTypeFlags);
- RenderBoxModelObject(Document&, PassRef<RenderStyle>, unsigned baseTypeFlags);
-
- virtual void willBeDestroyed() override;
-
- class BackgroundImageGeometry {
- public:
- BackgroundImageGeometry()
- : m_hasNonLocalGeometry(false)
- { }
- IntPoint destOrigin() const { return m_destOrigin; }
- void setDestOrigin(const IntPoint& destOrigin)
- {
- m_destOrigin = destOrigin;
- }
-
- IntRect destRect() const { return m_destRect; }
- void setDestRect(const IntRect& destRect)
- {
- m_destRect = destRect;
- }
-
- // Returns the phase relative to the destination rectangle.
- IntPoint relativePhase() const;
-
- IntPoint phase() const { return m_phase; }
- void setPhase(const IntPoint& phase)
- {
- m_phase = phase;
- }
-
- IntSize tileSize() const { return m_tileSize; }
- void setTileSize(const IntSize& tileSize)
- {
- m_tileSize = tileSize;
- }
- FloatSize spaceSize() const { return m_space; }
- void setSpaceSize(const FloatSize& space)
- {
- m_space = space;
- }
-
- void setPhaseX(int x) { m_phase.setX(x); }
- void setPhaseY(int y) { m_phase.setY(y); }
-
- void setNoRepeatX(int xOffset);
- void setNoRepeatY(int yOffset);
-
- void useFixedAttachment(const IntPoint& attachmentPoint);
-
- void clip(const IntRect&);
-
- void setHasNonLocalGeometry(bool hasNonLocalGeometry = true) { m_hasNonLocalGeometry = hasNonLocalGeometry; }
- bool hasNonLocalGeometry() const { return m_hasNonLocalGeometry; }
-
- private:
- IntRect m_destRect;
- IntPoint m_destOrigin;
- IntPoint m_phase;
- IntSize m_tileSize;
- FloatSize m_space;
- bool m_hasNonLocalGeometry; // Has background-attachment: fixed. Implies that we can't always cheaply compute destRect.
- };
+ RenderBoxModelObject(Element&, RenderStyle&&, BaseTypeFlags);
+ RenderBoxModelObject(Document&, RenderStyle&&, BaseTypeFlags);
+
+ void willBeDestroyed() override;
LayoutPoint adjustedPositionRelativeToOffsetParent(const LayoutPoint&) const;
- void calculateBackgroundImageGeometry(const RenderLayerModelObject* paintContainer, const FillLayer*, const LayoutRect& paintRect, BackgroundImageGeometry&, RenderElement* = 0) const;
- void getBorderEdgeInfo(class BorderEdge[], const RenderStyle*, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true) const;
+ bool hasVisibleBoxDecorationStyle() const;
+ BackgroundImageGeometry calculateBackgroundImageGeometry(const RenderLayerModelObject* paintContainer, const FillLayer&, const LayoutPoint& paintOffset,
+ const LayoutRect& paintRect, RenderElement* = nullptr) const;
bool borderObscuresBackgroundEdge(const FloatSize& contextScale) const;
bool borderObscuresBackground() const;
- RoundedRect backgroundRoundedRectAdjustedForBleedAvoidance(GraphicsContext*, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox*, const LayoutSize&, bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const;
- LayoutRect borderInnerRectAdjustedForBleedAvoidance(GraphicsContext*, const LayoutRect&, BackgroundBleedAvoidance) const;
+ RoundedRect backgroundRoundedRectAdjustedForBleedAvoidance(const GraphicsContext&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox*, const LayoutSize&, bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const;
+ LayoutRect borderInnerRectAdjustedForBleedAvoidance(const GraphicsContext&, const LayoutRect&, BackgroundBleedAvoidance) const;
- bool shouldPaintAtLowQuality(GraphicsContext*, Image*, const void*, const LayoutSize&);
+ InterpolationQuality chooseInterpolationQuality(GraphicsContext&, Image&, const void*, const LayoutSize&);
- RenderBoxModelObject* continuation() const;
void setContinuation(RenderBoxModelObject*);
LayoutRect localCaretRectForEmptyElement(LayoutUnit width, LayoutUnit textIndentOffset);
- static bool shouldAntialiasLines(GraphicsContext*);
+ static bool shouldAntialiasLines(GraphicsContext&);
- static void clipRoundedInnerRect(GraphicsContext*, const LayoutRect&, const RoundedRect& clipRect);
+ static void clipRoundedInnerRect(GraphicsContext&, const FloatRect&, const FloatRoundedRect& clipRect);
bool hasAutoHeightOrContainingBlockWithAutoHeight() const;
@@ -290,65 +270,60 @@ public:
void setFirstLetterRemainingText(RenderTextFragment*);
// These functions are only used internally to manipulate the render tree structure via remove/insert/appendChildNode.
- // Since they are typically called only to move objects around within anonymous blocks (which only have layers in
- // the case of column spans), the default for fullRemoveInsert is false rather than true.
+ // Since they are typically called only to move objects around within anonymous blocks, the default for fullRemoveInsert is false rather than true.
void moveChildTo(RenderBoxModelObject* toBoxModelObject, RenderObject* child, RenderObject* beforeChild, bool fullRemoveInsert = false);
void moveChildTo(RenderBoxModelObject* toBoxModelObject, RenderObject* child, bool fullRemoveInsert = false)
{
- moveChildTo(toBoxModelObject, child, 0, fullRemoveInsert);
+ moveChildTo(toBoxModelObject, child, nullptr, fullRemoveInsert);
}
void moveAllChildrenTo(RenderBoxModelObject* toBoxModelObject, bool fullRemoveInsert = false)
{
- moveAllChildrenTo(toBoxModelObject, 0, fullRemoveInsert);
+ moveAllChildrenTo(toBoxModelObject, nullptr, fullRemoveInsert);
}
void moveAllChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* beforeChild, bool fullRemoveInsert = false)
{
- moveChildrenTo(toBoxModelObject, firstChild(), 0, beforeChild, fullRemoveInsert);
+ moveChildrenTo(toBoxModelObject, firstChild(), nullptr, beforeChild, fullRemoveInsert);
}
// Move all of the kids from |startChild| up to but excluding |endChild|. 0 can be passed as the |endChild| to denote
// that all the kids from |startChild| onwards should be moved.
void moveChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* startChild, RenderObject* endChild, bool fullRemoveInsert = false)
{
- moveChildrenTo(toBoxModelObject, startChild, endChild, 0, fullRemoveInsert);
+ moveChildrenTo(toBoxModelObject, startChild, endChild, nullptr, fullRemoveInsert);
}
void moveChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* startChild, RenderObject* endChild, RenderObject* beforeChild, bool fullRemoveInsert = false);
+ enum ScaleByEffectiveZoomOrNot { ScaleByEffectiveZoom, DoNotScaleByEffectiveZoom };
+ LayoutSize calculateImageIntrinsicDimensions(StyleImage*, const LayoutSize& scaledPositioningAreaSize, ScaleByEffectiveZoomOrNot) const;
+
private:
LayoutUnit computedCSSPadding(const Length&) const;
virtual LayoutRect frameRectForStickyPositioning() const = 0;
- IntSize calculateFillTileSize(const FillLayer*, const IntSize& scaledPositioningAreaSize) const;
-
- enum ScaleByEffectiveZoomOrNot { ScaleByEffectiveZoom, DoNotScaleByEffectiveZoom };
- IntSize calculateImageIntrinsicDimensions(StyleImage*, const IntSize& scaledPositioningAreaSize, ScaleByEffectiveZoomOrNot) const;
+ LayoutSize calculateFillTileSize(const FillLayer&, const LayoutSize& scaledPositioningAreaSize) const;
RoundedRect getBackgroundRoundedRect(const LayoutRect&, InlineFlowBox*, LayoutUnit inlineBoxWidth, LayoutUnit inlineBoxHeight,
bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const;
bool fixedBackgroundPaintsInLocalCoordinates() const;
- void clipBorderSidePolygon(GraphicsContext*, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
+ void clipBorderSidePolygon(GraphicsContext&, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
BoxSide, bool firstEdgeMatches, bool secondEdgeMatches);
- void clipBorderSideForComplexInnerPath(GraphicsContext*, const RoundedRect&, const RoundedRect&, BoxSide, const class BorderEdge[]);
- void paintOneBorderSide(GraphicsContext*, const RenderStyle*, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
- const IntRect& sideRect, BoxSide, BoxSide adjacentSide1, BoxSide adjacentSide2, const class BorderEdge[],
- const Path*, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias, const Color* overrideColor = 0);
- void paintTranslucentBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& innerBorderAdjustment,
- const class BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false);
- void paintBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
- const IntPoint& innerBorderAdjustment, const class BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance,
- bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false, const Color* overrideColor = 0);
- void drawBoxSideFromPath(GraphicsContext*, const LayoutRect&, const Path&, const class BorderEdge[],
- float thickness, float drawThickness, BoxSide, const RenderStyle*,
- Color, EBorderStyle, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge);
- void paintMaskForTextFillBox(ImageBuffer*, const IntRect&, InlineFlowBox*, const LayoutRect&, RenderRegion*);
-};
-
-template <> inline bool isRendererOfType<const RenderBoxModelObject>(const RenderObject& renderer) { return renderer.isBoxModelObject(); }
-RENDER_OBJECT_TYPE_CASTS(RenderBoxModelObject, isBoxModelObject())
+ void paintOneBorderSide(GraphicsContext&, const RenderStyle&, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
+ const LayoutRect& sideRect, BoxSide, BoxSide adjacentSide1, BoxSide adjacentSide2, const BorderEdge[],
+ const Path*, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias, const Color* overrideColor = nullptr);
+ void paintTranslucentBorderSides(GraphicsContext&, const RenderStyle&, const RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& innerBorderAdjustment,
+ const BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false);
+ void paintBorderSides(GraphicsContext&, const RenderStyle&, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
+ const IntPoint& innerBorderAdjustment, const BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance,
+ bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false, const Color* overrideColor = nullptr);
+ void drawBoxSideFromPath(GraphicsContext&, const LayoutRect&, const Path&, const BorderEdge[],
+ float thickness, float drawThickness, BoxSide, const RenderStyle&,
+ Color, EBorderStyle, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge);
+ void paintMaskForTextFillBox(ImageBuffer*, const IntRect&, InlineFlowBox*, const LayoutRect&);
+};
} // namespace WebCore
-#endif // RenderBoxModelObject_h
+SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderBoxModelObject, isBoxModelObject())