• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2011 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef GrDefaultPathRenderer_DEFINED
9 #define GrDefaultPathRenderer_DEFINED
10 
11 #include "GrPathRenderer.h"
12 #include "SkTemplates.h"
13 
14 /**
15  *  Subclass that renders the path using the stencil buffer to resolve fill
16  *  rules (e.g. winding, even-odd)
17  */
18 class GR_API GrDefaultPathRenderer : public GrPathRenderer {
19 public:
20     GrDefaultPathRenderer(bool separateStencilSupport,
21                           bool stencilWrapOpsSupport);
22 
23 
24     virtual bool requiresStencilPass(const SkPath& path,
25                                      GrPathFill fill,
26                                      const GrDrawTarget* target) const SK_OVERRIDE;
27 
28     virtual bool canDrawPath(const SkPath& path,
29                             GrPathFill fill,
30                             const GrDrawTarget* target,
31                             bool antiAlias) const SK_OVERRIDE;
32 
33     virtual void drawPathToStencil(const SkPath& path,
34                                    GrPathFill fill,
35                                    GrDrawTarget* target) SK_OVERRIDE;
36 
37 private:
38 
39     virtual bool onDrawPath(const SkPath& path,
40                             GrPathFill fill,
41                             const GrVec* translate,
42                             GrDrawTarget* target,
43                             GrDrawState::StageMask stageMask,
44                             bool antiAlias) SK_OVERRIDE;
45 
46     bool internalDrawPath(const SkPath& path,
47                           GrPathFill fill,
48                           const GrVec* translate,
49                           GrDrawTarget* target,
50                           GrDrawState::StageMask stageMask,
51                           bool stencilOnly);
52 
53     bool createGeom(const SkPath& path,
54                     GrPathFill fill,
55                     const GrVec* translate,
56                     GrScalar srcSpaceTol,
57                     GrDrawTarget* target,
58                     GrDrawState::StageMask stages,
59                     GrPrimitiveType* primType,
60                     int* vertexCnt,
61                     int* indexCnt);
62 
63     bool    fSeparateStencil;
64     bool    fStencilWrapOps;
65 
66     typedef GrPathRenderer INHERITED;
67 };
68 
69 #endif
70