Added pipe as a rendering option for render_pictures.

I will add tiling as a rendering option and then figure out a way to not have the code duplicated between render_pictures and bench_pictures.

Review URL: https://codereview.appspot.com/6392066

git-svn-id: http://skia.googlecode.com/svn/trunk@4626 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/render_pictures_main.cpp b/tools/render_pictures_main.cpp
index 70be7ed..5356cb6 100644
--- a/tools/render_pictures_main.cpp
+++ b/tools/render_pictures_main.cpp
@@ -7,8 +7,10 @@
 
 
 #include "SkBitmap.h"
+#include "SamplePipeControllers.h"
 #include "SkCanvas.h"
 #include "SkColorPriv.h"
+#include "SkGPipe.h"
 #include "SkImageEncoder.h"
 #include "SkOSFile.h"
 #include "SkPicture.h"
@@ -76,6 +78,22 @@
     }
 }
 
+static void pipe_run(SkPicture* picture, SkCanvas* canvas) {
+    PipeController pipeController(canvas);
+    SkGPipeWriter writer;
+    SkCanvas* pipeCanvas = writer.startRecording(&pipeController);
+    pipeCanvas->drawPicture(*picture);
+    writer.endRecording();
+}
+
+static void pipe_render(SkPicture* picture, SkBitmap* bitmap) {
+    sk_tools::setup_bitmap(bitmap, picture->width(), picture->height());
+
+    SkCanvas canvas(*bitmap);
+
+    pipe_run(picture, &canvas);
+}
+
 static void render_picture(const SkString& inputPath, const SkString& outputDir,
                            RenderFunc renderFunc) {
     SkString inputFilename;
@@ -117,7 +135,11 @@
     char* const* stop = argv + argc;
 
     for (++argv; argv < stop; ++argv) {
-        inputs->push_back(SkString(*argv));
+        if (0 == strcmp(*argv, "--pipe")) {
+            *renderFunc = pipe_render;
+        } else {
+            inputs->push_back(SkString(*argv));
+        }
     }
 }