Hal Canary | 8751512 | 2019-03-15 14:22:51 -0400 | [diff] [blame] | 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 | |
Mike Klein | c0bd9f9 | 2019-04-23 12:05:21 -0500 | [diff] [blame] | 4 | #include "tools/fiddle/examples.h" |
Hal Canary | 8751512 | 2019-03-15 14:22:51 -0400 | [diff] [blame] | 5 | |
Kevin Lubick | 1e97119 | 2023-11-10 16:14:44 -0500 | [diff] [blame] | 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 | |
Hal Canary | 8751512 | 2019-03-15 14:22:51 -0400 | [diff] [blame] | 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; |
Kevin Lubick | 1e97119 | 2023-11-10 16:14:44 -0500 | [diff] [blame] | 32 | sk_sp<SkFontMgr> fontMgr; |
Hal Canary | 8751512 | 2019-03-15 14:22:51 -0400 | [diff] [blame] | 33 | |
| 34 | int 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); |
Kevin Lubick | 77472bf | 2023-03-24 07:11:17 -0400 | [diff] [blame] | 40 | images[i] = SkImages::DeferredFromEncodedData(SkData::MakeFromFileName(path.c_str())); |
Hal Canary | 8751512 | 2019-03-15 14:22:51 -0400 | [diff] [blame] | 41 | SkAssertResult(images[i] && images[i]->asLegacyBitmap(&bitmaps[i])); |
| 42 | } |
Kevin Lubick | 1e97119 | 2023-11-10 16:14:44 -0500 | [diff] [blame] | 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 |
Hal Canary | 8751512 | 2019-03-15 14:22:51 -0400 | [diff] [blame] | 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 | } |