Home | History | Annotate | Download | only in gpu
      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