| // Copyright 2019 Google LLC. |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. |
| #ifndef examples_DEFINED |
| #define examples_DEFINED |
| |
| #include "tools/Registry.h" |
| #include "skia.h" |
| |
| #include <cinttypes> |
| #include <cmath> |
| #include <string> |
| |
| namespace fiddle { |
| struct Example { |
| void (*fFunc)(SkCanvas*); |
| const char* fName; |
| double fAnimationDuration; |
| int fImageIndex; |
| int fWidth; |
| int fHeight; |
| int fOffscreenWidth; |
| int fOffscreenHeight; |
| int fOffscreenSampleCount; |
| bool fText; |
| bool fSRGB; |
| bool fF16; |
| bool fOffscreen; |
| bool fOffscreenTexturable; |
| bool fOffscreenMipMap; |
| }; |
| } |
| |
| extern GrBackendTexture backEndTexture; |
| extern GrBackendRenderTarget backEndRenderTarget; |
| extern GrBackendTexture backEndTextureRenderTarget; |
| extern SkBitmap source; |
| extern sk_sp<SkImage> image; |
| extern double duration; // The total duration of the animation in seconds. |
| extern double frame; // A value in [0, 1] of where we are in the animation. |
| extern sk_sp<SkFontMgr> fontMgr; // Can load some system fonts |
| |
| #define REGISTER_FIDDLE(NAME, WIDTH, HEIGHT, TEXT, IMG_INDEX, DURATION, SRGB, F16, \ |
| OFSCR, OFSCR_WIDTH, OFSCR_HEIGHT, OFSCR_SAMPLECOUNT, \ |
| OFSCR_TEXTURABLE, OFSCR_MIPMAP) \ |
| namespace example_##NAME { void draw(SkCanvas*); } \ |
| sk_tools::Registry<fiddle::Example> reg_##NAME( \ |
| fiddle::Example{&example_##NAME::draw, #NAME, DURATION, IMG_INDEX, \ |
| WIDTH, HEIGHT, OFSCR_WIDTH, OFSCR_HEIGHT, OFSCR_SAMPLECOUNT, \ |
| TEXT, SRGB, F16, OFSCR, OFSCR_TEXTURABLE, OFSCR_MIPMAP}); \ |
| namespace example_##NAME |
| |
| #define REG_FIDDLE_SRGB(NAME, W, H, T, I, DURATION, F16) \ |
| REGISTER_FIDDLE(NAME, W, H, T, I, DURATION, true, F16, \ |
| false, 64, 64, 0, false, false) |
| |
| #define REG_FIDDLE_ANIMATED(NAME, W, H, T, I, DURATION) \ |
| REGISTER_FIDDLE(NAME, W, H, T, I, DURATION, false, false, \ |
| false, 64, 64, 0, false, false) |
| |
| #define REG_FIDDLE(NAME, W, H, TEXT, I) \ |
| REG_FIDDLE_ANIMATED(NAME, W, H, TEXT, I, 0) |
| |
| #endif // examples_DEFINED |