X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faccidental.cc;h=060c97849dcc6dc7ad37924368580512b8c3c8c2;hb=424dee2dd114c4b69c3b58d2ef61e310e5d492f8;hp=94f92f3a72fe55860a37224e500b7ac0fae4557c;hpb=b37e3f652677ae0298423db9fa0e552e5fce0c92;p=lilypond.git diff --git a/lily/accidental.cc b/lily/accidental.cc index 94f92f3a72..060c97849d 100644 --- a/lily/accidental.cc +++ b/lily/accidental.cc @@ -47,19 +47,23 @@ Accidental_interface::after_line_breaking (SCM smob) Grob *me = unsmob_grob (smob); Grob *tie = unsmob_grob (me->get_object ("tie")); - if (tie && !tie->original ()) - me->suicide (); + if (tie && !tie->original () + && !to_boolean (me->get_property ("forced"))) + { + me->suicide (); + } + return SCM_UNSPECIFIED; } -Array +vector Accidental_interface::accurate_boxes (Grob *a, Grob **common) { Box b; b[X_AXIS] = a->extent (a, X_AXIS); b[Y_AXIS] = a->extent (a, Y_AXIS); - Array boxes; + vector boxes; bool parens = false; if (to_boolean (a->get_property ("cautionary"))) @@ -93,8 +97,8 @@ Accidental_interface::accurate_boxes (Grob *a, Grob **common) stem[Y_AXIS] *= 1.1; bulb[Y_AXIS][UP] *= .35; - boxes.push (bulb); - boxes.push (stem); + boxes.push_back (bulb); + boxes.push_back (stem); } break; case NATURAL: @@ -111,9 +115,9 @@ Accidental_interface::accurate_boxes (Grob *a, Grob **common) 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); + boxes.push_back (belly); + boxes.push_back (lstem); + boxes.push_back (rstem); } break; /* @@ -123,11 +127,11 @@ Accidental_interface::accurate_boxes (Grob *a, Grob **common) } if (!boxes.size ()) - boxes.push (b); + boxes.push_back (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--;) + for (vsize i = boxes.size (); i--;) boxes[i].translate (o); return boxes; @@ -142,8 +146,8 @@ Accidental_interface::accurate_boxes (Grob *a, Grob **common) /* todo: this sort of stuff in Scheme. --hwn. */ -std::string -Accidental_interface::get_fontcharname (std::string style, int alteration) +string +Accidental_interface::get_fontcharname (string style, int alteration) { if (alteration == DOUBLE_FLAT || alteration == DOUBLE_SHARP) @@ -202,7 +206,7 @@ Accidental_interface::print (SCM smob) } SCM scm_style = me->get_property ("style"); - std::string style; + string style; if (scm_is_symbol (scm_style)) style = ly_symbol2string (scm_style); else @@ -232,7 +236,7 @@ Accidental_interface::print (SCM smob) scm_is_pair (s); s = scm_cdr (s)) { int alteration = scm_to_int (scm_car (s)); - std::string font_char = get_fontcharname (style, alteration); + string font_char = get_fontcharname (style, alteration); Stencil acc (fm->find_by_name ("accidentals." + font_char)); if (acc.is_empty ()) @@ -250,12 +254,13 @@ Accidental_interface::print (SCM smob) /* TODO: should move avoid-slur into item? */ -ADD_INTERFACE (Accidental_interface, "accidental-interface", +ADD_INTERFACE (Accidental_interface, "a single accidental", "accidentals " "avoid-slur " "cautionary " "cautionary-style " + "forced " "style " "tie " );