1e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger/* 2e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger * Copyright 2013 Google Inc. 3e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger * 4e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be 5e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger * found in the LICENSE file. 6e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger */ 7e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 8e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger#ifndef GrOvalRenderer_DEFINED 9e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger#define GrOvalRenderer_DEFINED 10e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 11e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger#include "GrContext.h" 12e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger#include "GrPaint.h" 13e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger#include "GrRefCnt.h" 14e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 15e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerclass GrContext; 16e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerclass GrDrawTarget; 17e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerclass GrPaint; 1858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerstruct SkRect; 19e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerclass SkStrokeRec; 20e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 21e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger/* 227839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * This class wraps helper functions that draw ovals and roundrects (filled & stroked) 23e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger */ 24e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerclass GrOvalRenderer : public GrRefCnt { 25e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerpublic: 26e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SK_DECLARE_INST_COUNT(GrOvalRenderer) 27e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 287839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrOvalRenderer() : fRRectIndexBuffer(NULL) {} 2958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger ~GrOvalRenderer() { 3058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger this->reset(); 3158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger } 3258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 3358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger void reset(); 34e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger bool drawOval(GrDrawTarget* target, const GrContext* context, bool useAA, 3658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkRect& oval, const SkStrokeRec& stroke); 377839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger bool drawSimpleRRect(GrDrawTarget* target, GrContext* context, bool useAA, 387839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger const SkRRect& rrect, const SkStrokeRec& stroke); 397839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 40e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerprivate: 417839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger bool drawEllipse(GrDrawTarget* target, bool useAA, 4258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkRect& ellipse, 43e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger const SkStrokeRec& stroke); 447839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger void drawCircle(GrDrawTarget* target, bool useAA, 4558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkRect& circle, 46e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger const SkStrokeRec& stroke); 47e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 487839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrIndexBuffer* rRectIndexBuffer(GrGpu* gpu); 497839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 507839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger GrIndexBuffer* fRRectIndexBuffer; 517839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 52e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef GrRefCnt INHERITED; 53e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger}; 54e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 55e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger#endif // GrOvalRenderer_DEFINED 56