pointToCanvas method
Convert data point to canvas coordinates (optimized)
Implementation
Offset pointToCanvas(
ChartDataPoint point,
Size size,
double minX,
double maxX,
double minY,
double maxY,
) {
// Validate inputs
if (!point.x.isFinite || !point.y.isFinite) {
return Offset(size.width / 2, size.height / 2);
}
if (!size.width.isFinite ||
!size.height.isFinite ||
size.width <= 0 ||
size.height <= 0) {
return const Offset(0, 0);
}
if (!minX.isFinite || !maxX.isFinite || !minY.isFinite || !maxY.isFinite) {
return Offset(size.width / 2, size.height / 2);
}
// Pre-calculate ranges for better performance
final xRange = maxX - minX;
final yRange = maxY - minY;
// Avoid division by zero or invalid ranges
if (xRange <= 0 || !xRange.isFinite || yRange <= 0 || !yRange.isFinite) {
return Offset(size.width / 2, size.height / 2);
}
// Calculate coordinates with validation
final x = ((point.x - minX) / xRange) * size.width;
final y = size.height - ((point.y - minY) / yRange) * size.height;
// Validate calculated values are finite before returning
if (!x.isFinite || !y.isFinite) {
return Offset(size.width / 2, size.height / 2);
}
return Offset(x, y);
}