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