1261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org/* 2261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * Copyright 2013 Google Inc. 3261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * 4261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 5261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * found in the LICENSE file. 6261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org */ 7261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 8261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org#ifndef GrGLVertexEffect_DEFINED 9261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org#define GrGLVertexEffect_DEFINED 10261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 11261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org#include "GrGLEffect.h" 12261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 13261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org/** 14261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * If a GL effect needs a GrGLFullShaderBuilder* object to emit vertex code, then it must inherit 15261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * from this class. Since paths don't have vertices, this class is only meant to be used internally 16261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * by skia, for special cases. 17261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org */ 18261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.orgclass GrGLVertexEffect : public GrGLEffect { 19261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.orgpublic: 20261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org GrGLVertexEffect(const GrBackendEffectFactory& factory) 21261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org : INHERITED(factory) { fIsVertexEffect = true; } 22261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 23261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org /** 24261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * This is similar to emitCode() in the base class, except it takes a full shader builder. 25261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * This allows the effect subclass to emit vertex code. 26261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org */ 27261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org virtual void emitCode(GrGLFullShaderBuilder* builder, 28261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const GrDrawEffect& drawEffect, 29261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org EffectKey key, 30261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const char* outputColor, 31261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const char* inputColor, 32261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const TransformedCoordsArray& coords, 33261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const TextureSamplerArray& samplers) = 0; 34261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 35261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org /** 36261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org * Provide a default override for base class's emitCode() function. 37261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org */ 38261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org virtual void emitCode(GrGLShaderBuilder* builder, 39261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const GrDrawEffect& drawEffect, 40261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org EffectKey key, 41261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const char* outputColor, 42261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const char* inputColor, 43261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const TransformedCoordsArray& coords, 44261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org const TextureSamplerArray& samplers) SK_OVERRIDE { 4588cb22b6b4816c7a9ca6c5b795965b4606f9eb7bcommit-bot@chromium.org SkFAIL("GrGLVertexEffect requires GrGLFullShaderBuilder* overload for emitCode()."); 46261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org } 47261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 48261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.orgprivate: 49261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org typedef GrGLEffect INHERITED; 50261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org}; 51261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org 52261dc569b6a53729bea6e4e7a0cf2afa980eb82dcommit-bot@chromium.org#endif 53