drawGridLines method

void drawGridLines(
  1. Canvas canvas,
  2. Size size
)

Implementation

void drawGridLines(Canvas canvas, Size size) {
  final adaptiveStep = calculateAdaptiveStep(scale);
  final gridLinePaint = Paint()
    ..strokeWidth = theme.gridWidth
    ..color = theme.gridColor;
  final primaryAxisPaint = Paint()
    ..strokeWidth = theme.axisWidth
    ..color = theme.axisColor;

  final startXBound =
      ((-origin.dx) / scale / adaptiveStep).floor() * adaptiveStep;
  final endXBound =
      ((size.width - origin.dx) / scale / adaptiveStep).ceil() * adaptiveStep;
  final startYBound =
      (-(size.height - origin.dy) / scale / adaptiveStep).floor() *
          adaptiveStep;
  final endYBound = (origin.dy / scale / adaptiveStep).ceil() * adaptiveStep;

  for (double xValue = startXBound;
      xValue <= endXBound + adaptiveStep;
      xValue += adaptiveStep) {
    final pixelX = origin.dx + xValue * scale;
    canvas.drawLine(
      Offset(pixelX, 0),
      Offset(pixelX, size.height),
      xValue.abs() < 1e-9 ? primaryAxisPaint : gridLinePaint,
    );
  }
  for (double yValue = startYBound;
      yValue <= endYBound + adaptiveStep;
      yValue += adaptiveStep) {
    final pixelY = origin.dy - yValue * scale;
    canvas.drawLine(
      Offset(0, pixelY),
      Offset(size.width, pixelY),
      yValue.abs() < 1e-9 ? primaryAxisPaint : gridLinePaint,
    );
  }
}