| Index: src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| diff --git a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| index 675715781c5d65808b6d41a6bdadb6a079fa25ca..0c0c1afc769ac15f2355e85c46deb83427b19c20 100755
|
| --- a/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| +++ b/src/gpu/effects/GrDistanceFieldTextureEffect.cpp
|
| @@ -79,7 +79,7 @@
|
| builder->fsCodeAppendf("\tvec2 uv = %s;\n", fsCoordName.c_str());
|
| builder->fsCodeAppendf("\tvec2 st = uv*%s;\n", textureSizeUniName);
|
| builder->fsCodeAppend("\tfloat afwidth;\n");
|
| - if (dfTexEffect.getFlags() & kSimilarity_DistanceFieldEffectFlag) {
|
| + if (dfTexEffect.isSimilarity()) {
|
| // this gives us a smooth step across approximately one fragment
|
| builder->fsCodeAppend("\tafwidth = " SK_DistanceFieldAAFactor "*dFdx(st.x);\n");
|
| } else {
|
| @@ -153,7 +153,7 @@
|
| const GrDistanceFieldTextureEffect& dfTexEffect =
|
| drawEffect.castEffect<GrDistanceFieldTextureEffect>();
|
|
|
| - b->add32(dfTexEffect.getFlags());
|
| + b->add32(dfTexEffect.isSimilarity());
|
| }
|
|
|
| private:
|
| @@ -174,14 +174,13 @@
|
| const GrTextureParams& gammaParams,
|
| float luminance,
|
| #endif
|
| - uint32_t flags)
|
| + bool similarity)
|
| : fTextureAccess(texture, params)
|
| #ifdef SK_GAMMA_APPLY_TO_A8
|
| , fGammaTextureAccess(gamma, gammaParams)
|
| , fLuminance(luminance)
|
| #endif
|
| - , fFlags(flags & kNonLCD_DistanceFieldEffectMask) {
|
| - SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
|
| + , fIsSimilarity(similarity) {
|
| this->addTextureAccess(&fTextureAccess);
|
| #ifdef SK_GAMMA_APPLY_TO_A8
|
| this->addTextureAccess(&fGammaTextureAccess);
|
| @@ -191,10 +190,7 @@
|
|
|
| bool GrDistanceFieldTextureEffect::onIsEqual(const GrEffect& other) const {
|
| const GrDistanceFieldTextureEffect& cte = CastEffect<GrDistanceFieldTextureEffect>(other);
|
| - return fTextureAccess == cte.fTextureAccess &&
|
| - fGammaTextureAccess == cte.fGammaTextureAccess &&
|
| - fLuminance == cte.fLuminance &&
|
| - fFlags == cte.fFlags;
|
| + return fTextureAccess == cte.fTextureAccess;
|
| }
|
|
|
| void GrDistanceFieldTextureEffect::getConstantColorComponents(GrColor* color,
|
| @@ -246,8 +242,7 @@
|
| textures[texIdx2], params2,
|
| random->nextF(),
|
| #endif
|
| - random->nextBool() ?
|
| - kSimilarity_DistanceFieldEffectFlag : 0);
|
| + random->nextBool());
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -291,8 +286,7 @@
|
| // create LCD offset adjusted by inverse of transform
|
| builder->fsCodeAppendf("\tvec2 uv = %s;\n", fsCoordName.c_str());
|
| builder->fsCodeAppendf("\tvec2 st = uv*%s.xy;\n", textureSizeUniName);
|
| - bool isUniformScale = !!(dfTexEffect.getFlags() & kUniformScale_DistanceFieldEffectMask);
|
| - if (isUniformScale) {
|
| + if (dfTexEffect.isUniformScale()) {
|
| builder->fsCodeAppend("\tfloat dx = dFdx(st.x);\n");
|
| builder->fsCodeAppendf("\tvec2 offset = vec2(dx*%s.z, 0.0);\n", textureSizeUniName);
|
| } else {
|
| @@ -333,7 +327,7 @@
|
| // transformations, and even then using a single factor seems like a reasonable
|
| // trade-off between quality and speed.
|
| builder->fsCodeAppend("\tfloat afwidth;\n");
|
| - if (isUniformScale) {
|
| + if (dfTexEffect.isUniformScale()) {
|
| // this gives us a smooth step across approximately one fragment
|
| builder->fsCodeAppend("\tafwidth = " SK_DistanceFieldAAFactor "*dx;\n");
|
| } else {
|
| @@ -399,7 +393,7 @@
|
| texture->height() != fTextureSize.height()) {
|
| fTextureSize = SkISize::Make(texture->width(), texture->height());
|
| float delta = 1.0f/(3.0f*texture->width());
|
| - if (dfTexEffect.getFlags() & kBGR_DistanceFieldEffectFlag) {
|
| + if (dfTexEffect.useBGR()) {
|
| delta = -delta;
|
| }
|
| uman.set3f(fTextureSizeUni,
|
| @@ -424,7 +418,7 @@
|
| const GrDistanceFieldLCDTextureEffect& dfTexEffect =
|
| drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>();
|
|
|
| - b->add32(dfTexEffect.getFlags());
|
| + b->add32(dfTexEffect.isUniformScale());
|
| }
|
|
|
| private:
|
| @@ -442,13 +436,12 @@
|
| GrTexture* texture, const GrTextureParams& params,
|
| GrTexture* gamma, const GrTextureParams& gParams,
|
| SkColor textColor,
|
| - uint32_t flags)
|
| + bool uniformScale, bool useBGR)
|
| : fTextureAccess(texture, params)
|
| , fGammaTextureAccess(gamma, gParams)
|
| , fTextColor(textColor)
|
| - , fFlags(flags & kLCD_DistanceFieldEffectMask) {
|
| - SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_DistanceFieldEffectFlag));
|
| -
|
| + , fUniformScale(uniformScale)
|
| + , fUseBGR(useBGR) {
|
| this->addTextureAccess(&fTextureAccess);
|
| this->addTextureAccess(&fGammaTextureAccess);
|
| this->addVertexAttrib(kVec2f_GrSLType);
|
| @@ -457,10 +450,7 @@
|
| bool GrDistanceFieldLCDTextureEffect::onIsEqual(const GrEffect& other) const {
|
| const GrDistanceFieldLCDTextureEffect& cte =
|
| CastEffect<GrDistanceFieldLCDTextureEffect>(other);
|
| - return (fTextureAccess == cte.fTextureAccess &&
|
| - fGammaTextureAccess == cte.fGammaTextureAccess &&
|
| - fTextColor == cte.fTextColor &&
|
| - fFlags == cte.fFlags);
|
| + return (fTextureAccess == cte.fTextureAccess && fGammaTextureAccess == cte.fGammaTextureAccess);
|
| }
|
|
|
| void GrDistanceFieldLCDTextureEffect::getConstantColorComponents(GrColor* color,
|
| @@ -506,11 +496,8 @@
|
| random->nextULessThan(256),
|
| random->nextULessThan(256),
|
| random->nextULessThan(256));
|
| - uint32_t flags = kUseLCD_DistanceFieldEffectFlag;
|
| - flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0;
|
| - flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0;
|
| return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params,
|
| textures[texIdx2], params2,
|
| textColor,
|
| - flags);
|
| -}
|
| + random->nextBool(), random->nextBool());
|
| +}
|
|
|