1 // Copyright 2019 Google LLC. 2 // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3 4 #include "tools/fiddle/examples.h" 5 6 #if defined(SK_FONTMGR_FONTCONFIG_AVAILABLE) 7 #include "include/ports/SkFontMgr_fontconfig.h" 8 #include "include/ports/SkFontScanner_FreeType.h" 9 #endif 10 11 #if defined(SK_FONTMGR_CORETEXT_AVAILABLE) 12 #include "include/ports/SkFontMgr_mac_ct.h" 13 #endif 14 15 #if defined(SK_FONTMGR_DIRECTWRITE_AVAILABLE) 16 #include "include/ports/SkTypeface_win.h" 17 #endif 18 19 #if defined(SK_FONTMGR_FREETYPE_DIRECTORY_AVAILABLE) 20 #include "include/ports/SkFontMgr_directory.h" 21 #endif 22 23 template sk_tools::Registry<fiddle::Example>* sk_tools::Registry<fiddle::Example>::gHead; 24 25 // These globals are needed by fiddles: 26 GrBackendTexture backEndTexture; 27 GrBackendRenderTarget backEndRenderTarget; 28 GrBackendTexture backEndTextureRenderTarget; 29 SkBitmap source; 30 sk_sp<SkImage> image; 31 double duration = 1.0; 32 double frame = 1.0; 33 sk_sp<SkFontMgr> fontMgr; 34 main()35int main() { 36 constexpr int kImgCount = 7; 37 sk_sp<SkImage> images[kImgCount]; 38 SkBitmap bitmaps[kImgCount]; 39 for (int i = 1; i < kImgCount; ++i) { 40 SkString path = SkStringPrintf("resources/images/example_%d.png", i); 41 images[i] = SkImages::DeferredFromEncodedData(SkData::MakeFromFileName(path.c_str())); 42 SkAssertResult(images[i] && images[i]->asLegacyBitmap(&bitmaps[i])); 43 } 44 #if defined(SK_FONTMGR_FONTCONFIG_AVAILABLE) 45 fontMgr = SkFontMgr_New_FontConfig(nullptr, SkFontScanner_Make_FreeType()); 46 #elif defined(SK_FONTMGR_CORETEXT_AVAILABLE) 47 fontMgr = SkFontMgr_New_CoreText(nullptr); 48 #elif defined(SK_FONTMGR_DIRECTWRITE_AVAILABLE) 49 fontMgr = SkFontMgr_New_DirectWrite(); 50 #elif defined(SK_FONTMGR_FREETYPE_DIRECTORY_AVAILABLE) 51 fontMgr = SkFontMgr_New_Custom_Directory("/usr/share/fonts/"); 52 #else 53 #error "Unsupported OS" 54 #endif 55 for (const fiddle::Example& example : sk_tools::Registry<fiddle::Example>::Range()) { 56 SkASSERT((unsigned)example.fImageIndex < (unsigned)kImgCount); 57 image = images[example.fImageIndex]; 58 source = bitmaps[example.fImageIndex]; 59 SkBitmap bmp; 60 bmp.allocN32Pixels(example.fWidth, example.fHeight); 61 bmp.eraseColor(SK_ColorWHITE); 62 SkCanvas canvas(bmp); 63 SkDebugf("==> %s\n", example.fName); 64 example.fFunc(&canvas); 65 } 66 } 67