blob: 114055c106f3bbee90f85b56db046c4d67a35624 [file] [log] [blame]
Hal Canary87515122019-03-15 14:22:51 -04001// 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 Kleinc0bd9f92019-04-23 12:05:21 -05004#include "tools/fiddle/examples.h"
Hal Canary87515122019-03-15 14:22:51 -04005
Kevin Lubick1e971192023-11-10 16:14:44 -05006#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 Canary87515122019-03-15 14:22:51 -040022template sk_tools::Registry<fiddle::Example>* sk_tools::Registry<fiddle::Example>::gHead;
23
24// These globals are needed by fiddles:
25GrBackendTexture backEndTexture;
26GrBackendRenderTarget backEndRenderTarget;
27GrBackendTexture backEndTextureRenderTarget;
28SkBitmap source;
29sk_sp<SkImage> image;
30double duration = 1.0;
31double frame = 1.0;
Kevin Lubick1e971192023-11-10 16:14:44 -050032sk_sp<SkFontMgr> fontMgr;
Hal Canary87515122019-03-15 14:22:51 -040033
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);
Kevin Lubick77472bf2023-03-24 07:11:17 -040040 images[i] = SkImages::DeferredFromEncodedData(SkData::MakeFromFileName(path.c_str()));
Hal Canary87515122019-03-15 14:22:51 -040041 SkAssertResult(images[i] && images[i]->asLegacyBitmap(&bitmaps[i]));
42 }
Kevin Lubick1e971192023-11-10 16:14:44 -050043#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 Canary87515122019-03-15 14:22:51 -040054 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}