// 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 #include 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 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. #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 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