Index: src/effects/gradients/SkGradientShaderPriv.h |
diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h |
index 1787e243886068cb31154d2ab21d7399a603c5c6..095baf4fcef521cc4d82da26388e36a2f61972f2 100644 |
--- a/src/effects/gradients/SkGradientShaderPriv.h |
+++ b/src/effects/gradients/SkGradientShaderPriv.h |
@@ -95,6 +95,24 @@ public: |
int fCount; |
SkShader::TileMode fTileMode; |
uint32_t fGradFlags; |
+ |
+ void flatten(SkWriteBuffer&) const; |
+ }; |
+ |
+ class DescriptorScope : public Descriptor { |
+ public: |
+ DescriptorScope() {} |
+ |
+ bool unflatten(SkReadBuffer&); |
+ |
+ private: |
+ enum { |
+ kStorageCount = 16 |
+ }; |
+ SkColor fColorStorage[kStorageCount]; |
+ SkScalar fPosStorage[kStorageCount]; |
+ SkMatrix fLocalMatrixStorage; |
+ SkAutoMalloc fDynamicStorage; |
}; |
public: |
@@ -234,10 +252,11 @@ private: |
enum { |
kColorStorageCount = 4, // more than this many colors, and we'll use sk_malloc for the space |
- kStorageSize = kColorStorageCount * (sizeof(SkColor) + sizeof(Rec)) |
+ kStorageSize = kColorStorageCount * (sizeof(SkColor) + sizeof(SkScalar) + sizeof(Rec)) |
}; |
SkColor fStorage[(kStorageSize + 3) >> 2]; |
SkColor* fOrigColors; // original colors, before modulation by paint in context. |
+ SkScalar* fOrigPos; // original positions |
bool fColorsAreOpaque; |
GradientShaderCache* refCache(U8CPU alpha) const; |