From afbb37ab5bfe8a0d6373675c86208f9e90e632de Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 15 Jun 2022 17:12:27 -0700 Subject: [PATCH 01/23] Testing Preroll/Paint --- flow/layers/backdrop_filter_layer.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index 8e8ef2628a16b..d026b2b16fbd4 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -40,6 +40,7 @@ void BackdropFilterLayer::Diff(DiffContext* context, const Layer* old_layer) { void BackdropFilterLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { + FML_DLOG(ERROR) << "In Preroll"; Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); @@ -51,7 +52,7 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, void BackdropFilterLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "BackdropFilterLayer::Paint"); FML_DCHECK(needs_painting(context)); - + FML_DLOG(ERROR) << "In Paint"; SkPaint paint; paint.setBlendMode(blend_mode_); Layer::AutoSaveLayer save = Layer::AutoSaveLayer::Create( From 5103d9d5df7df05720015393d8c38d35c613e8f3 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Fri, 17 Jun 2022 14:57:06 -0700 Subject: [PATCH 02/23] Pushed opacity to platform view stack / Background Filter Proto 1 --- backdrop_filter_diff | 95 +++++++++++++++++++ flow/embedded_views.h | 16 ++++ flow/layers/backdrop_filter_layer.cc | 7 +- flow/layers/platform_view_layer.cc | 1 + .../framework/Source/FlutterPlatformViews.mm | 7 ++ .../Source/FlutterPlatformViews_Internal.h | 4 + .../darwin/ios/ios_external_view_embedder.h | 2 + .../darwin/ios/ios_external_view_embedder.mm | 4 + 8 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 backdrop_filter_diff diff --git a/backdrop_filter_diff b/backdrop_filter_diff new file mode 100644 index 0000000000000..d152b3560ef63 --- /dev/null +++ b/backdrop_filter_diff @@ -0,0 +1,95 @@ +diff --git a/flow/embedded_views.h b/flow/embedded_views.h +index 7a5a34f330..76b002befd 100644 +--- a/flow/embedded_views.h ++++ b/flow/embedded_views.h +@@ -345,6 +345,8 @@ class ExternalViewEmbedder { + // 'EndFrame', otherwise returns false. + bool GetUsedThisFrame() const { return used_this_frame_; } + ++ void PushMutator() {} ++ + private: + bool used_this_frame_ = false; + +diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc +index 8e8ef2628a..b059e427c3 100644 +--- a/flow/layers/backdrop_filter_layer.cc ++++ b/flow/layers/backdrop_filter_layer.cc +@@ -43,6 +43,10 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, + Layer::AutoPrerollSaveLayerState save = + Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); + SkRect child_paint_bounds = SkRect::MakeEmpty(); ++ auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); ++ for (id in visited_platform_views) { ++ context->view_embedder->ApplyMutator(id, alpha); ++ } + PrerollChildren(context, matrix, &child_paint_bounds); + child_paint_bounds.join(context->cull_rect); + set_paint_bounds(child_paint_bounds); +diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc +index 285db390cc..63b7827cf9 100644 +--- a/flow/layers/platform_view_layer.cc ++++ b/flow/layers/platform_view_layer.cc +@@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, + context->mutators_stack); + context->view_embedder->PrerollCompositeEmbeddedView(view_id_, + std::move(params)); ++ context->view_embedder->PushVisitedPlatformView(view_id_); + } + + void PlatformViewLayer::Paint(PaintContext& context) const { +diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +index e5325aee85..a6992cca3f 100644 +--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm ++++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +@@ -319,6 +319,11 @@ void FlutterPlatformViewsController::EndFrame( + } + } + ++void FlutterPlatformViewsController::PushMutator(flutter::Mutator mutator, int64_t platform_view_id) { ++ EmbeddedViewParams params = current_composition_params_[platform_view_id]; ++ params.mutatorsStack().PushOpacity(20); ++} ++ + void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) { +diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +index fde21d23e2..522b847ef4 100644 +--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h ++++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +@@ -184,6 +184,8 @@ class FlutterPlatformViewsController { + // responder. Returns -1 if no such platform view is found. + long FindFirstResponderPlatformViewId(); + ++ void PushMutator(flutter::Mutator mutator, int64_t platform_view_id); ++ + private: + static const size_t kMaxLayerAllocations = 2; + +diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h +index 6c023d1b79..da160dd023 100644 +--- a/shell/platform/darwin/ios/ios_external_view_embedder.h ++++ b/shell/platform/darwin/ios/ios_external_view_embedder.h +@@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { + // |ExternalViewEmbedder| + bool SupportsDynamicThreadMerging() override; + ++ void PushMutator() override; ++ + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); + }; + +diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm +index 1323fa4c2f..edd4a3adcd 100644 +--- a/shell/platform/darwin/ios/ios_external_view_embedder.mm ++++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm +@@ -92,4 +92,8 @@ bool IOSExternalViewEmbedder::SupportsDynamicThreadMerging() { + return true; + } + ++void PushMutator(int alpha, int view_id) { ++ platform_views_controller_->PushMutator(alpha, view_id); ++} ++ + } // namespace flutter diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 7a5a34f33069b..11926f1ed20ad 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -224,6 +224,10 @@ class EmbeddedViewParams { // Clippings are ignored. const SkRect& finalBoundingRect() const { return final_bounding_rect_; } + void PushFilter(int opacity) { + mutators_stack_.PushOpacity(opacity); + } + bool operator==(const EmbeddedViewParams& other) const { return size_points_ == other.size_points_ && mutators_stack_ == other.mutators_stack_ && @@ -345,9 +349,21 @@ class ExternalViewEmbedder { // 'EndFrame', otherwise returns false. bool GetUsedThisFrame() const { return used_this_frame_; } + std::vector GetVisitedPlatformViews() { + return visited_platform_views_; + } + + void PushVisitedPlatformView(int64_t view_id) { + visited_platform_views_.push_back(view_id); + } + + virtual void PushMutator(int64_t view_id) {} //int alpha + private: bool used_this_frame_ = false; + std::vector visited_platform_views_; + FML_DISALLOW_COPY_AND_ASSIGN(ExternalViewEmbedder); }; // ExternalViewEmbedder diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index d026b2b16fbd4..9003248d2d25d 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -40,10 +40,14 @@ void BackdropFilterLayer::Diff(DiffContext* context, const Layer* old_layer) { void BackdropFilterLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) { - FML_DLOG(ERROR) << "In Preroll"; Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); + auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); + for (int64_t id : visited_platform_views) { + context->view_embedder->PushMutator(id); + } + PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); set_paint_bounds(child_paint_bounds); @@ -52,7 +56,6 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, void BackdropFilterLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "BackdropFilterLayer::Paint"); FML_DCHECK(needs_painting(context)); - FML_DLOG(ERROR) << "In Paint"; SkPaint paint; paint.setBlendMode(blend_mode_); Layer::AutoSaveLayer save = Layer::AutoSaveLayer::Create( diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 285db390cc91d..63b7827cf9d52 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, context->mutators_stack); context->view_embedder->PrerollCompositeEmbeddedView(view_id_, std::move(params)); + context->view_embedder->PushVisitedPlatformView(view_id_); } void PlatformViewLayer::Paint(PaintContext& context) const { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index e5325aee855b6..a424afac0e560 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,6 +319,13 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } +void FlutterPlatformViewsController::PushMutator(int64_t platform_view_id) { //flutter::Mutator mutator, + EmbeddedViewParams params = current_composition_params_[platform_view_id]; + params.PushFilter(10); + EmbeddedViewParams newParams = EmbeddedViewParams(params.transformMatrix(), params.sizePoints(), params.mutatorsStack()); + current_composition_params_[platform_view_id] = newParams; +} + void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( int view_id, std::unique_ptr params) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index fde21d23e2e20..333d9ca1e5057 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,6 +184,8 @@ class FlutterPlatformViewsController { // responder. Returns -1 if no such platform view is found. long FindFirstResponderPlatformViewId(); + void PushMutator(int64_t platform_view_id); //flutter::Mutator mutator, + private: static const size_t kMaxLayerAllocations = 2; @@ -298,6 +300,8 @@ class FlutterPlatformViewsController { // The latest composition order that was presented in Present(). std::vector active_composition_order_; + + // Only compoiste platform views in this set. std::unordered_set views_to_recomposite_; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 6c023d1b793e1..872745b662841 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; + void PushMutator(int64_t view_id) override; + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); }; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm index 1323fa4c2f487..57e73ed672c04 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -92,4 +92,8 @@ return true; } +void IOSExternalViewEmbedder::PushMutator(int64_t view_id) { //int alpha, + platform_views_controller_->PushMutator(view_id); +} + } // namespace flutter From 825fbc8d547235881ac04d4680e5ba95694e9b33 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Thu, 23 Jun 2022 15:21:20 -0700 Subject: [PATCH 03/23] Create Backdrop Filter Mutator --- backdrop_filter_diff | 95 +++++++++++++++++++ flow/embedded_views.cc | 5 + flow/embedded_views.h | 27 +++++- flow/layers/backdrop_filter_layer.cc | 6 +- flow/layers/platform_view_layer.cc | 1 + .../framework/Source/FlutterPlatformViews.mm | 10 ++ .../Source/FlutterPlatformViews_Internal.h | 2 + .../darwin/ios/ios_external_view_embedder.h | 2 + .../darwin/ios/ios_external_view_embedder.mm | 4 + shell/platform/embedder/embedder_layers.cc | 6 +- 10 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 backdrop_filter_diff diff --git a/backdrop_filter_diff b/backdrop_filter_diff new file mode 100644 index 0000000000000..d152b3560ef63 --- /dev/null +++ b/backdrop_filter_diff @@ -0,0 +1,95 @@ +diff --git a/flow/embedded_views.h b/flow/embedded_views.h +index 7a5a34f330..76b002befd 100644 +--- a/flow/embedded_views.h ++++ b/flow/embedded_views.h +@@ -345,6 +345,8 @@ class ExternalViewEmbedder { + // 'EndFrame', otherwise returns false. + bool GetUsedThisFrame() const { return used_this_frame_; } + ++ void PushMutator() {} ++ + private: + bool used_this_frame_ = false; + +diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc +index 8e8ef2628a..b059e427c3 100644 +--- a/flow/layers/backdrop_filter_layer.cc ++++ b/flow/layers/backdrop_filter_layer.cc +@@ -43,6 +43,10 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, + Layer::AutoPrerollSaveLayerState save = + Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); + SkRect child_paint_bounds = SkRect::MakeEmpty(); ++ auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); ++ for (id in visited_platform_views) { ++ context->view_embedder->ApplyMutator(id, alpha); ++ } + PrerollChildren(context, matrix, &child_paint_bounds); + child_paint_bounds.join(context->cull_rect); + set_paint_bounds(child_paint_bounds); +diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc +index 285db390cc..63b7827cf9 100644 +--- a/flow/layers/platform_view_layer.cc ++++ b/flow/layers/platform_view_layer.cc +@@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, + context->mutators_stack); + context->view_embedder->PrerollCompositeEmbeddedView(view_id_, + std::move(params)); ++ context->view_embedder->PushVisitedPlatformView(view_id_); + } + + void PlatformViewLayer::Paint(PaintContext& context) const { +diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +index e5325aee85..a6992cca3f 100644 +--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm ++++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +@@ -319,6 +319,11 @@ void FlutterPlatformViewsController::EndFrame( + } + } + ++void FlutterPlatformViewsController::PushMutator(flutter::Mutator mutator, int64_t platform_view_id) { ++ EmbeddedViewParams params = current_composition_params_[platform_view_id]; ++ params.mutatorsStack().PushOpacity(20); ++} ++ + void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) { +diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +index fde21d23e2..522b847ef4 100644 +--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h ++++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +@@ -184,6 +184,8 @@ class FlutterPlatformViewsController { + // responder. Returns -1 if no such platform view is found. + long FindFirstResponderPlatformViewId(); + ++ void PushMutator(flutter::Mutator mutator, int64_t platform_view_id); ++ + private: + static const size_t kMaxLayerAllocations = 2; + +diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h +index 6c023d1b79..da160dd023 100644 +--- a/shell/platform/darwin/ios/ios_external_view_embedder.h ++++ b/shell/platform/darwin/ios/ios_external_view_embedder.h +@@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { + // |ExternalViewEmbedder| + bool SupportsDynamicThreadMerging() override; + ++ void PushMutator() override; ++ + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); + }; + +diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm +index 1323fa4c2f..edd4a3adcd 100644 +--- a/shell/platform/darwin/ios/ios_external_view_embedder.mm ++++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm +@@ -92,4 +92,8 @@ bool IOSExternalViewEmbedder::SupportsDynamicThreadMerging() { + return true; + } + ++void PushMutator(int alpha, int view_id) { ++ platform_views_controller_->PushMutator(alpha, view_id); ++} ++ + } // namespace flutter diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc index c85ad66f8dc75..c7b4811e8e07e 100644 --- a/flow/embedded_views.cc +++ b/flow/embedded_views.cc @@ -36,6 +36,11 @@ void MutatorsStack::PushOpacity(const int& alpha) { vector_.push_back(element); }; +void MutatorsStack::PushBackdropFilter(const sk_sp& filter) { + std::shared_ptr element = std::make_shared(filter); + vector_.push_back(element); +}; + void MutatorsStack::Pop() { vector_.pop_back(); }; diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 7a5a34f33069b..45810908f35da 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -21,7 +21,7 @@ namespace flutter { // TODO(chinmaygarde): Make these enum names match the style guide. -enum MutatorType { clip_rect, clip_rrect, clip_path, transform, opacity }; +enum MutatorType { clip_rect, clip_rrect, clip_path, transform, opacity, backdrop_filter }; // Stores mutation information like clipping or transform. // @@ -49,6 +49,9 @@ class Mutator { case opacity: alpha_ = other.alpha_; break; + case backdrop_filter: + filter_ = other.filter_; + break; default: break; } @@ -61,12 +64,14 @@ class Mutator { explicit Mutator(const SkMatrix& matrix) : type_(transform), matrix_(matrix) {} explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} + explicit Mutator(const sk_sp& filter) : type_(backdrop_filter), filter_(filter) {} const MutatorType& GetType() const { return type_; } const SkRect& GetRect() const { return rect_; } const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } + const sk_sp& GetFilter() const {return filter_; } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } @@ -85,6 +90,8 @@ class Mutator { return matrix_ == other.matrix_; case opacity: return alpha_ == other.alpha_; + case backdrop_filter: + return filter_ == other.filter_; } return false; @@ -111,6 +118,7 @@ class Mutator { SkMatrix matrix_; SkPath* path_; int alpha_; + sk_sp filter_; }; }; // Mutator @@ -133,6 +141,7 @@ class MutatorsStack { void PushClipPath(const SkPath& path); void PushTransform(const SkMatrix& matrix); void PushOpacity(const int& alpha); + void PushBackdropFilter(const sk_sp& filter); // Removes the `Mutator` on the top of the stack // and destroys it. @@ -224,6 +233,10 @@ class EmbeddedViewParams { // Clippings are ignored. const SkRect& finalBoundingRect() const { return final_bounding_rect_; } + void PushFilter(sk_sp filter) { + mutators_stack_.PushBackdropFilter(filter); + } + bool operator==(const EmbeddedViewParams& other) const { return size_points_ == other.size_points_ && mutators_stack_ == other.mutators_stack_ && @@ -345,9 +358,21 @@ class ExternalViewEmbedder { // 'EndFrame', otherwise returns false. bool GetUsedThisFrame() const { return used_this_frame_; } + std::vector GetVisitedPlatformViews() { + return visited_platform_views_; + } + + void PushVisitedPlatformView(int64_t view_id) { + visited_platform_views_.push_back(view_id); + } + + virtual void FilterPlatformViews(int64_t view_id, sk_sp filter) {} + private: bool used_this_frame_ = false; + std::vector visited_platform_views_; + FML_DISALLOW_COPY_AND_ASSIGN(ExternalViewEmbedder); }; // ExternalViewEmbedder diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index 8e8ef2628a16b..e4da4f7f98616 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -43,6 +43,11 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); + auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); + for (int64_t id : visited_platform_views) { + context->view_embedder->FilterPlatformViews(id, filter_); + } + PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); set_paint_bounds(child_paint_bounds); @@ -51,7 +56,6 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, void BackdropFilterLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "BackdropFilterLayer::Paint"); FML_DCHECK(needs_painting(context)); - SkPaint paint; paint.setBlendMode(blend_mode_); Layer::AutoSaveLayer save = Layer::AutoSaveLayer::Create( diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 285db390cc91d..63b7827cf9d52 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, context->mutators_stack); context->view_embedder->PrerollCompositeEmbeddedView(view_id_, std::move(params)); + context->view_embedder->PushVisitedPlatformView(view_id_); } void PlatformViewLayer::Paint(PaintContext& context) const { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index e5325aee855b6..66b6004c8ba07 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,6 +319,13 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } +void FlutterPlatformViewsController::FilterPlatformViews(int64_t platform_view_id, sk_sp filter) { + FML_DLOG(ERROR) << "FilterPlatformViews"; + EmbeddedViewParams params = current_composition_params_[platform_view_id]; + params.PushFilter(filter); + current_composition_params_[platform_view_id] = params; +} + void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( int view_id, std::unique_ptr params) { @@ -422,6 +429,9 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { case opacity: embedded_view.alpha = (*iter)->GetAlphaFloat() * embedded_view.alpha; break; + case backdrop_filter: + FML_DLOG(ERROR) << "SWITCH TEST"; + break; } ++iter; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index fde21d23e2e20..1d815217776b5 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,6 +184,8 @@ class FlutterPlatformViewsController { // responder. Returns -1 if no such platform view is found. long FindFirstResponderPlatformViewId(); + void FilterPlatformViews(int64_t platform_view_id, sk_sp filter);//, flutter::Mutator mutator + private: static const size_t kMaxLayerAllocations = 2; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 6c023d1b793e1..2705ac45a4ca5 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; + void FilterPlatformViews(int64_t view_id, sk_sp filter) override;//, flutter::Mutator mutator + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); }; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm index 1323fa4c2f487..0f1ee308c8211 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -92,4 +92,8 @@ return true; } +void IOSExternalViewEmbedder::FilterPlatformViews(int64_t view_id, sk_sp filter) { //, flutter::Mutator mutator + platform_views_controller_->FilterPlatformViews(view_id, filter);//, mutator +} + } // namespace flutter diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index 4716ea15683dd..99071955c0414 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -147,6 +147,8 @@ void EmbedderLayers::PushPlatformViewLayer( .get()); } } break; + case MutatorType::backdrop_filter: { + } break; } } @@ -159,8 +161,8 @@ void EmbedderLayers::PushPlatformViewLayer( .emplace_back(ConvertMutation(root_surface_transformation_)) .get()); } - - auto mutations = + + auto mutations = std::make_unique>( mutations_array.rbegin(), mutations_array.rend()); mutations_arrays_referenced_.emplace_back(std::move(mutations)); From 24c077f84a3c770569832d7951a038173863fe89 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Thu, 23 Jun 2022 16:11:55 -0700 Subject: [PATCH 04/23] Removed Logs --- .../darwin/ios/framework/Source/FlutterPlatformViews.mm | 2 -- 1 file changed, 2 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 66b6004c8ba07..65e6e32e5c173 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -320,7 +320,6 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } void FlutterPlatformViewsController::FilterPlatformViews(int64_t platform_view_id, sk_sp filter) { - FML_DLOG(ERROR) << "FilterPlatformViews"; EmbeddedViewParams params = current_composition_params_[platform_view_id]; params.PushFilter(filter); current_composition_params_[platform_view_id] = params; @@ -430,7 +429,6 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { embedded_view.alpha = (*iter)->GetAlphaFloat() * embedded_view.alpha; break; case backdrop_filter: - FML_DLOG(ERROR) << "SWITCH TEST"; break; } ++iter; From e1a817d8157b3f671a4d5d3354bbcac007587865 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Mon, 27 Jun 2022 15:24:51 -0700 Subject: [PATCH 05/23] Tests for PushFilter --- flow/mutators_stack_unittests.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index b165f68efc221..a74506b35f156 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -52,6 +52,17 @@ TEST(MutatorsStack, PushClipRect) { ASSERT_TRUE(iter->get()->GetRect() == rect); } +TEST(MutatorsStack, PushBackdropFilter) { + MutatorsStack stack; + sk_sp filter; + filter->filterBounds(SkIRect::MakeWH(10, 10), SkMatrix::I(), + SkImageFilter::kForward_MapDirection); + stack.PushBackdropFilter(filter); + auto iter = stack.Bottom(); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); + ASSERT_TRUE(iter->get()->GetFilter() == filter); +} + TEST(MutatorsStack, PushClipRRect) { MutatorsStack stack; auto rrect = SkRRect::MakeEmpty(); From d06155cee469ec290387e44ea0e8bd3ffb9f83e9 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Mon, 27 Jun 2022 15:26:46 -0700 Subject: [PATCH 06/23] Backdrop Filter Mutator --- backdrop_filter_diff | 95 +++++++++++++++++++ flow/embedded_views.cc | 5 + flow/embedded_views.h | 27 +++++- flow/layers/backdrop_filter_layer.cc | 6 +- flow/layers/platform_view_layer.cc | 1 + .../framework/Source/FlutterPlatformViews.mm | 8 ++ .../Source/FlutterPlatformViews_Internal.h | 2 + .../darwin/ios/ios_external_view_embedder.h | 2 + .../darwin/ios/ios_external_view_embedder.mm | 4 + shell/platform/embedder/embedder_layers.cc | 6 +- 10 files changed, 152 insertions(+), 4 deletions(-) create mode 100644 backdrop_filter_diff diff --git a/backdrop_filter_diff b/backdrop_filter_diff new file mode 100644 index 0000000000000..d152b3560ef63 --- /dev/null +++ b/backdrop_filter_diff @@ -0,0 +1,95 @@ +diff --git a/flow/embedded_views.h b/flow/embedded_views.h +index 7a5a34f330..76b002befd 100644 +--- a/flow/embedded_views.h ++++ b/flow/embedded_views.h +@@ -345,6 +345,8 @@ class ExternalViewEmbedder { + // 'EndFrame', otherwise returns false. + bool GetUsedThisFrame() const { return used_this_frame_; } + ++ void PushMutator() {} ++ + private: + bool used_this_frame_ = false; + +diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc +index 8e8ef2628a..b059e427c3 100644 +--- a/flow/layers/backdrop_filter_layer.cc ++++ b/flow/layers/backdrop_filter_layer.cc +@@ -43,6 +43,10 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, + Layer::AutoPrerollSaveLayerState save = + Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); + SkRect child_paint_bounds = SkRect::MakeEmpty(); ++ auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); ++ for (id in visited_platform_views) { ++ context->view_embedder->ApplyMutator(id, alpha); ++ } + PrerollChildren(context, matrix, &child_paint_bounds); + child_paint_bounds.join(context->cull_rect); + set_paint_bounds(child_paint_bounds); +diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc +index 285db390cc..63b7827cf9 100644 +--- a/flow/layers/platform_view_layer.cc ++++ b/flow/layers/platform_view_layer.cc +@@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, + context->mutators_stack); + context->view_embedder->PrerollCompositeEmbeddedView(view_id_, + std::move(params)); ++ context->view_embedder->PushVisitedPlatformView(view_id_); + } + + void PlatformViewLayer::Paint(PaintContext& context) const { +diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +index e5325aee85..a6992cca3f 100644 +--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm ++++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +@@ -319,6 +319,11 @@ void FlutterPlatformViewsController::EndFrame( + } + } + ++void FlutterPlatformViewsController::PushMutator(flutter::Mutator mutator, int64_t platform_view_id) { ++ EmbeddedViewParams params = current_composition_params_[platform_view_id]; ++ params.mutatorsStack().PushOpacity(20); ++} ++ + void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( + int view_id, + std::unique_ptr params) { +diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +index fde21d23e2..522b847ef4 100644 +--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h ++++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +@@ -184,6 +184,8 @@ class FlutterPlatformViewsController { + // responder. Returns -1 if no such platform view is found. + long FindFirstResponderPlatformViewId(); + ++ void PushMutator(flutter::Mutator mutator, int64_t platform_view_id); ++ + private: + static const size_t kMaxLayerAllocations = 2; + +diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h +index 6c023d1b79..da160dd023 100644 +--- a/shell/platform/darwin/ios/ios_external_view_embedder.h ++++ b/shell/platform/darwin/ios/ios_external_view_embedder.h +@@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { + // |ExternalViewEmbedder| + bool SupportsDynamicThreadMerging() override; + ++ void PushMutator() override; ++ + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); + }; + +diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm +index 1323fa4c2f..edd4a3adcd 100644 +--- a/shell/platform/darwin/ios/ios_external_view_embedder.mm ++++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm +@@ -92,4 +92,8 @@ bool IOSExternalViewEmbedder::SupportsDynamicThreadMerging() { + return true; + } + ++void PushMutator(int alpha, int view_id) { ++ platform_views_controller_->PushMutator(alpha, view_id); ++} ++ + } // namespace flutter diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc index c85ad66f8dc75..c7b4811e8e07e 100644 --- a/flow/embedded_views.cc +++ b/flow/embedded_views.cc @@ -36,6 +36,11 @@ void MutatorsStack::PushOpacity(const int& alpha) { vector_.push_back(element); }; +void MutatorsStack::PushBackdropFilter(const sk_sp& filter) { + std::shared_ptr element = std::make_shared(filter); + vector_.push_back(element); +}; + void MutatorsStack::Pop() { vector_.pop_back(); }; diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 7a5a34f33069b..45810908f35da 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -21,7 +21,7 @@ namespace flutter { // TODO(chinmaygarde): Make these enum names match the style guide. -enum MutatorType { clip_rect, clip_rrect, clip_path, transform, opacity }; +enum MutatorType { clip_rect, clip_rrect, clip_path, transform, opacity, backdrop_filter }; // Stores mutation information like clipping or transform. // @@ -49,6 +49,9 @@ class Mutator { case opacity: alpha_ = other.alpha_; break; + case backdrop_filter: + filter_ = other.filter_; + break; default: break; } @@ -61,12 +64,14 @@ class Mutator { explicit Mutator(const SkMatrix& matrix) : type_(transform), matrix_(matrix) {} explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} + explicit Mutator(const sk_sp& filter) : type_(backdrop_filter), filter_(filter) {} const MutatorType& GetType() const { return type_; } const SkRect& GetRect() const { return rect_; } const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } + const sk_sp& GetFilter() const {return filter_; } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } @@ -85,6 +90,8 @@ class Mutator { return matrix_ == other.matrix_; case opacity: return alpha_ == other.alpha_; + case backdrop_filter: + return filter_ == other.filter_; } return false; @@ -111,6 +118,7 @@ class Mutator { SkMatrix matrix_; SkPath* path_; int alpha_; + sk_sp filter_; }; }; // Mutator @@ -133,6 +141,7 @@ class MutatorsStack { void PushClipPath(const SkPath& path); void PushTransform(const SkMatrix& matrix); void PushOpacity(const int& alpha); + void PushBackdropFilter(const sk_sp& filter); // Removes the `Mutator` on the top of the stack // and destroys it. @@ -224,6 +233,10 @@ class EmbeddedViewParams { // Clippings are ignored. const SkRect& finalBoundingRect() const { return final_bounding_rect_; } + void PushFilter(sk_sp filter) { + mutators_stack_.PushBackdropFilter(filter); + } + bool operator==(const EmbeddedViewParams& other) const { return size_points_ == other.size_points_ && mutators_stack_ == other.mutators_stack_ && @@ -345,9 +358,21 @@ class ExternalViewEmbedder { // 'EndFrame', otherwise returns false. bool GetUsedThisFrame() const { return used_this_frame_; } + std::vector GetVisitedPlatformViews() { + return visited_platform_views_; + } + + void PushVisitedPlatformView(int64_t view_id) { + visited_platform_views_.push_back(view_id); + } + + virtual void FilterPlatformViews(int64_t view_id, sk_sp filter) {} + private: bool used_this_frame_ = false; + std::vector visited_platform_views_; + FML_DISALLOW_COPY_AND_ASSIGN(ExternalViewEmbedder); }; // ExternalViewEmbedder diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index 8e8ef2628a16b..e4da4f7f98616 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -43,6 +43,11 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); + auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); + for (int64_t id : visited_platform_views) { + context->view_embedder->FilterPlatformViews(id, filter_); + } + PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); set_paint_bounds(child_paint_bounds); @@ -51,7 +56,6 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, void BackdropFilterLayer::Paint(PaintContext& context) const { TRACE_EVENT0("flutter", "BackdropFilterLayer::Paint"); FML_DCHECK(needs_painting(context)); - SkPaint paint; paint.setBlendMode(blend_mode_); Layer::AutoSaveLayer save = Layer::AutoSaveLayer::Create( diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 285db390cc91d..63b7827cf9d52 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, context->mutators_stack); context->view_embedder->PrerollCompositeEmbeddedView(view_id_, std::move(params)); + context->view_embedder->PushVisitedPlatformView(view_id_); } void PlatformViewLayer::Paint(PaintContext& context) const { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index e5325aee855b6..65e6e32e5c173 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,6 +319,12 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } +void FlutterPlatformViewsController::FilterPlatformViews(int64_t platform_view_id, sk_sp filter) { + EmbeddedViewParams params = current_composition_params_[platform_view_id]; + params.PushFilter(filter); + current_composition_params_[platform_view_id] = params; +} + void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( int view_id, std::unique_ptr params) { @@ -422,6 +428,8 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { case opacity: embedded_view.alpha = (*iter)->GetAlphaFloat() * embedded_view.alpha; break; + case backdrop_filter: + break; } ++iter; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index fde21d23e2e20..c0bc7fd1150da 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,6 +184,8 @@ class FlutterPlatformViewsController { // responder. Returns -1 if no such platform view is found. long FindFirstResponderPlatformViewId(); + void FilterPlatformViews(int64_t platform_view_id, sk_sp filter); + private: static const size_t kMaxLayerAllocations = 2; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 6c023d1b793e1..e557b64d06401 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; + void FilterPlatformViews(int64_t view_id, sk_sp filter) override; + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); }; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm index 1323fa4c2f487..2076e969aeace 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -92,4 +92,8 @@ return true; } +void IOSExternalViewEmbedder::FilterPlatformViews(int64_t view_id, sk_sp filter) { + platform_views_controller_->FilterPlatformViews(view_id, filter); +} + } // namespace flutter diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index 4716ea15683dd..99071955c0414 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -147,6 +147,8 @@ void EmbedderLayers::PushPlatformViewLayer( .get()); } } break; + case MutatorType::backdrop_filter: { + } break; } } @@ -159,8 +161,8 @@ void EmbedderLayers::PushPlatformViewLayer( .emplace_back(ConvertMutation(root_surface_transformation_)) .get()); } - - auto mutations = + + auto mutations = std::make_unique>( mutations_array.rbegin(), mutations_array.rend()); mutations_arrays_referenced_.emplace_back(std::move(mutations)); From 6b74e7dd47a70374705f1d1affa62c7ad07d594e Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Mon, 27 Jun 2022 15:50:48 -0700 Subject: [PATCH 07/23] Formatting --- flow/layers/backdrop_filter_layer.cc | 5 +++-- .../ios/framework/Source/FlutterPlatformViews_Internal.h | 5 ++--- shell/platform/darwin/ios/ios_external_view_embedder.h | 5 +++-- shell/platform/embedder/embedder_layers.cc | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index e4da4f7f98616..ae70a69c12922 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -43,11 +43,12 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); - auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); + auto visited_platform_views = + context->view_embedder->GetVisitedPlatformViews(); for (int64_t id : visited_platform_views) { context->view_embedder->FilterPlatformViews(id, filter_); } - + PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); set_paint_bounds(child_paint_bounds); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 0c6844e7ace61..259202bc89947 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,7 +184,8 @@ class FlutterPlatformViewsController { // responder. Returns -1 if no such platform view is found. long FindFirstResponderPlatformViewId(); - void FilterPlatformViews(int64_t platform_view_id, sk_sp filter);//, flutter::Mutator mutator + void FilterPlatformViews(int64_t platform_view_id, + sk_sp filter); //, flutter::Mutator mutator private: static const size_t kMaxLayerAllocations = 2; @@ -300,8 +301,6 @@ class FlutterPlatformViewsController { // The latest composition order that was presented in Present(). std::vector active_composition_order_; - - // Only compoiste platform views in this set. std::unordered_set views_to_recomposite_; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 2705ac45a4ca5..cb52338c3f316 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,8 +64,9 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; - void FilterPlatformViews(int64_t view_id, sk_sp filter) override;//, flutter::Mutator mutator - + void FilterPlatformViews(int64_t view_id, sk_sp filter) + override; //, flutter::Mutator mutator + FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); }; diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index 99071955c0414..2c8c37d2359ff 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -161,8 +161,8 @@ void EmbedderLayers::PushPlatformViewLayer( .emplace_back(ConvertMutation(root_surface_transformation_)) .get()); } - - auto mutations = + + auto mutations = std::make_unique>( mutations_array.rbegin(), mutations_array.rend()); mutations_arrays_referenced_.emplace_back(std::move(mutations)); From bc1d19b19a07cd0cb7d58b3b407fe483e572eafe Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Tue, 28 Jun 2022 10:04:13 -0700 Subject: [PATCH 08/23] Format files --- flow/embedded_views.h | 17 +++++++++++++---- .../framework/Source/FlutterPlatformViews.mm | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 45810908f35da..7f01817a59eae 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -21,7 +21,14 @@ namespace flutter { // TODO(chinmaygarde): Make these enum names match the style guide. -enum MutatorType { clip_rect, clip_rrect, clip_path, transform, opacity, backdrop_filter }; +enum MutatorType { + clip_rect, + clip_rrect, + clip_path, + transform, + opacity, + backdrop_filter +}; // Stores mutation information like clipping or transform. // @@ -64,14 +71,15 @@ class Mutator { explicit Mutator(const SkMatrix& matrix) : type_(transform), matrix_(matrix) {} explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} - explicit Mutator(const sk_sp& filter) : type_(backdrop_filter), filter_(filter) {} + explicit Mutator(const sk_sp& filter) + : type_(backdrop_filter), filter_(filter) {} const MutatorType& GetType() const { return type_; } const SkRect& GetRect() const { return rect_; } const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } - const sk_sp& GetFilter() const {return filter_; } + const sk_sp& GetFilter() const { return filter_; } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } @@ -366,7 +374,8 @@ class ExternalViewEmbedder { visited_platform_views_.push_back(view_id); } - virtual void FilterPlatformViews(int64_t view_id, sk_sp filter) {} + virtual void FilterPlatformViews(int64_t view_id, + sk_sp filter) {} private: bool used_this_frame_ = false; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 65e6e32e5c173..91a9bbb0d98b1 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,7 +319,8 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } -void FlutterPlatformViewsController::FilterPlatformViews(int64_t platform_view_id, sk_sp filter) { +void FlutterPlatformViewsController::FilterPlatformViews(int64_t platform_view_id, + sk_sp filter) { EmbeddedViewParams params = current_composition_params_[platform_view_id]; params.PushFilter(filter); current_composition_params_[platform_view_id] = params; From 55d328cedacad9da6688743b80190af97e0e8316 Mon Sep 17 00:00:00 2001 From: Javon Thomas <89162381+JTKryptic@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:17:32 -0700 Subject: [PATCH 09/23] Delete backdrop_filter_diff --- backdrop_filter_diff | 95 -------------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 backdrop_filter_diff diff --git a/backdrop_filter_diff b/backdrop_filter_diff deleted file mode 100644 index d152b3560ef63..0000000000000 --- a/backdrop_filter_diff +++ /dev/null @@ -1,95 +0,0 @@ -diff --git a/flow/embedded_views.h b/flow/embedded_views.h -index 7a5a34f330..76b002befd 100644 ---- a/flow/embedded_views.h -+++ b/flow/embedded_views.h -@@ -345,6 +345,8 @@ class ExternalViewEmbedder { - // 'EndFrame', otherwise returns false. - bool GetUsedThisFrame() const { return used_this_frame_; } - -+ void PushMutator() {} -+ - private: - bool used_this_frame_ = false; - -diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc -index 8e8ef2628a..b059e427c3 100644 ---- a/flow/layers/backdrop_filter_layer.cc -+++ b/flow/layers/backdrop_filter_layer.cc -@@ -43,6 +43,10 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, - Layer::AutoPrerollSaveLayerState save = - Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); - SkRect child_paint_bounds = SkRect::MakeEmpty(); -+ auto visited_platform_views = context->view_embedder->GetVisitedPlatformViews(); -+ for (id in visited_platform_views) { -+ context->view_embedder->ApplyMutator(id, alpha); -+ } - PrerollChildren(context, matrix, &child_paint_bounds); - child_paint_bounds.join(context->cull_rect); - set_paint_bounds(child_paint_bounds); -diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc -index 285db390cc..63b7827cf9 100644 ---- a/flow/layers/platform_view_layer.cc -+++ b/flow/layers/platform_view_layer.cc -@@ -28,6 +28,7 @@ void PlatformViewLayer::Preroll(PrerollContext* context, - context->mutators_stack); - context->view_embedder->PrerollCompositeEmbeddedView(view_id_, - std::move(params)); -+ context->view_embedder->PushVisitedPlatformView(view_id_); - } - - void PlatformViewLayer::Paint(PaintContext& context) const { -diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm -index e5325aee85..a6992cca3f 100644 ---- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm -+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm -@@ -319,6 +319,11 @@ void FlutterPlatformViewsController::EndFrame( - } - } - -+void FlutterPlatformViewsController::PushMutator(flutter::Mutator mutator, int64_t platform_view_id) { -+ EmbeddedViewParams params = current_composition_params_[platform_view_id]; -+ params.mutatorsStack().PushOpacity(20); -+} -+ - void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( - int view_id, - std::unique_ptr params) { -diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h -index fde21d23e2..522b847ef4 100644 ---- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h -+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h -@@ -184,6 +184,8 @@ class FlutterPlatformViewsController { - // responder. Returns -1 if no such platform view is found. - long FindFirstResponderPlatformViewId(); - -+ void PushMutator(flutter::Mutator mutator, int64_t platform_view_id); -+ - private: - static const size_t kMaxLayerAllocations = 2; - -diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h -index 6c023d1b79..da160dd023 100644 ---- a/shell/platform/darwin/ios/ios_external_view_embedder.h -+++ b/shell/platform/darwin/ios/ios_external_view_embedder.h -@@ -64,6 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { - // |ExternalViewEmbedder| - bool SupportsDynamicThreadMerging() override; - -+ void PushMutator() override; -+ - FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); - }; - -diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm -index 1323fa4c2f..edd4a3adcd 100644 ---- a/shell/platform/darwin/ios/ios_external_view_embedder.mm -+++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm -@@ -92,4 +92,8 @@ bool IOSExternalViewEmbedder::SupportsDynamicThreadMerging() { - return true; - } - -+void PushMutator(int alpha, int view_id) { -+ platform_views_controller_->PushMutator(alpha, view_id); -+} -+ - } // namespace flutter From d080e8ed1e9ad3300b3d1e60a6e9e0eafee2e5e2 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 29 Jun 2022 16:25:35 -0700 Subject: [PATCH 10/23] Code cleanup --- flow/embedded_views.h | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 7f01817a59eae..55c469ccbd8de 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -71,7 +71,7 @@ class Mutator { explicit Mutator(const SkMatrix& matrix) : type_(transform), matrix_(matrix) {} explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} - explicit Mutator(const sk_sp& filter) + explicit Mutator(const std::shared_ptr& filter) : type_(backdrop_filter), filter_(filter) {} const MutatorType& GetType() const { return type_; } @@ -79,7 +79,7 @@ class Mutator { const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } - const sk_sp& GetFilter() const { return filter_; } + const std::shared_ptr& GetFilter() const { return filter_; } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } @@ -120,14 +120,14 @@ class Mutator { private: MutatorType type_; - union { - SkRect rect_; - SkRRect rrect_; - SkMatrix matrix_; - SkPath* path_; - int alpha_; - sk_sp filter_; - }; + + + + + + + + }; // Mutator @@ -149,7 +149,7 @@ class MutatorsStack { void PushClipPath(const SkPath& path); void PushTransform(const SkMatrix& matrix); void PushOpacity(const int& alpha); - void PushBackdropFilter(const sk_sp& filter); + void PushBackdropFilter(const std::shared_ptr filter); // Removes the `Mutator` on the top of the stack // and destroys it. @@ -241,7 +241,7 @@ class EmbeddedViewParams { // Clippings are ignored. const SkRect& finalBoundingRect() const { return final_bounding_rect_; } - void PushFilter(sk_sp filter) { + void PushFilter(std::shared_ptr filter) { mutators_stack_.PushBackdropFilter(filter); } @@ -366,22 +366,13 @@ class ExternalViewEmbedder { // 'EndFrame', otherwise returns false. bool GetUsedThisFrame() const { return used_this_frame_; } - std::vector GetVisitedPlatformViews() { - return visited_platform_views_; - } + virtual void PushVisitedPlatformView(int64_t view_id) {} - void PushVisitedPlatformView(int64_t view_id) { - visited_platform_views_.push_back(view_id); - } - - virtual void FilterPlatformViews(int64_t view_id, - sk_sp filter) {} + virtual void PushFilterToVisitedPlatformViews(std::shared_ptr filter) {} private: bool used_this_frame_ = false; - std::vector visited_platform_views_; - FML_DISALLOW_COPY_AND_ASSIGN(ExternalViewEmbedder); }; // ExternalViewEmbedder From 93accab19673ae92b9052b233483cfb329b6284a Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 29 Jun 2022 16:28:10 -0700 Subject: [PATCH 11/23] Updating to DlImageFilter and code cleanup --- flow/embedded_views.cc | 2 +- flow/layers/backdrop_filter_layer.cc | 6 +----- flow/mutators_stack_unittests.cc | 7 ++++--- .../ios/framework/Source/FlutterPlatformViews.mm | 11 ++++++----- .../framework/Source/FlutterPlatformViews_Internal.h | 9 ++++++++- .../platform/darwin/ios/ios_external_view_embedder.h | 5 +++-- .../platform/darwin/ios/ios_external_view_embedder.mm | 8 ++++++-- shell/platform/embedder/embedder_layers.cc | 4 ++-- 8 files changed, 31 insertions(+), 21 deletions(-) diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc index c7b4811e8e07e..e4966cc71b14f 100644 --- a/flow/embedded_views.cc +++ b/flow/embedded_views.cc @@ -36,7 +36,7 @@ void MutatorsStack::PushOpacity(const int& alpha) { vector_.push_back(element); }; -void MutatorsStack::PushBackdropFilter(const sk_sp& filter) { +void MutatorsStack::PushBackdropFilter(const std::shared_ptr filter) { std::shared_ptr element = std::make_shared(filter); vector_.push_back(element); }; diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index 1a0bbc660b0f3..d2c396146b28b 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -44,11 +44,7 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); - auto visited_platform_views = - context->view_embedder->GetVisitedPlatformViews(); - for (int64_t id : visited_platform_views) { - context->view_embedder->FilterPlatformViews(id, filter_); - } + context->view_embedder->PushFilterToVisitedPlatformViews(filter_); PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index 8bf57dfd84455..0115ab34d4fe0 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -54,9 +54,10 @@ TEST(MutatorsStack, PushClipRect) { TEST(MutatorsStack, PushBackdropFilter) { MutatorsStack stack; - sk_sp filter; - filter->filterBounds(SkIRect::MakeWH(10, 10), SkMatrix::I(), - SkImageFilter::kForward_MapDirection); + SkIRect rect; + std::shared_ptr filter; + filter->get_input_device_bounds(SkIRect::MakeWH(10, 10), + SkMatrix::I(), rect); stack.PushBackdropFilter(filter); auto iter = stack.Bottom(); ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 91a9bbb0d98b1..7c216948f5bca 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,11 +319,12 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } -void FlutterPlatformViewsController::FilterPlatformViews(int64_t platform_view_id, - sk_sp filter) { - EmbeddedViewParams params = current_composition_params_[platform_view_id]; - params.PushFilter(filter); - current_composition_params_[platform_view_id] = params; +void FlutterPlatformViewsController::PushFilterToVisitedPlatformViews(std::shared_ptr filter) { + for (int64_t id : visited_platform_views_) { + EmbeddedViewParams params = current_composition_params_[id]; + params.PushFilter(filter); + current_composition_params_[id] = params; + } } void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index c0bc7fd1150da..a20e887d52223 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,7 +184,11 @@ class FlutterPlatformViewsController { // responder. Returns -1 if no such platform view is found. long FindFirstResponderPlatformViewId(); - void FilterPlatformViews(int64_t platform_view_id, sk_sp filter); + // Pushes backdrop filter mutation to the mutator stack of each visited platform view + void PushFilterToVisitedPlatformViews(std::shared_ptr filter); + + // Pushes the + void PushVisitedPlatformView(int64_t view_id) { visited_platform_views_.push_back(view_id); } private: static const size_t kMaxLayerAllocations = 2; @@ -297,6 +301,9 @@ class FlutterPlatformViewsController { // The last ID in this vector belond to the that is composited on top of all others. std::vector composition_order_; + // A vector of visited platform view IDs + std::vector visited_platform_views_; + // The latest composition order that was presented in Present(). std::vector active_composition_order_; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 276d823a325f1..92bfc7b508335 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,8 +64,9 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; - void FilterPlatformViews(int64_t view_id, - sk_sp filter) override; + void PushFilterToVisitedPlatformViews(std::shared_ptr filter) override; + + void PushVisitedPlatformView(int64_t view_id) override; FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); }; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm index 2076e969aeace..8f14dbd6aad11 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -92,8 +92,12 @@ return true; } -void IOSExternalViewEmbedder::FilterPlatformViews(int64_t view_id, sk_sp filter) { - platform_views_controller_->FilterPlatformViews(view_id, filter); +void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews(std::shared_ptr filter) { + platform_views_controller_->PushFilterToVisitedPlatformViews(filter); +} + +void IOSExternalViewEmbedder::PushVisitedPlatformView(int64_t view_id) { + platform_views_controller_->PushVisitedPlatformView(view_id); } } // namespace flutter diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index 2c8c37d2359ff..2c04cb41aa57c 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -147,8 +147,8 @@ void EmbedderLayers::PushPlatformViewLayer( .get()); } } break; - case MutatorType::backdrop_filter: { - } break; + case MutatorType::backdrop_filter: + break; } } From a9cd10179505821ee70aeae9c424cb8f30b95809 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 29 Jun 2022 16:29:08 -0700 Subject: [PATCH 12/23] Formatting --- flow/embedded_views.cc | 3 ++- flow/embedded_views.h | 16 +++++----------- flow/mutators_stack_unittests.cc | 3 +-- .../ios/framework/Source/FlutterPlatformViews.mm | 3 ++- .../Source/FlutterPlatformViews_Internal.h | 2 +- .../darwin/ios/ios_external_view_embedder.h | 3 ++- .../darwin/ios/ios_external_view_embedder.mm | 3 ++- 7 files changed, 15 insertions(+), 18 deletions(-) diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc index e4966cc71b14f..6ac0a7746ba28 100644 --- a/flow/embedded_views.cc +++ b/flow/embedded_views.cc @@ -36,7 +36,8 @@ void MutatorsStack::PushOpacity(const int& alpha) { vector_.push_back(element); }; -void MutatorsStack::PushBackdropFilter(const std::shared_ptr filter) { +void MutatorsStack::PushBackdropFilter( + const std::shared_ptr filter) { std::shared_ptr element = std::make_shared(filter); vector_.push_back(element); }; diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 55c469ccbd8de..9f999180deca3 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -79,7 +79,9 @@ class Mutator { const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } - const std::shared_ptr& GetFilter() const { return filter_; } + const std::shared_ptr& GetFilter() const { + return filter_; + } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } @@ -120,15 +122,6 @@ class Mutator { private: MutatorType type_; - - - - - - - - - }; // Mutator // A stack of mutators that can be applied to an embedded platform view. @@ -368,7 +361,8 @@ class ExternalViewEmbedder { virtual void PushVisitedPlatformView(int64_t view_id) {} - virtual void PushFilterToVisitedPlatformViews(std::shared_ptr filter) {} + virtual void PushFilterToVisitedPlatformViews( + std::shared_ptr filter) {} private: bool used_this_frame_ = false; diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index 0115ab34d4fe0..90285965aa372 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -56,8 +56,7 @@ TEST(MutatorsStack, PushBackdropFilter) { MutatorsStack stack; SkIRect rect; std::shared_ptr filter; - filter->get_input_device_bounds(SkIRect::MakeWH(10, 10), - SkMatrix::I(), rect); + filter->get_input_device_bounds(SkIRect::MakeWH(10, 10), SkMatrix::I(), rect); stack.PushBackdropFilter(filter); auto iter = stack.Bottom(); ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 7c216948f5bca..ac98b0d706f72 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,7 +319,8 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } -void FlutterPlatformViewsController::PushFilterToVisitedPlatformViews(std::shared_ptr filter) { +void FlutterPlatformViewsController::PushFilterToVisitedPlatformViews( + std::shared_ptr filter) { for (int64_t id : visited_platform_views_) { EmbeddedViewParams params = current_composition_params_[id]; params.PushFilter(filter); diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index a20e887d52223..73d45531cbbd4 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -187,7 +187,7 @@ class FlutterPlatformViewsController { // Pushes backdrop filter mutation to the mutator stack of each visited platform view void PushFilterToVisitedPlatformViews(std::shared_ptr filter); - // Pushes the + // Pushes the void PushVisitedPlatformView(int64_t view_id) { visited_platform_views_.push_back(view_id); } private: diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 92bfc7b508335..518f1d33de7e7 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,7 +64,8 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; - void PushFilterToVisitedPlatformViews(std::shared_ptr filter) override; + void PushFilterToVisitedPlatformViews( + std::shared_ptr filter) override; void PushVisitedPlatformView(int64_t view_id) override; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm index 8f14dbd6aad11..0ecfbf4e97b1f 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -92,7 +92,8 @@ return true; } -void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews(std::shared_ptr filter) { +void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews( + std::shared_ptr filter) { platform_views_controller_->PushFilterToVisitedPlatformViews(filter); } From abc3a0e4a27a3340a48c3a58b8e5330f5f5f330f Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 29 Jun 2022 16:43:19 -0700 Subject: [PATCH 13/23] bug fix --- flow/embedded_views.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 9f999180deca3..2a9b0af116c47 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -122,6 +122,15 @@ class Mutator { private: MutatorType type_; + union { + SkRect rect_; + SkRRect rrect_; + SkMatrix matrix_; + SkPath* path_; + int alpha_; + std::shared_ptr filter_; + }; + }; // Mutator // A stack of mutators that can be applied to an embedded platform view. From 7ad4a027e418cfe57a4aa11bb282bdb274bb801e Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Thu, 30 Jun 2022 13:51:38 -0700 Subject: [PATCH 14/23] Backdrop filter mutator --- flow/embedded_views.h | 9 --------- flow/layers/backdrop_filter_layer.cc | 1 - flow/layers/platform_view_layer.cc | 1 - .../darwin/ios/framework/Source/FlutterPlatformViews.mm | 9 --------- .../ios/framework/Source/FlutterPlatformViews_Internal.h | 9 --------- shell/platform/darwin/ios/ios_external_view_embedder.h | 5 ----- shell/platform/darwin/ios/ios_external_view_embedder.mm | 9 --------- 7 files changed, 43 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 2a9b0af116c47..1dc222c7b34ac 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -243,10 +243,6 @@ class EmbeddedViewParams { // Clippings are ignored. const SkRect& finalBoundingRect() const { return final_bounding_rect_; } - void PushFilter(std::shared_ptr filter) { - mutators_stack_.PushBackdropFilter(filter); - } - bool operator==(const EmbeddedViewParams& other) const { return size_points_ == other.size_points_ && mutators_stack_ == other.mutators_stack_ && @@ -368,11 +364,6 @@ class ExternalViewEmbedder { // 'EndFrame', otherwise returns false. bool GetUsedThisFrame() const { return used_this_frame_; } - virtual void PushVisitedPlatformView(int64_t view_id) {} - - virtual void PushFilterToVisitedPlatformViews( - std::shared_ptr filter) {} - private: bool used_this_frame_ = false; diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index d2c396146b28b..588c6118182fd 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -44,7 +44,6 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); - context->view_embedder->PushFilterToVisitedPlatformViews(filter_); PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc index 63b7827cf9d52..285db390cc91d 100644 --- a/flow/layers/platform_view_layer.cc +++ b/flow/layers/platform_view_layer.cc @@ -28,7 +28,6 @@ void PlatformViewLayer::Preroll(PrerollContext* context, context->mutators_stack); context->view_embedder->PrerollCompositeEmbeddedView(view_id_, std::move(params)); - context->view_embedder->PushVisitedPlatformView(view_id_); } void PlatformViewLayer::Paint(PaintContext& context) const { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index ac98b0d706f72..dd226a7b926ef 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -319,15 +319,6 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { } } -void FlutterPlatformViewsController::PushFilterToVisitedPlatformViews( - std::shared_ptr filter) { - for (int64_t id : visited_platform_views_) { - EmbeddedViewParams params = current_composition_params_[id]; - params.PushFilter(filter); - current_composition_params_[id] = params; - } -} - void FlutterPlatformViewsController::PrerollCompositeEmbeddedView( int view_id, std::unique_ptr params) { diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h index 73d45531cbbd4..fde21d23e2e20 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h @@ -184,12 +184,6 @@ class FlutterPlatformViewsController { // responder. Returns -1 if no such platform view is found. long FindFirstResponderPlatformViewId(); - // Pushes backdrop filter mutation to the mutator stack of each visited platform view - void PushFilterToVisitedPlatformViews(std::shared_ptr filter); - - // Pushes the - void PushVisitedPlatformView(int64_t view_id) { visited_platform_views_.push_back(view_id); } - private: static const size_t kMaxLayerAllocations = 2; @@ -301,9 +295,6 @@ class FlutterPlatformViewsController { // The last ID in this vector belond to the that is composited on top of all others. std::vector composition_order_; - // A vector of visited platform view IDs - std::vector visited_platform_views_; - // The latest composition order that was presented in Present(). std::vector active_composition_order_; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h index 518f1d33de7e7..6c023d1b793e1 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.h +++ b/shell/platform/darwin/ios/ios_external_view_embedder.h @@ -64,11 +64,6 @@ class IOSExternalViewEmbedder : public ExternalViewEmbedder { // |ExternalViewEmbedder| bool SupportsDynamicThreadMerging() override; - void PushFilterToVisitedPlatformViews( - std::shared_ptr filter) override; - - void PushVisitedPlatformView(int64_t view_id) override; - FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder); }; diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm index 0ecfbf4e97b1f..1323fa4c2f487 100644 --- a/shell/platform/darwin/ios/ios_external_view_embedder.mm +++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm @@ -92,13 +92,4 @@ return true; } -void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews( - std::shared_ptr filter) { - platform_views_controller_->PushFilterToVisitedPlatformViews(filter); -} - -void IOSExternalViewEmbedder::PushVisitedPlatformView(int64_t view_id) { - platform_views_controller_->PushVisitedPlatformView(view_id); -} - } // namespace flutter From 5d9657a5d9adba0199c28045b2911b9fb91dfa37 Mon Sep 17 00:00:00 2001 From: Javon Thomas <89162381+JTKryptic@users.noreply.github.com> Date: Thu, 30 Jun 2022 13:56:48 -0700 Subject: [PATCH 15/23] Update backdrop_filter_layer.cc --- flow/layers/backdrop_filter_layer.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc index 588c6118182fd..cc3a00753c14b 100644 --- a/flow/layers/backdrop_filter_layer.cc +++ b/flow/layers/backdrop_filter_layer.cc @@ -44,7 +44,6 @@ void BackdropFilterLayer::Preroll(PrerollContext* context, Layer::AutoPrerollSaveLayerState save = Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_)); SkRect child_paint_bounds = SkRect::MakeEmpty(); - PrerollChildren(context, matrix, &child_paint_bounds); child_paint_bounds.join(context->cull_rect); set_paint_bounds(child_paint_bounds); From a741bb9f9f05fac4ee08be7f8a6c5e06635f2068 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Thu, 7 Jul 2022 15:30:01 -0500 Subject: [PATCH 16/23] fix --- shell/platform/android/platform_view_android_jni_impl.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/android/platform_view_android_jni_impl.cc b/shell/platform/android/platform_view_android_jni_impl.cc index 79bea738b6a68..edd6e97ddf837 100644 --- a/shell/platform/android/platform_view_android_jni_impl.cc +++ b/shell/platform/android/platform_view_android_jni_impl.cc @@ -1457,6 +1457,7 @@ void PlatformViewAndroidJNIImpl::FlutterViewOnDisplayPlatformView( // https://github.com/flutter/flutter/issues/58426 case clip_path: case opacity: + case backdrop_filter: break; } ++iter; From 5712cdb7fa0dcb20589ea3c7bf5f577fc74aaf51 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Thu, 7 Jul 2022 19:57:06 -0500 Subject: [PATCH 17/23] Backdrop filter test fix --- flow/embedded_views.cc | 2 +- flow/embedded_views.h | 12 ++++++------ flow/mutators_stack_unittests.cc | 20 +++++++++----------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc index 6ac0a7746ba28..4e21d1643b845 100644 --- a/flow/embedded_views.cc +++ b/flow/embedded_views.cc @@ -37,7 +37,7 @@ void MutatorsStack::PushOpacity(const int& alpha) { }; void MutatorsStack::PushBackdropFilter( - const std::shared_ptr filter) { + const DlImageFilter& filter) { std::shared_ptr element = std::make_shared(filter); vector_.push_back(element); }; diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 1dc222c7b34ac..a1e8d41d4cc48 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -71,16 +71,16 @@ class Mutator { explicit Mutator(const SkMatrix& matrix) : type_(transform), matrix_(matrix) {} explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} - explicit Mutator(const std::shared_ptr& filter) - : type_(backdrop_filter), filter_(filter) {} + explicit Mutator(const DlImageFilter& filter) + : type_(backdrop_filter), filter_(&filter) {} const MutatorType& GetType() const { return type_; } const SkRect& GetRect() const { return rect_; } const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } - const std::shared_ptr& GetFilter() const { - return filter_; + const DlImageFilter& GetFilter() const { + return *filter_; } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } @@ -128,7 +128,7 @@ class Mutator { SkMatrix matrix_; SkPath* path_; int alpha_; - std::shared_ptr filter_; + const DlImageFilter* filter_; }; }; // Mutator @@ -151,7 +151,7 @@ class MutatorsStack { void PushClipPath(const SkPath& path); void PushTransform(const SkMatrix& matrix); void PushOpacity(const int& alpha); - void PushBackdropFilter(const std::shared_ptr filter); + void PushBackdropFilter(const DlImageFilter& filter); // Removes the `Mutator` on the top of the stack // and destroys it. diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index 90285965aa372..490e4b7093a74 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -52,17 +52,6 @@ TEST(MutatorsStack, PushClipRect) { ASSERT_TRUE(iter->get()->GetRect() == rect); } -TEST(MutatorsStack, PushBackdropFilter) { - MutatorsStack stack; - SkIRect rect; - std::shared_ptr filter; - filter->get_input_device_bounds(SkIRect::MakeWH(10, 10), SkMatrix::I(), rect); - stack.PushBackdropFilter(filter); - auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); - ASSERT_TRUE(iter->get()->GetFilter() == filter); -} - TEST(MutatorsStack, PushClipRRect) { MutatorsStack stack; auto rrect = SkRRect::MakeEmpty(); @@ -100,6 +89,15 @@ TEST(MutatorsStack, PushOpacity) { ASSERT_TRUE(iter->get()->GetAlpha() == 240); } +TEST(MutatorsStack, PushBackdropFilter) { + MutatorsStack stack; + auto filter = DlBlurImageFilter(5, 5, DlTileMode::kClamp); + stack.PushBackdropFilter(filter); + auto iter = stack.Bottom(); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); + ASSERT_TRUE(iter->get()->GetFilter() == filter); +} + TEST(MutatorsStack, Pop) { MutatorsStack stack; SkMatrix matrix; From 097740eeff2890a73a7c08f6fb1236b37d4430a9 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Thu, 7 Jul 2022 19:57:38 -0500 Subject: [PATCH 18/23] formatting --- flow/embedded_views.cc | 3 +-- flow/embedded_views.h | 4 +--- flow/mutators_stack_unittests.cc | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/flow/embedded_views.cc b/flow/embedded_views.cc index 4e21d1643b845..32acb94fc2296 100644 --- a/flow/embedded_views.cc +++ b/flow/embedded_views.cc @@ -36,8 +36,7 @@ void MutatorsStack::PushOpacity(const int& alpha) { vector_.push_back(element); }; -void MutatorsStack::PushBackdropFilter( - const DlImageFilter& filter) { +void MutatorsStack::PushBackdropFilter(const DlImageFilter& filter) { std::shared_ptr element = std::make_shared(filter); vector_.push_back(element); }; diff --git a/flow/embedded_views.h b/flow/embedded_views.h index a1e8d41d4cc48..fa11c10ef0e96 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -79,9 +79,7 @@ class Mutator { const SkRRect& GetRRect() const { return rrect_; } const SkPath& GetPath() const { return *path_; } const SkMatrix& GetMatrix() const { return matrix_; } - const DlImageFilter& GetFilter() const { - return *filter_; - } + const DlImageFilter& GetFilter() const { return *filter_; } const int& GetAlpha() const { return alpha_; } float GetAlphaFloat() const { return (alpha_ / 255.0); } diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index 490e4b7093a74..a0975761882ca 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -91,7 +91,7 @@ TEST(MutatorsStack, PushOpacity) { TEST(MutatorsStack, PushBackdropFilter) { MutatorsStack stack; - auto filter = DlBlurImageFilter(5, 5, DlTileMode::kClamp); + auto filter = DlBlurImageFilter(5, 5, DlTileMode::kClamp); stack.PushBackdropFilter(filter); auto iter = stack.Bottom(); ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); From e0466c2f8458c95dccd504cd79960652d54e53ed Mon Sep 17 00:00:00 2001 From: Javon Thomas <89162381+JTKryptic@users.noreply.github.com> Date: Fri, 8 Jul 2022 11:54:11 -0500 Subject: [PATCH 19/23] Switch type filter to pointer --- flow/embedded_views.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index fa11c10ef0e96..8660fe521e188 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -99,7 +99,7 @@ class Mutator { case opacity: return alpha_ == other.alpha_; case backdrop_filter: - return filter_ == other.filter_; + return *filter_ == *other.filter_; } return false; From 2525dde52c72c59d5a2cf507d336cee8af898a3c Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 13 Jul 2022 01:45:28 -0500 Subject: [PATCH 20/23] Enum style guide fix --- flow/embedded_views.h | 40 +++++++++---------- flow/mutators_stack_unittests.cc | 22 +++++----- .../framework/Source/FlutterPlatformViews.mm | 8 ++-- shell/platform/embedder/embedder_layers.cc | 8 ++-- 4 files changed, 39 insertions(+), 39 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index 8660fe521e188..a87263a2cdc45 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -22,32 +22,32 @@ namespace flutter { // TODO(chinmaygarde): Make these enum names match the style guide. enum MutatorType { - clip_rect, - clip_rrect, - clip_path, + clipRect, + clipRRect, + clipPath, transform, opacity, - backdrop_filter + backdropFilter }; // Stores mutation information like clipping or transform. // -// The `type` indicates the type of the mutation: clip_rect, transform and etc. +// The `type` indicates the type of the mutation: clipRect, transform and etc. // Each `type` is paired with an object that supports the mutation. For example, -// if the `type` is clip_rect, `rect()` is used the represent the rect to be +// if the `type` is clipRect, `rect()` is used the represent the rect to be // clipped. One mutation object must only contain one type of mutation. class Mutator { public: Mutator(const Mutator& other) { type_ = other.type_; switch (other.type_) { - case clip_rect: + case clipRect: rect_ = other.rect_; break; - case clip_rrect: + case clipRRect: rrect_ = other.rrect_; break; - case clip_path: + case clipPath: path_ = new SkPath(*other.path_); break; case transform: @@ -56,7 +56,7 @@ class Mutator { case opacity: alpha_ = other.alpha_; break; - case backdrop_filter: + case backdropFilter: filter_ = other.filter_; break; default: @@ -64,15 +64,15 @@ class Mutator { } } - explicit Mutator(const SkRect& rect) : type_(clip_rect), rect_(rect) {} - explicit Mutator(const SkRRect& rrect) : type_(clip_rrect), rrect_(rrect) {} + explicit Mutator(const SkRect& rect) : type_(clipRect), rect_(rect) {} + explicit Mutator(const SkRRect& rrect) : type_(clipRRect), rrect_(rrect) {} explicit Mutator(const SkPath& path) - : type_(clip_path), path_(new SkPath(path)) {} + : type_(clipPath), path_(new SkPath(path)) {} explicit Mutator(const SkMatrix& matrix) : type_(transform), matrix_(matrix) {} explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} explicit Mutator(const DlImageFilter& filter) - : type_(backdrop_filter), filter_(&filter) {} + : type_(backdropFilter), filter_(&filter) {} const MutatorType& GetType() const { return type_; } const SkRect& GetRect() const { return rect_; } @@ -88,17 +88,17 @@ class Mutator { return false; } switch (type_) { - case clip_rect: + case clipRect: return rect_ == other.rect_; - case clip_rrect: + case clipRRect: return rrect_ == other.rrect_; - case clip_path: + case clipPath: return *path_ == *other.path_; case transform: return matrix_ == other.matrix_; case opacity: return alpha_ == other.alpha_; - case backdrop_filter: + case backdropFilter: return *filter_ == *other.filter_; } @@ -108,11 +108,11 @@ class Mutator { bool operator!=(const Mutator& other) const { return !operator==(other); } bool IsClipType() { - return type_ == clip_rect || type_ == clip_rrect || type_ == clip_path; + return type_ == clipRect || type_ == clipRRect || type_ == clipPath; } ~Mutator() { - if (type_ == clip_path) { + if (type_ == clipPath) { delete path_; } }; diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index a0975761882ca..0f69f16b69069 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -36,10 +36,10 @@ TEST(MutatorsStack, CopyAndUpdateTheCopy) { ASSERT_TRUE(copy.is_empty()); ASSERT_TRUE(!stack.is_empty()); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRRect); ASSERT_TRUE(iter->get()->GetRRect() == rrect); ++iter; - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRect); ASSERT_TRUE(iter->get()->GetRect() == rect); } @@ -48,7 +48,7 @@ TEST(MutatorsStack, PushClipRect) { auto rect = SkRect::MakeEmpty(); stack.PushClipRect(rect); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRect); ASSERT_TRUE(iter->get()->GetRect() == rect); } @@ -57,7 +57,7 @@ TEST(MutatorsStack, PushClipRRect) { auto rrect = SkRRect::MakeEmpty(); stack.PushClipRRect(rrect); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRRect); ASSERT_TRUE(iter->get()->GetRRect() == rrect); } @@ -66,7 +66,7 @@ TEST(MutatorsStack, PushClipPath) { SkPath path; stack.PushClipPath(path); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == flutter::MutatorType::clip_path); + ASSERT_TRUE(iter->get()->GetType() == flutter::MutatorType::clipPath); ASSERT_TRUE(iter->get()->GetPath() == path); } @@ -94,7 +94,7 @@ TEST(MutatorsStack, PushBackdropFilter) { auto filter = DlBlurImageFilter(5, 5, DlTileMode::kClamp); stack.PushBackdropFilter(filter); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdrop_filter); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdropFilter); ASSERT_TRUE(iter->get()->GetFilter() == filter); } @@ -122,11 +122,11 @@ TEST(MutatorsStack, Traversal) { while (iter != stack.Top()) { switch (index) { case 0: - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRRect); ASSERT_TRUE(iter->get()->GetRRect() == rrect); break; case 1: - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRect); ASSERT_TRUE(iter->get()->GetRect() == rect); break; case 2: @@ -172,17 +172,17 @@ TEST(MutatorsStack, Equality) { TEST(Mutator, Initialization) { SkRect rect = SkRect::MakeEmpty(); Mutator mutator = Mutator(rect); - ASSERT_TRUE(mutator.GetType() == MutatorType::clip_rect); + ASSERT_TRUE(mutator.GetType() == MutatorType::clipRect); ASSERT_TRUE(mutator.GetRect() == rect); SkRRect rrect = SkRRect::MakeEmpty(); Mutator mutator2 = Mutator(rrect); - ASSERT_TRUE(mutator2.GetType() == MutatorType::clip_rrect); + ASSERT_TRUE(mutator2.GetType() == MutatorType::clipRRect); ASSERT_TRUE(mutator2.GetRRect() == rrect); SkPath path; Mutator mutator3 = Mutator(path); - ASSERT_TRUE(mutator3.GetType() == MutatorType::clip_path); + ASSERT_TRUE(mutator3.GetType() == MutatorType::clipPath); ASSERT_TRUE(mutator3.GetPath() == path); SkMatrix matrix; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index dd226a7b926ef..58a18319d9d05 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -410,19 +410,19 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { finalTransform = CATransform3DConcat(transform, finalTransform); break; } - case clip_rect: + case clipRect: [maskView clipRect:(*iter)->GetRect() matrix:finalTransform]; break; - case clip_rrect: + case clipRRect: [maskView clipRRect:(*iter)->GetRRect() matrix:finalTransform]; break; - case clip_path: + case clipPath: [maskView clipPath:(*iter)->GetPath() matrix:finalTransform]; break; case opacity: embedded_view.alpha = (*iter)->GetAlphaFloat() * embedded_view.alpha; break; - case backdrop_filter: + case backdropFilter: break; } ++iter; diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index 2c04cb41aa57c..b7a82a77c4976 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -115,19 +115,19 @@ void EmbedderLayers::PushPlatformViewLayer( for (auto i = mutators.Bottom(); i != mutators.Top(); ++i) { const auto& mutator = *i; switch (mutator->GetType()) { - case MutatorType::clip_rect: { + case MutatorType::clipRect: { mutations_array.push_back( mutations_referenced_ .emplace_back(ConvertMutation(mutator->GetRect())) .get()); } break; - case MutatorType::clip_rrect: { + case MutatorType::clipRRect: { mutations_array.push_back( mutations_referenced_ .emplace_back(ConvertMutation(mutator->GetRRect())) .get()); } break; - case MutatorType::clip_path: { + case MutatorType::clipPath: { // Unsupported mutation. } break; case MutatorType::transform: { @@ -147,7 +147,7 @@ void EmbedderLayers::PushPlatformViewLayer( .get()); } } break; - case MutatorType::backdrop_filter: + case MutatorType::backdropFilter: break; } } From 2e1731c1f3a1ff0b6f2c1bf0b0c25bd481a2de1d Mon Sep 17 00:00:00 2001 From: Javon Thomas <89162381+JTKryptic@users.noreply.github.com> Date: Wed, 13 Jul 2022 01:46:56 -0500 Subject: [PATCH 21/23] Update embedded_views.h --- flow/embedded_views.h | 1 - 1 file changed, 1 deletion(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index a87263a2cdc45..1a528d31e7763 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -20,7 +20,6 @@ namespace flutter { -// TODO(chinmaygarde): Make these enum names match the style guide. enum MutatorType { clipRect, clipRRect, From 964c43a50ea25f029936b8a24fdbf0773b43b979 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 13 Jul 2022 13:47:38 -0500 Subject: [PATCH 22/23] enum style guide fix 2 --- flow/embedded_views.h | 58 +++++++++---------- flow/mutators_stack_unittests.cc | 32 +++++----- .../android/platform_view_android_jni_impl.cc | 12 ++-- .../framework/Source/FlutterPlatformViews.mm | 12 ++-- shell/platform/embedder/embedder_layers.cc | 12 ++-- .../flutter/gfx_external_view_embedder.cc | 10 ++-- 6 files changed, 68 insertions(+), 68 deletions(-) diff --git a/flow/embedded_views.h b/flow/embedded_views.h index a87263a2cdc45..243de8d9abbe7 100644 --- a/flow/embedded_views.h +++ b/flow/embedded_views.h @@ -22,41 +22,41 @@ namespace flutter { // TODO(chinmaygarde): Make these enum names match the style guide. enum MutatorType { - clipRect, - clipRRect, - clipPath, - transform, - opacity, - backdropFilter + kClipRect, + kClipRRect, + kClipPath, + kTransform, + kOpacity, + kBackdropFilter }; -// Stores mutation information like clipping or transform. +// Stores mutation information like clipping or kTransform. // -// The `type` indicates the type of the mutation: clipRect, transform and etc. +// The `type` indicates the type of the mutation: kClipRect, kTransform and etc. // Each `type` is paired with an object that supports the mutation. For example, -// if the `type` is clipRect, `rect()` is used the represent the rect to be +// if the `type` is kClipRect, `rect()` is used the represent the rect to be // clipped. One mutation object must only contain one type of mutation. class Mutator { public: Mutator(const Mutator& other) { type_ = other.type_; switch (other.type_) { - case clipRect: + case kClipRect: rect_ = other.rect_; break; - case clipRRect: + case kClipRRect: rrect_ = other.rrect_; break; - case clipPath: + case kClipPath: path_ = new SkPath(*other.path_); break; - case transform: + case kTransform: matrix_ = other.matrix_; break; - case opacity: + case kOpacity: alpha_ = other.alpha_; break; - case backdropFilter: + case kBackdropFilter: filter_ = other.filter_; break; default: @@ -64,15 +64,15 @@ class Mutator { } } - explicit Mutator(const SkRect& rect) : type_(clipRect), rect_(rect) {} - explicit Mutator(const SkRRect& rrect) : type_(clipRRect), rrect_(rrect) {} + explicit Mutator(const SkRect& rect) : type_(kClipRect), rect_(rect) {} + explicit Mutator(const SkRRect& rrect) : type_(kClipRRect), rrect_(rrect) {} explicit Mutator(const SkPath& path) - : type_(clipPath), path_(new SkPath(path)) {} + : type_(kClipPath), path_(new SkPath(path)) {} explicit Mutator(const SkMatrix& matrix) - : type_(transform), matrix_(matrix) {} - explicit Mutator(const int& alpha) : type_(opacity), alpha_(alpha) {} + : type_(kTransform), matrix_(matrix) {} + explicit Mutator(const int& alpha) : type_(kOpacity), alpha_(alpha) {} explicit Mutator(const DlImageFilter& filter) - : type_(backdropFilter), filter_(&filter) {} + : type_(kBackdropFilter), filter_(&filter) {} const MutatorType& GetType() const { return type_; } const SkRect& GetRect() const { return rect_; } @@ -88,17 +88,17 @@ class Mutator { return false; } switch (type_) { - case clipRect: + case kClipRect: return rect_ == other.rect_; - case clipRRect: + case kClipRRect: return rrect_ == other.rrect_; - case clipPath: + case kClipPath: return *path_ == *other.path_; - case transform: + case kTransform: return matrix_ == other.matrix_; - case opacity: + case kOpacity: return alpha_ == other.alpha_; - case backdropFilter: + case kBackdropFilter: return *filter_ == *other.filter_; } @@ -108,11 +108,11 @@ class Mutator { bool operator!=(const Mutator& other) const { return !operator==(other); } bool IsClipType() { - return type_ == clipRect || type_ == clipRRect || type_ == clipPath; + return type_ == kClipRect || type_ == kClipRRect || type_ == kClipPath; } ~Mutator() { - if (type_ == clipPath) { + if (type_ == kClipPath) { delete path_; } }; diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc index 0f69f16b69069..cfc642dff1f1c 100644 --- a/flow/mutators_stack_unittests.cc +++ b/flow/mutators_stack_unittests.cc @@ -36,10 +36,10 @@ TEST(MutatorsStack, CopyAndUpdateTheCopy) { ASSERT_TRUE(copy.is_empty()); ASSERT_TRUE(!stack.is_empty()); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRRect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kClipRRect); ASSERT_TRUE(iter->get()->GetRRect() == rrect); ++iter; - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kClipRect); ASSERT_TRUE(iter->get()->GetRect() == rect); } @@ -48,7 +48,7 @@ TEST(MutatorsStack, PushClipRect) { auto rect = SkRect::MakeEmpty(); stack.PushClipRect(rect); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kClipRect); ASSERT_TRUE(iter->get()->GetRect() == rect); } @@ -57,7 +57,7 @@ TEST(MutatorsStack, PushClipRRect) { auto rrect = SkRRect::MakeEmpty(); stack.PushClipRRect(rrect); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRRect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kClipRRect); ASSERT_TRUE(iter->get()->GetRRect() == rrect); } @@ -66,7 +66,7 @@ TEST(MutatorsStack, PushClipPath) { SkPath path; stack.PushClipPath(path); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == flutter::MutatorType::clipPath); + ASSERT_TRUE(iter->get()->GetType() == flutter::MutatorType::kClipPath); ASSERT_TRUE(iter->get()->GetPath() == path); } @@ -76,7 +76,7 @@ TEST(MutatorsStack, PushTransform) { matrix.setIdentity(); stack.PushTransform(matrix); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::transform); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kTransform); ASSERT_TRUE(iter->get()->GetMatrix() == matrix); } @@ -85,7 +85,7 @@ TEST(MutatorsStack, PushOpacity) { int alpha = 240; stack.PushOpacity(alpha); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::opacity); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kOpacity); ASSERT_TRUE(iter->get()->GetAlpha() == 240); } @@ -94,7 +94,7 @@ TEST(MutatorsStack, PushBackdropFilter) { auto filter = DlBlurImageFilter(5, 5, DlTileMode::kClamp); stack.PushBackdropFilter(filter); auto iter = stack.Bottom(); - ASSERT_TRUE(iter->get()->GetType() == MutatorType::backdropFilter); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kBackdropFilter); ASSERT_TRUE(iter->get()->GetFilter() == filter); } @@ -122,15 +122,15 @@ TEST(MutatorsStack, Traversal) { while (iter != stack.Top()) { switch (index) { case 0: - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRRect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kClipRRect); ASSERT_TRUE(iter->get()->GetRRect() == rrect); break; case 1: - ASSERT_TRUE(iter->get()->GetType() == MutatorType::clipRect); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kClipRect); ASSERT_TRUE(iter->get()->GetRect() == rect); break; case 2: - ASSERT_TRUE(iter->get()->GetType() == MutatorType::transform); + ASSERT_TRUE(iter->get()->GetType() == MutatorType::kTransform); ASSERT_TRUE(iter->get()->GetMatrix() == matrix); break; default: @@ -172,28 +172,28 @@ TEST(MutatorsStack, Equality) { TEST(Mutator, Initialization) { SkRect rect = SkRect::MakeEmpty(); Mutator mutator = Mutator(rect); - ASSERT_TRUE(mutator.GetType() == MutatorType::clipRect); + ASSERT_TRUE(mutator.GetType() == MutatorType::kClipRect); ASSERT_TRUE(mutator.GetRect() == rect); SkRRect rrect = SkRRect::MakeEmpty(); Mutator mutator2 = Mutator(rrect); - ASSERT_TRUE(mutator2.GetType() == MutatorType::clipRRect); + ASSERT_TRUE(mutator2.GetType() == MutatorType::kClipRRect); ASSERT_TRUE(mutator2.GetRRect() == rrect); SkPath path; Mutator mutator3 = Mutator(path); - ASSERT_TRUE(mutator3.GetType() == MutatorType::clipPath); + ASSERT_TRUE(mutator3.GetType() == MutatorType::kClipPath); ASSERT_TRUE(mutator3.GetPath() == path); SkMatrix matrix; matrix.setIdentity(); Mutator mutator4 = Mutator(matrix); - ASSERT_TRUE(mutator4.GetType() == MutatorType::transform); + ASSERT_TRUE(mutator4.GetType() == MutatorType::kTransform); ASSERT_TRUE(mutator4.GetMatrix() == matrix); int alpha = 240; Mutator mutator5 = Mutator(alpha); - ASSERT_TRUE(mutator5.GetType() == MutatorType::opacity); + ASSERT_TRUE(mutator5.GetType() == MutatorType::kOpacity); } TEST(Mutator, CopyConstructor) { diff --git a/shell/platform/android/platform_view_android_jni_impl.cc b/shell/platform/android/platform_view_android_jni_impl.cc index edd6e97ddf837..a123d152f6ec7 100644 --- a/shell/platform/android/platform_view_android_jni_impl.cc +++ b/shell/platform/android/platform_view_android_jni_impl.cc @@ -1412,7 +1412,7 @@ void PlatformViewAndroidJNIImpl::FlutterViewOnDisplayPlatformView( mutators_stack.Begin(); while (iter != mutators_stack.End()) { switch ((*iter)->GetType()) { - case transform: { + case kTransform: { const SkMatrix& matrix = (*iter)->GetMatrix(); SkScalar matrix_array[9]; matrix.get9(matrix_array); @@ -1425,7 +1425,7 @@ void PlatformViewAndroidJNIImpl::FlutterViewOnDisplayPlatformView( transformMatrix.obj()); break; } - case clip_rect: { + case kClipRect: { const SkRect& rect = (*iter)->GetRect(); env->CallVoidMethod( mutatorsStack, g_mutators_stack_push_cliprect_method, @@ -1433,7 +1433,7 @@ void PlatformViewAndroidJNIImpl::FlutterViewOnDisplayPlatformView( static_cast(rect.right()), static_cast(rect.bottom())); break; } - case clip_rrect: { + case kClipRRect: { const SkRRect& rrect = (*iter)->GetRRect(); const SkRect& rect = rrect.rect(); const SkVector& upper_left = rrect.radii(SkRRect::kUpperLeft_Corner); @@ -1455,9 +1455,9 @@ void PlatformViewAndroidJNIImpl::FlutterViewOnDisplayPlatformView( } // TODO(cyanglaz): Implement other mutators. // https://github.com/flutter/flutter/issues/58426 - case clip_path: - case opacity: - case backdrop_filter: + case kClipPath: + case kOpacity: + case kBackdropFilter: break; } ++iter; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm index 58a18319d9d05..16ae589c32185 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm @@ -405,24 +405,24 @@ - (BOOL)flt_hasFirstResponderInViewHierarchySubtree { auto iter = mutators_stack.Begin(); while (iter != mutators_stack.End()) { switch ((*iter)->GetType()) { - case transform: { + case kTransform: { CATransform3D transform = GetCATransform3DFromSkMatrix((*iter)->GetMatrix()); finalTransform = CATransform3DConcat(transform, finalTransform); break; } - case clipRect: + case kClipRect: [maskView clipRect:(*iter)->GetRect() matrix:finalTransform]; break; - case clipRRect: + case kClipRRect: [maskView clipRRect:(*iter)->GetRRect() matrix:finalTransform]; break; - case clipPath: + case kClipPath: [maskView clipPath:(*iter)->GetPath() matrix:finalTransform]; break; - case opacity: + case kOpacity: embedded_view.alpha = (*iter)->GetAlphaFloat() * embedded_view.alpha; break; - case backdropFilter: + case kBackdropFilter: break; } ++iter; diff --git a/shell/platform/embedder/embedder_layers.cc b/shell/platform/embedder/embedder_layers.cc index b7a82a77c4976..7d9a4bc9a8892 100644 --- a/shell/platform/embedder/embedder_layers.cc +++ b/shell/platform/embedder/embedder_layers.cc @@ -115,22 +115,22 @@ void EmbedderLayers::PushPlatformViewLayer( for (auto i = mutators.Bottom(); i != mutators.Top(); ++i) { const auto& mutator = *i; switch (mutator->GetType()) { - case MutatorType::clipRect: { + case MutatorType::kClipRect: { mutations_array.push_back( mutations_referenced_ .emplace_back(ConvertMutation(mutator->GetRect())) .get()); } break; - case MutatorType::clipRRect: { + case MutatorType::kClipRRect: { mutations_array.push_back( mutations_referenced_ .emplace_back(ConvertMutation(mutator->GetRRect())) .get()); } break; - case MutatorType::clipPath: { + case MutatorType::kClipPath: { // Unsupported mutation. } break; - case MutatorType::transform: { + case MutatorType::kTransform: { const auto& matrix = mutator->GetMatrix(); if (!matrix.isIdentity()) { mutations_array.push_back( @@ -138,7 +138,7 @@ void EmbedderLayers::PushPlatformViewLayer( .get()); } } break; - case MutatorType::opacity: { + case MutatorType::kOpacity: { const double opacity = std::clamp(mutator->GetAlphaFloat(), 0.0f, 1.0f); if (opacity < 1.0) { @@ -147,7 +147,7 @@ void EmbedderLayers::PushPlatformViewLayer( .get()); } } break; - case MutatorType::backdropFilter: + case MutatorType::kBackdropFilter: break; } } diff --git a/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc b/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc index 225cf31b0c3c0..388671808f001 100644 --- a/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc +++ b/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc @@ -26,28 +26,28 @@ ViewMutators ParseMutatorStack(const flutter::MutatorsStack& mutators_stack) { for (auto i = mutators_stack.Begin(); i != mutators_stack.End(); ++i) { const auto& mutator = *i; switch (mutator->GetType()) { - case flutter::MutatorType::opacity: { + case flutter::MutatorType::kOpacity: { mutators.opacity *= std::clamp(mutator->GetAlphaFloat(), 0.f, 1.f); } break; - case flutter::MutatorType::transform: { + case flutter::MutatorType::kTransform: { total_transform.preConcat(mutator->GetMatrix()); transform_accumulator.preConcat(mutator->GetMatrix()); } break; - case flutter::MutatorType::clip_rect: { + case flutter::MutatorType::kClipRect: { mutators.clips.emplace_back(TransformedClip{ .transform = transform_accumulator, .rect = mutator->GetRect(), }); transform_accumulator = SkMatrix::I(); } break; - case flutter::MutatorType::clip_rrect: { + case flutter::MutatorType::kClipRRect: { mutators.clips.emplace_back(TransformedClip{ .transform = transform_accumulator, .rect = mutator->GetRRect().getBounds(), }); transform_accumulator = SkMatrix::I(); } break; - case flutter::MutatorType::clip_path: { + case flutter::MutatorType::kClipPath: { mutators.clips.emplace_back(TransformedClip{ .transform = transform_accumulator, .rect = mutator->GetPath().getBounds(), From e8fd78f6b2b55cac4b7b813c9c78ec300997ff16 Mon Sep 17 00:00:00 2001 From: Javon Thomas Date: Wed, 13 Jul 2022 15:43:51 -0500 Subject: [PATCH 23/23] Merge remote-tracking branch 'origin/diff' into diff --- .../fuchsia/flutter/flatland_external_view_embedder.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc b/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc index fb81886c1f000..03924fcdda5d0 100644 --- a/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc +++ b/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc @@ -442,28 +442,28 @@ FlatlandExternalViewEmbedder::ParseMutatorStack( for (auto i = mutators_stack.Begin(); i != mutators_stack.End(); ++i) { const auto& mutator = *i; switch (mutator->GetType()) { - case flutter::MutatorType::opacity: { + case flutter::MutatorType::kOpacity: { mutators.opacity *= std::clamp(mutator->GetAlphaFloat(), 0.f, 1.f); } break; - case flutter::MutatorType::transform: { + case flutter::MutatorType::kTransform: { total_transform.preConcat(mutator->GetMatrix()); transform_accumulator.preConcat(mutator->GetMatrix()); } break; - case flutter::MutatorType::clip_rect: { + case flutter::MutatorType::kClipRect: { mutators.clips.emplace_back(TransformedClip{ .transform = transform_accumulator, .rect = mutator->GetRect(), }); transform_accumulator = SkMatrix::I(); } break; - case flutter::MutatorType::clip_rrect: { + case flutter::MutatorType::kClipRRect: { mutators.clips.emplace_back(TransformedClip{ .transform = transform_accumulator, .rect = mutator->GetRRect().getBounds(), }); transform_accumulator = SkMatrix::I(); } break; - case flutter::MutatorType::clip_path: { + case flutter::MutatorType::kClipPath: { mutators.clips.emplace_back(TransformedClip{ .transform = transform_accumulator, .rect = mutator->GetPath().getBounds(),