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