-
- SCM accs = a->get_property ("accidentals");
- SCM scm_style = a->get_property ("style");
- if (!scm_is_symbol (scm_style)
- && !parens
- && scm_ilength (accs) == 1)
- {
- switch (scm_to_int (scm_car (accs)))
- {
- case FLAT:
- {
- Box stem = b;
- Box bulb = b;
-
- /*
- we could make the stem thinner, but that places the flats
- really close.
- */
- stem[X_AXIS][RIGHT] *= .5;
-
- /*
- To prevent vertical alignment for 6ths
- */
- stem[Y_AXIS] *= 1.1;
- bulb[Y_AXIS][UP] *= .35;
-
- boxes.push (bulb);
- boxes.push (stem);
- }
- break;
- case NATURAL:
- {
- Box lstem = b;
- Box rstem = b;
- Box belly = b;
-
- lstem[Y_AXIS] *= 1.1;
- rstem[Y_AXIS] *= 1.1;
-
- belly[Y_AXIS] *= 0.75;
- lstem[X_AXIS][RIGHT] *= .33;
- rstem[X_AXIS][LEFT] = rstem[X_AXIS].linear_combination (1.0 / 3.0);
- lstem[Y_AXIS][DOWN] = belly[Y_AXIS][DOWN];
- rstem[Y_AXIS][UP] = belly[Y_AXIS][UP];
- boxes.push (belly);
- boxes.push (lstem);
- boxes.push (rstem);
- }
- break;
- /*
- TODO: add support for, double flat.
- */
- }
- }
-
- if (!boxes.size ())
- boxes.push (b);
-
- Offset o (a->relative_coordinate (common[X_AXIS], X_AXIS),
- a->relative_coordinate (common[Y_AXIS], Y_AXIS));
- for (int i = boxes.size (); i--;)
- boxes[i].translate (o);
-
- return boxes;