drawCircle method

void drawCircle(
  1. int x0,
  2. int y0,
  3. int r,
  4. bool color,
)

Draw a circle outline

This method is ad verbatim translation from the corresponding method on the Adafruit GFX library https://github.com/adafruit/Adafruit-GFX-Library

Implementation

void drawCircle(
  int x0,
  int y0,
  int r,
  bool color,
) {
  var f = 1 - r;
  var ddF_x = 1;
  var ddF_y = -2 * r;
  var x = 0;
  var y = r;

  [
    [x0, y0 + r, color],
    [x0, y0 - r, color],
    [x0 + r, y0, color],
    [x0 - r, y0, color],
  ].forEach(
    (e) {
      drawPixel(e[0] as int, e[1] as int, e[2] as bool);
    },
  );

  while (x < y) {
    if (f >= 0) {
      y--;
      ddF_y += 2;
      f += ddF_y;
    }
    x++;
    ddF_x += 2;
    f += ddF_x;

    [
      [x0 + x, y0 + y, color],
      [x0 - x, y0 + y, color],
      [x0 + x, y0 - y, color],
      [x0 - x, y0 - y, color],
      [x0 + y, y0 + x, color],
      [x0 - y, y0 + x, color],
      [x0 + y, y0 - x, color],
      [x0 - y, y0 - x, color],
    ].forEach(
      (e) {
        drawPixel(e[0] as int, e[1] as int, e[2] as bool);
      },
    );
  }
}