X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmelody-spanner.cc;h=3550e8938240d13abd1b4f1ff76a0bb2d9f6916e;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=4af7efd7e02b2899c0e0faed58e776f9f0294060;hpb=b7a0cffbf9d1069860368f289a5b50e9d1d90ba8;p=lilypond.git diff --git a/lily/melody-spanner.cc b/lily/melody-spanner.cc index 4af7efd7e0..3550e89382 100644 --- a/lily/melody-spanner.cc +++ b/lily/melody-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2009 Han-Wen Nienhuys + Copyright (C) 2005--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -27,7 +27,6 @@ let's take item for now. */ - /* Interpolate stem directions for neutral stems. */ @@ -35,11 +34,11 @@ MAKE_SCHEME_CALLBACK (Melody_spanner, calc_neutral_stem_direction, 1); SCM Melody_spanner::calc_neutral_stem_direction (SCM smob) { - Grob *stem = unsmob_grob (smob); - Grob *me = unsmob_grob (stem->get_object ("melody-spanner")); + Grob *stem = unsmob (smob); + Grob *me = unsmob (stem->get_object ("melody-spanner")); if (!me || !me->is_live ()) return scm_from_int (DOWN); - + extract_grob_set (me, "stems", stems); vector dirs; @@ -49,47 +48,47 @@ Melody_spanner::calc_neutral_stem_direction (SCM smob) vsize last_nonneutral = VPOS; vsize next_nonneutral = 0; while (next_nonneutral != VPOS && next_nonneutral < dirs.size () - && !dirs[next_nonneutral]) + && !dirs[next_nonneutral]) next_nonneutral++; SCM retval = SCM_EOL; - while (last_nonneutral == VPOS || last_nonneutral + 1 < dirs.size ()) + while (last_nonneutral == VPOS || last_nonneutral + 1 < dirs.size ()) { Direction d1 = CENTER; Direction d2 = CENTER; if (last_nonneutral != VPOS) - d1 = dirs[last_nonneutral]; + d1 = dirs[last_nonneutral]; if (next_nonneutral < dirs.size ()) - d2 = dirs[next_nonneutral]; + d2 = dirs[next_nonneutral]; Direction total = CENTER; if (d1 && d1 == d2) - total = d1; + total = d1; else if (d1 && !d2) - total = d1; + total = d1; else if (d2 && !d1) - total = d2; + total = d2; else - total = to_dir (me->get_property ("neutral-direction")); - - for (vsize i = last_nonneutral + 1; i < next_nonneutral; i++) - { - if (stems[i] == stem) - retval = scm_from_int (total); - else - stems[i]->set_property ("neutral-direction", scm_from_int (total)); - } + total = to_dir (me->get_property ("neutral-direction")); + + for (vsize i = last_nonneutral + 1; i < next_nonneutral; i++) + { + if (stems[i] == stem) + retval = scm_from_int (total); + else + stems[i]->set_property ("neutral-direction", scm_from_int (total)); + } last_nonneutral = next_nonneutral; while (last_nonneutral < dirs.size () - && dirs[last_nonneutral]) - last_nonneutral++; + && dirs[last_nonneutral]) + last_nonneutral++; next_nonneutral = last_nonneutral; last_nonneutral--; while (next_nonneutral < dirs.size () - && !dirs[next_nonneutral]) - next_nonneutral++; + && !dirs[next_nonneutral]) + next_nonneutral++; } return retval; @@ -104,11 +103,10 @@ Melody_spanner::add_stem (Grob *me, Grob *stem) } ADD_INTERFACE (Melody_spanner, - "Context dependent typesetting decisions.", + "Context dependent typesetting decisions.", - /* properties */ - "stems " - "neutral-direction " - ); + /* properties */ + "stems " + "neutral-direction " + ); -