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