1cb93a386Sopenharmony_ci// Copyright 2020 Google LLC. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3cb93a386Sopenharmony_ci#include "tools/fiddle/examples.h" 4cb93a386Sopenharmony_ciREG_FIDDLE(SkFontMgr_example2, 1536, 512, false, 0) { 5cb93a386Sopenharmony_ciconst char* tostr(SkFontStyle::Slant s) { 6cb93a386Sopenharmony_ci switch (s) { 7cb93a386Sopenharmony_ci case SkFontStyle::kUpright_Slant: return "SkFontStyle::kUpright_Slant"; 8cb93a386Sopenharmony_ci case SkFontStyle::kItalic_Slant: return "SkFontStyle::kItalic_Slant"; 9cb93a386Sopenharmony_ci case SkFontStyle::kOblique_Slant: return "SkFontStyle::kOblique_Slant"; 10cb93a386Sopenharmony_ci default: return ""; 11cb93a386Sopenharmony_ci } 12cb93a386Sopenharmony_ci} 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_civoid draw(SkCanvas* canvas) { 15cb93a386Sopenharmony_ci float x = 10, y = 10; 16cb93a386Sopenharmony_ci float textScale = 24; 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ci sk_sp<SkFontMgr> mgr(SkFontMgr::RefDefault()); 19cb93a386Sopenharmony_ci for (int i = 0; i < mgr->countFamilies(); ++i) { 20cb93a386Sopenharmony_ci SkString familyName; 21cb93a386Sopenharmony_ci mgr->getFamilyName(i, &familyName); 22cb93a386Sopenharmony_ci sk_sp<SkFontStyleSet> styleSet(mgr->createStyleSet(i)); 23cb93a386Sopenharmony_ci for (int j = 0; j < styleSet->count(); ++j) { 24cb93a386Sopenharmony_ci SkFontStyle fontStyle; 25cb93a386Sopenharmony_ci SkString style; 26cb93a386Sopenharmony_ci styleSet->getStyle(j, &fontStyle, &style); 27cb93a386Sopenharmony_ci auto s = SkStringPrintf( 28cb93a386Sopenharmony_ci "SkFont font(mgr->legacyMakeTypeface(\"%s\", SkFontStyle(%3d, %1d, %-27s), " 29cb93a386Sopenharmony_ci "%g);", 30cb93a386Sopenharmony_ci familyName.c_str(), fontStyle.weight(), fontStyle.width(), 31cb93a386Sopenharmony_ci tostr(fontStyle.slant()), textScale); 32cb93a386Sopenharmony_ci SkFont font(mgr->legacyMakeTypeface(familyName.c_str(), fontStyle), textScale); 33cb93a386Sopenharmony_ci y += font.getSpacing() * 1.5; 34cb93a386Sopenharmony_ci canvas->drawString(s, x, y, font, SkPaint()); 35cb93a386Sopenharmony_ci } 36cb93a386Sopenharmony_ci } 37cb93a386Sopenharmony_ci} 38cb93a386Sopenharmony_ci} // END FIDDLE 39