GrPathProcessor.h revision 2279325d539700ee3da29d6e874b3b3ce1dcf49c
18072caa80384292858d31ae34b7e19768875866bjoshualitt/* 28072caa80384292858d31ae34b7e19768875866bjoshualitt * Copyright 2013 Google Inc. 38072caa80384292858d31ae34b7e19768875866bjoshualitt * 48072caa80384292858d31ae34b7e19768875866bjoshualitt * Use of this source code is governed by a BSD-style license that can be 58072caa80384292858d31ae34b7e19768875866bjoshualitt * found in the LICENSE file. 68072caa80384292858d31ae34b7e19768875866bjoshualitt */ 78072caa80384292858d31ae34b7e19768875866bjoshualitt 88072caa80384292858d31ae34b7e19768875866bjoshualitt#ifndef GrPathProcessor_DEFINED 98072caa80384292858d31ae34b7e19768875866bjoshualitt#define GrPathProcessor_DEFINED 108072caa80384292858d31ae34b7e19768875866bjoshualitt 118072caa80384292858d31ae34b7e19768875866bjoshualitt#include "GrPrimitiveProcessor.h" 128072caa80384292858d31ae34b7e19768875866bjoshualitt 138072caa80384292858d31ae34b7e19768875866bjoshualitt/* 148072caa80384292858d31ae34b7e19768875866bjoshualitt * The path equivalent of the GP. For now this just manages color. In the long term we plan on 158072caa80384292858d31ae34b7e19768875866bjoshualitt * extending this class to handle all nvpr uniform / varying / program work. 168072caa80384292858d31ae34b7e19768875866bjoshualitt */ 178072caa80384292858d31ae34b7e19768875866bjoshualittclass GrPathProcessor : public GrPrimitiveProcessor { 188072caa80384292858d31ae34b7e19768875866bjoshualittpublic: 198072caa80384292858d31ae34b7e19768875866bjoshualitt static GrPathProcessor* Create(GrColor color, 20ff2103200bad7abcf8929ae22ac78a9f4f725142ethannicholas const GrXPOverridesForBatch& overrides, 218072caa80384292858d31ae34b7e19768875866bjoshualitt const SkMatrix& viewMatrix = SkMatrix::I(), 228072caa80384292858d31ae34b7e19768875866bjoshualitt const SkMatrix& localMatrix = SkMatrix::I()) { 23ff2103200bad7abcf8929ae22ac78a9f4f725142ethannicholas return new GrPathProcessor(color, overrides, viewMatrix, localMatrix); 248072caa80384292858d31ae34b7e19768875866bjoshualitt } 258072caa80384292858d31ae34b7e19768875866bjoshualitt 2636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const char* name() const override { return "PathProcessor"; } 278072caa80384292858d31ae34b7e19768875866bjoshualitt 288072caa80384292858d31ae34b7e19768875866bjoshualitt GrColor color() const { return fColor; } 29e3ababe44315452cd33b96a18ce316ede09ff3c3joshualitt const SkMatrix& viewMatrix() const { return fViewMatrix; } 30e3ababe44315452cd33b96a18ce316ede09ff3c3joshualitt const SkMatrix& localMatrix() const { return fLocalMatrix; } 31e3ababe44315452cd33b96a18ce316ede09ff3c3joshualitt 3236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool willUseGeoShader() const override { return false; } 338072caa80384292858d31ae34b7e19768875866bjoshualitt 3457d3b039c635945e1dc2fcbac3462ed8bfedb068egdaniel virtual void getGLSLProcessorKey(const GrGLSLCaps& caps, 3557d3b039c635945e1dc2fcbac3462ed8bfedb068egdaniel GrProcessorKeyBuilder* b) const override; 368072caa80384292858d31ae34b7e19768875866bjoshualitt 3757d3b039c635945e1dc2fcbac3462ed8bfedb068egdaniel virtual GrGLSLPrimitiveProcessor* createGLSLInstance(const GrGLSLCaps& caps) const override; 388072caa80384292858d31ae34b7e19768875866bjoshualitt 39b2aa7cb90f4c66125056bac70dbca2093dd5ba41joshualitt bool hasTransformedLocalCoords() const override { return false; } 40b2aa7cb90f4c66125056bac70dbca2093dd5ba41joshualitt 41ff2103200bad7abcf8929ae22ac78a9f4f725142ethannicholas const GrXPOverridesForBatch& overrides() const { return fOverrides; } 42f238469b0532cf28724b811d546c395a0361d7a0joshualitt 432279325d539700ee3da29d6e874b3b3ce1dcf49cethannicholas virtual bool isPathRendering() const override { return true; } 442279325d539700ee3da29d6e874b3b3ce1dcf49cethannicholas 458072caa80384292858d31ae34b7e19768875866bjoshualittprivate: 46ff2103200bad7abcf8929ae22ac78a9f4f725142ethannicholas GrPathProcessor(GrColor color, const GrXPOverridesForBatch& overrides, 47f238469b0532cf28724b811d546c395a0361d7a0joshualitt const SkMatrix& viewMatrix, const SkMatrix& localMatrix); 48e3ababe44315452cd33b96a18ce316ede09ff3c3joshualitt 4936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool hasExplicitLocalCoords() const override { return false; } 508072caa80384292858d31ae34b7e19768875866bjoshualitt 518072caa80384292858d31ae34b7e19768875866bjoshualitt GrColor fColor; 52e3ababe44315452cd33b96a18ce316ede09ff3c3joshualitt const SkMatrix fViewMatrix; 53e3ababe44315452cd33b96a18ce316ede09ff3c3joshualitt const SkMatrix fLocalMatrix; 54ff2103200bad7abcf8929ae22ac78a9f4f725142ethannicholas GrXPOverridesForBatch fOverrides; 558072caa80384292858d31ae34b7e19768875866bjoshualitt 568072caa80384292858d31ae34b7e19768875866bjoshualitt typedef GrPrimitiveProcessor INHERITED; 578072caa80384292858d31ae34b7e19768875866bjoshualitt}; 588072caa80384292858d31ae34b7e19768875866bjoshualitt 598072caa80384292858d31ae34b7e19768875866bjoshualitt#endif 60