| Index: src/effects/gradients/SkGradientShaderPriv.h | 
| diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h | 
| index 96135378032d52ade5e27b2c573408206543eb37..61acf3c8fe8075d015ba164d7577f775fdfd5fa6 100644 | 
| --- a/src/effects/gradients/SkGradientShaderPriv.h | 
| +++ b/src/effects/gradients/SkGradientShaderPriv.h | 
| @@ -379,6 +379,29 @@ public: | 
| virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVERRIDE; | 
|  | 
| protected: | 
| +    /** | 
| +     * Subclasses must call this. It will return a key for the part of the shader code controlled | 
| +     * by the base class. The subclasses must stick it in their key and then pass it to the below | 
| +     * emit* functions from their emitCode function. | 
| +     */ | 
| +    static uint32_t GenBaseGradientKey(const GrDrawEffect&); | 
| + | 
| +    // Emits the uniform used as the y-coord to texture samples in derived classes. Subclasses | 
| +    // should call this method from their emitCode(). | 
| +    void emitUniforms(GrGLShaderBuilder* builder, uint32_t baseKey); | 
| + | 
| + | 
| +    // emit code that gets a fragment's color from an expression for t; Has branches for 3 separate | 
| +    // control flows inside -- 2 color gradients, 3 color symmetric gradients (both using | 
| +    // native GLSL mix), and 4+ color gradients that use the traditional texture lookup. | 
| +    void emitColor(GrGLShaderBuilder* builder, | 
| +                   const char* gradientTValue, | 
| +                   uint32_t baseKey, | 
| +                   const char* outputColor, | 
| +                   const char* inputColor, | 
| +                   const TextureSamplerArray& samplers); | 
| + | 
| +private: | 
| enum { | 
| kPremulTypeKeyBitCnt = 1, | 
| kPremulTypeMask = 1, | 
| @@ -393,45 +416,24 @@ protected: | 
| // and combine with the result of GenBaseGradientKey. | 
| kBaseKeyBitCnt = (kPremulTypeKeyBitCnt + kColorKeyBitCnt) | 
| }; | 
| +    GR_STATIC_ASSERT(kBaseKeyBitCnt <= 32); | 
|  | 
| -    static SkGradientShaderBase::GpuColorType ColorTypeFromKey(EffectKey key){ | 
| -        if (kTwoColorKey == (key & kColorKeyMask)) { | 
| +    static SkGradientShaderBase::GpuColorType ColorTypeFromKey(uint32_t baseKey){ | 
| +        if (kTwoColorKey == (baseKey & kColorKeyMask)) { | 
| return SkGradientShaderBase::kTwo_GpuColorType; | 
| -        } else if (kThreeColorKey == (key & kColorKeyMask)) { | 
| +        } else if (kThreeColorKey == (baseKey & kColorKeyMask)) { | 
| return SkGradientShaderBase::kThree_GpuColorType; | 
| } else {return SkGradientShaderBase::kTexture_GpuColorType;} | 
| } | 
|  | 
| -    static GrGradientEffect::PremulType PremulTypeFromKey(EffectKey key){ | 
| -        if (kPremulBeforeInterpKey == (key & kPremulTypeMask)) { | 
| +    static GrGradientEffect::PremulType PremulTypeFromKey(uint32_t baseKey){ | 
| +        if (kPremulBeforeInterpKey == (baseKey & kPremulTypeMask)) { | 
| return GrGradientEffect::kBeforeInterp_PremulType; | 
| } else { | 
| return GrGradientEffect::kAfterInterp_PremulType; | 
| } | 
| } | 
|  | 
| -    /** | 
| -     * Subclasses must call this. It will return a value restricted to the lower kBaseKeyBitCnt | 
| -     * bits. | 
| -     */ | 
| -    static EffectKey GenBaseGradientKey(const GrDrawEffect&); | 
| - | 
| -    // Emits the uniform used as the y-coord to texture samples in derived classes. Subclasses | 
| -    // should call this method from their emitCode(). | 
| -    void emitUniforms(GrGLShaderBuilder* builder, EffectKey key); | 
| - | 
| - | 
| -    // emit code that gets a fragment's color from an expression for t; Has branches for 3 separate | 
| -    // control flows inside -- 2 color gradients, 3 color symmetric gradients (both using | 
| -    // native GLSL mix), and 4+ color gradients that use the traditional texture lookup. | 
| -    void emitColor(GrGLShaderBuilder* builder, | 
| -                   const char* gradientTValue, | 
| -                   EffectKey key, | 
| -                   const char* outputColor, | 
| -                   const char* inputColor, | 
| -                   const TextureSamplerArray& samplers); | 
| - | 
| -private: | 
| SkScalar fCachedYCoord; | 
| GrGLUniformManager::UniformHandle fFSYUni; | 
| GrGLUniformManager::UniformHandle fColorStartUni; | 
|  |