| Index: src/gpu/effects/GrDistanceFieldTextureEffect.h
|
| diff --git a/src/gpu/effects/GrDistanceFieldTextureEffect.h b/src/gpu/effects/GrDistanceFieldTextureEffect.h
|
| index 212532e0a8664d765e46ac3393cb64b51d3ccaee..937908f9bc0a55fa75bcfc539596f2325b5b00c8 100644
|
| --- a/src/gpu/effects/GrDistanceFieldTextureEffect.h
|
| +++ b/src/gpu/effects/GrDistanceFieldTextureEffect.h
|
| @@ -12,6 +12,7 @@
|
| #include "GrVertexEffect.h"
|
|
|
| class GrGLDistanceFieldTextureEffect;
|
| +class GrGLDistanceFieldLCDTextureEffect;
|
|
|
| /**
|
| * The output color of this effect is a modulation of the input color and a sample from a
|
| @@ -21,8 +22,8 @@ class GrGLDistanceFieldTextureEffect;
|
| */
|
| class GrDistanceFieldTextureEffect : public GrVertexEffect {
|
| public:
|
| - static GrEffectRef* Create(GrTexture* tex, const GrTextureParams& para, bool uniformScale) {
|
| - AutoEffectUnref effect(SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, para, uniformScale)));
|
| + static GrEffectRef* Create(GrTexture* tex, const GrTextureParams& params, bool similarity) {
|
| + AutoEffectUnref effect(SkNEW_ARGS(GrDistanceFieldTextureEffect, (tex, params, similarity)));
|
| return CreateEffectRef(effect);
|
| }
|
|
|
| @@ -31,7 +32,7 @@ public:
|
| static const char* Name() { return "DistanceFieldTexture"; }
|
|
|
| virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE;
|
| - bool isUniformScale() const { return fUniformScale; }
|
| + bool isSimilarity() const { return fIsSimilarity; }
|
|
|
| typedef GrGLDistanceFieldTextureEffect GLEffect;
|
|
|
| @@ -44,11 +45,54 @@ private:
|
| virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE;
|
|
|
| GrTextureAccess fTextureAccess;
|
| + bool fIsSimilarity;
|
| +
|
| + GR_DECLARE_EFFECT_TEST;
|
| +
|
| + typedef GrVertexEffect INHERITED;
|
| +};
|
| +
|
| +/**
|
| + * The output color of this effect is a modulation of the input color and samples from a
|
| + * distance field texture (using a smoothed step function near 0.5), adjusted for LCD displays.
|
| + * It allows explicit specification of the filtering and wrap modes (GrTextureParams). The input
|
| + * coords are a custom attribute.
|
| + */
|
| +class GrDistanceFieldLCDTextureEffect : public GrVertexEffect {
|
| +public:
|
| + static GrEffectRef* Create(GrTexture* tex, const GrTextureParams& params,
|
| + bool uniformScale, bool useBGR) {
|
| + AutoEffectUnref effect(SkNEW_ARGS(GrDistanceFieldLCDTextureEffect,
|
| + (tex, params, uniformScale, useBGR)));
|
| + return CreateEffectRef(effect);
|
| + }
|
| +
|
| + virtual ~GrDistanceFieldLCDTextureEffect() {}
|
| +
|
| + static const char* Name() { return "DistanceFieldLCDTexture"; }
|
| +
|
| + virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE;
|
| + bool isUniformScale() const { return fUniformScale; }
|
| + bool useBGR() const { return fUseBGR; }
|
| +
|
| + typedef GrGLDistanceFieldLCDTextureEffect GLEffect;
|
| +
|
| + virtual const GrBackendEffectFactory& getFactory() const SK_OVERRIDE;
|
| +
|
| +private:
|
| + GrDistanceFieldLCDTextureEffect(GrTexture* texture, const GrTextureParams& params,
|
| + bool uniformScale, bool useBGR);
|
| +
|
| + virtual bool onIsEqual(const GrEffect& other) const SK_OVERRIDE;
|
| +
|
| + GrTextureAccess fTextureAccess;
|
| bool fUniformScale;
|
| + bool fUseBGR;
|
|
|
| GR_DECLARE_EFFECT_TEST;
|
|
|
| typedef GrVertexEffect INHERITED;
|
| };
|
|
|
| +
|
| #endif
|
|
|