Add drawing of paths to debugger

https://codereview.appspot.com/6850082/



git-svn-id: http://skia.googlecode.com/svn/trunk@6532 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/debugger/SkDebugCanvas.cpp b/debugger/SkDebugCanvas.cpp
index f6c8082..acb9a7d 100644
--- a/debugger/SkDebugCanvas.cpp
+++ b/debugger/SkDebugCanvas.cpp
@@ -10,6 +10,8 @@
 #include <iostream>
 #include "SkDebugCanvas.h"
 #include "SkDrawCommand.h"
+#include "SkDevice.h"
+#include "SkImageWidget.h"
 
 static SkBitmap make_noconfig_bm(int width, int height) {
     SkBitmap bm;
@@ -165,8 +167,40 @@
     addDrawCommand(new Clear(color));
 }
 
+static SkBitmap createBitmap(const SkPath& path) {
+    SkBitmap bitmap;
+    bitmap.setConfig(SkBitmap::kARGB_8888_Config, 
+                     SkImageWidget::kImageWidgetWidth, 
+                     SkImageWidget::kImageWidgetHeight);
+    bitmap.allocPixels();
+    bitmap.eraseColor(SK_ColorWHITE);
+    SkDevice* device = new SkDevice(bitmap);
+
+    SkCanvas canvas(device);
+    device->unref();
+
+    const SkRect& bounds = path.getBounds();
+
+    if (bounds.width() > bounds.height()) {
+        canvas.scale(SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetWidth)/bounds.width()), 
+                     SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetHeight)/bounds.width()));
+    } else {
+        canvas.scale(SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetWidth)/bounds.height()), 
+                     SkDoubleToScalar((0.9*SkImageWidget::kImageWidgetHeight)/bounds.height()));
+    }
+    canvas.translate(-bounds.fLeft+2, -bounds.fTop+2);
+
+    SkPaint p;
+    p.setColor(SK_ColorBLACK);
+    p.setStyle(SkPaint::kStroke_Style);
+
+    canvas.drawPath(path, p);
+
+    return bitmap;
+}
+
 bool SkDebugCanvas::clipPath(const SkPath& path, SkRegion::Op op, bool doAA) {
-    addDrawCommand(new ClipPath(path, op, doAA));
+    addDrawCommand(new ClipPath(path, op, doAA, createBitmap(path)));
     return true;
 }
 
@@ -214,7 +248,7 @@
 }
 
 void SkDebugCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
-    addDrawCommand(new DrawPath(path, paint));
+    addDrawCommand(new DrawPath(path, paint, createBitmap(path)));
 }
 
 void SkDebugCanvas::drawPicture(SkPicture& picture) {