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.lineTo(size.width - bubbleRadius - sizeOfNip, 0);
path.arcToPoint(Offset(size.width - sizeOfNip, bubbleRadius),
radius: Radius.circular(bubbleRadius));
path.lineTo(size.width - sizeOfNip, size.height - sizeRatio * sizeOfNip);
path.quadraticBezierTo(size.width - sizeOfNip, size.height - sizeOfNip,
size.width, size.height);
path.quadraticBezierTo(size.width - sizeOfNip, size.height - sizeOfNip,
size.width - sizeRatio * sizeOfNip, size.height - sizeOfNip);
path.lineTo(bubbleRadius, size.height - sizeOfNip);
path.arcToPoint(Offset(0, size.height - bubbleRadius - sizeOfNip),
radius: Radius.circular(bubbleRadius));
path.lineTo(0, bubbleRadius);
path.arcToPoint(Offset(bubbleRadius, 0),
radius: Radius.circular(bubbleRadius));
} else {
path.lineTo(size.width - bubbleRadius, 0);
path.arcToPoint(Offset(size.width, bubbleRadius),
radius: Radius.circular(bubbleRadius));
path.lineTo(size.width, size.height - bubbleRadius - sizeOfNip);
path.arcToPoint(
Offset(size.width - bubbleRadius, size.height - sizeOfNip),
radius: Radius.circular(bubbleRadius));
path.lineTo(sizeRatio * sizeOfNip, size.height - sizeOfNip);
path.quadraticBezierTo(
sizeOfNip, size.height - sizeOfNip, 0, size.height);
path.quadraticBezierTo(sizeOfNip, size.height - sizeOfNip, sizeOfNip,
size.height - sizeRatio * sizeOfNip);
path.lineTo(sizeOfNip, bubbleRadius);
path.arcToPoint(Offset(bubbleRadius + sizeOfNip, 0),
radius: Radius.circular(bubbleRadius));
}
path.close();
return path;
}