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