| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef TOPAZ_BIN_UI_SKOTTIE_VIEWER_VIEW_H_ |
| #define TOPAZ_BIN_UI_SKOTTIE_VIEWER_VIEW_H_ |
| |
| #include <fuchsia/images/cpp/fidl.h> |
| #include <fuchsia/mem/cpp/fidl.h> |
| #include <fuchsia/skia/skottie/cpp/fidl.h> |
| |
| #include "examples/ui/lib/skia_view.h" |
| #include "lib/component/cpp/startup_context.h" |
| #include "lib/fidl/cpp/binding_set.h" |
| #include "src/lib/fxl/macros.h" |
| //#if defined(SK_ENABLE_SKOTTIE) |
| #include "third_party/skia/modules/skottie/include/Skottie.h" |
| //#endif |
| namespace skottie { |
| |
| // A view that plays Skottie animations. |
| class View final : public scenic::SkiaView, |
| public fuchsia::skia::skottie::Loader, |
| public fuchsia::skia::skottie::Player { |
| public: |
| View(scenic::ViewContext view_context); |
| ~View() override = default; |
| |
| // |scenic::BaseView| |
| void OnSceneInvalidated( |
| fuchsia::images::PresentationInfo presentation_info) override; |
| |
| // |fuchsia::skia::skottie::Loader| |
| virtual void Load(fuchsia::mem::Buffer payload, |
| fuchsia::skia::skottie::Options options, |
| LoadCallback callback) override; |
| |
| // |fuchsia::skia::skottie::Player| |
| virtual void Seek(float t) override; |
| virtual void Play() override; |
| virtual void Pause() override; |
| |
| private: |
| fidl::BindingSet<fuchsia::skia::skottie::Loader> loader_bindings_; |
| fidl::Binding<fuchsia::skia::skottie::Player> player_binding_; |
| fuchsia::skia::skottie::PlayerPtr player_; |
| component::ServiceNamespace service_namespace_; |
| |
| // Render the animation to the canvas. |
| void Draw(SkCanvas* canvas); |
| |
| uint64_t start_time_ = 0u; |
| float position_ = 0.f; |
| float duration_ = 0.f; |
| SkColor background_color_ = SK_ColorBLACK; |
| bool playing_ = false; |
| bool loop_ = true; |
| |
| sk_sp<skottie::Animation> animation_; |
| |
| FXL_DISALLOW_COPY_AND_ASSIGN(View); |
| }; |
| |
| } // namespace skottie |
| |
| #endif // TOPAZ_BIN_UI_SKOTTIE_VIEWER_VIEW_H_ |