Home | History | Annotate | Download | only in gpu
      1 
      2 /*
      3  * Copyright 2012 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 #ifndef GrBuiltInPathRenderer_DEFINED
     10 #define GrBuiltInPathRenderer_DEFINED
     11 
     12 #include "GrPathRenderer.h"
     13 
     14 class GrContext;
     15 class GrGpu;
     16 
     17 /**
     18  * Uses GrGpu::stencilPath followed by a cover rectangle. This subclass doesn't apply AA; it relies
     19  * on the target having MSAA if AA is desired.
     20  */
     21 class GrStencilAndCoverPathRenderer : public GrPathRenderer {
     22 public:
     23 
     24     static GrPathRenderer* Create(GrContext*);
     25 
     26     virtual ~GrStencilAndCoverPathRenderer();
     27 
     28     virtual bool canDrawPath(const SkPath&,
     29                              const SkStrokeRec&,
     30                              const GrDrawTarget*,
     31                              bool antiAlias) const SK_OVERRIDE;
     32 
     33 protected:
     34     virtual StencilSupport onGetStencilSupport(const SkPath&,
     35                                                const SkStrokeRec&,
     36                                                const GrDrawTarget*) const SK_OVERRIDE;
     37 
     38     virtual bool onDrawPath(const SkPath&,
     39                             const SkStrokeRec&,
     40                             GrDrawTarget*,
     41                             bool antiAlias) SK_OVERRIDE;
     42 
     43     virtual void onStencilPath(const SkPath&,
     44                                const SkStrokeRec&,
     45                                GrDrawTarget*) SK_OVERRIDE;
     46 
     47 private:
     48     GrStencilAndCoverPathRenderer(GrGpu*);
     49 
     50     GrGpu* fGpu;
     51 
     52     typedef GrPathRenderer INHERITED;
     53 };
     54 
     55 #endif
     56