Home | History | Annotate | Download | only in bench
      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