1 /* 2 * Copyright 2013 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 GrOvalRenderer_DEFINED 9 #define GrOvalRenderer_DEFINED 10 11 #include "GrContext.h" 12 #include "GrPaint.h" 13 14 class GrContext; 15 class GrDrawTarget; 16 class GrPaint; 17 struct SkRect; 18 class SkStrokeRec; 19 20 /* 21 * This class wraps helper functions that draw ovals and roundrects (filled & stroked) 22 */ 23 class GrOvalRenderer : public SkRefCnt { 24 public: SK_DECLARE_INST_COUNT(GrOvalRenderer)25 SK_DECLARE_INST_COUNT(GrOvalRenderer) 26 27 GrOvalRenderer() : fRRectIndexBuffer(NULL) {} ~GrOvalRenderer()28 ~GrOvalRenderer() { 29 this->reset(); 30 } 31 32 void reset(); 33 34 bool drawOval(GrDrawTarget* target, const GrContext* context, bool useAA, 35 const SkRect& oval, const SkStrokeRec& stroke); 36 bool drawSimpleRRect(GrDrawTarget* target, GrContext* context, bool useAA, 37 const SkRRect& rrect, const SkStrokeRec& stroke); 38 39 private: 40 bool drawEllipse(GrDrawTarget* target, bool useCoverageAA, 41 const SkRect& ellipse, 42 const SkStrokeRec& stroke); 43 bool drawDIEllipse(GrDrawTarget* target, bool useCoverageAA, 44 const SkRect& ellipse, 45 const SkStrokeRec& stroke); 46 void drawCircle(GrDrawTarget* target, bool useCoverageAA, 47 const SkRect& circle, 48 const SkStrokeRec& stroke); 49 50 GrIndexBuffer* rRectIndexBuffer(GrGpu* gpu); 51 52 GrIndexBuffer* fRRectIndexBuffer; 53 54 typedef SkRefCnt INHERITED; 55 }; 56 57 #endif // GrOvalRenderer_DEFINED 58