@@ -281,12 +281,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
281281 }) {
282282 assert (_matrix4IsValid (matrix4));
283283 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushTransform' ));
284- final TransformEngineLayer layer = TransformEngineLayer ._(_pushTransform (matrix4));
284+ final EngineLayer engineLayer = EngineLayer ._();
285+ _pushTransform (engineLayer, matrix4);
286+ final TransformEngineLayer layer = TransformEngineLayer ._(engineLayer);
285287 assert (_debugPushLayer (layer));
286288 return layer;
287289 }
288290
289- EngineLayer _pushTransform (Float64List matrix4) native 'SceneBuilder_pushTransform' ;
291+ void _pushTransform (EngineLayer layer, Float64List matrix4) native 'SceneBuilder_pushTransform' ;
290292
291293 /// Pushes an offset operation onto the operation stack.
292294 ///
@@ -303,12 +305,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
303305 OffsetEngineLayer oldLayer,
304306 }) {
305307 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushOffset' ));
306- final OffsetEngineLayer layer = OffsetEngineLayer ._(_pushOffset (dx, dy));
308+ final EngineLayer engineLayer = EngineLayer ._();
309+ _pushOffset (engineLayer, dx, dy);
310+ final OffsetEngineLayer layer = OffsetEngineLayer ._(engineLayer);
307311 assert (_debugPushLayer (layer));
308312 return layer;
309313 }
310314
311- EngineLayer _pushOffset (double dx, double dy) native 'SceneBuilder_pushOffset' ;
315+ void _pushOffset (EngineLayer layer, double dx, double dy) native 'SceneBuilder_pushOffset' ;
312316
313317 /// Pushes a rectangular clip operation onto the operation stack.
314318 ///
@@ -328,13 +332,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
328332 assert (clipBehavior != null );
329333 assert (clipBehavior != Clip .none);
330334 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushClipRect' ));
331- final ClipRectEngineLayer layer = ClipRectEngineLayer ._(
332- _pushClipRect (rect.left, rect.right, rect.top, rect.bottom, clipBehavior.index));
335+ final EngineLayer engineLayer = EngineLayer ._();
336+ _pushClipRect (engineLayer, rect.left, rect.right, rect.top, rect.bottom, clipBehavior.index);
337+ final ClipRectEngineLayer layer = ClipRectEngineLayer ._(engineLayer);
333338 assert (_debugPushLayer (layer));
334339 return layer;
335340 }
336341
337- EngineLayer _pushClipRect (double left, double right, double top, double bottom, int clipBehavior)
342+ void _pushClipRect (EngineLayer outEngineLayer, double left, double right, double top, double bottom, int clipBehavior)
338343 native 'SceneBuilder_pushClipRect' ;
339344
340345 /// Pushes a rounded-rectangular clip operation onto the operation stack.
@@ -355,13 +360,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
355360 assert (clipBehavior != null );
356361 assert (clipBehavior != Clip .none);
357362 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushClipRRect' ));
358- final ClipRRectEngineLayer layer =
359- ClipRRectEngineLayer ._(_pushClipRRect (rrect._value32, clipBehavior.index));
363+ final EngineLayer engineLayer = EngineLayer ._();
364+ _pushClipRRect (engineLayer, rrect._value32, clipBehavior.index);
365+ final ClipRRectEngineLayer layer = ClipRRectEngineLayer ._(engineLayer);
360366 assert (_debugPushLayer (layer));
361367 return layer;
362368 }
363369
364- EngineLayer _pushClipRRect (Float32List rrect, int clipBehavior)
370+ void _pushClipRRect (EngineLayer layer, Float32List rrect, int clipBehavior)
365371 native 'SceneBuilder_pushClipRRect' ;
366372
367373 /// Pushes a path clip operation onto the operation stack.
@@ -382,13 +388,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
382388 assert (clipBehavior != null );
383389 assert (clipBehavior != Clip .none);
384390 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushClipPath' ));
385- final ClipPathEngineLayer layer =
386- ClipPathEngineLayer ._(_pushClipPath (path, clipBehavior.index));
391+ final EngineLayer engineLayer = EngineLayer ._();
392+ _pushClipPath (engineLayer, path, clipBehavior.index);
393+ final ClipPathEngineLayer layer = ClipPathEngineLayer ._(engineLayer);
387394 assert (_debugPushLayer (layer));
388395 return layer;
389396 }
390397
391- EngineLayer _pushClipPath (Path path, int clipBehavior) native 'SceneBuilder_pushClipPath' ;
398+ void _pushClipPath (EngineLayer layer, Path path, int clipBehavior) native 'SceneBuilder_pushClipPath' ;
392399
393400 /// Pushes an opacity operation onto the operation stack.
394401 ///
@@ -408,13 +415,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
408415 OpacityEngineLayer oldLayer,
409416 }) {
410417 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushOpacity' ));
411- final OpacityEngineLayer layer =
412- OpacityEngineLayer ._(_pushOpacity (alpha, offset.dx, offset.dy));
418+ final EngineLayer engineLayer = EngineLayer ._();
419+ _pushOpacity (engineLayer, alpha, offset.dx, offset.dy);
420+ final OpacityEngineLayer layer = OpacityEngineLayer ._(engineLayer);
413421 assert (_debugPushLayer (layer));
414422 return layer;
415423 }
416424
417- EngineLayer _pushOpacity (int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity' ;
425+ void _pushOpacity (EngineLayer layer, int alpha, double dx, double dy) native 'SceneBuilder_pushOpacity' ;
418426
419427 /// Pushes a color filter operation onto the operation stack.
420428 ///
@@ -434,12 +442,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
434442 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushColorFilter' ));
435443 final _ColorFilter nativeFilter = filter._toNativeColorFilter ();
436444 assert (nativeFilter != null );
437- final ColorFilterEngineLayer layer = ColorFilterEngineLayer ._(_pushColorFilter (nativeFilter));
445+ final EngineLayer engineLayer = EngineLayer ._();
446+ _pushColorFilter (engineLayer, nativeFilter);
447+ final ColorFilterEngineLayer layer = ColorFilterEngineLayer ._(engineLayer);
438448 assert (_debugPushLayer (layer));
439449 return layer;
440450 }
441451
442- EngineLayer _pushColorFilter (_ColorFilter filter) native 'SceneBuilder_pushColorFilter' ;
452+ void _pushColorFilter (EngineLayer layer, _ColorFilter filter) native 'SceneBuilder_pushColorFilter' ;
443453
444454 /// Pushes an image filter operation onto the operation stack.
445455 ///
@@ -459,12 +469,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
459469 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushImageFilter' ));
460470 final _ImageFilter nativeFilter = filter._toNativeImageFilter ();
461471 assert (nativeFilter != null );
462- final ImageFilterEngineLayer layer = ImageFilterEngineLayer ._(_pushImageFilter (nativeFilter));
472+ final EngineLayer engineLayer = EngineLayer ._();
473+ _pushImageFilter (engineLayer, nativeFilter);
474+ final ImageFilterEngineLayer layer = ImageFilterEngineLayer ._(engineLayer);
463475 assert (_debugPushLayer (layer));
464476 return layer;
465477 }
466478
467- EngineLayer _pushImageFilter (_ImageFilter filter) native 'SceneBuilder_pushImageFilter' ;
479+ void _pushImageFilter (EngineLayer outEngineLayer, _ImageFilter filter) native 'SceneBuilder_pushImageFilter' ;
468480
469481 /// Pushes a backdrop filter operation onto the operation stack.
470482 ///
@@ -481,13 +493,14 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
481493 BackdropFilterEngineLayer oldLayer,
482494 }) {
483495 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushBackdropFilter' ));
484- final BackdropFilterEngineLayer layer =
485- BackdropFilterEngineLayer ._(_pushBackdropFilter (filter._toNativeImageFilter ()));
496+ final EngineLayer engineLayer = EngineLayer ._();
497+ _pushBackdropFilter (engineLayer, filter._toNativeImageFilter ());
498+ final BackdropFilterEngineLayer layer = BackdropFilterEngineLayer ._(engineLayer);
486499 assert (_debugPushLayer (layer));
487500 return layer;
488501 }
489502
490- EngineLayer _pushBackdropFilter (_ImageFilter filter) native 'SceneBuilder_pushBackdropFilter' ;
503+ void _pushBackdropFilter (EngineLayer outEngineLayer, _ImageFilter filter) native 'SceneBuilder_pushBackdropFilter' ;
491504
492505 /// Pushes a shader mask operation onto the operation stack.
493506 ///
@@ -506,13 +519,23 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
506519 ShaderMaskEngineLayer oldLayer,
507520 }) {
508521 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushShaderMask' ));
509- final ShaderMaskEngineLayer layer = ShaderMaskEngineLayer ._(_pushShaderMask (
510- shader, maskRect.left, maskRect.right, maskRect.top, maskRect.bottom, blendMode.index));
522+ final EngineLayer engineLayer = EngineLayer ._();
523+ _pushShaderMask (
524+ engineLayer,
525+ shader,
526+ maskRect.left,
527+ maskRect.right,
528+ maskRect.top,
529+ maskRect.bottom,
530+ blendMode.index,
531+ );
532+ final ShaderMaskEngineLayer layer = ShaderMaskEngineLayer ._(engineLayer);
511533 assert (_debugPushLayer (layer));
512534 return layer;
513535 }
514536
515537 EngineLayer _pushShaderMask (
538+ EngineLayer engineLayer,
516539 Shader shader,
517540 double maskRectLeft,
518541 double maskRectRight,
@@ -546,13 +569,21 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
546569 PhysicalShapeEngineLayer oldLayer,
547570 }) {
548571 assert (_debugCheckCanBeUsedAsOldLayer (oldLayer, 'pushPhysicalShape' ));
549- final PhysicalShapeEngineLayer layer = PhysicalShapeEngineLayer ._(_pushPhysicalShape (
550- path, elevation, color.value, shadowColor? .value ?? 0xFF000000 , clipBehavior.index));
572+ final EngineLayer engineLayer = EngineLayer ._();
573+ _pushPhysicalShape (
574+ engineLayer,
575+ path,
576+ elevation,
577+ color.value,
578+ shadowColor? .value ?? 0xFF000000 ,
579+ clipBehavior.index,
580+ );
581+ final PhysicalShapeEngineLayer layer = PhysicalShapeEngineLayer ._(engineLayer);
551582 assert (_debugPushLayer (layer));
552583 return layer;
553584 }
554585
555- EngineLayer _pushPhysicalShape (Path path, double elevation, int color, int shadowColor,
586+ EngineLayer _pushPhysicalShape (EngineLayer outEngineLayer, Path path, double elevation, int color, int shadowColor,
556587 int clipBehavior) native 'SceneBuilder_pushPhysicalShape' ;
557588
558589 /// Ends the effect of the most recently pushed operation.
@@ -770,7 +801,13 @@ class SceneBuilder extends NativeFieldWrapperClass2 {
770801 ///
771802 /// After calling this function, the scene builder object is invalid and
772803 /// cannot be used further.
773- Scene build () native 'SceneBuilder_build' ;
804+ Scene build () {
805+ final Scene scene = Scene ._();
806+ _build (scene);
807+ return scene;
808+ }
809+
810+ void _build (Scene outScene) native 'SceneBuilder_build' ;
774811}
775812
776813/// (Fuchsia-only) Hosts content provided by another application.
0 commit comments