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 14class GrContext; 15class GrDrawTarget; 16class GrPaint; 17struct SkRect; 18class SkStrokeRec; 19 20/* 21 * This class wraps helper functions that draw ovals and roundrects (filled & stroked) 22 */ 23class GrOvalRenderer : public SkRefCnt { 24public: 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 41private: 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