Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Instance Methods | Class Methods | Properties | List of all members
PlatformViewFilter Class Reference

#include <FlutterPlatformViews_Internal.h>

Inheritance diagram for PlatformViewFilter:

Instance Methods

(instancetype) - NS_UNAVAILABLE
 
(instancetype) - initWithFrame:blurRadius:visualEffectView:
 
(void) - dealloc [implementation]
 
(void) - updateVisualEffectView: [implementation]
 

Class Methods

(void) + resetPreparation
 
(void) + prepareOnce: [implementation]
 
(BOOL+ isUIVisualEffectViewImplementationValid [implementation]
 

Properties

CGRect frame
 
CGFloat blurRadius
 
UIVisualEffectView * backdropFilterView
 
BOOL backdropFilterViewConfigured [implementation]
 

Detailed Description

Definition at line 80 of file FlutterPlatformViews_Internal.h.

Method Documentation

◆ dealloc

- (void) dealloc
implementation

Definition at line 93 of file FlutterPlatformViews_Internal.mm.

148 {
149 [_backdropFilterView release];
150 _backdropFilterView = nil;
151
152 [super dealloc];
153}

◆ initWithFrame:blurRadius:visualEffectView:

- (instancetype) initWithFrame: (CGRect)  frame
blurRadius: (CGFloat)  blurRadius
visualEffectView: (UIVisualEffectView*)  NS_DESIGNATED_INITIALIZER 

Definition at line 93 of file FlutterPlatformViews_Internal.mm.

95 :(CGRect)frame
96 blurRadius:(CGFloat)blurRadius
97 visualEffectView:(UIVisualEffectView*)visualEffectView {
98 if (self = [super init]) {
99 _frame = frame;
100 _blurRadius = blurRadius;
101 [PlatformViewFilter prepareOnce:visualEffectView];
103 FML_DLOG(ERROR) << "Apple's API for UIVisualEffectView changed. Update the implementation to "
104 "access the gaussianBlur CAFilter.";
105 [self release];
106 return nil;
107 }
108 _backdropFilterView = [visualEffectView retain];
109 _backdropFilterViewConfigured = NO;
110 }
111 return self;
112}
if(end==-1)
#define FML_DLOG(severity)
Definition logging.h:102
void prepareOnce:(UIVisualEffectView *visualEffectView)
init(device_serial, adb_binary)
Definition _adb_path.py:12
#define ERROR(message)

◆ isUIVisualEffectViewImplementationValid

+ (BOOL) isUIVisualEffectViewImplementationValid
implementation

Definition at line 93 of file FlutterPlatformViews_Internal.mm.

144 {
146}
static NSInteger _indexOfVisualEffectSubview
static NSInteger _indexOfBackdropView
static NSObject * _gaussianBlurFilter

◆ NS_UNAVAILABLE

- (instancetype) NS_UNAVAILABLE

◆ prepareOnce:

+ (void) prepareOnce: (UIVisualEffectView*)  visualEffectView
implementation

Definition at line 93 of file FlutterPlatformViews_Internal.mm.

122 :(UIVisualEffectView*)visualEffectView {
123 if (_preparedOnce) {
124 return;
125 }
126 for (NSUInteger i = 0; i < visualEffectView.subviews.count; i++) {
127 UIView* view = visualEffectView.subviews[i];
128 if ([NSStringFromClass([view class]) hasSuffix:@"BackdropView"]) {
130 for (NSObject* filter in view.layer.filters) {
131 if ([[filter valueForKey:@"name"] isEqual:@"gaussianBlur"] &&
132 [[filter valueForKey:@"inputRadius"] isKindOfClass:[NSNumber class]]) {
133 _gaussianBlurFilter = [filter retain];
134 break;
135 }
136 }
137 } else if ([NSStringFromClass([view class]) hasSuffix:@"VisualEffectSubview"]) {
139 }
140 }
141 _preparedOnce = YES;
142}
static BOOL _preparedOnce

◆ resetPreparation

+ (void) resetPreparation

Definition at line 93 of file FlutterPlatformViews_Internal.mm.

114 {
115 _preparedOnce = NO;
116 [_gaussianBlurFilter release];
120}

◆ updateVisualEffectView:

- (void) updateVisualEffectView: (UIVisualEffectView*)  visualEffectView
implementation

Definition at line 93 of file FlutterPlatformViews_Internal.mm.

164 :(UIVisualEffectView*)visualEffectView {
165 NSObject* gaussianBlurFilter = [[_gaussianBlurFilter copy] autorelease];
166 FML_DCHECK(gaussianBlurFilter);
167 UIView* backdropView = visualEffectView.subviews[_indexOfBackdropView];
168 [gaussianBlurFilter setValue:@(_blurRadius) forKey:@"inputRadius"];
169 backdropView.layer.filters = @[ gaussianBlurFilter ];
170
171 UIView* visualEffectSubview = visualEffectView.subviews[_indexOfVisualEffectSubview];
172 visualEffectSubview.layer.backgroundColor = UIColor.clearColor.CGColor;
173 visualEffectView.frame = _frame;
174
175 if (_backdropFilterView != visualEffectView) {
176 _backdropFilterView = [visualEffectView retain];
177 }
178}
#define FML_DCHECK(condition)
Definition logging.h:103

Property Documentation

◆ backdropFilterView

- (UIVisualEffectView *) backdropFilterView
readnonatomicretain

Definition at line 95 of file FlutterPlatformViews_Internal.h.

◆ backdropFilterViewConfigured

- (BOOL) backdropFilterViewConfigured
readwritenonatomicassignimplementation

Provided by category PlatformViewFilter().

Definition at line 77 of file FlutterPlatformViews_Internal.mm.

◆ blurRadius

- (CGFloat) blurRadius
readnonatomicassign

Definition at line 89 of file FlutterPlatformViews_Internal.h.

◆ frame

- (CGRect) frame
readnonatomicassign

Definition at line 84 of file FlutterPlatformViews_Internal.h.


The documentation for this class was generated from the following files: