Chromium Code Reviews| Index: include/core/SkPixelSerializer.h |
| diff --git a/include/core/SkPixelSerializer.h b/include/core/SkPixelSerializer.h |
| index d089209909816b720fb710206b0a6e8005a38f57..a970854c48aaa373f778c7f528b52d4cd7fb65ab 100644 |
| --- a/include/core/SkPixelSerializer.h |
| +++ b/include/core/SkPixelSerializer.h |
| @@ -8,9 +8,10 @@ |
| #ifndef SkPixelSerializer_DEFINED |
| #define SkPixelSerializer_DEFINED |
| +#include "SkData.h" |
| +#include "SkPixmap.h" |
| #include "SkRefCnt.h" |
| -class SkData; |
| struct SkImageInfo; |
| /** |
| @@ -18,14 +19,18 @@ struct SkImageInfo; |
| */ |
| class SkPixelSerializer : public SkRefCnt { |
| public: |
| - virtual ~SkPixelSerializer() {} |
| - |
| /** |
| - * Call to determine if the client wants to serialize the encoded data. If |
| - * false, serialize another version (e.g. the result of encodePixels). |
| + * Call to determine if the client wants to serialize the encoded data. |
| + * |
| + * If the encoded data is can be re-encoded (or taken as is), this returns a ref to a data |
| + * with the result, which the caller must unref() when they are through. The returned |
| + * data may be the same as the input, or it may be different, but either way the caller is |
| + * responsible for calling unref() on it. |
| + * |
| + * If the encoded data is not acceptable to this pixel serializer, this returns NULL. |
| */ |
| - bool useEncodedData(const void* data, size_t len) { |
| - return this->onUseEncodedData(data, len); |
| + SkData* reencodeData(SkData* encoded) { |
| + return encoded ? this->onReencodeData(encoded) : nullptr; |
| } |
| /** |
| @@ -33,20 +38,22 @@ public: |
| * returns NULL, serialize the raw pixels. |
| */ |
| SkData* encodePixels(const SkImageInfo& info, const void* pixels, size_t rowBytes) { |
| - return this->onEncodePixels(info, pixels, rowBytes); |
| + return this->onEncodePixels(SkPixmap(info, pixels, rowBytes)); |
| } |
| - |
| -protected: |
| + |
| /** |
| - * Return true if you want to serialize the encoded data, false if you want |
| - * another version serialized (e.g. the result of encodePixels). |
| + * Call to get the client's version of encoding these pixels. If it |
| + * returns NULL, serialize the raw pixels. |
| */ |
| - virtual bool onUseEncodedData(const void* data, size_t len) = 0; |
|
scroggo
2015/09/28 13:34:10
We need to keep this around until we fix the chrom
|
| + SkData* encodePixels(const SkPixmap& pixmap) { |
| + return this->onEncodePixels(pixmap); |
| + } |
| + |
| +protected: |
| + virtual SkData* onReencodeData(SkData* encoded) { |
| + return SkRef(encoded); |
| + } |
| - /** |
| - * If you want to encode these pixels, return the encoded data as an SkData |
| - * Return null if you want to serialize the raw pixels. |
| - */ |
| - virtual SkData* onEncodePixels(const SkImageInfo&, const void* pixels, size_t rowBytes) = 0; |
| + virtual SkData* onEncodePixels(const SkPixmap&) = 0; |
| }; |
| #endif // SkPixelSerializer_DEFINED |