toSegments method
Converts this shape to path segments.
Implementation
@override
List<Segment> toSegments() {
final rx = oval.width / 2;
final ry = oval.height / 2;
final cx = oval.center.dx;
final cy = oval.center.dy;
const factor = ((-1 + sqrt2) / 3) * 4;
final dx = rx * factor;
final dy = ry * factor;
return [
MoveSegment(end: oval.centerLeft),
CubicSegment(
control1: Offset(oval.left, cy - dy),
control2: Offset(cx - dx, oval.top),
end: oval.topCenter,
tag: SegmentTags.top),
CubicSegment(
control1: Offset(cx + dx, oval.top),
control2: Offset(oval.right, cy - dy),
end: oval.centerRight,
tag: SegmentTags.right),
CubicSegment(
control1: Offset(oval.right, cy + dy),
control2: Offset(cx + dx, oval.bottom),
end: oval.bottomCenter,
tag: SegmentTags.bottom),
CubicSegment(
control1: Offset(cx - dx, oval.bottom),
control2: Offset(oval.left, cy + dy),
end: oval.centerLeft,
tag: SegmentTags.left),
CloseSegment(),
];
}