RSuperellipse class

An immutable rounded superellipse.

A rounded superellipse is a shape similar to a typical rounded rectangle (RRect), but with smoother transitions between the straight sides and the rounded corners. It resembles the RoundedRectangle shape in SwiftUI with the .continuous corner style.

Technically, a canonical rounded superellipse, i.e. one with a uniform corner radius (RSuperellipse.fromRectAndRadius), is created by replacing the four corners of a superellipse (also known as a Lamé curve) with circular arcs. A rounded superellipse with non-uniform radii is extended on it by concatenating arc segments and transformation.

The corner radius parameters used in this class corresponds to SwiftUI's cornerRadius parameter, which is close to, but not exactly equals to, the radius of the corner circles.

Constructors

RSuperellipse.fromLTRBAndCorners(double left, double top, double right, double bottom, {Radius topLeft = Radius.zero, Radius topRight = Radius.zero, Radius bottomRight = Radius.zero, Radius bottomLeft = Radius.zero})
Construct a rounded rectangle from its left, top, right, and bottom edges, and topLeft, topRight, bottomRight, and bottomLeft radii.
RSuperellipse.fromLTRBR(double left, double top, double right, double bottom, Radius radius)
Construct a rounded rectangle from its left, top, right, and bottom edges, and the same radius in each corner.
RSuperellipse.fromLTRBXY(double left, double top, double right, double bottom, double radiusX, double radiusY)
Construct a rounded rectangle from its left, top, right, and bottom edges, and the same radii along its horizontal axis and its vertical axis.
const
RSuperellipse.fromRectAndCorners(Rect rect, {Radius topLeft = Radius.zero, Radius topRight = Radius.zero, Radius bottomRight = Radius.zero, Radius bottomLeft = Radius.zero})
Construct a rounded rectangle from its bounding box and topLeft, topRight, bottomRight, and bottomLeft radii.
RSuperellipse.fromRectAndRadius(Rect rect, Radius radius)
Construct a rounded rectangle from its bounding box and a radius that is the same in each corner.
RSuperellipse.fromRectXY(Rect rect, double radiusX, double radiusY)
Construct a rounded rectangle from its bounding box and the same radii along its horizontal axis and its vertical axis.

Properties

blRadius Radius
The bottom-left Radius.
no setterinherited
blRadiusX double
The bottom-left horizontal radius.
finalinherited
blRadiusY double
The bottom-left vertical radius.
finalinherited
bottom double
The offset of the bottom edge of this rectangle from the y axis.
finalinherited
brRadius Radius
The bottom-right Radius.
no setterinherited
brRadiusX double
The bottom-right horizontal radius.
finalinherited
brRadiusY double
The bottom-right vertical radius.
finalinherited
center Offset
The offset to the point halfway between the left and right and the top and bottom edges of this rectangle.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
hasNaN bool
Whether any of the dimensions are NaN.
no setterinherited
height double
The distance between the top and bottom edges of this rectangle.
no setterinherited
isCircle bool
Whether this rounded rectangle would draw as a circle.
no setterinherited
isEllipse bool
Whether this rounded rectangle has no side with a straight section.
no setterinherited
isEmpty bool
Whether this rounded rectangle encloses a non-zero area. Negative areas are considered empty.
no setterinherited
isFinite bool
Whether all coordinates of this rounded rectangle are finite.
no setterinherited
isRect bool
Whether this rounded rectangle is a simple rectangle with zero corner radii.
no setterinherited
isStadium bool
Whether this rounded rectangle has a side with no straight section.
no setterinherited
left double
The offset of the left edge of this rectangle from the x axis.
finalinherited
longestSide double
The greater of the magnitudes of the width and the height of this rounded rectangle.
no setterinherited
middleRect Rect
The rectangle that would be formed using the axis-aligned intersection of the sides of the rectangle, i.e., the rectangle formed from the inner-most centers of the ellipses that form the corners. This is the intersection of the wideMiddleRect and the tallMiddleRect. If any of the intersections are void, the resulting Rect will have negative width or height.
no setterinherited
outerRect Rect
The bounding box of this rounded rectangle (the rectangle with no rounded corners).
no setterinherited
The offset of the right edge of this rectangle from the x axis.
finalinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
safeInnerRect Rect
The non-rounded rectangle that is constrained by the smaller of the two diagonals, with each diagonal traveling through the middle of the curve corners. The middle of a corner is the intersection of the curve with its respective quadrant bisector.
no setterinherited
shortestSide double
The lesser of the magnitudes of the width and the height of this rounded rectangle.
no setterinherited
tallMiddleRect Rect
The biggest rectangle that is entirely inside the rounded rectangle and has the full height of the rounded rectangle. If the rounded rectangle does not have an axis-aligned intersection of its top and bottom side, the resulting Rect will have negative width or height.
no setterinherited
tlRadius Radius
The top-left Radius.
no setterinherited
tlRadiusX double
The top-left horizontal radius.
finalinherited
tlRadiusY double
The top-left vertical radius.
finalinherited
top double
The offset of the top edge of this rectangle from the y axis.
finalinherited
trRadius Radius
The top-right Radius.
no setterinherited
trRadiusX double
The top-right horizontal radius.
finalinherited
trRadiusY double
The top-right vertical radius.
finalinherited
wideMiddleRect Rect
The biggest rectangle that is entirely inside the rounded rectangle and has the full width of the rounded rectangle. If the rounded rectangle does not have an axis-aligned intersection of its left and right side, the resulting Rect will have negative width or height.
no setterinherited
width double
The distance between the left and right edges of this rectangle.
no setterinherited

Methods

deflate(double delta) RSuperellipse
Returns a clone with edges and radii moved inwards by the given delta.
inherited
inflate(double delta) RSuperellipse
Returns a clone with edges and radii moved outwards by the given delta.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
scaleRadii() RSuperellipse
Scales all radii so that on each side their sum will not exceed the size of the width/height.
inherited
shift(Offset offset) RSuperellipse
Returns a clone translated by the given offset.
inherited
toString() String
A string representation of this object.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

lerp(RSuperellipse? a, RSuperellipse? b, double t) RSuperellipse?
Linearly interpolate between two rounded superellipses.

Constants

zero → const RSuperellipse
A rounded rectangle with all the values set to zero.