Add -logPerIter, -timers, and -min to bench_pictures.

Additional changes:

Add instance count to bench_pictures.

Remove various PictureBenchmark subclasses which did not do
anything besides have a different PictureRenderer.

BUG=https://code.google.com/p/skia/issues/detail?id=856

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

git-svn-id: http://skia.googlecode.com/svn/trunk@5496 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PictureBenchmark.h b/tools/PictureBenchmark.h
index c3767e1..0ab5ff9 100644
--- a/tools/PictureBenchmark.h
+++ b/tools/PictureBenchmark.h
@@ -7,8 +7,8 @@
 
 #ifndef PictureBenchmark_DEFINED
 #define PictureBenchmark_DEFINED
+
 #include "SkTypes.h"
-#include "SkRefCnt.h"
 #include "PictureRenderer.h"
 
 class BenchTimer;
@@ -18,11 +18,11 @@
 
 namespace sk_tools {
 
-class PictureBenchmark : public SkRefCnt {
+class PictureBenchmark {
 public:
-    PictureBenchmark()
-    : fRepeats(1)
-    , fLogger(NULL) {}
+    PictureBenchmark();
+
+    ~PictureBenchmark();
 
     void run(SkPicture* pict);
 
@@ -30,133 +30,43 @@
         fRepeats = repeats;
     }
 
-    void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
-        sk_tools::PictureRenderer* renderer = getRenderer();
+    PictureRenderer* setRenderer(PictureRenderer*);
 
-        if (renderer != NULL) {
-            renderer->setDeviceType(deviceType);
+    void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
+        if (fRenderer != NULL) {
+            fRenderer->setDeviceType(deviceType);
         }
     }
 
+    void setLogPerIter(bool log) { fLogPerIter = log; }
+
+    void setPrintMin(bool min) { fPrintMin = min; }
+
+    void setTimersToShow(bool wall, bool truncatedWall, bool cpu, bool truncatedCpu, bool gpu) {
+        fShowWallTime = wall;
+        fShowTruncatedWallTime = truncatedWall;
+        fShowCpuTime = cpu;
+        fShowTruncatedCpuTime = truncatedCpu;
+        fShowGpuTime = gpu;
+    }
+
     void setLogger(SkBenchLogger* logger) { fLogger = logger; }
 
 private:
-    int            fRepeats;
-    SkBenchLogger* fLogger;
+    int              fRepeats;
+    SkBenchLogger*   fLogger;
+    PictureRenderer* fRenderer;
+    bool             fLogPerIter;
+    bool             fPrintMin;
+    bool             fShowWallTime;
+    bool             fShowTruncatedWallTime;
+    bool             fShowCpuTime;
+    bool             fShowTruncatedCpuTime;
+    bool             fShowGpuTime;
 
     void logProgress(const char msg[]);
 
-    virtual sk_tools::PictureRenderer* getRenderer() = 0;
-
     BenchTimer* setupTimer();
-
-    typedef SkRefCnt INHERITED;
-};
-
-// TODO: Use just one PictureBenchmark with different renderers.
-
-class PipePictureBenchmark : public PictureBenchmark {
-private:
-    PipePictureRenderer fRenderer;
-
-    virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
-        return &fRenderer;
-    }
-
-    typedef PictureBenchmark INHERITED;
-};
-
-class RecordPictureBenchmark : public PictureBenchmark {
-private:
-    RecordPictureRenderer fRenderer;
-
-    virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
-        return &fRenderer;
-    }
-
-    typedef PictureBenchmark INHERITED;
-};
-
-class SimplePictureBenchmark : public PictureBenchmark {
-private:
-    SimplePictureRenderer fRenderer;
-
-    virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
-        return &fRenderer;
-    }
-
-    typedef PictureBenchmark INHERITED;
-};
-
-class TiledPictureBenchmark : public PictureBenchmark {
-public:
-    void setTileWidth(int width) {
-        fRenderer.setTileWidth(width);
-    }
-
-    int getTileWidth() const {
-        return fRenderer.getTileWidth();
-    }
-
-    void setTileHeight(int height) {
-        fRenderer.setTileHeight(height);
-    }
-
-    int getTileHeight() const {
-        return fRenderer.getTileHeight();
-    }
-
-    void setTileWidthPercentage(double percentage) {
-        fRenderer.setTileWidthPercentage(percentage);
-    }
-
-    double getTileWidthPercentage() const {
-        return fRenderer.getTileWidthPercentage();
-    }
-
-    void setTileHeightPercentage(double percentage) {
-        fRenderer.setTileHeightPercentage(percentage);
-    }
-
-    double getTileHeightPercentage() const {
-        return fRenderer.getTileHeightPercentage();
-    }
-
-    void setTileMinPowerOf2Width(int width) {
-        fRenderer.setTileMinPowerOf2Width(width);
-    }
-
-    int getTileMinPowerOf2Width() {
-        return fRenderer.getTileMinPowerOf2Width();
-    }
-
-    void setThreading(bool multi) {
-        fRenderer.setMultiThreaded(multi);
-    }
-
-    void setUsePipe(bool usePipe) {
-        fRenderer.setUsePipe(usePipe);
-    }
-
-private:
-    TiledPictureRenderer fRenderer;
-
-    virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
-        return &fRenderer;
-    }
-
-    typedef PictureBenchmark INHERITED;
-};
-
-class PlaybackCreationBenchmark : public PictureBenchmark {
-private:
-    PlaybackCreationRenderer fRenderer;
-
-    virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
-        return &fRenderer;
-    }
-
-    typedef PictureBenchmark INHERITED;
 };
 
 }