getClip method
Returns a description of the clip given that the render object being clipped is of the given size.
Implementation
@override
Path getClip(Size size) {
var path = Path();
if (type == MessageType.SEND) {
path.moveTo(bubbleRadius, sizeOfNip);
path.lineTo(size.width - sizeOfNip * sizeRatio, sizeOfNip);
path.quadraticBezierTo(size.width - sizeOfNip, sizeOfNip, size.width, 0);
path.quadraticBezierTo(size.width - sizeOfNip, sizeOfNip,
size.width - sizeOfNip, sizeRatio * sizeOfNip);
path.lineTo(size.width - sizeOfNip, size.height - bubbleRadius);
path.arcToPoint(
Offset(size.width - sizeOfNip - bubbleRadius, size.height),
radius: Radius.circular(bubbleRadius));
path.lineTo(bubbleRadius, size.height);
path.arcToPoint(Offset(0, size.height - bubbleRadius),
radius: Radius.circular(bubbleRadius));
path.lineTo(0, bubbleRadius + sizeOfNip);
path.arcToPoint(Offset(bubbleRadius, sizeOfNip),
radius: Radius.circular(bubbleRadius));
} else {
path.quadraticBezierTo(
sizeOfNip, sizeOfNip, sizeRatio * sizeOfNip, sizeOfNip);
path.lineTo(size.width - bubbleRadius, sizeOfNip);
path.arcToPoint(Offset(size.width, sizeOfNip + bubbleRadius),
radius: Radius.circular(bubbleRadius));
path.lineTo(size.width, size.height - bubbleRadius);
path.arcToPoint(Offset(size.width - bubbleRadius, size.height),
radius: Radius.circular(bubbleRadius));
path.lineTo(sizeOfNip + bubbleRadius, size.height);
path.arcToPoint(Offset(sizeOfNip, size.height - bubbleRadius),
radius: Radius.circular(bubbleRadius));
path.lineTo(sizeOfNip, sizeRatio * sizeOfNip);
path.quadraticBezierTo(sizeOfNip, sizeOfNip, 0, 0);
}
path.close();
return path;
}