pointToCanvas method

Offset pointToCanvas(
  1. ChartDataPoint point,
  2. Size size,
  3. double minX,
  4. double maxX,
  5. double minY,
  6. double maxY,
)

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);
}