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: |