Home | History | Annotate | Download | only in gpu
      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 rules
     16  * (e.g. winding, even-odd)
     17  */
     18 class GR_API GrDefaultPathRenderer : public GrPathRenderer {
     19 public:
     20     GrDefaultPathRenderer(bool separateStencilSupport, bool stencilWrapOpsSupport);
     21 
     22     virtual bool canDrawPath(const SkPath&,
     23                              const SkStrokeRec&,
     24                              const GrDrawTarget*,
     25                              bool antiAlias) const SK_OVERRIDE;
     26 
     27 private:
     28 
     29     virtual StencilSupport onGetStencilSupport(const SkPath&,
     30                                                const SkStrokeRec&,
     31                                                const GrDrawTarget*) const SK_OVERRIDE;
     32 
     33     virtual bool onDrawPath(const SkPath&,
     34                             const SkStrokeRec&,
     35                             GrDrawTarget*,
     36                             bool antiAlias) SK_OVERRIDE;
     37 
     38     virtual void onStencilPath(const SkPath&,
     39                                const SkStrokeRec&,
     40                                GrDrawTarget*) SK_OVERRIDE;
     41 
     42     bool internalDrawPath(const SkPath&,
     43                           const SkStrokeRec&,
     44                           GrDrawTarget*,
     45                           bool stencilOnly);
     46 
     47     bool createGeom(const SkPath&,
     48                     const SkStrokeRec&,
     49                     SkScalar srcSpaceTol,
     50                     GrDrawTarget*,
     51                     GrPrimitiveType*,
     52                     int* vertexCnt,
     53                     int* indexCnt,
     54                     GrDrawTarget::AutoReleaseGeometry*);
     55 
     56     bool    fSeparateStencil;
     57     bool    fStencilWrapOps;
     58 
     59     typedef GrPathRenderer INHERITED;
     60 };
     61 
     62 #endif
     63