generateCurlyBraceDrawable method

String generateCurlyBraceDrawable(
  1. ChantContext ctxt,
  2. double x1,
  3. double x2,
  4. double y,
  5. bool isAbove,
)

Implementation

String generateCurlyBraceDrawable(
  ChantContext ctxt,
  double x1,
  double x2,
  double y,
  bool isAbove,
) {
  double h;

  if (isAbove) {
    h = -ctxt.staffInterval / 2;
  } else {
    h = ctxt.staffInterval / 2;
  }

  final q = 0.6;
  final len = x2 - x1;

  final qx1 = x1;
  final qy1 = y + q * h;
  final qx2 = x1 + 0.25 * len;
  final qy2 = y + (1 - q) * h;
  final tx1 = x1 + 0.5 * len;
  final ty1 = y + h;
  final qx3 = x2;
  final qy3 = y + q * h;
  final qx4 = x1 + 0.75 * len;
  final qy4 = y + (1 - q) * h;
  final d =
      'M $x1 $y Q $qx1 $qy1 $qx2 $qy2 T $tx1 $ty1 M $x2 $y Q $qx3 $qy3 $qx4 $qy4 T $tx1 $ty1';

  return QuickSvg.createFragment('path', {
    'd': d,
    'stroke': ctxt.theme.neumeColor.toSvgString(),
    'stroke-width': '${ctxt.neumeLineWeight}px',
    'fill': 'none',
  });
}