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(©, 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);
}