diff options
author | 2018-02-15 18:40:48 -0500 | |
---|---|---|
committer | 2018-02-16 14:40:45 +0000 | |
commit | 76a076bbdfe3e3837ff9e422d94124991062f583 (patch) | |
tree | df8e5226b4811512a4774dea123d23183f1cfca1 /tools/viewer/SlideDir.h | |
parent | db78cba957889285604aeacb75e47af4600880c4 (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.h | 53 |
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 |