Flutter macOS Embedder
FlutterMutatorView.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_MACOS_FRAMEWORK_SOURCE_FLUTTERMUTATORVIEW_H_
6 #define FLUTTER_SHELL_PLATFORM_DARWIN_MACOS_FRAMEWORK_SOURCE_FLUTTERMUTATORVIEW_H_
7 
8 #import <Cocoa/Cocoa.h>
9 #include <vector>
10 
11 #include "flutter/shell/platform/embedder/embedder.h"
12 
13 namespace flutter {
14 
15 /// Represents a platform view layer, including all mutations.
17  public:
18  /// Creates platform view from provided FlutterLayer, which must be
19  /// of type kFlutterLayerContentTypePlatformView.
20  explicit PlatformViewLayer(const FlutterLayer* _Nonnull layer);
21 
22  PlatformViewLayer(FlutterPlatformViewIdentifier identifier,
23  const std::vector<FlutterPlatformViewMutation>& mutations,
24  FlutterPoint offset,
25  FlutterSize size);
26 
27  FlutterPlatformViewIdentifier identifier() const { return identifier_; }
28  const std::vector<FlutterPlatformViewMutation>& mutations() const { return mutations_; }
29  FlutterPoint offset() const { return offset_; }
30  FlutterSize size() const { return size_; }
31 
32  private:
33  FlutterPlatformViewIdentifier identifier_;
34  std::vector<FlutterPlatformViewMutation> mutations_;
35  FlutterPoint offset_;
36  FlutterSize size_;
37 };
38 } // namespace flutter
39 
40 @class FlutterView;
41 @class FlutterMutatorView;
42 
43 /// FlutterCursorCoordinator is responsible for coordinating cursor changes between
44 /// platform views and overlays of single FlutterView.
45 @interface FlutterCursorCoordinator : NSObject
46 
47 - (nonnull FlutterCursorCoordinator*)initWithFlutterView:(nonnull FlutterView*)flutterView;
48 
49 @end
50 
51 /// Exposed methods for testing.
53 
54 @property(readonly, nonatomic) BOOL cleanupScheduled;
55 
56 - (void)processMouseMoveEvent:(nonnull NSEvent*)event
57  forMutatorView:(nonnull FlutterMutatorView*)view
58  overlayRegion:(const std::vector<CGRect>&)region;
59 @end
60 
61 /// FlutterMutatorView contains platform view and is responsible for applying
62 /// FlutterLayer mutations to it.
63 @interface FlutterMutatorView : NSView
64 
65 /// Designated initializer.
66 - (nonnull instancetype)initWithPlatformView:(nonnull NSView*)platformView
67  cursorCoordiator:(nullable FlutterCursorCoordinator*)coordinator;
68 
69 - (nonnull instancetype)initWithPlatformView:(nonnull NSView*)platformView;
70 
71 /// Returns wrapped platform view.
72 @property(readonly, nonnull) NSView* platformView;
73 
74 /// Applies mutations from FlutterLayer to the platform view. This may involve
75 /// creating or removing intermediate subviews depending on current state and
76 /// requested mutations.
77 - (void)applyFlutterLayer:(nonnull const flutter::PlatformViewLayer*)layer;
78 
79 /// Resets hit hit testing region for this mutator view.
80 - (void)resetHitTestRegion;
81 
82 /// Adds rectangle (in local vie coordinates) to hit test ignore region
83 /// (part of view obscured by Flutter contents).
84 - (void)addHitTestIgnoreRegion:(CGRect)region;
85 
86 @end
87 
88 #endif // FLUTTER_SHELL_PLATFORM_DARWIN_MACOS_FRAMEWORK_SOURCE_FLUTTERMUTATORVIEW_H_
FlutterMutatorView
Definition: FlutterMutatorView.h:63
FlutterCursorCoordinator
Definition: FlutterMutatorView.h:45
flutter::PlatformViewLayer::size
FlutterSize size() const
Definition: FlutterMutatorView.h:30
FlutterMutatorView::platformView
NSView * platformView
Returns wrapped platform view.
Definition: FlutterMutatorView.h:72
flutter::PlatformViewLayer::offset
FlutterPoint offset() const
Definition: FlutterMutatorView.h:29
flutter::PlatformViewLayer::identifier
FlutterPlatformViewIdentifier identifier() const
Definition: FlutterMutatorView.h:27
-[FlutterMutatorView resetHitTestRegion]
void resetHitTestRegion()
Resets hit hit testing region for this mutator view.
Definition: FlutterMutatorView.mm:526
flutter
Definition: AccessibilityBridgeMac.h:16
flutter::PlatformViewLayer::mutations
const std::vector< FlutterPlatformViewMutation > & mutations() const
Definition: FlutterMutatorView.h:28
flutter::PlatformViewLayer::PlatformViewLayer
PlatformViewLayer(const FlutterLayer *_Nonnull layer)
FlutterView
Definition: FlutterView.h:35
FlutterCursorCoordinator(Private)
Exposed methods for testing.
Definition: FlutterMutatorView.h:52
flutter::PlatformViewLayer
Represents a platform view layer, including all mutations.
Definition: FlutterMutatorView.h:16