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