arc method

void arc({
  1. required Ellipse ellipse,
  2. required double startAngle,
  3. required double endAngle,
  4. ArcMode mode = ArcMode.openStrokePieFill,
})

Implementation

void arc({
  required Ellipse ellipse,
  required double startAngle,
  required double endAngle,
  ArcMode mode = ArcMode.openStrokePieFill,
}) {
  switch (mode) {
    case ArcMode.openStrokePieFill:
      _paintingContext.canvas
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, true, _paintingContext.fillPaint)
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, false, _paintingContext.strokePaint);
      break;
    case ArcMode.open:
      _paintingContext.canvas
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, false, _paintingContext.fillPaint)
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, false, _paintingContext.strokePaint);
      break;
    case ArcMode.chord:
      final chordPath = Path()
        ..addArc(ellipse.rect, startAngle, endAngle - startAngle)
        ..close();

      _paintingContext.canvas
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, false, _paintingContext.fillPaint)
        ..drawPath(chordPath, _paintingContext.strokePaint);
      break;
    case ArcMode.pie:
      _paintingContext.canvas
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, true, _paintingContext.fillPaint)
        ..drawArc(ellipse.rect, startAngle, endAngle - startAngle, true, _paintingContext.strokePaint);
      break;
  }

  _paintingContext.markHasUnappliedCanvasCommands();
}