|  | /* | 
|  | * 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, skui::InputState, skui::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 |