drawLine method

void drawLine(
  1. int x0,
  2. int y0,
  3. int x1,
  4. int y1,
  5. bool color,
)

draw a line using Bresenham's line algorithm

Implementation

void drawLine(int x0, int y0, int x1, int y1, bool color) {
  final dx = (x1 - x0).abs();
  final sx = x0 < x1 ? 1 : -1;
  final dy = (y1 - y0).abs();
  final sy = y0 < y1 ? 1 : -1;

  var err = (dx > dy ? dx : -dy) / 2;

  while (true) {
    drawPixel(x0, y0, color);

    if (x0 == x1 && y0 == y1) break;

    final e2 = err;

    if (e2 > -dx) {
      err -= dy;
      x0 += sx;
    }
    if (e2 < dy) {
      err += dx;
      y0 += sy;
    }
  }
}