@@ -2430,7 +2430,7 @@ class RenderTransform extends RenderProxyBox {
2430
2430
return ;
2431
2431
}
2432
2432
_origin = value;
2433
- markNeedsCompositedLayerUpdate ();
2433
+ markNeedsPaint ();
2434
2434
markNeedsSemanticsUpdate ();
2435
2435
}
2436
2436
@@ -2452,7 +2452,7 @@ class RenderTransform extends RenderProxyBox {
2452
2452
return ;
2453
2453
}
2454
2454
_alignment = value;
2455
- markNeedsCompositedLayerUpdate ();
2455
+ markNeedsPaint ();
2456
2456
markNeedsSemanticsUpdate ();
2457
2457
}
2458
2458
@@ -2467,13 +2467,10 @@ class RenderTransform extends RenderProxyBox {
2467
2467
return ;
2468
2468
}
2469
2469
_textDirection = value;
2470
- markNeedsCompositedLayerUpdate ();
2470
+ markNeedsPaint ();
2471
2471
markNeedsSemanticsUpdate ();
2472
2472
}
2473
2473
2474
- @override
2475
- bool get isRepaintBoundary => alwaysNeedsCompositing;
2476
-
2477
2474
@override
2478
2475
bool get alwaysNeedsCompositing => child != null && _filterQuality != null ;
2479
2476
@@ -2498,7 +2495,7 @@ class RenderTransform extends RenderProxyBox {
2498
2495
return ;
2499
2496
}
2500
2497
_transform = Matrix4 .copy (value);
2501
- markNeedsCompositedLayerUpdate ();
2498
+ markNeedsPaint ();
2502
2499
markNeedsSemanticsUpdate ();
2503
2500
}
2504
2501
@@ -2516,48 +2513,48 @@ class RenderTransform extends RenderProxyBox {
2516
2513
if (didNeedCompositing != alwaysNeedsCompositing) {
2517
2514
markNeedsCompositingBitsUpdate ();
2518
2515
}
2519
- markNeedsCompositedLayerUpdate ();
2516
+ markNeedsPaint ();
2520
2517
}
2521
2518
2522
2519
/// Sets the transform to the identity matrix.
2523
2520
void setIdentity () {
2524
2521
_transform! .setIdentity ();
2525
- markNeedsCompositedLayerUpdate ();
2522
+ markNeedsPaint ();
2526
2523
markNeedsSemanticsUpdate ();
2527
2524
}
2528
2525
2529
2526
/// Concatenates a rotation about the x axis into the transform.
2530
2527
void rotateX (double radians) {
2531
2528
_transform! .rotateX (radians);
2532
- markNeedsCompositedLayerUpdate ();
2529
+ markNeedsPaint ();
2533
2530
markNeedsSemanticsUpdate ();
2534
2531
}
2535
2532
2536
2533
/// Concatenates a rotation about the y axis into the transform.
2537
2534
void rotateY (double radians) {
2538
2535
_transform! .rotateY (radians);
2539
- markNeedsCompositedLayerUpdate ();
2536
+ markNeedsPaint ();
2540
2537
markNeedsSemanticsUpdate ();
2541
2538
}
2542
2539
2543
2540
/// Concatenates a rotation about the z axis into the transform.
2544
2541
void rotateZ (double radians) {
2545
2542
_transform! .rotateZ (radians);
2546
- markNeedsCompositedLayerUpdate ();
2543
+ markNeedsPaint ();
2547
2544
markNeedsSemanticsUpdate ();
2548
2545
}
2549
2546
2550
2547
/// Concatenates a translation by (x, y, z) into the transform.
2551
2548
void translate (double x, [ double y = 0.0 , double z = 0.0 ]) {
2552
2549
_transform! .translate (x, y, z);
2553
- markNeedsCompositedLayerUpdate ();
2550
+ markNeedsPaint ();
2554
2551
markNeedsSemanticsUpdate ();
2555
2552
}
2556
2553
2557
2554
/// Concatenates a scale into the transform.
2558
2555
void scale (double x, [ double ? y, double ? z ]) {
2559
2556
_transform! .scale (x, y, z);
2560
- markNeedsCompositedLayerUpdate ();
2557
+ markNeedsPaint ();
2561
2558
markNeedsSemanticsUpdate ();
2562
2559
}
2563
2560
@@ -2606,46 +2603,51 @@ class RenderTransform extends RenderProxyBox {
2606
2603
);
2607
2604
}
2608
2605
2609
- @override
2610
- OffsetLayer updateCompositedLayer ({required covariant ImageFilterLayer ? oldLayer}) {
2611
- final ImageFilterLayer layer = oldLayer ?? ImageFilterLayer ();
2612
- layer.imageFilter = ui.ImageFilter .matrix (
2613
- _effectiveTransform! .storage,
2614
- filterQuality: filterQuality!
2615
- );
2616
- return layer;
2617
- }
2618
-
2619
2606
@override
2620
2607
void paint (PaintingContext context, Offset offset) {
2621
- if (child == null ) {
2622
- return ;
2623
- }
2624
- if (isRepaintBoundary) {
2625
- return super .paint (context, offset);
2626
- }
2627
-
2628
- final Matrix4 transform = _effectiveTransform! ;
2629
- final Offset ? childOffset = MatrixUtils .getAsTranslation (transform);
2630
- if (childOffset != null ) {
2631
- super .paint (context, offset + childOffset);
2632
- layer = null ;
2633
- return ;
2634
- }
2635
- // if the matrix is singular the children would be compressed to a line or
2636
- // single point, instead short-circuit and paint nothing.
2637
- final double det = transform.determinant ();
2638
- if (det == 0 || ! det.isFinite) {
2639
- layer = null ;
2640
- return ;
2608
+ if (child != null ) {
2609
+ final Matrix4 transform = _effectiveTransform! ;
2610
+ if (filterQuality == null ) {
2611
+ final Offset ? childOffset = MatrixUtils .getAsTranslation (transform);
2612
+ if (childOffset == null ) {
2613
+ // if the matrix is singular the children would be compressed to a line or
2614
+ // single point, instead short-circuit and paint nothing.
2615
+ final double det = transform.determinant ();
2616
+ if (det == 0 || ! det.isFinite) {
2617
+ layer = null ;
2618
+ return ;
2619
+ }
2620
+ layer = context.pushTransform (
2621
+ needsCompositing,
2622
+ offset,
2623
+ transform,
2624
+ super .paint,
2625
+ oldLayer: layer is TransformLayer ? layer as TransformLayer ? : null ,
2626
+ );
2627
+ } else {
2628
+ super .paint (context, offset + childOffset);
2629
+ layer = null ;
2630
+ }
2631
+ } else {
2632
+ final Matrix4 effectiveTransform = Matrix4 .translationValues (offset.dx, offset.dy, 0.0 )
2633
+ ..multiply (transform)..translate (- offset.dx, - offset.dy);
2634
+ final ui.ImageFilter filter = ui.ImageFilter .matrix (
2635
+ effectiveTransform.storage,
2636
+ filterQuality: filterQuality! ,
2637
+ );
2638
+ if (layer is ImageFilterLayer ) {
2639
+ final ImageFilterLayer filterLayer = layer! as ImageFilterLayer ;
2640
+ filterLayer.imageFilter = filter;
2641
+ } else {
2642
+ layer = ImageFilterLayer (imageFilter: filter);
2643
+ }
2644
+ context.pushLayer (layer! , super .paint, offset);
2645
+ assert (() {
2646
+ layer! .debugCreator = debugCreator;
2647
+ return true ;
2648
+ }());
2649
+ }
2641
2650
}
2642
- layer = context.pushTransform (
2643
- needsCompositing,
2644
- offset,
2645
- transform,
2646
- super .paint,
2647
- oldLayer: layer is TransformLayer ? layer as TransformLayer ? : null ,
2648
- );
2649
2651
}
2650
2652
2651
2653
@override
0 commit comments