| // Copyright 2019 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 GARNET_TESTING_VIEWS_BACKGROUND_VIEW_H_ |
| #define GARNET_TESTING_VIEWS_BACKGROUND_VIEW_H_ |
| |
| #include <fuchsia/ui/scenic/cpp/fidl.h> |
| #include <lib/ui/base_view/cpp/base_view.h> |
| #include <lib/ui/scenic/cpp/resources.h> |
| #include <lib/ui/scenic/cpp/session.h> |
| |
| #include "garnet/testing/views/color.h" |
| #include "garnet/testing/views/test_view.h" |
| |
| namespace scenic { |
| |
| // Test view with a solid background. This is a simplified |BaseView| that |
| // exposes the present callback. |
| // |
| // See also lib/ui/base_view. |
| class BackgroundView : public TestView, |
| private fuchsia::ui::scenic::SessionListener { |
| public: |
| static constexpr float kBackgroundElevation = 0.f; |
| static constexpr Color kBackgroundColor = {0x67, 0x3a, 0xb7, |
| 0xff}; // Deep Purple 500 |
| |
| BackgroundView(ViewContext context, |
| const std::string& debug_name = "BackgroundView"); |
| |
| // |TestView| |
| void set_present_callback(Session::PresentCallback present_callback) override; |
| |
| void SetHostImage(zx::vmo vmo, uint64_t size, |
| fuchsia::images::ImageInfo info); |
| |
| protected: |
| Session* session() { return &session_; } |
| View* view() { return &view_; } |
| |
| // Updates the scene graph; does not present. |
| virtual void Draw(float cx, float cy, float sx, float sy); |
| |
| // Presents updates to the scene graph, with the previously set present |
| // callback, if set, as a one-off. |
| void Present(); |
| |
| private: |
| // |fuchsia::ui::scenic::SessionListener| |
| void OnScenicEvent(std::vector<fuchsia::ui::scenic::Event> events) override; |
| |
| // |fuchsia::ui::scenic::SessionListener| |
| void OnScenicError(std::string error) override; |
| |
| void OnViewPropertiesChanged(const fuchsia::ui::gfx::vec3& sz); |
| |
| fidl::Binding<fuchsia::ui::scenic::SessionListener> binding_; |
| Session session_; |
| View view_; |
| |
| ShapeNode background_node_; |
| Session::PresentCallback present_callback_; |
| }; |
| |
| } // namespace scenic |
| #endif // GARNET_TESTING_VIEWS_BACKGROUND_VIEW_H_ |