48 fuchsia::ui::views::ViewCreationToken view_creation_token,
49 fuchsia::ui::views::ViewIdentityOnCreation view_identity,
50 fuchsia::ui::composition::ViewBoundProtocols endpoints,
51 fidl::InterfaceRequest<fuchsia::ui::composition::ParentViewportWatcher>
52 parent_viewport_watcher_request,
53 std::shared_ptr<FlatlandConnection> flatland,
54 std::shared_ptr<SurfaceProducer> surface_producer,
55 bool intercept_all_input =
false);
64 std::unique_ptr<flutter::EmbeddedViewParams>
params)
override;
77 raster_thread_merger)
override;
81 double device_pixel_ratio)
override;
84 void EndFrame(
bool should_resubmit_frame,
86 raster_thread_merger)
override;
90 int64_t flutter_view_id,
92 const std::shared_ptr<impeller::AiksContext>& aiks_context,
93 std::unique_ptr<flutter::SurfaceFrame>
frame)
override;
109 const SkRect& occlusion_hint,
116 std::vector<fuchsia::ui::composition::TransformId>
children;
123 struct TransformedClip {
127 bool operator==(
const TransformedClip& other)
const {
128 return transform == other.transform && rect == other.rect;
134 struct ViewMutators {
135 std::vector<TransformedClip> clips;
140 bool operator==(
const ViewMutators& other)
const {
141 return clips == other.clips && total_transform == other.total_transform &&
142 transform == other.transform && opacity == other.opacity;
148 struct EmbedderLayer {
149 EmbedderLayer(
const SkISize& frame_size,
150 std::optional<flutter::EmbeddedViewParams> view_params,
152 : rtree(rtree_factory.getInstance()),
153 embedded_view_params(
std::move(view_params)),
155 canvas_spy(
std::make_unique<
flutter::CanvasSpy>(
156 recorder->beginRecording(
SkRect::
Make(frame_size),
158 surface_size(frame_size),
168 std::optional<flutter::EmbeddedViewParams> embedded_view_params;
169 std::unique_ptr<SkPictureRecorder> recorder;
172 std::unique_ptr<flutter::CanvasSpy> canvas_spy;
176 using EmbedderLayerId = std::optional<uint32_t>;
177 constexpr static EmbedderLayerId kRootLayerId = EmbedderLayerId{};
180 std::vector<ClipTransform> clip_transforms;
181 fuchsia::ui::composition::TransformId transform_id;
182 fuchsia::ui::composition::ContentId viewport_id;
183 ViewMutators mutators;
188 pending_create_viewport_callback;
193 fuchsia::ui::composition::TransformId transform_id;
196 std::shared_ptr<FlatlandConnection> flatland_;
197 std::shared_ptr<SurfaceProducer> surface_producer_;
199 fuchsia::ui::composition::ParentViewportWatcherPtr parent_viewport_watcher_;
201 fuchsia::ui::composition::TransformId root_transform_id_;
203 std::unordered_map<int64_t, View> views_;
204 std::vector<Layer> layers_;
206 std::unordered_map<EmbedderLayerId, EmbedderLayer> frame_layers_;
207 std::vector<EmbedderLayerId> frame_composition_order_;
208 std::vector<fuchsia::ui::composition::TransformId> child_transforms_;
210 float frame_dpr_ = 1.f;
214 std::optional<fuchsia::ui::composition::TransformId>
215 input_interceptor_transform_;
static std::unique_ptr< SkEncoder > Make(SkWStream *dst, const SkPixmap *src, const SkYUVAPixmaps *srcYUVA, const SkColorSpace *srcYUVAColorSpace, const SkJpegEncoder::Options &options)