| Index: include/core/SkImageFilter.h
|
| diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h
|
| index d4930c4975935801a26b2e03fd59da3cdb3b62f8..85589f069f738fbab13ed79f690acccc53141f08 100644
|
| --- a/include/core/SkImageFilter.h
|
| +++ b/include/core/SkImageFilter.h
|
| @@ -205,13 +205,23 @@ protected:
|
| Common() {}
|
| ~Common();
|
|
|
| - bool unflatten(SkReadBuffer&, int expectedInputs = -1);
|
| -
|
| - CropRect cropRect() const { return fCropRect; }
|
| + /**
|
| + * Attempt to unflatten the cropRect and the expected number of input filters.
|
| + * If any number of input filters is valid, pass -1.
|
| + * If this fails (i.e. corrupt buffer or contents) then return false and common will
|
| + * be left uninitialized.
|
| + * If this returns true, then inputCount() is the number of found input filters, each
|
| + * of which may be NULL or a valid imagefilter.
|
| + */
|
| + bool unflatten(SkReadBuffer&, int expectedInputs);
|
| +
|
| + const CropRect& cropRect() const { return fCropRect; }
|
| int inputCount() const { return fInputs.count(); }
|
| SkImageFilter** inputs() const { return fInputs.get(); }
|
| uint32_t uniqueID() const { return fUniqueID; }
|
|
|
| + SkImageFilter* getInput(int index) const { return fInputs[index]; }
|
| +
|
| // 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
|
| @@ -240,7 +250,7 @@ protected:
|
| */
|
| explicit SkImageFilter(int inputCount, SkReadBuffer& rb);
|
|
|
| - virtual void flatten(SkWriteBuffer& wb) const SK_OVERRIDE;
|
| + virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
|
|
|
| /**
|
| * This is the virtual which should be overridden by the derived class
|
| @@ -320,4 +330,15 @@ private:
|
| uint32_t fUniqueID; // Globally unique
|
| };
|
|
|
| +/**
|
| + * Helper to unflatten the common data, and return NULL if we fail.
|
| + */
|
| +#define SK_IMAGEFILTER_UNFLATTEN_COMMON(localVar, expectedCount) \
|
| + Common localVar; \
|
| + do { \
|
| + if (!localVar.unflatten(buffer, expectedCount)) { \
|
| + return NULL; \
|
| + } \
|
| + } while (0)
|
| +
|
| #endif
|
|
|