/* * 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 GrGLPathProcessor_DEFINED #define GrGLPathProcessor_DEFINED #include "GrGLPrimitiveProcessor.h" class GrPathProcessor; class GrGLPathRendering; class GrGLGpu; class GrGLPathProcessor : public GrGLPrimitiveProcessor { public: GrGLPathProcessor(const GrPathProcessor&, const GrBatchTracker&); static void GenKey(const GrPathProcessor&, const GrBatchTracker& bt, const GrGLSLCaps&, GrProcessorKeyBuilder* b); void emitCode(EmitArgs&) override; void emitTransforms(GrGLGPBuilder*, const TransformsIn&, TransformsOut*); void resolveSeparableVaryings(GrGLGpu* gpu, GrGLuint programId); void setData(const GrGLProgramDataManager&, const GrPrimitiveProcessor&, const GrBatchTracker&) override; void setTransformData(const GrPrimitiveProcessor&, int index, const SkTArray& transforms, GrGLPathRendering*, GrGLuint programID); virtual void didSetData(GrGLPathRendering*) {} private: UniformHandle fColorUniform; GrColor fColor; struct SeparableVaryingInfo { GrSLType fType; GrGLShaderVar fVariable; GrGLint fLocation; }; typedef SkSTArray<8, SeparableVaryingInfo, true> SeparableVaryingInfoArray; SeparableVaryingInfoArray fSeparableVaryingInfos; typedef GrGLPrimitiveProcessor INHERITED; }; #endif