diff options
Diffstat (limited to 'gm/verttext2.cpp')
-rw-r--r-- | gm/verttext2.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/gm/verttext2.cpp b/gm/verttext2.cpp new file mode 100644 index 0000000..3bfb471 --- /dev/null +++ b/gm/verttext2.cpp @@ -0,0 +1,92 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +/* Tests text vertical text rendering with different fonts and centering. + */ + +#include "gm.h" +#include "SkCanvas.h" +#include "SkTypeface.h" + +namespace skiagm { + +class VertText2GM : public GM { +public: + VertText2GM() { + const int pointSize = 24; + textHeight = SkIntToScalar(pointSize); + prop = SkTypeface::CreateFromName("Helvetica", SkTypeface::kNormal); + mono = SkTypeface::CreateFromName("Courier New", SkTypeface::kNormal); + } + +protected: + + SkString onShortName() { + return SkString("verttext2"); + } + + SkISize onISize() { return make_isize(640, 480); } + + virtual void onDraw(SkCanvas* canvas) { + + for (int i = 0; i < 3; ++i) { + SkPaint paint; + paint.setColor(SK_ColorRED); + paint.setAntiAlias(true); + y = textHeight; + canvas->drawLine(0, SkIntToScalar(10), + SkIntToScalar(110), SkIntToScalar(10), paint); + canvas->drawLine(0, SkIntToScalar(240), + SkIntToScalar(110), SkIntToScalar(240), paint); + canvas->drawLine(0, SkIntToScalar(470), + SkIntToScalar(110), SkIntToScalar(470), paint); + drawText(canvas, SkString("Proportional / Top Aligned"), + prop, SkPaint::kLeft_Align); + drawText(canvas, SkString("< Proportional / Centered >"), + prop, SkPaint::kCenter_Align); + drawText(canvas, SkString("Monospaced / Top Aligned"), + mono, SkPaint::kLeft_Align); + drawText(canvas, SkString("< Monospaced / Centered >"), + mono, SkPaint::kCenter_Align); + canvas->rotate(SkIntToScalar(-15)); + canvas->translate(textHeight * 4, SkIntToScalar(50)); + if (i > 0) { + canvas->translate(0, SkIntToScalar(50)); + } + } + } + + void drawText(SkCanvas* canvas, const SkString& string, + SkTypeface* family, SkPaint::Align alignment) { + SkPaint paint; + paint.setColor(SK_ColorBLACK); + paint.setAntiAlias(true); + paint.setVerticalText(true); + paint.setTextAlign(alignment); + paint.setTypeface(family); + paint.setTextSize(textHeight); + + canvas->drawText(string.c_str(), string.size(), y, + alignment == SkPaint::kLeft_Align ? 10 : 240, paint); + y += textHeight; + } + +private: + typedef GM INHERITED; + SkScalar y, textHeight; + SkTypeface* prop; + SkTypeface* mono; +}; + +/////////////////////////////////////////////////////////////////////////////// + +static GM* MyFactory(void*) { return new VertText2GM; } +static GMRegistry reg(MyFactory); + +} |