aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/SlideDir.h
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-02-15 18:40:48 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-16 14:40:45 +0000
commit76a076bbdfe3e3837ff9e422d94124991062f583 (patch)
treedf8e5226b4811512a4774dea123d23183f1cfca1 /tools/viewer/SlideDir.h
parentdb78cba957889285604aeacb75e47af4600880c4 (diff)
Generic "directory" viewer slide
This is a generalization of "skottie-dir", based on SkSG and operating at the Slide API level. For now it is only instantiated for Json slides, but could be used for other slide "directories" in the future. TBR= NOTRY=true Change-Id: If12429084bddeb172b234344f23eabcdadedcceb Reviewed-on: https://skia-review.googlesource.com/108002 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tools/viewer/SlideDir.h')
-rw-r--r--tools/viewer/SlideDir.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/tools/viewer/SlideDir.h b/tools/viewer/SlideDir.h
new file mode 100644
index 0000000000..a4c5f6da0a
--- /dev/null
+++ b/tools/viewer/SlideDir.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SlideDir_DEFINED
+#define SlideDir_DEFINED
+
+#include "Slide.h"
+
+#include "SkTArray.h"
+
+class SkString;
+
+namespace sksg { class Scene; }
+
+class SlideDir final : public Slide {
+public:
+ SlideDir(const SkString& name, SkTArray<sk_sp<Slide>, true>&&,
+ int columns = kDefaultColumnCount);
+
+protected:
+ void load(SkScalar winWidth, SkScalar winHeight) override;
+ void unload() override;
+
+ SkISize getDimensions() const override;
+
+ void draw(SkCanvas*) override;
+ bool animate(const SkAnimTimer&) override;
+
+ bool onChar(SkUnichar) override;
+ bool onMouse(SkScalar x, SkScalar y, sk_app::Window::InputState, uint32_t modifiers) override;
+
+private:
+ static constexpr int kDefaultColumnCount = 4;
+
+ struct Rec;
+
+ const SkTArray<sk_sp<Slide>, true> fSlides;
+ const int fColumns;
+
+ SkTArray<Rec, true> fRecs;
+ std::unique_ptr<sksg::Scene> fScene;
+
+ SkISize fSize = SkISize::MakeEmpty();
+ SkMSec fTimeBase = 0;
+
+ using INHERITED = Slide;
+};
+
+#endif // SlideDir_DEFINED