| Index: bench/TextBench.cpp
|
| diff --git a/bench/TextBench.cpp b/bench/TextBench.cpp
|
| index 6c3bab13d9145ac4125edd7d678c2abff478494b..39484a2e044ca6a5a358add6a9e8a063b09b4482 100644
|
| --- a/bench/TextBench.cpp
|
| +++ b/bench/TextBench.cpp
|
| @@ -5,17 +5,21 @@
|
| * Use of this source code is governed by a BSD-style license that can be
|
| * found in the LICENSE file.
|
| */
|
| +
|
| #include "Benchmark.h"
|
| +#include "Resources.h"
|
| #include "SkCanvas.h"
|
| #include "SkPaint.h"
|
| #include "SkRandom.h"
|
| +#include "SkStream.h"
|
| #include "SkString.h"
|
| #include "SkTemplates.h"
|
| +#include "SkTypeface.h"
|
|
|
| enum FontQuality {
|
| kBW,
|
| kAA,
|
| - kLCD
|
| + kLCD,
|
| };
|
|
|
| static const char* fontQualityName(const SkPaint& paint) {
|
| @@ -43,13 +47,16 @@ class TextBench : public Benchmark {
|
| SkString fName;
|
| FontQuality fFQ;
|
| bool fDoPos;
|
| + bool fDoColorEmoji;
|
| + SkAutoTUnref<SkTypeface> fColorEmojiTypeface;
|
| SkPoint* fPos;
|
| public:
|
| TextBench(const char text[], int ps,
|
| - SkColor color, FontQuality fq, bool doPos = false) {
|
| + SkColor color, FontQuality fq, bool doColorEmoji = false, bool doPos = false) {
|
| fPos = NULL;
|
| fFQ = fq;
|
| fDoPos = doPos;
|
| + fDoColorEmoji = doColorEmoji;
|
| fText.set(text);
|
|
|
| fPaint.setAntiAlias(kBW != fq);
|
| @@ -57,6 +64,17 @@ public:
|
| fPaint.setTextSize(SkIntToScalar(ps));
|
| fPaint.setColor(color);
|
|
|
| + if (doColorEmoji) {
|
| + SkASSERT(kBW == fFQ);
|
| + SkString filename = GetResourcePath("/Funkster.ttf");
|
| + SkAutoTDelete<SkFILEStream> stream(new SkFILEStream(filename.c_str()));
|
| + if (stream->isValid()) {
|
| + fColorEmojiTypeface.reset(SkTypeface::CreateFromStream(stream.detach()));
|
| + } else {
|
| + SkDebugf("Could not find Funkster.ttf, please set --resourcePath correctly.\n");
|
| + }
|
| + }
|
| +
|
| if (doPos) {
|
| size_t len = strlen(text);
|
| SkScalar* adv = new SkScalar[len];
|
| @@ -87,6 +105,11 @@ protected:
|
| } else {
|
| fName.append("_BK");
|
| }
|
| +
|
| + if (fDoColorEmoji && fColorEmojiTypeface) {
|
| + fName.append("_ColorEmoji");
|
| + }
|
| +
|
| return fName.c_str();
|
| }
|
|
|
| @@ -101,6 +124,10 @@ protected:
|
| paint.setAntiAlias(kBW != fFQ);
|
| paint.setLCDRenderText(kLCD == fFQ);
|
|
|
| + if (fDoColorEmoji && fColorEmojiTypeface) {
|
| + paint.setTypeface(fColorEmojiTypeface);
|
| + }
|
| +
|
| const SkScalar x0 = SkIntToScalar(-10);
|
| const SkScalar y0 = SkIntToScalar(-10);
|
|
|
| @@ -141,4 +168,9 @@ DEF_BENCH( return new TextBench(STR, 16, 0xFF000000, kLCD); )
|
| DEF_BENCH( return new TextBench(STR, 16, 0xFFFF0000, kLCD); )
|
| DEF_BENCH( return new TextBench(STR, 16, 0x88FF0000, kLCD); )
|
|
|
| -DEF_BENCH( return new TextBench(STR, 16, 0xFF000000, kAA, true); )
|
| +DEF_BENCH( return new TextBench(STR, 16, 0xFF000000, kBW, true); )
|
| +DEF_BENCH( return new TextBench(STR, 16, 0xFFFF0000, kBW, true); )
|
| +DEF_BENCH( return new TextBench(STR, 16, 0x88FF0000, kBW, true); )
|
| +
|
| +DEF_BENCH( return new TextBench(STR, 16, 0xFF000000, kBW, true, true); )
|
| +DEF_BENCH( return new TextBench(STR, 16, 0xFF000000, kAA, false, true); )
|
|
|