Index: include/core/SkImageFilter.h |
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h |
index a571184aa21bb66c4bc38b4b2eeca942245e4931..cd34ba3f91bd55664c05ce46a6e268003e22ba8f 100644 |
--- a/include/core/SkImageFilter.h |
+++ b/include/core/SkImageFilter.h |
@@ -11,6 +11,7 @@ |
#include "SkFlattenable.h" |
#include "SkMatrix.h" |
#include "SkRect.h" |
+#include "SkTemplates.h" |
class SkBitmap; |
class SkColorFilter; |
@@ -199,6 +200,31 @@ public: |
SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter) |
protected: |
+ class Common { |
+ public: |
+ Common() {} |
+ ~Common(); |
+ |
+ bool unflatten(SkReadBuffer&, int expectedInputs = -1); |
+ |
+ CropRect cropRect() const { return fCropRect; } |
+ int inputCount() const { return fInputs.count(); } |
+ SkImageFilter** inputs() const { return fInputs.get(); } |
+ |
+ // If the caller wants a copy of the inputs, call this and it will transfer ownership |
+ // of the unflattened input filters to the caller. This is just a short-cut for copying |
+ // the inputs, calling ref() on each, and then waiting for Common's destructor to call |
+ // unref() on each. |
+ void detachInputs(SkImageFilter** inputs); |
+ |
+ private: |
+ CropRect fCropRect; |
+ // most filters accept at most 2 input-filters |
+ SkAutoSTArray<2, SkImageFilter*> fInputs; |
+ |
+ void allocInputs(int count); |
+ }; |
+ |
SkImageFilter(int inputCount, SkImageFilter** inputs, const CropRect* cropRect = NULL); |
virtual ~SkImageFilter(); |