add NewRasterDirect for creating a canvas drawing to pre-allocated pixels

R=reed@google.com
TBR=scroggo@google.com

Author: reed@chromium.org

Review URL: https://codereview.chromium.org/196923004

git-svn-id: http://skia.googlecode.com/svn/trunk@13824 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index f2200a6..1bc5e2f 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -2564,3 +2564,22 @@
     }
     return SkNEW_ARGS(SkCanvas, (bitmap));
 }
+
+SkCanvas* SkCanvas::NewRasterDirect(const SkImageInfo& info, void* pixels, size_t rowBytes) {
+    if (!supported_for_raster_canvas(info)) {
+        return NULL;
+    }
+    
+    SkBitmap bitmap;
+    if (!bitmap.installPixels(info, pixels, rowBytes)) {
+        return NULL;
+    }
+    
+    // should this functionality be moved into allocPixels()?
+    if (!bitmap.info().isOpaque()) {
+        bitmap.eraseColor(0);
+    }
+    return SkNEW_ARGS(SkCanvas, (bitmap));
+}
+
+