180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2012 Google Inc.
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef GrBuiltInPathRenderer_DEFINED
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define GrBuiltInPathRenderer_DEFINED
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "GrPathRenderer.h"
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass GrContext;
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass GrGpu;
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/**
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Uses GrGpu::stencilPath followed by a cover rectangle. This subclass doesn't apply AA; it relies
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * on the target having MSAA if AA is desired.
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass GrStencilAndCoverPathRenderer : public GrPathRenderer {
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic:
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
24363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger    static GrPathRenderer* Create(GrContext*);
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~GrStencilAndCoverPathRenderer();
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
28363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger    virtual bool canDrawPath(const SkPath&,
29363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                             const SkStrokeRec&,
30363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                             const GrDrawTarget*,
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru                             bool antiAlias) const SK_OVERRIDE;
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
34363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger    virtual StencilSupport onGetStencilSupport(const SkPath&,
35363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                                               const SkStrokeRec&,
36363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                                               const GrDrawTarget*) const SK_OVERRIDE;
37363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger
38363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger    virtual bool onDrawPath(const SkPath&,
39363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                            const SkStrokeRec&,
40363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                            GrDrawTarget*,
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru                            bool antiAlias) SK_OVERRIDE;
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
43363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger    virtual void onStencilPath(const SkPath&,
44363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                               const SkStrokeRec&,
45363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger                               GrDrawTarget*) SK_OVERRIDE;
46363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate:
48363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger    GrStencilAndCoverPathRenderer(GrGpu*);
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    GrGpu* fGpu;
5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    typedef GrPathRenderer INHERITED;
5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
56