drawLine method

void drawLine(
  1. int x0,
  2. int y0,
  3. int x1,
  4. int y1, {
  5. bool value = true,
  6. bool antiAliased = false,
  7. Style? cellStyle,
})

Draws a line from (x0, y0) to (x1, y1) in sub-pixel coordinates.

Implementation

void drawLine(
  int x0,
  int y0,
  int x1,
  int y1, {
  bool value = true,
  bool antiAliased = false,
  Style? cellStyle,
}) {
  final dx = (x1 - x0).abs();
  final dy = (y1 - y0).abs();
  final sx = x0 < x1 ? 1 : -1;
  final sy = y0 < y1 ? 1 : -1;
  var err = dx - dy;

  while (true) {
    setPixel(x0, y0, value, antiAliased: antiAliased, cellStyle: cellStyle);
    if (x0 == x1 && y0 == y1) break;
    final e2 = err * 2;
    if (e2 > -dy) {
      err -= dy;
      x0 += sx;
    }
    if (e2 < dx) {
      err += dx;
      y0 += sy;
    }
  }
}