Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
FlutterPlatformViewsController.mm File Reference

Go to the source code of this file.

Classes

struct  LayerData
 
struct  PlatformViewData
 

Typedefs

using LayersMap = std::unordered_map< int64_t, LayerData >
 

Functions

static CATransform3D GetCATransform3DFromDlMatrix (const DlMatrix &matrix)
 
static void ResetAnchor (CALayer *layer)
 
static CGRect GetCGRectFromDlRect (const DlRect &clipDlRect)
 
static bool HasNonRectClipForUnderlayCutout (const flutter::EmbeddedViewParams &params)
 
static void ApplyNonRectClipToOverlayCanvas (flutter::DlCanvas *overlay_canvas, const flutter::EmbeddedViewParams &params)
 

Variables

static constexpr NSUInteger kFlutterClippingMaskViewPoolCapacity = 5
 
static NSString *const kGestureBlockingPolicyEagerValue = @"@"eager"
 
static NSString *const kGestureBlockingPolicyWaitUntilTouchesEndedValue = @"@"waitUntilTouchesEnded"
 
static NSString *const kGestureBlockingPolicyDoNotBlockGesture = @"@"doNotBlockGesture"
 
static NSString *const kGestureBlockingPolicyFallbackToPluginDefault = @"@"fallbackToPluginDefault"
 
std::unordered_map< int64_t, std::unique_ptr< flutter::EmbedderViewSlice > > _slices
 
std::unordered_map< std::string, NSObject< FlutterPlatformViewFactory > * > _factories
 
std::unordered_map< std::string, FlutterPlatformViewGestureRecognizersBlockingPolicy_gestureRecognizersBlockingPoliciesByType
 
FlutterFMLTaskRunner_platformTaskRunner
 
std::unordered_map< int64_t, PlatformViewData_platformViews
 
std::unordered_map< int64_t, flutter::EmbeddedViewParams_currentCompositionParams
 
std::unordered_set< int64_t > _viewsToDispose
 
std::vector< int64_t > _compositionOrder
 
std::vector< int64_t > _visitedPlatformViews
 
std::unordered_set< int64_t > _viewsToRecomposite
 
std::vector< int64_t > _previousCompositionOrder
 

Typedef Documentation

◆ LayersMap

using LayersMap = std::unordered_map<int64_t, LayerData>

Definition at line 41 of file FlutterPlatformViewsController.mm.

Function Documentation

◆ ApplyNonRectClipToOverlayCanvas()

static void ApplyNonRectClipToOverlayCanvas ( flutter::DlCanvas overlay_canvas,
const flutter::EmbeddedViewParams params 
)
static

Definition at line 113 of file FlutterPlatformViewsController.mm.

114 {
116 auto iter = params.mutatorsStack().Begin();
117 while (iter != params.mutatorsStack().End()) {
118 switch ((*iter)->GetType()) {
120 transform = transform * (*iter)->GetMatrix();
121 break;
123 if (transform.IsIdentity()) {
124 overlay_canvas->ClipRoundRect((*iter)->GetRRect(), flutter::DlClipOp::kIntersect, true);
125 } else {
126 auto path = flutter::DlPath::MakeRoundRect((*iter)->GetRRect());
127 auto transformed_path =
128 flutter::DlPath(path.GetSkPath().makeTransform(flutter::ToSkMatrix(transform)));
129 overlay_canvas->ClipPath(transformed_path, flutter::DlClipOp::kIntersect, true);
130 }
131 break;
132 }
134 if (transform.IsIdentity()) {
135 overlay_canvas->ClipRoundSuperellipse((*iter)->GetRSE(), flutter::DlClipOp::kIntersect,
136 true);
137 } else {
138 auto path = flutter::DlPath::MakeRoundSuperellipse((*iter)->GetRSE());
139 auto transformed_path =
140 flutter::DlPath(path.GetSkPath().makeTransform(flutter::ToSkMatrix(transform)));
141 overlay_canvas->ClipPath(transformed_path, flutter::DlClipOp::kIntersect, true);
142 }
143 break;
144 }
146 if (transform.IsIdentity()) {
147 overlay_canvas->ClipPath((*iter)->GetPath(), flutter::DlClipOp::kIntersect, true);
148 } else {
149 auto transformed_path = flutter::DlPath(
150 (*iter)->GetPath().GetSkPath().makeTransform(flutter::ToSkMatrix(transform)));
151 overlay_canvas->ClipPath(transformed_path, flutter::DlClipOp::kIntersect, true);
152 }
153 break;
154 }
155 default:
156 break;
157 }
158 ++iter;
159 }
160}
virtual void ClipRoundSuperellipse(const DlRoundSuperellipse &rse, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false)=0
virtual void ClipRoundRect(const DlRoundRect &rrect, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false)=0
virtual void ClipPath(const DlPath &path, DlClipOp clip_op=DlClipOp::kIntersect, bool is_aa=false)=0
static DlPath MakeRoundRect(const DlRoundRect &rrect)
Definition dl_path.cc:72
static DlPath MakeRoundSuperellipse(const DlRoundSuperellipse &rse)
Definition dl_path.cc:85
const EmbeddedViewParams * params
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switch_defs.h:52
SkMatrix ToSkMatrix(const DlMatrix &matrix)
A 4x4 matrix using column-major storage.
Definition matrix.h:37
constexpr bool IsIdentity() const
Definition matrix.h:475

References flutter::DlCanvas::ClipPath(), flutter::DlCanvas::ClipRoundRect(), flutter::DlCanvas::ClipRoundSuperellipse(), impeller::Matrix::IsIdentity(), flutter::kClipPath, flutter::kClipRRect, flutter::kClipRSE, flutter::kIntersect, flutter::kTransform, flutter::DlPath::MakeRoundRect(), flutter::DlPath::MakeRoundSuperellipse(), params, flutter::ToSkMatrix(), and transform.

◆ GetCATransform3DFromDlMatrix()

static CATransform3D GetCATransform3DFromDlMatrix ( const DlMatrix &  matrix)
static

Definition at line 54 of file FlutterPlatformViewsController.mm.

54 {
55 CATransform3D transform = CATransform3DIdentity;
56 transform.m11 = matrix.m[0];
57 transform.m12 = matrix.m[1];
58 transform.m13 = matrix.m[2];
59 transform.m14 = matrix.m[3];
60
61 transform.m21 = matrix.m[4];
62 transform.m22 = matrix.m[5];
63 transform.m23 = matrix.m[6];
64 transform.m24 = matrix.m[7];
65
66 transform.m31 = matrix.m[8];
67 transform.m32 = matrix.m[9];
68 transform.m33 = matrix.m[10];
69 transform.m34 = matrix.m[11];
70
71 transform.m41 = matrix.m[12];
72 transform.m42 = matrix.m[13];
73 transform.m43 = matrix.m[14];
74 transform.m44 = matrix.m[15];
75 return transform;
76}
Scalar m[16]
Definition matrix.h:39

References impeller::Matrix::m, and transform.

◆ GetCGRectFromDlRect()

static CGRect GetCGRectFromDlRect ( const DlRect &  clipDlRect)
static

Definition at line 87 of file FlutterPlatformViewsController.mm.

87 {
88 return CGRectMake(clipDlRect.GetLeft(), //
89 clipDlRect.GetTop(), //
90 clipDlRect.GetWidth(), //
91 clipDlRect.GetHeight());
92}

◆ HasNonRectClipForUnderlayCutout()

static bool HasNonRectClipForUnderlayCutout ( const flutter::EmbeddedViewParams params)
static

Definition at line 94 of file FlutterPlatformViewsController.mm.

94 {
95 auto iter = params.mutatorsStack().Begin();
96 while (iter != params.mutatorsStack().End()) {
97 switch ((*iter)->GetType()) {
101 return true;
102 default:
103 break;
104 }
105 ++iter;
106 }
107 return false;
108}

References flutter::kClipPath, flutter::kClipRRect, flutter::kClipRSE, and params.

◆ ResetAnchor()

static void ResetAnchor ( CALayer *  layer)
static

Definition at line 81 of file FlutterPlatformViewsController.mm.

81 {
82 // Flow uses (0, 0) to apply transform matrix so we need to match that in Quartz.
83 layer.anchorPoint = CGPointZero;
84 layer.position = CGPointZero;
85}

Variable Documentation

◆ _compositionOrder

std::vector<int64_t> _compositionOrder

Definition at line 317 of file FlutterPlatformViewsController.mm.

◆ _currentCompositionParams

std::unordered_map<int64_t, flutter::EmbeddedViewParams> _currentCompositionParams

Definition at line 315 of file FlutterPlatformViewsController.mm.

◆ _factories

std::unordered_map<std::string, NSObject<FlutterPlatformViewFactory>*> _factories

Definition at line 310 of file FlutterPlatformViewsController.mm.

◆ _gestureRecognizersBlockingPoliciesByType

std::unordered_map<std::string, FlutterPlatformViewGestureRecognizersBlockingPolicy> _gestureRecognizersBlockingPoliciesByType

Definition at line 312 of file FlutterPlatformViewsController.mm.

◆ _platformTaskRunner

FlutterFMLTaskRunner* _platformTaskRunner

Definition at line 313 of file FlutterPlatformViewsController.mm.

◆ _platformViews

std::unordered_map<int64_t, PlatformViewData> _platformViews

Definition at line 314 of file FlutterPlatformViewsController.mm.

◆ _previousCompositionOrder

std::vector<int64_t> _previousCompositionOrder

Definition at line 320 of file FlutterPlatformViewsController.mm.

◆ _slices

std::unordered_map<int64_t, std::unique_ptr<flutter::EmbedderViewSlice> > _slices
Initial value:
{
std::unique_ptr<flutter::OverlayLayerPool> _layerPool

Definition at line 309 of file FlutterPlatformViewsController.mm.

◆ _viewsToDispose

std::unordered_set<int64_t> _viewsToDispose

Definition at line 316 of file FlutterPlatformViewsController.mm.

◆ _viewsToRecomposite

std::unordered_set<int64_t> _viewsToRecomposite

Definition at line 319 of file FlutterPlatformViewsController.mm.

◆ _visitedPlatformViews

std::vector<int64_t> _visitedPlatformViews

Definition at line 318 of file FlutterPlatformViewsController.mm.

◆ kFlutterClippingMaskViewPoolCapacity

constexpr NSUInteger kFlutterClippingMaskViewPoolCapacity = 5
staticconstexpr

Definition at line 28 of file FlutterPlatformViewsController.mm.

◆ kGestureBlockingPolicyDoNotBlockGesture

NSString* const kGestureBlockingPolicyDoNotBlockGesture = @"@"doNotBlockGesture"
static

Definition at line 32 of file FlutterPlatformViewsController.mm.

◆ kGestureBlockingPolicyEagerValue

NSString* const kGestureBlockingPolicyEagerValue = @"@"eager"
static

Definition at line 30 of file FlutterPlatformViewsController.mm.

◆ kGestureBlockingPolicyFallbackToPluginDefault

NSString* const kGestureBlockingPolicyFallbackToPluginDefault = @"@"fallbackToPluginDefault"
static

Definition at line 33 of file FlutterPlatformViewsController.mm.

◆ kGestureBlockingPolicyWaitUntilTouchesEndedValue

NSString* const kGestureBlockingPolicyWaitUntilTouchesEndedValue = @"@"waitUntilTouchesEnded"
static

Definition at line 31 of file FlutterPlatformViewsController.mm.