summaryrefslogtreecommitdiffstats
path: root/gfx/skia/skia/src/gpu/effects/GrBitmapTextGeoProc.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/skia/skia/src/gpu/effects/GrBitmapTextGeoProc.h')
-rw-r--r--gfx/skia/skia/src/gpu/effects/GrBitmapTextGeoProc.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/gpu/effects/GrBitmapTextGeoProc.h b/gfx/skia/skia/src/gpu/effects/GrBitmapTextGeoProc.h
new file mode 100644
index 000000000..226ae770e
--- /dev/null
+++ b/gfx/skia/skia/src/gpu/effects/GrBitmapTextGeoProc.h
@@ -0,0 +1,67 @@
+/*
+ * 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 GrBitmapTextGeoProc_DEFINED
+#define GrBitmapTextGeoProc_DEFINED
+
+#include "GrProcessor.h"
+#include "GrGeometryProcessor.h"
+
+class GrGLBitmapTextGeoProc;
+class GrInvariantOutput;
+
+/**
+ * The output color of this effect is a modulation of the input color and a sample from a texture.
+ * It allows explicit specification of the filtering and wrap modes (GrTextureParams). The input
+ * coords are a custom attribute.
+ */
+class GrBitmapTextGeoProc : public GrGeometryProcessor {
+public:
+ static sk_sp<GrGeometryProcessor> Make(GrColor color, GrTexture* tex, const GrTextureParams& p,
+ GrMaskFormat format, const SkMatrix& localMatrix,
+ bool usesLocalCoords) {
+ return sk_sp<GrGeometryProcessor>(
+ new GrBitmapTextGeoProc(color, tex, p, format, localMatrix, usesLocalCoords));
+ }
+
+ virtual ~GrBitmapTextGeoProc() {}
+
+ const char* name() const override { return "Texture"; }
+
+ const Attribute* inPosition() const { return fInPosition; }
+ const Attribute* inColor() const { return fInColor; }
+ const Attribute* inTextureCoords() const { return fInTextureCoords; }
+ GrMaskFormat maskFormat() const { return fMaskFormat; }
+ GrColor color() const { return fColor; }
+ bool colorIgnored() const { return GrColor_ILLEGAL == fColor; }
+ bool hasVertexColor() const { return SkToBool(fInColor); }
+ const SkMatrix& localMatrix() const { return fLocalMatrix; }
+ bool usesLocalCoords() const { return fUsesLocalCoords; }
+
+ void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) const override;
+
+ GrGLSLPrimitiveProcessor* createGLSLInstance(const GrGLSLCaps& caps) const override;
+
+private:
+ GrBitmapTextGeoProc(GrColor, GrTexture* texture, const GrTextureParams& params,
+ GrMaskFormat format, const SkMatrix& localMatrix, bool usesLocalCoords);
+
+ GrColor fColor;
+ SkMatrix fLocalMatrix;
+ bool fUsesLocalCoords;
+ GrTextureAccess fTextureAccess;
+ const Attribute* fInPosition;
+ const Attribute* fInColor;
+ const Attribute* fInTextureCoords;
+ GrMaskFormat fMaskFormat;
+
+ GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
+
+ typedef GrGeometryProcessor INHERITED;
+};
+
+#endif