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