diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-03-28 13:39:35 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-03-28 13:39:35 +0000 |
commit | af0fa6a298365fd0e836a4b20f82bd047e50951f (patch) | |
tree | 07da7f3015bcab1d7c5be720f588f31ad49a3d4b /gm/fontmgr.cpp | |
parent | 73818dce9340c9d7be372d44e8bba305c915c89a (diff) |
add gm for experimental fontmgr api
git-svn-id: http://skia.googlecode.com/svn/trunk@8426 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/fontmgr.cpp')
-rw-r--r-- | gm/fontmgr.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp new file mode 100644 index 0000000000..d3ab256524 --- /dev/null +++ b/gm/fontmgr.cpp @@ -0,0 +1,76 @@ +/* + * Copyright 2013 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 "SkFontMgr.h" +#include "SkGraphics.h" +#include "SkTypeface.h" + +// limit this just so we don't take too long to draw +#define MAX_FAMILIES 30 + +static SkScalar drawString(SkCanvas* canvas, const SkString& text, SkScalar x, + SkScalar y, const SkPaint& paint) { + canvas->drawText(text.c_str(), text.size(), x, y, paint); + return x + paint.measureText(text.c_str(), text.size()); +} + +class FontMgrGM : public skiagm::GM { +public: + FontMgrGM() { + SkGraphics::SetFontCacheLimit(16 * 1024 * 1024); + } + +protected: + virtual SkString onShortName() { + return SkString("fontmgr"); + } + + virtual SkISize onISize() { + return SkISize::Make(640, 1024); + } + + virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { + SkScalar y = 20; + SkPaint paint; + paint.setAntiAlias(true); + paint.setLCDRenderText(true); + paint.setSubpixelText(true); + paint.setTextSize(17); + + SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); + int count = SkMin32(fm->countFamilies(), MAX_FAMILIES); + + for (int i = 0; i < count; ++i) { + SkString fname; + fm->getFamilyName(i, &fname); + paint.setTypeface(NULL); + (void)drawString(canvas, fname, 20, y, paint); + + SkScalar x = 220; + SkAutoTUnref<SkFontStyleSet> set(fm->createStyleSet(i)); + for (int j = 0; j < set->count(); ++j) { + SkString sname; + SkFontStyle fs; + set->getStyle(j, &fs, &sname); + + SkSafeUnref(paint.setTypeface(set->createTypeface(j))); + x = drawString(canvas, sname, x, y, paint) + 20; + } + y += 24; + } + } + +private: + typedef GM INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +DEF_GM( return SkNEW(FontMgrGM); ) + |