1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "Benchmark.h" 9 #include "SkCanvas.h" 10 #include "SkGraphics.h" 11 #include "SkPaint.h" 12 #include "SkRandom.h" 13 #include "SkString.h" 14 15 class FontScalerBench : public Benchmark { 16 SkString fName; 17 SkString fText; 18 bool fDoLCD; 19 public: 20 FontScalerBench(bool doLCD) { 21 fName.printf("fontscaler_%s", doLCD ? "lcd" : "aa"); 22 fText.set("abcdefghijklmnopqrstuvwxyz01234567890"); 23 fDoLCD = doLCD; 24 } 25 26 protected: 27 virtual const char* onGetName() { return fName.c_str(); } 28 virtual void onDraw(int loops, SkCanvas* canvas) { 29 SkPaint paint; 30 this->setupPaint(&paint); 31 paint.setLCDRenderText(fDoLCD); 32 33 for (int i = 0; i < loops; i++) { 34 // this is critical - we want to time the creation process, so we 35 // explicitly flush our cache before each run 36 SkGraphics::PurgeFontCache(); 37 38 for (int ps = 9; ps <= 24; ps += 2) { 39 paint.setTextSize(SkIntToScalar(ps)); 40 canvas->drawString(fText, 41 0, SkIntToScalar(20), paint); 42 } 43 } 44 } 45 private: 46 typedef Benchmark INHERITED; 47 }; 48 49 /////////////////////////////////////////////////////////////////////////////// 50 51 DEF_BENCH(return new FontScalerBench(false);) 52 DEF_BENCH(return new FontScalerBench(true);) 53