1/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrGLGeometryProcessor_DEFINED
9#define GrGLGeometryProcessor_DEFINED
10
11#include "GrGLProcessor.h"
12
13/**
14 * If a GL effect needs a GrGLFullShaderBuilder* object to emit vertex code, then it must inherit
15 * from this class. Since paths don't have vertices, this class is only meant to be used internally
16 * by skia, for special cases.
17 */
18class GrGLGeometryProcessor : public GrGLProcessor {
19public:
20    GrGLGeometryProcessor(const GrBackendProcessorFactory& factory)
21        : INHERITED(factory) {}
22
23    /**
24     * This is similar to emitCode() in the base class, except it takes a full shader builder.
25     * This allows the effect subclass to emit vertex code.
26     */
27    virtual void emitCode(GrGLFullProgramBuilder* builder,
28                          const GrGeometryProcessor& geometryProcessor,
29                          const GrProcessorKey& key,
30                          const char* outputColor,
31                          const char* inputColor,
32                          const TransformedCoordsArray& coords,
33                          const TextureSamplerArray& samplers) = 0;
34
35private:
36    typedef GrGLProcessor INHERITED;
37};
38
39#endif
40