aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkMallocPixelRef.h
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-12-13 19:45:58 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-12-13 19:45:58 +0000
commitbf790232f6d94b54239dbc210d8beee7411ca458 (patch)
tree7944f60fbc7329035d186d0ff5645858c7df4781 /include/core/SkMallocPixelRef.h
parent0efb21bd1cd359b732a59753f3c1da096aab561a (diff)
Update all callsites to use info for pixelrefs
#define SK_SUPPORT_LEGACY_PIXELREF_CONSTRUCTOR in chrome to keep old API signature (for now) BUG= R=scroggo@google.com Review URL: https://codereview.chromium.org/100723005 git-svn-id: http://skia.googlecode.com/svn/trunk@12677 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include/core/SkMallocPixelRef.h')
-rw-r--r--include/core/SkMallocPixelRef.h49
1 files changed, 35 insertions, 14 deletions
diff --git a/include/core/SkMallocPixelRef.h b/include/core/SkMallocPixelRef.h
index 100a15d90a..ba0b953cf6 100644
--- a/include/core/SkMallocPixelRef.h
+++ b/include/core/SkMallocPixelRef.h
@@ -17,33 +17,54 @@
*/
class SkMallocPixelRef : public SkPixelRef {
public:
- /** Allocate the specified buffer for pixels. The memory is freed when the
- last owner of this pixelref is gone. If addr is NULL, sk_malloc_throw()
- is called to allocate it.
+ /**
+ * Return a new SkMallocPixelRef with the provided pixel storage, rowBytes,
+ * and optional colortable. The caller is responsible for managing the
+ * lifetime of the pixel storage buffer, as this pixelref will not try
+ * to delete it.
+ *
+ * The pixelref will ref() the colortable (if not NULL).
+ *
+ * Returns NULL on failure.
*/
- SkMallocPixelRef(void* addr, size_t size, SkColorTable* ctable, bool ownPixels = true);
- virtual ~SkMallocPixelRef();
+ static SkMallocPixelRef* NewDirect(const SkImageInfo&, void* addr,
+ size_t rowBytes, SkColorTable*);
+ /**
+ * Return a new SkMallocPixelRef, automatically allocating storage for the
+ * pixels.
+ *
+ * If rowBytes is 0, an optimal value will be chosen automatically.
+ * If rowBytes is > 0, then it will be used, unless it is invald for the
+ * specified info, in which case NULL will be returned (failure).
+ *
+ * This pixelref will ref() the specified colortable (if not NULL).
+ *
+ * Returns NULL on failure.
+ */
+ static SkMallocPixelRef* NewAllocate(const SkImageInfo& info,
+ size_t rowBytes, SkColorTable*);
+
void* getAddr() const { return fStorage; }
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMallocPixelRef)
protected:
- // overrides from SkPixelRef
- virtual void* onLockPixels(SkColorTable**);
- virtual void onUnlockPixels();
-
+ SkMallocPixelRef(const SkImageInfo&, void* addr, size_t rb, SkColorTable*,
+ bool ownPixels);
SkMallocPixelRef(SkFlattenableReadBuffer& buffer);
- virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
+ virtual ~SkMallocPixelRef();
- // Returns the allocation size for the pixels
- virtual size_t getAllocatedSizeInBytes() const SK_OVERRIDE { return fSize; }
+ virtual void* onLockPixels(SkColorTable**) SK_OVERRIDE;
+ virtual void onUnlockPixels() SK_OVERRIDE;
+ virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
+ virtual size_t getAllocatedSizeInBytes() const SK_OVERRIDE;
private:
void* fStorage;
- size_t fSize;
SkColorTable* fCTable;
- bool fOwnPixels;
+ size_t fRB;
+ const bool fOwnPixels;
typedef SkPixelRef INHERITED;
};