| Index: Source/core/paint/BoxPainter.h
|
| diff --git a/Source/core/paint/BoxPainter.h b/Source/core/paint/BoxPainter.h
|
| index e2a1cbc96c5bde3e39c95c0e21ed2e53f80d3067..8ccfa4d80de0373dc9ea9a10ff4c74cf5e83857a 100644
|
| --- a/Source/core/paint/BoxPainter.h
|
| +++ b/Source/core/paint/BoxPainter.h
|
| @@ -25,11 +25,18 @@ public:
|
| void paintBoxDecorationBackground(const PaintInfo&, const LayoutPoint&);
|
| void paintMask(const PaintInfo&, const LayoutPoint&);
|
| void paintClippingMask(const PaintInfo&, const LayoutPoint&);
|
| - void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, SkXfermode::Mode = SkXfermode::kSrcOver_Mode, LayoutObject* backgroundObject = 0);
|
| +
|
| + typedef Vector<const FillLayer*, 8> FillLayerOcclusionOutputList;
|
| + // Returns true if the result fill layers have non-associative blending or compositing mode.
|
| + // (i.e. The rendering will be different without creating isolation group by context.saveLayer().)
|
| + // Note that the output list will be in top-bottom order.
|
| + bool calculateFillLayerOcclusionCulling(FillLayerOcclusionOutputList &reversedPaintList, const FillLayer&);
|
| +
|
| + void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, SkXfermode::Mode = SkXfermode::kSrcOver_Mode, LayoutObject* backgroundObject = nullptr);
|
| void paintMaskImages(const PaintInfo&, const LayoutRect&);
|
| void paintBoxDecorationBackgroundWithRect(const PaintInfo&, const LayoutPoint&, const LayoutRect&);
|
| - static void paintFillLayerExtended(LayoutBoxModelObject&, const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox* = 0, const LayoutSize& = LayoutSize(), SkXfermode::Mode = SkXfermode::kSrcOver_Mode, LayoutObject* backgroundObject = 0, bool skipBaseColor = false);
|
| - static void calculateBackgroundImageGeometry(LayoutBoxModelObject&, const LayoutBoxModelObject* paintContainer, const FillLayer&, const LayoutRect& paintRect, BackgroundImageGeometry&, LayoutObject* = 0);
|
| + static void paintFillLayerExtended(LayoutBoxModelObject&, const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox* = nullptr, const LayoutSize& = LayoutSize(), SkXfermode::Mode = SkXfermode::kSrcOver_Mode, LayoutObject* backgroundObject = nullptr);
|
| + static void calculateBackgroundImageGeometry(LayoutBoxModelObject&, const LayoutBoxModelObject* paintContainer, const FillLayer&, const LayoutRect& paintRect, BackgroundImageGeometry&, LayoutObject* backgroundObject = nullptr);
|
| static InterpolationQuality chooseInterpolationQuality(LayoutObject&, GraphicsContext*, Image*, const void*, const LayoutSize&);
|
| static bool paintNinePieceImage(LayoutBoxModelObject&, GraphicsContext*, const LayoutRect&, const ComputedStyle&, const NinePieceImage&, SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| static void paintBorder(LayoutBoxModelObject&, const PaintInfo&, const LayoutRect&, const ComputedStyle&, BackgroundBleedAvoidance = BackgroundBleedNone, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
|
| @@ -39,19 +46,15 @@ public:
|
|
|
| private:
|
| void paintBackground(const PaintInfo&, const LayoutRect&, const Color& backgroundColor, BackgroundBleedAvoidance = BackgroundBleedNone);
|
| - void paintRootBoxFillLayers(const PaintInfo&);
|
| - void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, SkXfermode::Mode, LayoutObject* backgroundObject, bool skipBaseColor = false);
|
| - static void paintRootBackgroundColor(LayoutObject&, const PaintInfo&, const LayoutRect&, const Color&);
|
| + void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, SkXfermode::Mode, LayoutObject* backgroundObject = nullptr);
|
| static FloatRoundedRect backgroundRoundedRectAdjustedForBleedAvoidance(LayoutObject&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox*, const LayoutSize&, bool includeLogicalLeftEdge, bool includeLogicalRightEdge);
|
| static FloatRoundedRect getBackgroundRoundedRect(LayoutObject&, const LayoutRect&, InlineFlowBox*, LayoutUnit inlineBoxWidth, LayoutUnit inlineBoxHeight,
|
| bool includeLogicalLeftEdge, bool includeLogicalRightEdge);
|
| - static bool isDocumentElementWithOpaqueBackground(LayoutObject&);
|
| static void applyBoxShadowForBackground(GraphicsContext*, LayoutObject&);
|
| static bool fixedBackgroundPaintsInLocalCoordinates(const LayoutObject&);
|
| static IntSize calculateFillTileSize(const LayoutBoxModelObject&, const FillLayer&, const IntSize& scaledPositioningAreaSize);
|
|
|
| LayoutRect boundsForDrawingRecorder(const LayoutPoint& paintOffset);
|
| - LayoutRect rootBackgroundRect();
|
|
|
| // FIXME: this should be const.
|
| LayoutBox& m_layoutBox;
|
|
|