Index: src/effects/gradients/SkGradientShaderPriv.h |
diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h |
index 1d0f008917d42d974c393d3fb4c31dbd580d8572..69d584225f68df366efccd2b2a7b32f6b0162ac6 100644 |
--- a/src/effects/gradients/SkGradientShaderPriv.h |
+++ b/src/effects/gradients/SkGradientShaderPriv.h |
@@ -185,6 +185,19 @@ public: |
kDitherStride16 = kCache16Count, |
}; |
+ enum ColorType { |
bsalomon
2014/04/17 20:43:40
Since this is a GPU notion in a non-GPU-specific c
|
+ kTwo_ColorType, |
+ kThree_ColorType, // Symmetric three color |
+ kTexture_ColorType |
+ }; |
+ |
+ // Determines and returns the gradient is a two color gradient, three color gradient |
bsalomon
2014/04/17 20:43:40
*symmetric* three color?
|
+ // or other (texture gradient). If it is two or three color, the colors array will |
+ // also be filled with the gradient colors |
+ ColorType getGradientColorType(SkColor colors[3]) const; |
bsalomon
2014/04/17 20:43:40
getGpuColorType()?
|
+ |
+ uint32_t getGradientFlags() const { return fGradFlags; } |
bsalomon
2014/04/17 20:43:40
getFlags()?
|
+ |
protected: |
SkGradientShaderBase(SkReadBuffer& ); |
virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
@@ -293,13 +306,7 @@ public: |
virtual void getConstantColorComponents(GrColor* color, uint32_t* validFlags) const SK_OVERRIDE; |
- enum ColorType { |
- kTwo_ColorType, |
- kThree_ColorType, |
- kTexture_ColorType |
- }; |
- |
- ColorType getColorType() const { return fColorType; } |
+ SkGradientShaderBase::ColorType getColorType() const { return fColorType; } |
enum PremulType { |
kBeforeInterp_PremulType, |
@@ -309,7 +316,7 @@ public: |
PremulType getPremulType() const { return fPremulType; } |
const SkColor* getColors(int pos) const { |
- SkASSERT(fColorType != kTexture_ColorType); |
+ SkASSERT(fColorType != SkGradientShaderBase::kTexture_ColorType); |
SkASSERT((pos-1) <= fColorType); |
return &fColors[pos]; |
} |
@@ -336,18 +343,14 @@ protected: |
private: |
static const GrCoordSet kCoordSet = kLocal_GrCoordSet; |
- enum { |
- kMaxAnalyticColors = 3 // if more colors use texture |
- }; |
- |
GrCoordTransform fCoordTransform; |
GrTextureAccess fTextureAccess; |
SkScalar fYCoord; |
GrTextureStripAtlas* fAtlas; |
int fRow; |
bool fIsOpaque; |
- ColorType fColorType; |
- SkColor fColors[kMaxAnalyticColors]; |
+ SkGradientShaderBase::ColorType fColorType; |
+ SkColor fColors[3]; // More than 3 colors we use texture |
PremulType fPremulType; // This only changes behavior for two and three color special cases. |
// It is already baked into to the table for texture gradients. |
typedef GrEffect INHERITED; |
@@ -380,12 +383,12 @@ protected: |
kBaseKeyBitCnt = (kPremulTypeKeyBitCnt + kColorKeyBitCnt) |
}; |
- static GrGradientEffect::ColorType ColorTypeFromKey(EffectKey key){ |
+ static SkGradientShaderBase::ColorType ColorTypeFromKey(EffectKey key){ |
if (kTwoColorKey == (key & kColorKeyMask)) { |
- return GrGradientEffect::kTwo_ColorType; |
+ return SkGradientShaderBase::kTwo_ColorType; |
} else if (kThreeColorKey == (key & kColorKeyMask)) { |
- return GrGradientEffect::kThree_ColorType; |
- } else {return GrGradientEffect::kTexture_ColorType;} |
+ return SkGradientShaderBase::kThree_ColorType; |
+ } else {return SkGradientShaderBase::kTexture_ColorType;} |
} |
static GrGradientEffect::PremulType PremulTypeFromKey(EffectKey key){ |