diff options
author | 2013-01-17 16:50:08 +0000 | |
---|---|---|
committer | 2013-01-17 16:50:08 +0000 | |
commit | 68b58c95384dd6c2fd389a5b4bbf8fc468819454 (patch) | |
tree | 53cf3d959de9fa42a6b064d05580203c1b84065b /src/gpu/effects/GrSimpleTextureEffect.h | |
parent | e8cc6e8071935339a06548b13a0668b56a7540f5 (diff) |
Remove default implementation of GrEffect::isEqual. Make GrSingleTextureEffect abstract.
Review URL: https://codereview.appspot.com/7142049
git-svn-id: http://skia.googlecode.com/svn/trunk@7254 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu/effects/GrSimpleTextureEffect.h')
-rw-r--r-- | src/gpu/effects/GrSimpleTextureEffect.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/gpu/effects/GrSimpleTextureEffect.h b/src/gpu/effects/GrSimpleTextureEffect.h new file mode 100644 index 0000000000..5ccbe33497 --- /dev/null +++ b/src/gpu/effects/GrSimpleTextureEffect.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 GrSimpleTextureEffect_DEFINED +#define GrSimpleTextureEffect_DEFINED + +#include "GrSingleTextureEffect.h" + +class GrGLSimpleTextureEffect; + +/** + * The output color of this effect is a modulation of the input color and a sample from a texture. + * The coord to sample the texture is determine by a matrix. It allows explicit specification of + * the filtering and wrap modes (GrTextureParams). + */ +class GrSimpleTextureEffect : public GrSingleTextureEffect { +public: + /* unfiltered, clamp mode */ + static GrEffectRef* Create(GrTexture* tex, const SkMatrix& matrix) { + SkAutoTUnref<GrEffect> effect(SkNEW_ARGS(GrSimpleTextureEffect, (tex, matrix))); + return CreateEffectRef(effect); + } + + /* clamp mode */ + static GrEffectRef* Create(GrTexture* tex, const SkMatrix& matrix, bool bilerp) { + SkAutoTUnref<GrEffect> effect(SkNEW_ARGS(GrSimpleTextureEffect, (tex, matrix, bilerp))); + return CreateEffectRef(effect); + } + + static GrEffectRef* Create(GrTexture* tex, const SkMatrix& matrix, const GrTextureParams& p) { + SkAutoTUnref<GrEffect> effect(SkNEW_ARGS(GrSimpleTextureEffect, (tex, matrix, p))); + return CreateEffectRef(effect); + } + + virtual ~GrSimpleTextureEffect() {} + + static const char* Name() { return "Texture"; } + + virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE; + + typedef GrGLSimpleTextureEffect GLEffect; + + virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE; + +private: + GrSimpleTextureEffect(GrTexture* texture, const SkMatrix& matrix) + : GrSingleTextureEffect(texture, matrix) {} + GrSimpleTextureEffect(GrTexture* texture, const SkMatrix& matrix, bool bilerp) + : GrSingleTextureEffect(texture, matrix, bilerp) {} + GrSimpleTextureEffect(GrTexture* texture, const SkMatrix& matrix, const GrTextureParams& params) + : GrSingleTextureEffect(texture, matrix, params) {} + + virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE { + const GrSimpleTextureEffect& ste = static_cast<const GrSimpleTextureEffect&>(other); + return this->hasSameTextureParamsAndMatrix(ste); + } + + GR_DECLARE_EFFECT_TEST; + + typedef GrSingleTextureEffect INHERITED; +}; + +#endif |