/* * Copyright 2013 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrPathProcessor_DEFINED #define GrPathProcessor_DEFINED #include "GrPrimitiveProcessor.h" /* * The path equivalent of the GP. For now this just manages color. In the long term we plan on * extending this class to handle all nvpr uniform / varying / program work. */ class GrPathProcessor : public GrPrimitiveProcessor { public: static GrPathProcessor* Create(GrColor color, const SkMatrix& viewMatrix = SkMatrix::I(), const SkMatrix& localMatrix = SkMatrix::I()) { return new GrPathProcessor(color, viewMatrix, localMatrix); } const char* name() const override { return "PathProcessor"; } GrColor color() const { return fColor; } const SkMatrix& viewMatrix() const { return fViewMatrix; } const SkMatrix& localMatrix() const { return fLocalMatrix; } bool willUseGeoShader() const override { return false; } virtual void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override; virtual GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps& caps) const override; virtual bool isPathRendering() const override { return true; } private: const Attribute& onVertexAttribute(int i) const final { SK_ABORT("No vertex attributes"); static constexpr Attribute kBogus; return kBogus; } const Attribute& onInstanceAttribute(int i) const final { SK_ABORT("No instanced attributes"); static constexpr Attribute kBogus; return kBogus; } GrPathProcessor(GrColor, const SkMatrix& viewMatrix, const SkMatrix& localMatrix); GrColor fColor; const SkMatrix fViewMatrix; const SkMatrix fLocalMatrix; typedef GrPrimitiveProcessor INHERITED; }; #endif