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: 25 SK_DECLARE_INST_COUNT(GrOvalRenderer) 26 27 GrOvalRenderer() : fRRectIndexBuffer(NULL) {} 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 drawRRect(GrDrawTarget* target, GrContext* context, bool useAA, 37 const SkRRect& rrect, const SkStrokeRec& stroke); 38 bool drawDRRect(GrDrawTarget* target, GrContext* context, bool useAA, 39 const SkRRect& outer, const SkRRect& inner); 40 41 private: 42 bool drawEllipse(GrDrawTarget* target, bool useCoverageAA, 43 const SkRect& ellipse, 44 const SkStrokeRec& stroke); 45 bool drawDIEllipse(GrDrawTarget* target, bool useCoverageAA, 46 const SkRect& ellipse, 47 const SkStrokeRec& stroke); 48 void drawCircle(GrDrawTarget* target, bool useCoverageAA, 49 const SkRect& circle, 50 const SkStrokeRec& stroke); 51 52 GrIndexBuffer* rRectIndexBuffer(GrGpu* gpu); 53 54 GrIndexBuffer* fRRectIndexBuffer; 55 56 typedef SkRefCnt INHERITED; 57 }; 58 59 #endif // GrOvalRenderer_DEFINED 60