This reverts commit 4052fd051db67bd1099fde2c4fe400cfbe1f2426.

git-svn-id: http://skia.googlecode.com/svn/trunk@10374 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PictureBenchmark.cpp b/tools/PictureBenchmark.cpp
index adab945..a358ad4 100644
--- a/tools/PictureBenchmark.cpp
+++ b/tools/PictureBenchmark.cpp
@@ -12,6 +12,7 @@
 #include "SkPicture.h"
 #include "SkString.h"
 #include "picture_utils.h"
+#include "TimerData.h"
 
 namespace sk_tools {
 
@@ -19,8 +20,13 @@
 : fRepeats(1)
 , fLogger(NULL)
 , fRenderer(NULL)
-, fTimerResult(TimerData::kAvg_Result)
-, fTimerTypes(0)
+, fLogPerIter(false)
+, fPrintMin(false)
+, fShowWallTime(false)
+, fShowTruncatedWallTime(false)
+, fShowCpuTime(true)
+, fShowTruncatedCpuTime(false)
+, fShowGpuTime(false)
 , fTimeIndividualTiles(false)
 {}
 
@@ -28,19 +34,6 @@
     SkSafeUnref(fRenderer);
 }
 
-void PictureBenchmark::setTimersToShow(bool wall,
-                                       bool truncatedWall,
-                                       bool cpu,
-                                       bool truncatedCpu,
-                                       bool gpu) {
-    fTimerTypes = 0;
-    fTimerTypes |= wall ? TimerData::kWall_Flag : 0;
-    fTimerTypes |= truncatedWall ? TimerData::kTruncatedWall_Flag : 0;
-    fTimerTypes |= cpu ? TimerData::kCpu_Flag : 0;
-    fTimerTypes |= truncatedCpu ? TimerData::kTruncatedCpu_Flag : 0;
-    fTimerTypes |= gpu ? TimerData::kGpu_Flag : 0;
-}
-
 BenchTimer* PictureBenchmark::setupTimer(bool useGLTimer) {
 #if SK_SUPPORT_GPU
     if (useGLTimer && fRenderer != NULL && fRenderer->isUsingGpuDevice()) {
@@ -84,18 +77,6 @@
     usingGpu = fRenderer->isUsingGpuDevice();
 #endif
 
-    uint32_t timerTypes = fTimerTypes;
-    if (!usingGpu) {
-        timerTypes &= ~TimerData::kGpu_Flag;
-    }
-
-    const char* timeFormat;
-    if (TimerData::kPerIter_Result == fTimerResult) {
-        timeFormat = fRenderer->getPerIterTimeFormat().c_str();
-    } else {
-        timeFormat = fRenderer->getNormalTimeFormat().c_str();
-    }
-
     if (fTimeIndividualTiles) {
         TiledPictureRenderer* tiledRenderer = fRenderer->getTiledRenderer();
         SkASSERT(tiledRenderer && tiledRenderer->supportsTimingIndividualTiles());
@@ -129,9 +110,11 @@
             // platforms. To work around this, we disable the gpu timer on the
             // long running timer.
             SkAutoTDelete<BenchTimer> longRunningTimer(this->setupTimer());
-            TimerData longRunningTimerData(1);
+            TimerData longRunningTimerData(tiledRenderer->getPerIterTimeFormat(),
+                                           tiledRenderer->getNormalTimeFormat());
             SkAutoTDelete<BenchTimer> perTileTimer(this->setupTimer(false));
-            TimerData perTileTimerData(fRepeats);
+            TimerData perTileTimerData(tiledRenderer->getPerIterTimeFormat(),
+                                       tiledRenderer->getNormalTimeFormat());
             longRunningTimer->start();
             for (int i = 0; i < fRepeats; ++i) {
                 perTileTimer->start();
@@ -139,18 +122,20 @@
                 perTileTimer->truncatedEnd();
                 tiledRenderer->resetState(false);
                 perTileTimer->end();
-                perTileTimerData.appendTimes(perTileTimer.get());
+                perTileTimerData.appendTimes(perTileTimer.get(), fRepeats - 1 == i);
             }
             longRunningTimer->truncatedEnd();
             tiledRenderer->resetState(true);
             longRunningTimer->end();
-            longRunningTimerData.appendTimes(longRunningTimer.get());
+            longRunningTimerData.appendTimes(longRunningTimer.get(), true);
 
             SkString configName = tiledRenderer->getConfigName();
             configName.appendf(": tile [%i,%i] out of [%i,%i]", x, y, xTiles, yTiles);
-
-            SkString result = perTileTimerData.getResult(timeFormat, fTimerResult,
-                                                         configName.c_str(), timerTypes);
+            SkString result = perTileTimerData.getResult(fLogPerIter, fPrintMin, fRepeats,
+                                                         configName.c_str(), fShowWallTime,
+                                                         fShowTruncatedWallTime, fShowCpuTime,
+                                                         fShowTruncatedCpuTime,
+                                                         usingGpu && fShowGpuTime);
             result.append("\n");
 
 // TODO(borenet): Turn off per-iteration tile time reporting for now.  Avoiding logging the time
@@ -162,16 +147,15 @@
 #endif
 
             configName.append(" <averaged>");
-            SkString longRunningResult = longRunningTimerData.getResult(
-                tiledRenderer->getNormalTimeFormat().c_str(),
-                TimerData::kAvg_Result,
-                configName.c_str(), timerTypes, fRepeats);
+            SkString longRunningResult = longRunningTimerData.getResult(false, false, fRepeats,
+                    configName.c_str(), fShowWallTime, fShowTruncatedWallTime,
+                    fShowCpuTime, fShowTruncatedCpuTime, usingGpu && fShowGpuTime);
             longRunningResult.append("\n");
             this->logProgress(longRunningResult.c_str());
         }
     } else {
         SkAutoTDelete<BenchTimer> timer(this->setupTimer());
-        TimerData timerData(fRepeats);
+        TimerData timerData(fRenderer->getPerIterTimeFormat(), fRenderer->getNormalTimeFormat());
         for (int i = 0; i < fRepeats; ++i) {
             fRenderer->setup();
 
@@ -183,15 +167,14 @@
             fRenderer->resetState(true);
             timer->end();
 
-            timerData.appendTimes(timer.get());
+            timerData.appendTimes(timer.get(), fRepeats - 1 == i);
         }
 
         SkString configName = fRenderer->getConfigName();
-
-        SkString result = timerData.getResult(timeFormat,
-                                              fTimerResult,
-                                              configName.c_str(),
-                                              timerTypes);
+        SkString result = timerData.getResult(fLogPerIter, fPrintMin, fRepeats,
+                                              configName.c_str(), fShowWallTime,
+                                              fShowTruncatedWallTime, fShowCpuTime,
+                                              fShowTruncatedCpuTime, usingGpu && fShowGpuTime);
         result.append("\n");
         this->logProgress(result.c_str());
     }