Home | History | Annotate | Download | only in gpu
      1 
      2 /*
      3  * Copyright 2011 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 GrAAHairLinePathRenderer_DEFINED
     10 #define GrAAHairLinePathRenderer_DEFINED
     11 
     12 #include "GrPathRenderer.h"
     13 
     14 class GrAAHairLinePathRenderer : public GrPathRenderer {
     15 public:
     16     virtual ~GrAAHairLinePathRenderer();
     17 
     18     static GrPathRenderer* Create(GrContext* context);
     19 
     20     virtual bool canDrawPath(const SkPath& path,
     21                              const SkStrokeRec& stroke,
     22                              const GrDrawTarget* target,
     23                              bool antiAlias) const SK_OVERRIDE;
     24 
     25     typedef SkTArray<SkPoint, true> PtArray;
     26     typedef SkTArray<int, true> IntArray;
     27     typedef SkTArray<float, true> FloatArray;
     28 
     29 protected:
     30     virtual bool onDrawPath(const SkPath& path,
     31                             const SkStrokeRec& stroke,
     32                             GrDrawTarget* target,
     33                             bool antiAlias) SK_OVERRIDE;
     34 
     35 private:
     36     GrAAHairLinePathRenderer(const GrContext* context,
     37                              const GrIndexBuffer* fLinesIndexBuffer,
     38                              const GrIndexBuffer* fQuadsIndexBuffer);
     39 
     40     bool createLineGeom(const SkPath& path,
     41                         GrDrawTarget* target,
     42                         const PtArray& lines,
     43                         int lineCnt,
     44                         GrDrawTarget::AutoReleaseGeometry* arg,
     45                         SkRect* devBounds);
     46 
     47     bool createBezierGeom(const SkPath& path,
     48                           GrDrawTarget* target,
     49                           const PtArray& quads,
     50                           int quadCnt,
     51                           const PtArray& conics,
     52                           int conicCnt,
     53                           const IntArray& qSubdivs,
     54                           const FloatArray& cWeights,
     55                           GrDrawTarget::AutoReleaseGeometry* arg,
     56                           SkRect* devBounds);
     57 
     58     const GrIndexBuffer*        fLinesIndexBuffer;
     59     const GrIndexBuffer*        fQuadsIndexBuffer;
     60 
     61     typedef GrPathRenderer INHERITED;
     62 };
     63 
     64 
     65 #endif
     66