/* * 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 SkSLSlide_DEFINED #define SkSLSlide_DEFINED #include "tools/viewer/Slide.h" #include "include/effects/SkRuntimeEffect.h" class SkSLSlide : public Slide { public: SkSLSlide(); // TODO: We need a way for primarily interactive slides to always be as large as the window SkISize getDimensions() const override { return SkISize::MakeEmpty(); } void draw(SkCanvas* canvas) override; bool animate(double nanos) override; void load(SkScalar winWidth, SkScalar winHeight) override; void unload() override; private: bool rebuild(); SkString fSkSL; bool fCodeIsDirty; sk_sp fEffect; SkAutoTMalloc fInputs; SkTArray> fChildren; float fSeconds = 0.0f; // Named shaders that can be selected as inputs SkTArray>> fShaders; }; #endif