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 GrOvalOpFactory_DEFINED 9 #define GrOvalOpFactory_DEFINED 10 11 #include "include/core/SkRefCnt.h" 12 #include "src/gpu/GrColor.h" 13 14 class GrDrawOp; 15 class GrPaint; 16 class GrRecordingContext; 17 class GrShaderCaps; 18 class GrStyle; 19 class SkMatrix; 20 struct SkRect; 21 class SkRRect; 22 class SkStrokeRec; 23 24 /* 25 * This namespace wraps helper functions that draw ovals, rrects, and arcs (filled & stroked) 26 */ 27 class GrOvalOpFactory { 28 public: 29 static std::unique_ptr<GrDrawOp> MakeCircleOp(GrRecordingContext*, 30 GrPaint&&, 31 const SkMatrix&, 32 const SkRect& oval, 33 const GrStyle& style, 34 const GrShaderCaps*); 35 36 static std::unique_ptr<GrDrawOp> MakeOvalOp(GrRecordingContext*, 37 GrPaint&&, 38 const SkMatrix&, 39 const SkRect& oval, 40 const GrStyle& style, 41 const GrShaderCaps*); 42 43 static std::unique_ptr<GrDrawOp> MakeCircularRRectOp(GrRecordingContext*, 44 GrPaint&&, 45 const SkMatrix&, 46 const SkRRect&, 47 const SkStrokeRec&, 48 const GrShaderCaps*); 49 50 static std::unique_ptr<GrDrawOp> MakeRRectOp(GrRecordingContext*, 51 GrPaint&&, 52 const SkMatrix&, 53 const SkRRect&, 54 const SkStrokeRec&, 55 const GrShaderCaps*); 56 57 static std::unique_ptr<GrDrawOp> MakeArcOp(GrRecordingContext*, 58 GrPaint&&, 59 const SkMatrix&, 60 const SkRect& oval, 61 SkScalar startAngle, 62 SkScalar sweepAngle, 63 bool useCenter, 64 const GrStyle&, 65 const GrShaderCaps*); 66 }; 67 68 #endif // GrOvalOpFactory_DEFINED 69