paintNote method

void paintNote(
  1. Canvas canvas,
  2. Size size,
  3. Note note,
  4. Offset offset,
)

Implementation

void paintNote(Canvas canvas, Size size, Note note, Offset offset) {
  const double minNoteRadius = 3;
  const double maxNoteRadius = 20;
  const double noteRadiusRangeDiff = maxNoteRadius - minNoteRadius;
  const double minShadowElevation = 1;
  const double maxShadowElevation = 5;
  final double noteRadius = (min(size.width / 2, size.height) * .09)
      .clamp(minNoteRadius, maxNoteRadius);
  final shadowElevation =
      ((noteRadius - minNoteRadius) / noteRadiusRangeDiff) *
          maxShadowElevation;
  final path = Path()
    ..addOval(Rect.fromCircle(center: offset, radius: noteRadius));
  canvas.drawShadow(path, tabContext.noteLabelColor,
      max(minShadowElevation, shadowElevation), false);
  canvas.drawPath(path, tabContext.noteShapePaint);

  final textStyle =
      TextStyle(color: tabContext.noteLabelColor, fontSize: noteRadius * 1.5);
  final textSpan = TextSpan(text: note.fret.toString(), style: textStyle);
  final textPainter = TextPainter(
    text: textSpan,
    textDirection: TextDirection.ltr,
  );
  textPainter.layout();
  textPainter.paint(
      canvas,
      offset -
          Offset(textPainter.size.width / 2, textPainter.size.height / 2));

  if (note.melody) {
    canvas.drawCircle(offset, noteRadius, tabContext.techniquePaint);
  }
}