Index: include/core/SkImageGenerator.h |
diff --git a/include/core/SkImageGenerator.h b/include/core/SkImageGenerator.h |
index 76e856b387c95109eb8e0cb70d72ca5758df6f82..86cd7f0c1068ccf199c71ed9e8fdb2cbe5fe7bc5 100644 |
--- a/include/core/SkImageGenerator.h |
+++ b/include/core/SkImageGenerator.h |
@@ -9,6 +9,7 @@ |
#define SkImageGenerator_DEFINED |
#include "SkImageInfo.h" |
+#include "SkColor.h" |
class SkBitmap; |
class SkData; |
@@ -53,6 +54,13 @@ public: |
*/ |
virtual ~SkImageGenerator() { } |
+#ifdef SK_SUPPORT_LEGACY_IMAGEGENERATORAPI |
+ virtual bool refEncodedData() { return this->onRefEncodedData(); } |
+ virtual bool getInfo(SkImageInfo* info) { return this->onGetInfo(info); } |
+ virtual bool getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) { |
+ return this->onGetPixels(info, pixels, rowBytes, NULL, NULL); |
+ } |
+#else |
/** |
* Return a ref to the encoded (i.e. compressed) representation, |
* of this data. |
@@ -60,7 +68,7 @@ public: |
* If non-NULL is returned, the caller is responsible for calling |
* unref() on the data when it is finished. |
*/ |
- virtual SkData* refEncodedData() { return NULL; } |
+ SkData* refEncodedData() { return this->onRefEncodedData(); } |
/** |
* Return some information about the image, allowing the owner of |
@@ -71,7 +79,7 @@ public: |
* |
* @return false if anything goes wrong. |
*/ |
- virtual bool getInfo(SkImageInfo* info) = 0; |
+ bool getInfo(SkImageInfo* info); |
/** |
* Decode into the given pixels, a block of memory of size at |
@@ -89,12 +97,31 @@ public: |
* different output-configs, which the implementation can |
* decide to support or not. |
* |
+ * If info is kIndex8_SkColorType, then the caller must provide storage for up to 256 |
+ * SkPMColor values in ctable. On success the generator must copy N colors into that storage, |
+ * (where N is the logical number of table entries) and set ctableCount to N. |
+ * |
+ * If info is not kIndex8_SkColorType, then the last two parameters may be NULL. If ctableCount |
+ * is not null, it will be set to 0. |
+ * |
* @return false if anything goes wrong or if the image info is |
* unsupported. |
*/ |
- virtual bool getPixels(const SkImageInfo& info, |
- void* pixels, |
- size_t rowBytes) = 0; |
+ bool getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, |
+ SkPMColor ctable[], int* ctableCount); |
+ |
+ /** |
+ * Simplified version of getPixels() that asserts that info is NOT kIndex8_SkColorType. |
+ */ |
+ bool getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes); |
+#endif |
+ |
+protected: |
+ virtual SkData* onRefEncodedData(); |
+ virtual bool onGetInfo(SkImageInfo* info); |
+ virtual bool onGetPixels(const SkImageInfo& info, |
+ void* pixels, size_t rowBytes, |
+ SkPMColor ctable[], int* ctableCount); |
}; |
#endif // SkImageGenerator_DEFINED |