16e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com/* 26e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com * Copyright 2011 Google Inc. 36e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com * 46e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com * Use of this source code is governed by a BSD-style license that can be 56e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com * found in the LICENSE file. 66e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com */ 76e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 96e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com#include "SkCanvas.h" 106e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com#include "SkGraphics.h" 116e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com#include "SkPaint.h" 126e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com#include "SkRandom.h" 136e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com#include "SkString.h" 146e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com 15f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass FontScalerBench : public Benchmark { 166e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com SkString fName; 176e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com SkString fText; 188e372c98bf027d2b10bd10b05eddd0087403cd2breed@google.com bool fDoLCD; 196e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.compublic: 20410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com FontScalerBench(bool doLCD) { 218e372c98bf027d2b10bd10b05eddd0087403cd2breed@google.com fName.printf("fontscaler_%s", doLCD ? "lcd" : "aa"); 226e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com fText.set("abcdefghijklmnopqrstuvwxyz01234567890"); 238e372c98bf027d2b10bd10b05eddd0087403cd2breed@google.com fDoLCD = doLCD; 246e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com } 256e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com 266e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.comprotected: 276e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com virtual const char* onGetName() { return fName.c_str(); } 283361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org virtual void onDraw(const int loops, SkCanvas* canvas) { 296e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com SkPaint paint; 306e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com this->setupPaint(&paint); 318e372c98bf027d2b10bd10b05eddd0087403cd2breed@google.com paint.setLCDRenderText(fDoLCD); 326e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com 333361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; i++) { 34c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com // this is critical - we want to time the creation process, so we 35c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com // explicitly flush our cache before each run 36c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com SkGraphics::PurgeFontCache(); 37c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com 38c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com for (int ps = 9; ps <= 24; ps += 2) { 39c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com paint.setTextSize(SkIntToScalar(ps)); 40c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com canvas->drawText(fText.c_str(), fText.size(), 41c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com 0, SkIntToScalar(20), paint); 42c289743864e2ab926a95e617a5cd1d29b26d1825mtklein@google.com } 436e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com } 446e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com } 456e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.comprivate: 46f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 476e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com}; 486e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com 496e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com/////////////////////////////////////////////////////////////////////////////// 506e5a45c038b1f3c0e4b119b0cd5091ac885ca764reed@google.com 51410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return SkNEW_ARGS(FontScalerBench, (false)); ) 52410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return SkNEW_ARGS(FontScalerBench, (true)); ) 53