diff options
Diffstat (limited to 'chromium/third_party/skia/gm/getpostextpath.cpp')
-rw-r--r-- | chromium/third_party/skia/gm/getpostextpath.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/chromium/third_party/skia/gm/getpostextpath.cpp b/chromium/third_party/skia/gm/getpostextpath.cpp new file mode 100644 index 00000000000..0f66a976b53 --- /dev/null +++ b/chromium/third_party/skia/gm/getpostextpath.cpp @@ -0,0 +1,77 @@ +/* + * Copyright 2012 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" +#include "SkPaint.h" +#include "SkRandom.h" +#include "SkTemplates.h" + +class GetPosTextPathGM : public skiagm::GM { +public: + GetPosTextPathGM() {} + +protected: + virtual uint32_t onGetFlags() const SK_OVERRIDE { + return kSkipTiled_Flag; + } + + SkString onShortName() { + return SkString("getpostextpath"); + } + + SkISize onISize() { return SkISize::Make(480, 780); } + + static void strokePath(SkCanvas* canvas, const SkPath& path) { + SkPaint paint; + paint.setAntiAlias(true); + paint.setColor(SK_ColorRED); + paint.setStyle(SkPaint::kStroke_Style); + canvas->drawPath(path, paint); + } + + virtual void onDraw(SkCanvas* canvas) { + // explicitly add spaces, to test a prev. bug + const char* text = "Ham bur ge fons"; + int len = SkToInt(strlen(text)); + SkPath path; + + SkPaint paint; + paint.setAntiAlias(true); + paint.setTextSize(SkIntToScalar(48)); + + canvas->translate(SkIntToScalar(10), SkIntToScalar(64)); + + canvas->drawText(text, len, 0, 0, paint); + paint.getTextPath(text, len, 0, 0, &path); + strokePath(canvas, path); + path.reset(); + + SkAutoTArray<SkPoint> pos(len); + SkAutoTArray<SkScalar> widths(len); + paint.getTextWidths(text, len, &widths[0]); + + SkLCGRandom rand; + SkScalar x = SkIntToScalar(20); + SkScalar y = SkIntToScalar(100); + for (int i = 0; i < len; ++i) { + pos[i].set(x, y + rand.nextSScalar1() * 24); + x += widths[i]; + } + + canvas->translate(0, SkIntToScalar(64)); + + canvas->drawPosText(text, len, &pos[0], paint); + paint.getPosTextPath(text, len, &pos[0], &path); + strokePath(canvas, path); + } +}; + +////////////////////////////////////////////////////////////////////////////// + +static skiagm::GM* F(void*) { return new GetPosTextPathGM; } +static skiagm::GMRegistry gR(F); |