aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/scaledemoji.cpp
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2018-02-13 15:21:34 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-13 20:43:52 +0000
commit1b12545a9c1429b0fc4c1b323497dc5283f4fd52 (patch)
tree4a9b645bb73168fc48ce4204e30a547090f09a17 /gm/scaledemoji.cpp
parent4f9647efb73d2a5fac0d5818860f079db296a46b (diff)
Add scaled emoji GM.
Draws string at four scales to test each method of emoji rendering. Bug: skia:7562 Change-Id: Id28fea702aef36e3d2d5a9ca24c1685517979b3c Reviewed-on: https://skia-review.googlesource.com/107020 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'gm/scaledemoji.cpp')
-rw-r--r--gm/scaledemoji.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp
new file mode 100644
index 0000000000..c4a4c34499
--- /dev/null
+++ b/gm/scaledemoji.cpp
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "gm.h"
+#include "sk_tool_utils.h"
+
+#include "Resources.h"
+#include "SkCanvas.h"
+#include "SkStream.h"
+#include "SkTypeface.h"
+
+namespace skiagm {
+
+class ScaledEmojiGM : public GM {
+public:
+ ScaledEmojiGM() { }
+
+protected:
+ struct EmojiFont {
+ sk_sp<SkTypeface> fTypeface;
+ const char* fText;
+ } fEmojiFont;
+
+ void onOnceBeforeDraw() override {
+ fEmojiFont.fTypeface = sk_tool_utils::emoji_typeface();
+ fEmojiFont.fText = sk_tool_utils::emoji_sample_text();
+ }
+
+ SkString onShortName() override {
+ SkString name("scaledemoji");
+ name.append(sk_tool_utils::platform_font_manager());
+ return name;
+ }
+
+ SkISize onISize() override { return SkISize::Make(1200, 1200); }
+
+ void onDraw(SkCanvas* canvas) override {
+
+ canvas->drawColor(sk_tool_utils::color_to_565(SK_ColorGRAY));
+
+ SkPaint paint;
+ paint.setTypeface(fEmojiFont.fTypeface);
+ const char* text = fEmojiFont.fText;
+
+ // draw text at different point sizes
+ // Testing GPU bitmap path, SDF path with no scaling,
+ // SDF path with scaling, path rendering with scaling
+ SkPaint::FontMetrics metrics;
+ SkScalar y = 0;
+ for (SkScalar textSize : { 70, 180, 270, 340 }) {
+ paint.setTextSize(textSize);
+ paint.getFontMetrics(&metrics);
+ y += -metrics.fAscent;
+ canvas->drawString(text, 10, y, paint);
+ y += metrics.fDescent + metrics.fLeading;
+ }
+
+ }
+
+ typedef GM INHERITED;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+DEF_GM(return new ScaledEmojiGM;)
+
+}