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