add BitmapBench



git-svn-id: http://skia.googlecode.com/svn/trunk@83 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/main.cpp b/bench/main.cpp
index 25ab73a..8891154 100644
--- a/bench/main.cpp
+++ b/bench/main.cpp
@@ -1,13 +1,11 @@
 #include "SkCanvas.h"
+#include "SkColorPriv.h"
 #include "SkImageEncoder.h"
 #include "SkString.h"
 #include "SkTime.h"
-#include "SkTRegistry.h"
 
 #include "SkBenchmark.h"
 
-typedef SkTRegistry<SkBenchmark*, void*> BenchRegistry;
-
 class Iter {
 public:
     Iter() {
@@ -49,6 +47,18 @@
     if (!bm.copyTo(&copy, SkBitmap::kARGB_8888_Config)) {
         return;
     }
+    
+    if (bm.config() == SkBitmap::kA8_Config) {
+        // turn alpha into gray-scale
+        size_t size = copy.getSize() >> 2;
+        SkPMColor* p = copy.getAddr32(0, 0);
+        for (size_t i = 0; i < size; i++) {
+            int c = (*p >> SK_A32_SHIFT) & 0xFF;
+            c = 255 - c;
+            c |= (c << 24) | (c << 16) | (c << 8);
+            *p++ = c | (SK_A32_MASK << SK_A32_SHIFT);
+        }
+    }
 
     SkString str;
     make_filename(name, &str);
@@ -164,7 +174,7 @@
         bench->setForceAlpha(forceAlpha);
         bench->setForceAA(forceAA);
 
-        printf("running bench %8s", bench->getName());
+        printf("running bench %16s", bench->getName());
 
         for (int configIndex = 0; configIndex < configCount; configIndex++) {
             if (configCount > 1) {
@@ -176,9 +186,14 @@
             bm.setConfig(outConfig, dim.fX, dim.fY);
             bm.allocPixels();
             
+            if (bm.config() == SkBitmap::kA8_Config) {
+                bm.eraseColor(0);
+            } else {
+                bm.eraseColor(SK_ColorWHITE);
+            }
+
             SkCanvas canvas(bm);
-            canvas.drawColor(SK_ColorWHITE);
-            
+
             if (doClip) {
                 performClip(&canvas, dim.fX, dim.fY);
             }