Index: include/core/SkComposeShader.h |
diff --git a/include/core/SkComposeShader.h b/include/core/SkComposeShader.h |
index 1fefd1369a1c3eec87146f43abeacd02b9aa0c54..369955036541509c1bb200eddc36ab321255cddc 100644 |
--- a/include/core/SkComposeShader.h |
+++ b/include/core/SkComposeShader.h |
@@ -34,10 +34,29 @@ public: |
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&) 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: |
+ // Takes ownership of contextA and contextB, and calls their destructors. |
+ ComposeShaderContext(const SkComposeShader&, const SkBitmap&, |
+ const SkPaint&, const SkMatrix&, |
+ SkShader::Context* contextA, SkShader::Context* contextB); |
+ |
+ 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; |
+ }; |
+ |
SK_DEVELOPER_TO_STRING() |
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeShader) |
@@ -52,6 +71,8 @@ private: |
SkShader* fShaderB; |
SkXfermode* fMode; |
+ friend class ComposeImpl; |
+ |
typedef SkShader INHERITED; |
}; |