12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * 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 "tools/viewer/Slide.h"
- #include "include/private/SkTArray.h"
- class SkString;
- namespace sksg {
- class Group;
- class Scene;
- }
- class SlideDir final : public Slide {
- public:
- SlideDir(const SkString& name, SkTArray<sk_sp<Slide>>&&,
- int columns = kDefaultColumnCount);
- protected:
- void load(SkScalar winWidth, SkScalar winHeight) override;
- void unload() override;
- SkISize getDimensions() const override;
- void draw(SkCanvas*) override;
- bool animate(double) override;
- bool onChar(SkUnichar) override;
- bool onMouse(SkScalar x, SkScalar y, InputState, ModifierKey modifiers) override;
- private:
- struct Rec;
- class FocusController;
- static constexpr int kDefaultColumnCount = 4;
- const Rec* findCell(float x, float y) const;
- const SkTArray<sk_sp<Slide>> fSlides;
- std::unique_ptr<FocusController> fFocusController;
- const int fColumns;
- SkTArray<Rec, true> fRecs;
- std::unique_ptr<sksg::Scene> fScene;
- sk_sp<sksg::Group> fRoot;
- SkSize fWinSize = SkSize::MakeEmpty();
- SkSize fCellSize = SkSize::MakeEmpty();
- SkMSec fTimeBase = 0;
- const Rec* fTrackingCell = nullptr;
- SkPoint fTrackingPos = SkPoint::Make(0, 0);
- using INHERITED = Slide;
- };
- #endif // SlideDir_DEFINED
|