Index: include/core/SkMallocPixelRef.h |
diff --git a/include/core/SkMallocPixelRef.h b/include/core/SkMallocPixelRef.h |
index a547ddb2b9fff5d2ded3a6894594a3281864afce..272dc21fd872e34c4a98ac4d0530ac6751f56137 100644 |
--- a/include/core/SkMallocPixelRef.h |
+++ b/include/core/SkMallocPixelRef.h |
@@ -45,11 +45,46 @@ public: |
static SkMallocPixelRef* NewAllocate(const SkImageInfo& info, |
size_t rowBytes, SkColorTable*); |
+ /** |
+ * Return a new SkMallocPixelRef with the provided pixel storage, |
+ * rowBytes, and optional colortable. On destruction, ReleaseProc |
+ * will be called. |
+ * |
+ * This pixelref will ref() the specified colortable (if not NULL). |
+ * |
+ * Returns NULL on failure. |
+ */ |
+ typedef void (*ReleaseProc)(void* addr, void* context); |
+ static SkMallocPixelRef* NewWithProc(const SkImageInfo& info, |
+ size_t rowBytes, SkColorTable*, |
+ void* addr, ReleaseProc proc, |
+ void* context); |
+ |
+ /** |
+ * Return a new SkMallocPixelRef that will use the provided |
+ * SkData, rowBytes, and optional colortable as pixel storage. |
+ * The SkData will be ref()ed and on destruction of the PielRef, |
+ * the SkData will be unref()ed. |
+ * |
+ * @param offset (in bytes) into the provided SkData that the |
+ * first pixel is located at. |
+ * |
+ * This pixelref will ref() the specified colortable (if not NULL). |
+ * |
+ * Returns NULL on failure. |
+ */ |
+ static SkMallocPixelRef* NewWithData(const SkImageInfo& info, |
+ size_t rowBytes, |
+ SkColorTable* ctable, |
+ SkData* data, |
+ size_t offset = 0); |
+ |
void* getAddr() const { return fStorage; } |
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMallocPixelRef) |
protected: |
+ // The ownPixels version of this constructor is deprecated. |
SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*, |
bool ownPixels); |
SkMallocPixelRef(SkFlattenableReadBuffer& buffer); |
@@ -64,7 +99,11 @@ private: |
void* fStorage; |
SkColorTable* fCTable; |
size_t fRB; |
- const bool fOwnPixels; |
+ ReleaseProc fReleaseProc; |
+ void* fReleaseProcContext; |
+ |
+ SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*, |
+ ReleaseProc proc, void* context); |
typedef SkPixelRef INHERITED; |
}; |