Chromium Code Reviews| Index: src/gpu/effects/GrBicubicEffect.h |
| diff --git a/src/gpu/effects/GrBicubicEffect.h b/src/gpu/effects/GrBicubicEffect.h |
| index 85bec771b4706858439a457f389abb9ddec8c0c1..9101a3c20eff34b111577c1e3d3816d55fde3dcc 100644 |
| --- a/src/gpu/effects/GrBicubicEffect.h |
| +++ b/src/gpu/effects/GrBicubicEffect.h |
| @@ -9,6 +9,7 @@ |
| #define GrBicubicTextureEffect_DEFINED |
| #include "GrSingleTextureEffect.h" |
| +#include "GrTextureDomain.h" |
| #include "GrDrawEffect.h" |
| #include "gl/GrGLEffect.h" |
| #include "GrTBackendEffectFactory.h" |
| @@ -31,46 +32,53 @@ public: |
| virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE; |
| virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE; |
| - /** |
| - * Create a simple Mitchell filter effect. |
| - */ |
| - static GrEffectRef* Create(GrTexture* tex) { |
| - return Create(tex, gMitchellCoefficients); |
| - } |
| + const GrTextureDomain& domain() const { return fDomain; } |
| /** |
| - * Create a simple filter effect with custom bicubic coefficients. |
| + * Create a simple filter effect with custom bicubic coefficients and optional domain. |
| */ |
| static GrEffectRef* Create(GrTexture* tex, const SkScalar coefficients[16]) { |
|
Stephen White
2013/12/12 01:50:07
Maybe this variant of the factory function should
bsalomon
2013/12/13 20:53:26
Done.
|
| - const SkShader::TileMode tm[] = { SkShader::kClamp_TileMode, SkShader::kClamp_TileMode }; |
| - return Create(tex, coefficients, MakeDivByTextureWHMatrix(tex), tm); |
| + static const SkShader::TileMode kTileModes[] = { SkShader::kClamp_TileMode, |
| + SkShader::kClamp_TileMode }; |
| + return Create(tex, coefficients, MakeDivByTextureWHMatrix(tex), kTileModes); |
| } |
| /** |
| * Create a Mitchell filter effect with specified texture matrix and x/y tile modes. |
| */ |
| - static GrEffectRef* Create(GrTexture* tex, |
| - const SkMatrix& matrix, |
| + static GrEffectRef* Create(GrTexture* tex, const SkMatrix& matrix, |
| SkShader::TileMode tileModes[2]) { |
| return Create(tex, gMitchellCoefficients, matrix, tileModes); |
| } |
| /** |
| - * The most general Create method. This allows specification of the bicubic coefficients, the |
| - * texture matrix, and the x/y tilemodes. |
| + * Create a filter effect with custom bicubic coefficients, the texture matrix, and the x/y |
| + * tilemodes. |
| */ |
| static GrEffectRef* Create(GrTexture* tex, const SkScalar coefficients[16], |
| - const SkMatrix& matrix, |
| - const SkShader::TileMode tileModes[2]) { |
| + const SkMatrix& matrix, const SkShader::TileMode tileModes[2]) { |
| AutoEffectUnref effect(SkNEW_ARGS(GrBicubicEffect, (tex, coefficients, matrix, tileModes))); |
| return CreateEffectRef(effect); |
| } |
| + /** |
| + * Create a Mitchell filter effect with a texture matrix and a domain. |
| + */ |
| + static GrEffectRef* Create(GrTexture* tex, const SkMatrix& matrix, const SkRect& domain) { |
| + AutoEffectUnref effect(SkNEW_ARGS(GrBicubicEffect, (tex, gMitchellCoefficients, matrix, |
| + domain))); |
| + return CreateEffectRef(effect); |
| + } |
| + |
| private: |
| GrBicubicEffect(GrTexture*, const SkScalar coefficients[16], |
| const SkMatrix &matrix, const SkShader::TileMode tileModes[2]); |
| + GrBicubicEffect(GrTexture*, const SkScalar coefficients[16], |
| + const SkMatrix &matrix, const SkRect& domain); |
| virtual bool onIsEqual(const GrEffect&) const SK_OVERRIDE; |
| - float fCoefficients[16]; |
| + |
| + float fCoefficients[16]; |
| + GrTextureDomain fDomain; |
| GR_DECLARE_EFFECT_TEST; |