@@ -64,11 +64,12 @@ extension DisplayList {
64
64
}
65
65
if let renderer {
66
66
switch configuration. renderer {
67
- case . default:
68
- return renderer
69
- case . rasterized( let options) :
70
- fatalError ( " Blocked by ViewRasterizer " )
71
- return renderer
67
+ case . default: break
68
+ case let . rasterized( options) :
69
+ let rasterizer = renderer as! ViewRasterizer
70
+ rasterizer. options = options
71
+ rasterizer. renderer. platformViewMode = options. drawsPlatformViews ? . rendered( update: true ) : . unsupported
72
+ rasterizer. host = host
72
73
}
73
74
} else {
74
75
switch configuration. renderer {
@@ -77,11 +78,13 @@ extension DisplayList {
77
78
// TODO: ViewUpdater
78
79
renderer = updater
79
80
state = . updating
80
- return renderer!
81
- case . rasterized( let options) :
82
- fatalError ( " Blocked by ViewRasterizer " )
81
+ case let . rasterized( options) :
82
+ let rasterizer = ViewRasterizer ( platform: platform, host: host, rootView: rootView, options: options)
83
+ renderer = rasterizer
84
+ state = . rasterizing
83
85
}
84
86
}
87
+ return renderer!
85
88
}
86
89
87
90
package func exportedObject( rootView: AnyObject ) -> AnyObject ? {
@@ -115,4 +118,38 @@ extension DisplayList {
115
118
renderer? . viewCacheIsEmpty ?? true
116
119
}
117
120
}
121
+
122
+ private final class ViewRasterizer : ViewRendererBase {
123
+ let platform : DisplayList . ViewUpdater . Platform
124
+ weak var host : ViewRendererHost ?
125
+ var drawingView : AnyObject ?
126
+ var options : _RendererConfiguration . RasterizationOptions
127
+ let renderer : DisplayList . GraphicsRenderer
128
+ var seed : DisplayList . Seed
129
+ var lastContentsScale : CGFloat
130
+
131
+ init ( platform: DisplayList . ViewUpdater . Platform , host: ViewRendererHost ? , rootView: AnyObject , options: _RendererConfiguration . RasterizationOptions ) {
132
+ fatalError ( )
133
+ }
134
+
135
+ var exportedObject : AnyObject ? {
136
+ platform. definition. getRBLayer ( drawingView: drawingView!)
137
+ }
138
+
139
+ func render( rootView: AnyObject , from list: DisplayList , time: Time , version: DisplayList . Version , maxVersion: DisplayList . Version , environment: DisplayList . ViewRenderer . Environment ) -> Time {
140
+ fatalError ( " TODO " )
141
+ }
142
+
143
+ func renderAsync( to list: DisplayList , time: Time , targetTimestamp: Time ? , version: DisplayList . Version , maxVersion: DisplayList . Version ) -> Time ? {
144
+ fatalError ( " TODO " )
145
+ }
146
+
147
+ func destroy( rootView: AnyObject ) {
148
+ fatalError ( " TODO " )
149
+ }
150
+
151
+ var viewCacheIsEmpty : Bool {
152
+ fatalError ( " TODO " )
153
+ }
154
+ }
118
155
}
0 commit comments