Push physical layers with paths instead of rects in RenderPhysicalModel. (#13942)
diff --git a/bin/internal/engine.version b/bin/internal/engine.version index 609a229..14a110d 100644 --- a/bin/internal/engine.version +++ b/bin/internal/engine.version
@@ -1 +1 @@ -6a724f0d3e22d41246baf3447d7ba2c9ff886765 +d8740c70a58ada74aff5b773e2bec9d622c42a97
diff --git a/packages/flutter/lib/src/rendering/layer.dart b/packages/flutter/lib/src/rendering/layer.dart index 7224c4a..b5e04c3 100644 --- a/packages/flutter/lib/src/rendering/layer.dart +++ b/packages/flutter/lib/src/rendering/layer.dart
@@ -755,20 +755,20 @@ /// Creates a composited layer that uses a physical model to producing /// lighting effects. /// - /// The [clipRRect], [elevation], and [color] arguments must not be null. + /// The [clipPath], [elevation], and [color] arguments must not be null. PhysicalModelLayer({ - @required this.clipRRect, + @required this.clipPath, @required this.elevation, @required this.color, - }) : assert(clipRRect != null), + }) : assert(clipPath != null), assert(elevation != null), assert(color != null); - /// The rounded-rect to clip in the parent's coordinate system. + /// The path to clip in the parent's coordinate system. /// /// The scene must be explicitly recomposited after this property is changed /// (as described at [Layer]). - RRect clipRRect; + Path clipPath; /// The z-coordinate at which to place this physical object. /// @@ -784,8 +784,8 @@ @override void addToScene(ui.SceneBuilder builder, Offset layerOffset) { - builder.pushPhysicalModel( - rrect: clipRRect.shift(layerOffset), + builder.pushPhysicalShape( + path: clipPath.shift(layerOffset), elevation: elevation, color: color, ); @@ -796,7 +796,6 @@ @override void debugFillProperties(DiagnosticPropertiesBuilder description) { super.debugFillProperties(description); - description.add(new DiagnosticsProperty<RRect>('clipRRect', clipRRect)); description.add(new DoubleProperty('elevation', elevation)); description.add(new DiagnosticsProperty<Color>('color', color)); }
diff --git a/packages/flutter/lib/src/rendering/proxy_box.dart b/packages/flutter/lib/src/rendering/proxy_box.dart index 79e9e22..eb4e6ef 100644 --- a/packages/flutter/lib/src/rendering/proxy_box.dart +++ b/packages/flutter/lib/src/rendering/proxy_box.dart
@@ -1426,9 +1426,10 @@ _updateClip(); final RRect offsetClipRRect = _clip.shift(offset); final Rect offsetBounds = offsetClipRRect.outerRect; + final Path offsetClipPath = new Path()..addRRect(offsetClipRRect); if (needsCompositing) { final PhysicalModelLayer physicalModel = new PhysicalModelLayer( - clipRRect: offsetClipRRect, + clipPath: offsetClipPath, elevation: elevation, color: color, ); @@ -1445,7 +1446,7 @@ _transparentPaint, ); canvas.drawShadow( - new Path()..addRRect(offsetClipRRect), + offsetClipPath, shadowColor, elevation, color.alpha != 0xFF,