Index: src/gpu/effects/GrBicubicEffect.h |
diff --git a/src/gpu/effects/GrBicubicEffect.h b/src/gpu/effects/GrBicubicEffect.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b3060786ae9b3134e66b5ffb9ebd4c8276ae5b6b |
--- /dev/null |
+++ b/src/gpu/effects/GrBicubicEffect.h |
@@ -0,0 +1,82 @@ |
+/* |
+ * 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 GrBicubicTextureEffect_DEFINED |
+#define GrBicubicTextureEffect_DEFINED |
+ |
+#include "GrSingleTextureEffect.h" |
+#include "GrDrawEffect.h" |
+#include "gl/GrGLEffect.h" |
+#include "gl/GrGLEffectMatrix.h" |
+#include "GrTBackendEffectFactory.h" |
+ |
+class GrGLBicubicEffect; |
+ |
+class GrBicubicEffect : public GrSingleTextureEffect { |
+public: |
+ virtual ~GrBicubicEffect(); |
+ |
+ static const char* Name() { return "Bicubic"; } |
+ const float* coefficients() const { return fCoefficients; } |
+ |
+ typedef GrGLBicubicEffect GLEffect; |
+ |
+ virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE; |
+ virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE; |
+ |
+ static GrEffectRef* Create(GrTexture* tex, const SkScalar coefficients[16]) { |
+ AutoEffectUnref effect(SkNEW_ARGS(GrBicubicEffect, (tex, coefficients))); |
+ return CreateEffectRef(effect); |
+ } |
+ |
+ static GrEffectRef* Create(GrTexture* tex, const SkScalar coefficients[16], |
+ const SkMatrix& matrix, |
+ const GrTextureParams& p, |
+ CoordsType coordsType = kLocal_CoordsType) { |
+ AutoEffectUnref effect(SkNEW_ARGS(GrBicubicEffect, (tex, coefficients, matrix, p, coordsType))); |
+ return CreateEffectRef(effect); |
+ } |
+ |
+private: |
+ GrBicubicEffect(GrTexture*, const SkScalar coefficients[16]); |
+ GrBicubicEffect(GrTexture*, const SkScalar coefficients[16], |
+ const SkMatrix &matrix, const GrTextureParams &p, CoordsType coordsType); |
+ virtual bool onIsEqual(const GrEffect&) const SK_OVERRIDE; |
+ float fCoefficients[16]; |
+ |
+ GR_DECLARE_EFFECT_TEST; |
+ |
+ typedef GrSingleTextureEffect INHERITED; |
+}; |
+ |
+class GrGLBicubicEffect : public GrGLEffect { |
bsalomon
2013/09/03 20:55:17
We can move this class defn to the header... no on
|
+public: |
+ GrGLBicubicEffect(const GrBackendEffectFactory& factory, |
+ const GrDrawEffect&); |
+ virtual void emitCode(GrGLShaderBuilder*, |
+ const GrDrawEffect&, |
+ EffectKey, |
+ const char* outputColor, |
+ const char* inputColor, |
+ const TextureSamplerArray&) SK_OVERRIDE; |
+ |
+ static inline EffectKey GenKey(const GrDrawEffect&, const GrGLCaps&); |
+ |
+ virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE; |
+ |
+private: |
+ typedef GrGLUniformManager::UniformHandle UniformHandle; |
+ |
+ UniformHandle fCoefficientsUni; |
+ UniformHandle fImageIncrementUni; |
+ |
+ GrGLEffectMatrix fEffectMatrix; |
+ |
+ typedef GrGLEffect INHERITED; |
+}; |
+ |
+#endif |