/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrDefaultPathRenderer_DEFINED #define GrDefaultPathRenderer_DEFINED #include "GrPathRenderer.h" #include "SkTemplates.h" /** * Subclass that renders the path using the stencil buffer to resolve fill rules * (e.g. winding, even-odd) */ class SK_API GrDefaultPathRenderer : public GrPathRenderer { public: GrDefaultPathRenderer(bool separateStencilSupport, bool stencilWrapOpsSupport); virtual bool canDrawPath(const GrDrawTarget*, const GrPipelineBuilder*, const SkMatrix& viewMatrix, const SkPath&, const SkStrokeRec&, bool antiAlias) const override; private: virtual StencilSupport onGetStencilSupport(const GrDrawTarget*, const GrPipelineBuilder*, const SkPath&, const SkStrokeRec&) const override; virtual bool onDrawPath(GrDrawTarget*, GrPipelineBuilder*, GrColor, const SkMatrix& viewMatrix, const SkPath&, const SkStrokeRec&, bool antiAlias) override; virtual void onStencilPath(GrDrawTarget*, GrPipelineBuilder*, const SkMatrix& viewMatrix, const SkPath&, const SkStrokeRec&) override; bool internalDrawPath(GrDrawTarget*, GrPipelineBuilder*, GrColor, const SkMatrix& viewMatrix, const SkPath&, const SkStrokeRec&, bool stencilOnly); bool fSeparateStencil; bool fStencilWrapOps; typedef GrPathRenderer INHERITED; }; #endif