| Index: src/gpu/GrPathRenderer.h
|
| diff --git a/src/gpu/GrPathRenderer.h b/src/gpu/GrPathRenderer.h
|
| index 3bc02306e63f7e8b83faf2313db5bf5ca8eda8b9..1072f69649742872c85390480ed0288c5c81d899 100644
|
| --- a/src/gpu/GrPathRenderer.h
|
| +++ b/src/gpu/GrPathRenderer.h
|
| @@ -10,12 +10,13 @@
|
|
|
| #include "GrDrawTarget.h"
|
| #include "GrStencil.h"
|
| -#include "GrStyle.h"
|
| +#include "GrStrokeInfo.h"
|
|
|
| #include "SkDrawProcs.h"
|
| #include "SkTArray.h"
|
|
|
| class SkPath;
|
| +
|
| struct GrPoint;
|
|
|
| /**
|
| @@ -71,14 +72,14 @@
|
| * fPipelineBuilder The pipelineBuilder
|
| * fViewMatrix The viewMatrix
|
| * fPath The path to draw
|
| - * fStyle The styling info (path effect, stroking info)
|
| + * fStroke The stroke information (width, join, cap)
|
| * fAntiAlias True if anti-aliasing is required.
|
| */
|
| struct CanDrawPathArgs {
|
| const GrShaderCaps* fShaderCaps;
|
| const SkMatrix* fViewMatrix;
|
| const SkPath* fPath;
|
| - const GrStyle* fStyle;
|
| + const GrStrokeInfo* fStroke;
|
| bool fAntiAlias;
|
|
|
| // These next two are only used by GrStencilAndCoverPathRenderer
|
| @@ -89,7 +90,7 @@
|
| SkASSERT(fShaderCaps);
|
| SkASSERT(fViewMatrix);
|
| SkASSERT(fPath);
|
| - SkASSERT(fStyle);
|
| + SkASSERT(fStroke);
|
| SkASSERT(!fPath->isEmpty());
|
| }
|
| };
|
| @@ -115,7 +116,7 @@
|
| * fColor Color to render with
|
| * fViewMatrix The viewMatrix
|
| * fPath the path to draw.
|
| - * fStyle the style information (path effect, stroke info)
|
| + * fStroke the stroke information (width, join, cap)
|
| * fAntiAlias true if anti-aliasing is required.
|
| * fGammaCorrect true if gamma-correct rendering is to be used.
|
| */
|
| @@ -126,7 +127,7 @@
|
| GrColor fColor;
|
| const SkMatrix* fViewMatrix;
|
| const SkPath* fPath;
|
| - const GrStyle* fStyle;
|
| + const GrStrokeInfo* fStroke;
|
| bool fAntiAlias;
|
| bool fGammaCorrect;
|
|
|
| @@ -136,7 +137,7 @@
|
| SkASSERT(fPipelineBuilder);
|
| SkASSERT(fViewMatrix);
|
| SkASSERT(fPath);
|
| - SkASSERT(fStyle);
|
| + SkASSERT(fStroke);
|
| SkASSERT(!fPath->isEmpty());
|
| }
|
| };
|
| @@ -152,7 +153,7 @@
|
| canArgs.fShaderCaps = args.fTarget->caps()->shaderCaps();
|
| canArgs.fViewMatrix = args.fViewMatrix;
|
| canArgs.fPath = args.fPath;
|
| - canArgs.fStyle = args.fStyle;
|
| + canArgs.fStroke = args.fStroke;
|
| canArgs.fAntiAlias = args.fAntiAlias;
|
|
|
| canArgs.fIsStencilDisabled = args.fPipelineBuilder->getStencil().isDisabled();
|
| @@ -161,7 +162,8 @@
|
| SkASSERT(this->canDrawPath(canArgs));
|
| if (!args.fPipelineBuilder->getStencil().isDisabled()) {
|
| SkASSERT(kNoRestriction_StencilSupport == this->getStencilSupport(*args.fPath));
|
| - SkASSERT(args.fStyle->isSimpleFill());
|
| + SkASSERT(!args.fStroke->isDashed());
|
| + SkASSERT(args.fStroke->isFillStyle());
|
| }
|
| #endif
|
| return this->onDrawPath(args);
|
| @@ -195,21 +197,22 @@
|
| /**
|
| * Draws the path to the stencil buffer. Assume the writable stencil bits are already
|
| * initialized to zero. The pixels inside the path will have non-zero stencil values afterwards.
|
| + *
|
| */
|
| void stencilPath(const StencilPathArgs& args) {
|
| SkDEBUGCODE(args.validate();)
|
| SkASSERT(kNoSupport_StencilSupport != this->getStencilSupport(*args.fPath));
|
| +
|
| this->onStencilPath(args);
|
| }
|
|
|
| // Helper for determining if we can treat a thin stroke as a hairline w/ coverage.
|
| // If we can, we draw lots faster (raster device does this same test).
|
| - static bool IsStrokeHairlineOrEquivalent(const GrStyle& style, const SkMatrix& matrix,
|
| + static bool IsStrokeHairlineOrEquivalent(const GrStrokeInfo& stroke, const SkMatrix& matrix,
|
| SkScalar* outCoverage) {
|
| - if (style.pathEffect()) {
|
| + if (stroke.isDashed()) {
|
| return false;
|
| }
|
| - const SkStrokeRec& stroke = style.strokeRec();
|
| if (stroke.isHairlineStyle()) {
|
| if (outCoverage) {
|
| *outCoverage = SK_Scalar1;
|
| @@ -276,12 +279,13 @@
|
| drawArgs.fColor = 0xFFFFFFFF;
|
| drawArgs.fViewMatrix = args.fViewMatrix;
|
| drawArgs.fPath = args.fPath;
|
| - drawArgs.fStyle = &GrStyle::SimpleFill();
|
| + drawArgs.fStroke = &GrStrokeInfo::FillInfo();
|
| drawArgs.fAntiAlias = false;
|
| drawArgs.fGammaCorrect = false;
|
| this->drawPath(drawArgs);
|
| }
|
|
|
| +
|
| typedef SkRefCnt INHERITED;
|
| };
|
|
|
|
|