| // Copyright 2013 The Flutter 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 FLUTTER_FLOW_EXPORT_NODE_H_ |
| #define FLUTTER_FLOW_EXPORT_NODE_H_ |
| |
| #include <lib/ui/scenic/cpp/resources.h> |
| #include <lib/zx/eventpair.h> |
| #include <third_party/skia/include/core/SkMatrix.h> |
| #include <third_party/skia/include/core/SkPoint.h> |
| #include <third_party/skia/include/core/SkSize.h> |
| #include <zircon/types.h> |
| |
| #include <memory> |
| |
| #include "flutter/flow/scene_update_context.h" |
| #include "flutter/fml/macros.h" |
| |
| namespace flutter { |
| |
| // Represents a Scenic |ExportNode| resource that exports an |EntityNode| to |
| // another session. |
| // |
| // This object is created and destroyed on the |Rasterizer|'s' thread. |
| class ExportNode { |
| public: |
| static void Create(zx_koid_t id, zx::eventpair export_token); |
| static void Destroy(zx_koid_t id); |
| static ExportNode* FromId(zx_koid_t id); |
| |
| // Creates or updates the contained EntityNode resource using the specified |
| // |SceneUpdateContext|. |
| void UpdateScene(SceneUpdateContext& context, |
| const SkPoint& offset, |
| const SkSize& size, |
| bool hit_testable); |
| |
| private: |
| ExportNode(zx::eventpair export_token); |
| |
| zx::eventpair pending_export_token_; |
| std::unique_ptr<scenic::EntityNode> export_node_; |
| |
| FML_DISALLOW_COPY_AND_ASSIGN(ExportNode); |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_FLOW_EXPORT_NODE_H_ |