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

Unified Diff: include/core/SkSurface.h

Issue 789993002: add readPixels to SkSurface (later try to remove it from SkCanvas) (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years 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/image/SkSurface.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkSurface.h
diff --git a/include/core/SkSurface.h b/include/core/SkSurface.h
index 0e238f8429cbfdda1c13628af7b8bc2d27b54418..62d2252af1472f108b4ba06a49b5284cb12a05e7 100644
--- a/include/core/SkSurface.h
+++ b/include/core/SkSurface.h
@@ -212,6 +212,35 @@ public:
*/
const void* peekPixels(SkImageInfo* info, size_t* rowBytes);
+ /**
+ * Copy the pixels from the surface into the specified buffer (pixels + rowBytes),
+ * converting them into the requested format (dstInfo). The base-layer pixels are read
+ * starting at the specified (srcX,srcY) location in the coordinate system of the base-layer.
+ *
+ * The specified ImageInfo and (srcX,srcY) offset specifies a source rectangle
+ *
+ * srcR.setXYWH(srcX, srcY, dstInfo.width(), dstInfo.height());
+ *
+ * srcR is intersected with the bounds of the base-layer. If this intersection is not empty,
+ * then we have two sets of pixels (of equal size). Replace the dst pixels with the
+ * corresponding src pixels, performing any colortype/alphatype transformations needed
+ * (in the case where the src and dst have different colortypes or alphatypes).
+ *
+ * This call can fail, returning false, for several reasons:
+ * - If srcR does not intersect the surface bounds.
+ * - If the requested colortype/alphatype cannot be converted from the base-layer's types.
+ */
+ bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes,
+ int srcX, int srcY);
+
+ /**
+ * Helper for allocating pixels and then calling readPixels(info, ...). The bitmap is resized
+ * to the intersection of srcRect and the surface bounds (if srcRect is non-null).
+ * On success, pixels will be allocated in bitmap and true returned. On failure,
+ * false is returned and bitmap will be set to empty.
+ */
+ bool readPixels(SkBitmap* dst, const SkIRect* srcRect = NULL);
+
const SkSurfaceProps& props() const { return fProps; }
protected:
« no previous file with comments | « no previous file | src/image/SkSurface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698