X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faccidental.cc;h=dd5634d5d9ff28401d3c11dccaa05827516ad5ce;hb=5cc390968095201b69f142ad01842ac3f08144a2;hp=cbbbec7f2cade6daac4ffec37380a1d977f81d0a;hpb=d7be2ca7f331d94c9525bb0658f7e767c5e39230;p=lilypond.git diff --git a/lily/accidental.cc b/lily/accidental.cc index cbbbec7f2c..dd5634d5d9 100644 --- a/lily/accidental.cc +++ b/lily/accidental.cc @@ -1,7 +1,15 @@ +/* + accidental.cc -- implement Accidental_interface + + (c) 2001--2004 Han-Wen Nienhuys + + */ #include "font-interface.hh" #include "item.hh" #include "molecule.hh" #include "accidental-interface.hh" +#include "paper-def.hh" +#include "pitch.hh" /* TODO: insert support for smaller cautionaries, tie-break-reminders. @@ -62,7 +70,7 @@ Accidental_interface::accurate_boxes (Grob *a,Grob**common) && !parens && scm_ilength (accs) == 1) { - if (gh_scm2int (gh_car (accs)) == -1) + if (gh_scm2int (gh_car (accs)) == FLAT) { Box stem = b; Box bulb = b; @@ -77,6 +85,7 @@ Accidental_interface::accurate_boxes (Grob *a,Grob**common) boxes.push (bulb); boxes.push (stem); } + /* TODO: add support for natural, double flat. */ @@ -100,45 +109,48 @@ Accidental_interface::accurate_boxes (Grob *a,Grob**common) * is currently no sharp accidental in vaticana style. In these cases * this function falls back to one of the other styles. */ + +/* + todo: this sort of stuff in Scheme. --hwn. + */ String -Accidental_interface::get_fontcharname(String style, int alteration) +Accidental_interface::get_fontcharname (String style, int alteration) { + if (alteration == DOUBLE_FLAT + || alteration == DOUBLE_SHARP) + { + return to_string (alteration); + } + if (style == "hufnagel") switch (alteration) { - case -2: return "-2"; - case -1: return "hufnagel-1"; + case FLAT: return "hufnagel-1"; case 0: return "vaticana0"; - case 1: return "mensural1"; - case 2: return "2"; + case SHARP: return "mensural1"; } if (style == "medicaea") switch (alteration) { - case -2: return "-2"; - case -1: return "medicaea-1"; + case FLAT: return "medicaea-1"; case 0: return "vaticana0"; - case 1: return "mensural1"; - case 2: return "2"; + case SHARP: return "mensural1"; } if (style == "vaticana") switch (alteration) { - case -2: return "-2"; - case -1: return "vaticana-1"; + case FLAT: return "vaticana-1"; case 0: return "vaticana0"; - case 1: return "mensural1"; - case 2: return "2"; + case SHARP: return "mensural1"; } if (style == "mensural") switch (alteration) { - case -2: return "-2"; - case -1: return "mensural-1"; + case FLAT: return "mensural-1"; case 0: return "vaticana0"; - case 1: return "mensural1"; - case 2: return "2"; + case SHARP: return "mensural1"; } + if (style == "neo_mensural") style = ""; // currently same as default if (style == "default") @@ -146,9 +158,9 @@ Accidental_interface::get_fontcharname(String style, int alteration) return style + to_string (alteration); } -MAKE_SCHEME_CALLBACK (Accidental_interface,brew_molecule,1); +MAKE_SCHEME_CALLBACK (Accidental_interface,print,1); SCM -Accidental_interface::brew_molecule (SCM smob) +Accidental_interface::print (SCM smob) { Grob *me = unsmob_grob (smob); bool smaller = false; @@ -184,7 +196,7 @@ Accidental_interface::brew_molecule (SCM smob) (ly_symbol2scm ("font-relative-size"), scm_int2num (-1)), SCM_EOL), ac); - fm = Font_interface::get_font (me, ac); + fm = select_font (me->get_paper (), ac); } else fm = Font_interface::get_default_font (me); @@ -197,7 +209,7 @@ Accidental_interface::brew_molecule (SCM smob) String font_char = get_fontcharname (style, alteration); Molecule acc (fm->find_by_name ("accidentals-" + font_char)); - if (acc.empty_b()) + if (acc.is_empty ()) { me->warning (_f ("accidental `%s' not found", font_char)); }