Linearly interpolate between two rounded rectangles.
If either is null, this function substitutes RRect.zero instead.
Source
static RRect lerp(RRect a, RRect b, double t) { if (a == null && b == null) return null; if (a == null) { return new RRect._fromList(<double>[ b.left * t, b.top * t, b.right * t, b.bottom * t, b.tlRadiusX * t, b.tlRadiusY * t, b.trRadiusX * t, b.trRadiusY * t, b.brRadiusX * t, b.brRadiusY * t, b.blRadiusX * t, b.blRadiusY * t ]); } if (b == null) { double k = 1.0 - t; return new RRect._fromList(<double>[ a.left * k, a.top * k, a.right * k, a.bottom * k, a.tlRadiusX * k, a.tlRadiusY * k, a.trRadiusX * k, a.trRadiusY * k, a.brRadiusX * k, a.brRadiusY * k, a.blRadiusX * k, a.blRadiusY * k ]); } return new RRect._fromList(<double>[ lerpDouble(a.left, b.left, t), lerpDouble(a.top, b.top, t), lerpDouble(a.right, b.right, t), lerpDouble(a.bottom, b.bottom, t), lerpDouble(a.tlRadiusX, b.tlRadiusX, t), lerpDouble(a.tlRadiusY, b.tlRadiusY, t), lerpDouble(a.trRadiusX, b.trRadiusX, t), lerpDouble(a.trRadiusY, b.trRadiusY, t), lerpDouble(a.brRadiusX, b.brRadiusX, t), lerpDouble(a.brRadiusY, b.brRadiusY, t), lerpDouble(a.blRadiusX, b.blRadiusX, t), lerpDouble(a.blRadiusY, b.blRadiusY, t) ]); }