/*
* 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 GrGLVertexEffect_DEFINED
#define GrGLVertexEffect_DEFINED
#include "GrGLEffect.h"
/**
* If a GL effect needs a GrGLFullShaderBuilder* object to emit vertex code, then it must inherit
* from this class. Since paths don't have vertices, this class is only meant to be used internally
* by skia, for special cases.
*/
class GrGLVertexEffect : public GrGLEffect {
public:
GrGLVertexEffect(const GrBackendEffectFactory& factory)
: INHERITED(factory) { fIsVertexEffect = true; }
/**
* This is similar to emitCode() in the base class, except it takes a full shader builder.
* This allows the effect subclass to emit vertex code.
*/
virtual void emitCode(GrGLFullShaderBuilder* builder,
const GrDrawEffect& drawEffect,
EffectKey key,
const char* outputColor,
const char* inputColor,
const TransformedCoordsArray& coords,
const TextureSamplerArray& samplers) = 0;
/**
* Provide a default override for base class's emitCode() function.
*/
virtual void emitCode(GrGLShaderBuilder* builder,
const GrDrawEffect& drawEffect,
EffectKey key,
const char* outputColor,
const char* inputColor,
const TransformedCoordsArray& coords,
const TextureSamplerArray& samplers) SK_OVERRIDE {
SkFAIL("GrGLVertexEffect requires GrGLFullShaderBuilder* overload for emitCode().");
}
private:
typedef GrGLEffect INHERITED;
};
#endif