aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/verttext.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-11-10 20:06:01 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-11-10 20:06:01 +0000
commit14debba629a422c950a892373cceea0f4916f104 (patch)
treee2eef6a0e31d39c14586d57e7ce1e355b5d3dcec /gm/verttext.cpp
parent44da42e92f46cae9e96003999f02db04b8b5ff2d (diff)
add test gm for vertical text
git-svn-id: http://skia.googlecode.com/svn/trunk@2661 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/verttext.cpp')
-rw-r--r--gm/verttext.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/gm/verttext.cpp b/gm/verttext.cpp
new file mode 100644
index 0000000000..90fa5cfbec
--- /dev/null
+++ b/gm/verttext.cpp
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2011 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 "SkCanvas.h"
+
+namespace skiagm {
+
+#define TEXT_SIZE 48
+static const char gText[] = "Hello";
+static const size_t gLen = sizeof(gText) - 1;
+
+class VertTextGM : public GM {
+public:
+ VertTextGM() {}
+
+protected:
+
+ SkString onShortName() {
+ return SkString(" verttext");
+ }
+
+ SkISize onISize() { return make_isize(640, 480); }
+
+ static void drawBaseline(SkCanvas* canvas, const SkPaint& paint,
+ SkScalar x, SkScalar y) {
+ SkScalar total = paint.measureText(gText, gLen);
+
+ SkPaint p;
+ p.setAntiAlias(true);
+ p.setColor(0x80FF0000);
+ canvas->drawLine(x, y,
+ paint.isVerticalText() ? x : x + total,
+ paint.isVerticalText() ? y + total : y,
+ p);
+
+ p.setColor(0xFF0000FF);
+ SkScalar adv[gLen];
+ paint.getTextWidths(gText, gLen, adv, NULL);
+ for (size_t i = 0; i < gLen; ++i) {
+ canvas->drawCircle(x, y, SK_Scalar1 * 3 / 2, p);
+ if (paint.isVerticalText()) {
+ y += adv[i];
+ } else {
+ x += adv[i];
+ }
+ }
+ canvas->drawCircle(x, y, SK_Scalar1 * 3 / 2, p);
+ }
+
+ virtual void onDraw(SkCanvas* canvas) {
+ SkScalar x = SkIntToScalar(100);
+ SkScalar y = SkIntToScalar(50);
+
+ for (int i = 0; i < 4; ++i) {
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setTextSize(SkIntToScalar(TEXT_SIZE));
+
+
+ paint.setVerticalText(false);
+ drawBaseline(canvas, paint, x, y);
+ canvas->drawText(gText, gLen, x, y, paint);
+
+ paint.setVerticalText(true);
+ drawBaseline(canvas, paint, x, y);
+ canvas->drawText(gText, gLen, x, y, paint);
+
+ x += SkIntToScalar(40);
+ y += SkIntToScalar(120);
+
+ canvas->rotate(SkIntToScalar(-15));
+ }
+ }
+
+private:
+ typedef GM INHERITED;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+static GM* MyFactory(void*) { return new VertTextGM; }
+static GMRegistry reg(MyFactory);
+
+}