Index: include/core/SkComposeShader.h |
diff --git a/include/core/SkComposeShader.h b/include/core/SkComposeShader.h |
index b54e5efa97e0914dab0564ed940e1f9958607b64..d42da0c2f32aaab77ed14c55c9c4968d92496c08 100644 |
--- a/include/core/SkComposeShader.h |
+++ b/include/core/SkComposeShader.h |
@@ -34,10 +34,38 @@ |
SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode = NULL); |
virtual ~SkComposeShader(); |
- virtual bool setContext(const SkBitmap&, const SkPaint&, |
- const SkMatrix&) SK_OVERRIDE; |
- virtual void endContext() SK_OVERRIDE; |
- virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE; |
+ virtual bool validContext(const SkBitmap&, const SkPaint&, |
+ const SkMatrix&, SkMatrix* totalInverse = NULL) const SK_OVERRIDE; |
+ virtual SkShader::Context* createContext(const SkBitmap&, const SkPaint&, |
+ const SkMatrix&, void*) const SK_OVERRIDE; |
+ virtual size_t contextSize() const SK_OVERRIDE; |
+ |
+ class ComposeShaderContext : public SkShader::Context { |
+ public: |
+ // When this object gets destroyed, it will call contextA and contextB's destructor |
+ // but it will NOT free the memory. |
+ ComposeShaderContext(const SkComposeShader&, const SkBitmap&, |
+ const SkPaint&, const SkMatrix&, |
+ SkShader::Context* contextA, SkShader::Context* contextB); |
+ |
+ SkShader::Context* getShaderContextA() const { return fShaderContextA; } |
+ SkShader::Context* getShaderContextB() const { return fShaderContextB; } |
+ |
+ virtual ~ComposeShaderContext(); |
+ |
+ virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE; |
+ |
+ private: |
+ SkShader::Context* fShaderContextA; |
+ SkShader::Context* fShaderContextB; |
+ |
+ typedef SkShader::Context INHERITED; |
+ }; |
+ |
+#ifdef SK_DEBUG |
+ SkShader* getShaderA() { return fShaderA; } |
+ SkShader* getShaderB() { return fShaderB; } |
+#endif |
SK_TO_STRING_OVERRIDE() |
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeShader) |
@@ -47,7 +75,6 @@ |
virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
private: |
- |
SkShader* fShaderA; |
SkShader* fShaderB; |
SkXfermode* fMode; |