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..618ef1a7793073367b0ddbd635f7935a26823cb0 |
--- /dev/null |
+++ b/src/gpu/effects/GrBicubicEffect.h |
@@ -0,0 +1,69 @@ |
+/* |
+ * 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); |
+ } |
+ |
+ static GrEffectRef* Create(GrTexture* tex) { |
+ return Create(tex, gMitchellCoefficients); |
+ } |
+ |
+ static GrEffectRef* Create(GrTexture* tex, |
+ const SkMatrix& matrix, |
+ const GrTextureParams& p, |
+ CoordsType coordsType = kLocal_CoordsType) { |
+ return Create(tex, gMitchellCoefficients, matrix, p, coordsType); |
+ } |
+ |
+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; |
+ |
+ static const SkScalar gMitchellCoefficients[16]; |
+ |
+ typedef GrSingleTextureEffect INHERITED; |
+}; |
+ |
+#endif |