1289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon/*
2289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon * Copyright 2013 Google Inc.
3289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon *
4289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon * Use of this source code is governed by a BSD-style license that can be
5289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon * found in the LICENSE file.
6289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon */
7289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon
8289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon#ifndef GrOvalOpFactory_DEFINED
9289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon#define GrOvalOpFactory_DEFINED
10289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon
11289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon#include "GrColor.h"
12289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon#include "SkRefCnt.h"
13289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon
14649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomonclass GrMeshDrawOp;
15289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonclass GrShaderCaps;
16289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonclass GrStyle;
17289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonclass SkMatrix;
18289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonstruct SkRect;
19289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonclass SkRRect;
20289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonclass SkStrokeRec;
21289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon
22289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon/*
23289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon * This namespace wraps helper functions that draw ovals, rrects, and arcs (filled & stroked)
24289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon */
25289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonclass GrOvalOpFactory {
26289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomonpublic:
27649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon    static std::unique_ptr<GrMeshDrawOp> MakeOvalOp(GrColor,
28649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                    const SkMatrix& viewMatrix,
29649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                    const SkRect& oval,
30649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                    const SkStrokeRec& stroke,
31649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                    const GrShaderCaps* shaderCaps);
32649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon    static std::unique_ptr<GrMeshDrawOp> MakeRRectOp(GrColor,
33649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                     bool needsDistance,
34649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                     const SkMatrix& viewMatrix,
35649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                     const SkRRect& rrect,
36649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                     const SkStrokeRec& stroke,
37649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                     const GrShaderCaps* shaderCaps);
38289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon
39649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon    static std::unique_ptr<GrMeshDrawOp> MakeArcOp(GrColor,
40649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   const SkMatrix& viewMatrix,
41649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   const SkRect& oval,
42649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   SkScalar startAngle,
43649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   SkScalar sweepAngle,
44649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   bool useCenter,
45649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   const GrStyle&,
46649a3411f99a8aea3c46e4ef1f495f61b9801164Brian Salomon                                                   const GrShaderCaps* shaderCaps);
47289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon};
48289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon
49289e3d8dd70b08b509aa29594fe831e0278304efBrian Salomon#endif  // GrOvalOpFactory_DEFINED
50