drawEllipse method

void drawEllipse(
  1. double x,
  2. double y,
  3. double r1,
  4. double r2, {
  5. bool clockwise = true,
})

Draws an ellipse

Use clockwise=false to draw the inside of a donut

Implementation

void drawEllipse(
  double x,
  double y,
  double r1,
  double r2, {
  bool clockwise = true,
}) {
  moveTo(x, y - r2);
  if (clockwise) {
    curveTo(x + _m4 * r1, y - r2, x + r1, y - _m4 * r2, x + r1, y);
    curveTo(x + r1, y + _m4 * r2, x + _m4 * r1, y + r2, x, y + r2);
    curveTo(x - _m4 * r1, y + r2, x - r1, y + _m4 * r2, x - r1, y);
    curveTo(x - r1, y - _m4 * r2, x - _m4 * r1, y - r2, x, y - r2);
  } else {
    curveTo(x - _m4 * r1, y - r2, x - r1, y - _m4 * r2, x - r1, y);
    curveTo(x - r1, y + _m4 * r2, x - _m4 * r1, y + r2, x, y + r2);
    curveTo(x + _m4 * r1, y + r2, x + r1, y + _m4 * r2, x + r1, y);
    curveTo(x + r1, y - _m4 * r2, x + _m4 * r1, y - r2, x, y - r2);
  }
}