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