• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()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);
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