180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2011 Google Inc. 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef GrDefaultPathRenderer_DEFINED 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define GrDefaultPathRenderer_DEFINED 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "GrPathRenderer.h" 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkTemplates.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/** 15363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * Subclass that renders the path using the stencil buffer to resolve fill rules 16363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger * (e.g. winding, even-odd) 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass GR_API GrDefaultPathRenderer : public GrPathRenderer { 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 20363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrDefaultPathRenderer(bool separateStencilSupport, bool stencilWrapOpsSupport); 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 22363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual bool canDrawPath(const SkPath&, 23363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const SkStrokeRec&, 24363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const GrDrawTarget*, 25363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger bool antiAlias) const SK_OVERRIDE; 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 29363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual StencilSupport onGetStencilSupport(const SkPath&, 30363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const SkStrokeRec&, 31363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const GrDrawTarget*) const SK_OVERRIDE; 32363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 33363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual bool onDrawPath(const SkPath&, 34363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const SkStrokeRec&, 35363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrDrawTarget*, 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool antiAlias) SK_OVERRIDE; 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 38363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual void onStencilPath(const SkPath&, 39363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const SkStrokeRec&, 40363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrDrawTarget*) SK_OVERRIDE; 41363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 42363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger bool internalDrawPath(const SkPath&, 43363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const SkStrokeRec&, 44363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrDrawTarget*, 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool stencilOnly); 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 47363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger bool createGeom(const SkPath&, 48363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger const SkStrokeRec&, 49363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger SkScalar srcSpaceTol, 50363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrDrawTarget*, 51363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrPrimitiveType*, 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int* vertexCnt, 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru int* indexCnt, 54363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger GrDrawTarget::AutoReleaseGeometry*); 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool fSeparateStencil; 5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool fStencilWrapOps; 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru typedef GrPathRenderer INHERITED; 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 63