| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2013 Google Inc. | 2  * Copyright 2013 Google Inc. | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #include "GrDistanceFieldTextureEffect.h" | 8 #include "GrDistanceFieldTextureEffect.h" | 
| 9 #include "gl/GrGLEffect.h" | 9 #include "gl/GrGLEffect.h" | 
| 10 #include "gl/GrGLShaderBuilder.h" | 10 #include "gl/GrGLShaderBuilder.h" | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 31 | 31 | 
| 32 class GrGLDistanceFieldTextureEffect : public GrGLVertexEffect { | 32 class GrGLDistanceFieldTextureEffect : public GrGLVertexEffect { | 
| 33 public: | 33 public: | 
| 34     GrGLDistanceFieldTextureEffect(const GrBackendEffectFactory& factory, | 34     GrGLDistanceFieldTextureEffect(const GrBackendEffectFactory& factory, | 
| 35                                    const GrDrawEffect& drawEffect) | 35                                    const GrDrawEffect& drawEffect) | 
| 36         : INHERITED (factory) | 36         : INHERITED (factory) | 
| 37         , fTextureSize(SkISize::Make(-1,-1)) {} | 37         , fTextureSize(SkISize::Make(-1,-1)) {} | 
| 38 | 38 | 
| 39     virtual void emitCode(GrGLFullShaderBuilder* builder, | 39     virtual void emitCode(GrGLFullShaderBuilder* builder, | 
| 40                           const GrDrawEffect& drawEffect, | 40                           const GrDrawEffect& drawEffect, | 
| 41                           EffectKey key, | 41                           const GrEffectKey& key, | 
| 42                           const char* outputColor, | 42                           const char* outputColor, | 
| 43                           const char* inputColor, | 43                           const char* inputColor, | 
| 44                           const TransformedCoordsArray&, | 44                           const TransformedCoordsArray&, | 
| 45                           const TextureSamplerArray& samplers) SK_OVERRIDE { | 45                           const TextureSamplerArray& samplers) SK_OVERRIDE { | 
| 46         SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldTextureEffect>().numV
     ertexAttribs()); | 46         SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldTextureEffect>().numV
     ertexAttribs()); | 
| 47 | 47 | 
| 48         SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva
     tives_GLSLFeature)); | 48         SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva
     tives_GLSLFeature)); | 
| 49         const GrDistanceFieldTextureEffect& dfTexEffect = | 49         const GrDistanceFieldTextureEffect& dfTexEffect = | 
| 50                                               drawEffect.castEffect<GrDistanceFi
     eldTextureEffect>(); | 50                                               drawEffect.castEffect<GrDistanceFi
     eldTextureEffect>(); | 
| 51 | 51 | 
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 141         const GrDistanceFieldTextureEffect& dfTexEffect = | 141         const GrDistanceFieldTextureEffect& dfTexEffect = | 
| 142                                               drawEffect.castEffect<GrDistanceFi
     eldTextureEffect>(); | 142                                               drawEffect.castEffect<GrDistanceFi
     eldTextureEffect>(); | 
| 143         float luminance = dfTexEffect.getLuminance(); | 143         float luminance = dfTexEffect.getLuminance(); | 
| 144         if (luminance != fLuminance) { | 144         if (luminance != fLuminance) { | 
| 145             uman.set1f(fLuminanceUni, luminance); | 145             uman.set1f(fLuminanceUni, luminance); | 
| 146             fLuminance = luminance; | 146             fLuminance = luminance; | 
| 147         } | 147         } | 
| 148 #endif | 148 #endif | 
| 149     } | 149     } | 
| 150 | 150 | 
| 151     static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrGLCap
     s&) { | 151     static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&, | 
|  | 152                               GrEffectKeyBuilder* b) { | 
| 152         const GrDistanceFieldTextureEffect& dfTexEffect = | 153         const GrDistanceFieldTextureEffect& dfTexEffect = | 
| 153                                               drawEffect.castEffect<GrDistanceFi
     eldTextureEffect>(); | 154                                               drawEffect.castEffect<GrDistanceFi
     eldTextureEffect>(); | 
| 154 | 155 | 
| 155         return dfTexEffect.isSimilarity() ? 0x1 : 0x0; | 156         b->add32(dfTexEffect.isSimilarity()); | 
| 156     } | 157     } | 
| 157 | 158 | 
| 158 private: | 159 private: | 
| 159     GrGLUniformManager::UniformHandle fTextureSizeUni; | 160     GrGLUniformManager::UniformHandle fTextureSizeUni; | 
| 160     SkISize                           fTextureSize; | 161     SkISize                           fTextureSize; | 
| 161     GrGLUniformManager::UniformHandle fLuminanceUni; | 162     GrGLUniformManager::UniformHandle fLuminanceUni; | 
| 162     float                             fLuminance; | 163     float                             fLuminance; | 
| 163 | 164 | 
| 164     typedef GrGLVertexEffect INHERITED; | 165     typedef GrGLVertexEffect INHERITED; | 
| 165 }; | 166 }; | 
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 248 | 249 | 
| 249 class GrGLDistanceFieldLCDTextureEffect : public GrGLVertexEffect { | 250 class GrGLDistanceFieldLCDTextureEffect : public GrGLVertexEffect { | 
| 250 public: | 251 public: | 
| 251     GrGLDistanceFieldLCDTextureEffect(const GrBackendEffectFactory& factory, | 252     GrGLDistanceFieldLCDTextureEffect(const GrBackendEffectFactory& factory, | 
| 252                                       const GrDrawEffect& drawEffect) | 253                                       const GrDrawEffect& drawEffect) | 
| 253     : INHERITED (factory) | 254     : INHERITED (factory) | 
| 254     , fTextureSize(SkISize::Make(-1,-1)) {} | 255     , fTextureSize(SkISize::Make(-1,-1)) {} | 
| 255 | 256 | 
| 256     virtual void emitCode(GrGLFullShaderBuilder* builder, | 257     virtual void emitCode(GrGLFullShaderBuilder* builder, | 
| 257                           const GrDrawEffect& drawEffect, | 258                           const GrDrawEffect& drawEffect, | 
| 258                           EffectKey key, | 259                           const GrEffectKey& key, | 
| 259                           const char* outputColor, | 260                           const char* outputColor, | 
| 260                           const char* inputColor, | 261                           const char* inputColor, | 
| 261                           const TransformedCoordsArray&, | 262                           const TransformedCoordsArray&, | 
| 262                           const TextureSamplerArray& samplers) SK_OVERRIDE { | 263                           const TextureSamplerArray& samplers) SK_OVERRIDE { | 
| 263         SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>().n
     umVertexAttribs()); | 264         SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>().n
     umVertexAttribs()); | 
| 264 | 265 | 
| 265         SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva
     tives_GLSLFeature)); | 266         SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva
     tives_GLSLFeature)); | 
| 266         const GrDistanceFieldLCDTextureEffect& dfTexEffect = | 267         const GrDistanceFieldLCDTextureEffect& dfTexEffect = | 
| 267                                            drawEffect.castEffect<GrDistanceField
     LCDTextureEffect>(); | 268                                            drawEffect.castEffect<GrDistanceField
     LCDTextureEffect>(); | 
| 268 | 269 | 
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 405         if (textColor != fTextColor) { | 406         if (textColor != fTextColor) { | 
| 406             static const float ONE_OVER_255 = 1.f / 255.f; | 407             static const float ONE_OVER_255 = 1.f / 255.f; | 
| 407             uman.set3f(fTextColorUni, | 408             uman.set3f(fTextColorUni, | 
| 408                        GrColorUnpackR(textColor) * ONE_OVER_255, | 409                        GrColorUnpackR(textColor) * ONE_OVER_255, | 
| 409                        GrColorUnpackG(textColor) * ONE_OVER_255, | 410                        GrColorUnpackG(textColor) * ONE_OVER_255, | 
| 410                        GrColorUnpackB(textColor) * ONE_OVER_255); | 411                        GrColorUnpackB(textColor) * ONE_OVER_255); | 
| 411             fTextColor = textColor; | 412             fTextColor = textColor; | 
| 412         } | 413         } | 
| 413     } | 414     } | 
| 414 | 415 | 
| 415     static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrGLCap
     s&) { | 416     static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&, | 
|  | 417                               GrEffectKeyBuilder* b) { | 
| 416         const GrDistanceFieldLCDTextureEffect& dfTexEffect = | 418         const GrDistanceFieldLCDTextureEffect& dfTexEffect = | 
| 417                                            drawEffect.castEffect<GrDistanceField
     LCDTextureEffect>(); | 419                                            drawEffect.castEffect<GrDistanceField
     LCDTextureEffect>(); | 
| 418 | 420 | 
| 419         return dfTexEffect.isUniformScale() ? 0x01 : 0x00;; | 421         b->add32(dfTexEffect.isUniformScale()); | 
| 420     } | 422     } | 
| 421 | 423 | 
| 422 private: | 424 private: | 
| 423     GrGLUniformManager::UniformHandle fTextureSizeUni; | 425     GrGLUniformManager::UniformHandle fTextureSizeUni; | 
| 424     SkISize                           fTextureSize; | 426     SkISize                           fTextureSize; | 
| 425     GrGLUniformManager::UniformHandle fTextColorUni; | 427     GrGLUniformManager::UniformHandle fTextColorUni; | 
| 426     SkColor                           fTextColor; | 428     SkColor                           fTextColor; | 
| 427 | 429 | 
| 428     typedef GrGLVertexEffect INHERITED; | 430     typedef GrGLVertexEffect INHERITED; | 
| 429 }; | 431 }; | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 492                            GrTextureParams::kNone_FilterMode); | 494                            GrTextureParams::kNone_FilterMode); | 
| 493     GrColor textColor = GrColorPackRGBA(random->nextULessThan(256), | 495     GrColor textColor = GrColorPackRGBA(random->nextULessThan(256), | 
| 494                                         random->nextULessThan(256), | 496                                         random->nextULessThan(256), | 
| 495                                         random->nextULessThan(256), | 497                                         random->nextULessThan(256), | 
| 496                                         random->nextULessThan(256)); | 498                                         random->nextULessThan(256)); | 
| 497     return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, | 499     return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, | 
| 498                                                    textures[texIdx2], params2, | 500                                                    textures[texIdx2], params2, | 
| 499                                                    textColor, | 501                                                    textColor, | 
| 500                                                    random->nextBool(), random->n
     extBool()); | 502                                                    random->nextBool(), random->n
     extBool()); | 
| 501 } | 503 } | 
| OLD | NEW | 
|---|