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
14class GrDrawOp;
15class GrPaint;
16class GrRecordingContext;
17class GrShaderCaps;
18class GrStyle;
19class SkMatrix;
20struct SkRect;
21class SkRRect;
22class SkStrokeRec;
23
24/*
25 * This namespace wraps helper functions that draw ovals, rrects, and arcs (filled & stroked)
26 */
27class GrOvalOpFactory {
28public:
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