1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef GrPathProcessor_DEFINED 9 #define GrPathProcessor_DEFINED 10 11 #include "GrPrimitiveProcessor.h" 12 13 /* 14 * The path equivalent of the GP. For now this just manages color. In the long term we plan on 15 * extending this class to handle all nvpr uniform / varying / program work. 16 */ 17 class GrPathProcessor : public GrPrimitiveProcessor { 18 public: 19 static GrPathProcessor* Create(GrColor color, 20 const GrXPOverridesForBatch& overrides, 21 const SkMatrix& viewMatrix = SkMatrix::I(), 22 const SkMatrix& localMatrix = SkMatrix::I()) { 23 return new GrPathProcessor(color, overrides, viewMatrix, localMatrix); 24 } 25 name()26 const char* name() const override { return "PathProcessor"; } 27 color()28 GrColor color() const { return fColor; } viewMatrix()29 const SkMatrix& viewMatrix() const { return fViewMatrix; } localMatrix()30 const SkMatrix& localMatrix() const { return fLocalMatrix; } 31 willUseGeoShader()32 bool willUseGeoShader() const override { return false; } 33 34 virtual void getGLSLProcessorKey(const GrGLSLCaps& caps, 35 GrProcessorKeyBuilder* b) const override; 36 37 virtual GrGLSLPrimitiveProcessor* createGLSLInstance(const GrGLSLCaps& caps) const override; 38 hasTransformedLocalCoords()39 bool hasTransformedLocalCoords() const override { return false; } 40 overrides()41 const GrXPOverridesForBatch& overrides() const { return fOverrides; } 42 isPathRendering()43 virtual bool isPathRendering() const override { return true; } 44 45 private: 46 GrPathProcessor(GrColor color, const GrXPOverridesForBatch& overrides, 47 const SkMatrix& viewMatrix, const SkMatrix& localMatrix); 48 hasExplicitLocalCoords()49 bool hasExplicitLocalCoords() const override { return false; } 50 51 GrColor fColor; 52 const SkMatrix fViewMatrix; 53 const SkMatrix fLocalMatrix; 54 GrXPOverridesForBatch fOverrides; 55 56 typedef GrPrimitiveProcessor INHERITED; 57 }; 58 59 #endif 60