Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: include/core/SkPixelRef.h

Issue 197873039: Hide SkMallocPixelRef class befind SkPixelRef factory functions. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: AnotherPatchSet Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/core/SkMallocPixelRef.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkPixelRef.h
diff --git a/include/core/SkPixelRef.h b/include/core/SkPixelRef.h
index 8319ec6da5acd7776e00b623938f4215fbb7d648..3c83bbf93c5c2186fb66465ba41c4fec62aff082 100644
--- a/include/core/SkPixelRef.h
+++ b/include/core/SkPixelRef.h
@@ -50,6 +50,79 @@ class SK_API SkPixelRef : public SkFlattenable {
public:
SK_DECLARE_INST_COUNT(SkPixelRef)
+ /**
+ * Return a new pre-locked SkPixelRef, automatically allocating
+ * storage for the pixels. If rowBytes are 0, an optimal value
+ * will be chosen automatically. If rowBytes is > 0, then it
+ * will be respected, or NULL will be returned if rowBytes is
+ * invalid for the specified info.
+ *
+ * This pixelref will ref() the specified colortable (if not NULL).
+ *
+ * Returns NULL on failure.
+ */
+ static SkPixelRef* NewPrelockedAllocate(
scroggo 2014/04/04 21:21:06 I know the goal is to hide SkMallocPixelRef, but I
+ const SkImageInfo& info,
+ size_t rowBytes,
+ SkColorTable* colorTable);
+
+ /**
+ * Return a new pre-locked immutable SkPixelRef that will use
+ * the provided SkData, rowBytes, and optional colortable as
+ * pixel storage. The SkData will be ref()ed, and on destruction
+ * of the PixelRef, 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 SkPixelRef* NewPrelockedWithData(
scroggo 2014/04/04 21:21:06 I thought Mike wanted to move people away from dea
+ const SkImageInfo& info,
+ size_t rowBytes,
+ SkColorTable* colorTable,
+ SkData* data,
+ size_t offset = 0);
scroggo 2014/04/04 21:21:06 This seems like an odd choice, given that we switc
hal.canary 2014/04/07 14:43:02 Look at our existing use of SkMallocPixelRef::NewW
mtklein 2014/04/07 14:51:01 Yep, exactly. x and y don't make sense until you'
+
+ /**
+ * Return a new pre-locked SkPixelRef with the provided pixel
+ * storage, rowBytes, and optional colortable. On destruction,
+ * ReleaseProc will be called. If this function fails,
+ * ReleaseProc will be called before returning NULL.
+ *
+ * This pixelref will ref() the specified colortable (if not NULL).
+ *
+ * Returns NULL on failure.
+ */
+ static SkPixelRef* NewPrelockedDirectWithProc(
+ const SkImageInfo& info,
+ size_t rowBytes,
+ SkColorTable* colorTable,
+ void* pixelAddress,
+ void (*releaseProcedure)(void* pixelAddress, void* context),
+ void* releaseProcedureContext);
+
+ /**
+ * Return a new pre-locked SkPixelRef 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.
+ */
+ static SkPixelRef* NewPrelockedDirect(
+ const SkImageInfo& info,
+ size_t rowBytes,
+ SkColorTable* colorTable,
+ void* pixelAddress) {
+ return SkPixelRef::NewPrelockedDirectWithProc(
+ info, rowBytes, colorTable, pixelAddress, NULL, NULL);
+ }
+
explicit SkPixelRef(const SkImageInfo&);
SkPixelRef(const SkImageInfo&, SkBaseMutex* mutex);
virtual ~SkPixelRef();
« no previous file with comments | « no previous file | src/core/SkMallocPixelRef.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698