diff options
Diffstat (limited to 'bench/TextBench.cpp')
-rw-r--r-- | bench/TextBench.cpp | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/bench/TextBench.cpp b/bench/TextBench.cpp index 5caaddb..f2b9604 100644 --- a/bench/TextBench.cpp +++ b/bench/TextBench.cpp @@ -22,15 +22,16 @@ class TextBench : public SkBenchmark { SkPoint* fPos; SkString fText; SkString fName; - enum { N = 300 }; + enum { N = 600 }; public: TextBench(void* param, const char text[], int ps, bool linearText, - bool posText) : INHERITED(param) { + bool posText, SkColor color = SK_ColorBLACK) : INHERITED(param) { fText.set(text); fPaint.setAntiAlias(true); fPaint.setTextSize(SkIntToScalar(ps)); fPaint.setLinearText(linearText); + fPaint.setColor(color); if (posText) { SkAutoTArray<SkScalar> storage(fText.size()); @@ -47,7 +48,7 @@ public: fPos = NULL; } } - + virtual ~TextBench() { delete[] fPos; } @@ -61,6 +62,10 @@ protected: if (fPos) { fName.append("_pos"); } + + if (SK_ColorBLACK != fPaint.getColor()) { + fName.appendf("_%02X", fPaint.getAlpha()); + } return fName.c_str(); } @@ -70,24 +75,21 @@ protected: SkPaint paint(fPaint); this->setupPaint(&paint); + paint.setColor(fPaint.getColor()); // need our specified color const SkScalar x0 = SkIntToScalar(-10); const SkScalar y0 = SkIntToScalar(-10); - const SkColor colors[] = { SK_ColorBLACK, SK_ColorGRAY }; - - for (size_t j = 0; j < SK_ARRAY_COUNT(colors); j++) { - paint.setColor(colors[j]); - for (int i = 0; i < N; i++) { - SkScalar x = x0 + rand.nextUScalar1() * dim.fX; - SkScalar y = y0 + rand.nextUScalar1() * dim.fY; - if (fPos) { - canvas->save(SkCanvas::kMatrix_SaveFlag); - canvas->translate(x, y); - canvas->drawPosText(fText.c_str(), fText.size(), fPos, paint); - canvas->restore(); - } else { - canvas->drawText(fText.c_str(), fText.size(), x, y, paint); - } + + for (int i = 0; i < N; i++) { + SkScalar x = x0 + rand.nextUScalar1() * dim.fX; + SkScalar y = y0 + rand.nextUScalar1() * dim.fY; + if (fPos) { + canvas->save(SkCanvas::kMatrix_SaveFlag); + canvas->translate(x, y); + canvas->drawPosText(fText.c_str(), fText.size(), fPos, paint); + canvas->restore(); + } else { + canvas->drawText(fText.c_str(), fText.size(), x, y, paint); } } } @@ -103,19 +105,31 @@ private: #define BIG 48 static SkBenchmark* Fact0(void* p) { return new TextBench(p, STR, SMALL, false, false); } +static SkBenchmark* Fact01(void* p) { return new TextBench(p, STR, SMALL, false, false, 0xFFFF0000); } +static SkBenchmark* Fact02(void* p) { return new TextBench(p, STR, SMALL, false, false, 0x88FF0000); } + static SkBenchmark* Fact1(void* p) { return new TextBench(p, STR, SMALL, false, true); } static SkBenchmark* Fact2(void* p) { return new TextBench(p, STR, SMALL, true, false); } static SkBenchmark* Fact3(void* p) { return new TextBench(p, STR, SMALL, true, true); } + static SkBenchmark* Fact4(void* p) { return new TextBench(p, STR, BIG, false, false); } +static SkBenchmark* Fact41(void* p) { return new TextBench(p, STR, BIG, false, false, 0xFFFF0000); } +static SkBenchmark* Fact42(void* p) { return new TextBench(p, STR, BIG, false, false, 0x88FF0000); } + static SkBenchmark* Fact5(void* p) { return new TextBench(p, STR, BIG, false, true); } static SkBenchmark* Fact6(void* p) { return new TextBench(p, STR, BIG, true, false); } static SkBenchmark* Fact7(void* p) { return new TextBench(p, STR, BIG, true, true); } static BenchRegistry gReg0(Fact0); +static BenchRegistry gReg01(Fact01); +static BenchRegistry gReg02(Fact02); static BenchRegistry gReg1(Fact1); static BenchRegistry gReg2(Fact2); static BenchRegistry gReg3(Fact3); static BenchRegistry gReg4(Fact4); +static BenchRegistry gReg41(Fact41); +static BenchRegistry gReg42(Fact42); static BenchRegistry gReg5(Fact5); static BenchRegistry gReg6(Fact6); static BenchRegistry gReg7(Fact7); + |