Unverified Commit 592f2979 authored by amirh's avatar amirh Committed by GitHub

Revive "Push physical layers with paths instead of rects in RenderPhy… (#14054)

* Revive "Push physical layers with paths instead of rects in RenderPhysicalModel. (#13942)"

That commit was reverted due to a performance problem which has now been
fixed.

* Roll engine 05fe72d068e19c7886e8d27f9b004201d5ad1300
parent a48185a6
5a72197b733c01537a6583fa3715155d9fc936ef
05fe72d068e19c7886e8d27f9b004201d5ad1300
......@@ -755,20 +755,20 @@ class PhysicalModelLayer extends ContainerLayer {
/// 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 @@ class PhysicalModelLayer extends ContainerLayer {
@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 @@ class PhysicalModelLayer extends ContainerLayer {
@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));
}
......
......@@ -1426,9 +1426,10 @@ class RenderPhysicalModel extends _RenderCustomClip<RRect> {
_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 @@ class RenderPhysicalModel extends _RenderCustomClip<RRect> {
_transparentPaint,
);
canvas.drawShadow(
new Path()..addRRect(offsetClipRRect),
offsetClipPath,
shadowColor,
elevation,
color.alpha != 0xFF,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment