drawGridLines method
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,
);
}
}