Chromium Code Reviews| Index: src/gpu/GrGpu.h |
| diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h |
| index 239ae6bd8362d3dbd25a7ca8b76027f8169afb6f..71d77c841f7444cd36422665f4a4327de21deede 100644 |
| --- a/src/gpu/GrGpu.h |
| +++ b/src/gpu/GrGpu.h |
| @@ -335,12 +335,20 @@ public: |
| // clipping. |
| }; |
| + void setPathStencilSettings(const GrStencilSettings& settings) { |
| + fPathStencilSettings = settings; |
| + } |
| + |
| + // overridden by backend-specific derived class to perform the path stenciling. |
| + virtual const GrStencilSettings& getPathStencilSettingsForFillType(SkPath::FillType) = 0; |
|
bsalomon
2013/09/18 14:24:22
I wonder if this needs to be virtual. It seems lik
|
| + |
| protected: |
| enum DrawType { |
| kDrawPoints_DrawType, |
| kDrawLines_DrawType, |
| kDrawTriangles_DrawType, |
| kStencilPath_DrawType, |
| + kFillPath_DrawType, |
| }; |
| DrawType PrimTypeToDrawType(GrPrimitiveType type) { |
| @@ -397,6 +405,8 @@ protected: |
| // The final stencil settings to use as determined by the clip manager. |
| GrStencilSettings fStencilSettings; |
| + // The final stencil setting to use when stenciling a path with stencilPath. |
| + GrStencilSettings fPathStencilSettings; |
| // Derived classes need access to this so they can fill it out in their |
| // constructors |
| @@ -440,15 +450,10 @@ private: |
| // overridden by backend-specific derived class to perform the draw call. |
| virtual void onGpuDraw(const DrawInfo&) = 0; |
| - // when GrDrawTarget::stencilPath is called the draw state's current stencil |
| - // settings are ignored. Instead the GrGpu decides the stencil rules |
| - // necessary to stencil the path. These are still subject to filtering by |
| - // the clip mask manager. |
| - virtual void setStencilPathSettings(const GrPath&, |
| - SkPath::FillType, |
| - GrStencilSettings* settings) = 0; |
| + |
| // overridden by backend-specific derived class to perform the path stenciling. |
| virtual void onGpuStencilPath(const GrPath*, SkPath::FillType) = 0; |
| + virtual void onGpuFillPath(const GrPath*, SkPath::FillType) = 0; |
| // overridden by backend-specific derived class to perform flush |
| virtual void onForceRenderTargetFlush() = 0; |
| @@ -494,6 +499,9 @@ private: |
| virtual void onStencilPath(const GrPath* path, const SkStrokeRec& stroke, |
| SkPath::FillType) SK_OVERRIDE; |
| + virtual void onFillPath(const GrPath* path, const SkStrokeRec& stroke, |
| + SkPath::FillType) SK_OVERRIDE; |
| + |
| // readies the pools to provide vertex/index data. |
| void prepareVertexPool(); |
| void prepareIndexPool(); |