• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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