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);
  }
}