X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgregorian-ligature-engraver.cc;h=6a99e3946e71ab0ed0655ab1cc7f69e3de04d266;hb=621e5fb6a5c3cb67c46082e561cffad691ead30c;hp=29d8f40d3e3827db36fd9624e44f9f512f65dd2d;hpb=75eebcb49e52d296b1da3e1074e0825d2c780db4;p=lilypond.git diff --git a/lily/gregorian-ligature-engraver.cc b/lily/gregorian-ligature-engraver.cc index 29d8f40d3e..6a99e3946e 100644 --- a/lily/gregorian-ligature-engraver.cc +++ b/lily/gregorian-ligature-engraver.cc @@ -9,11 +9,13 @@ #include "gregorian-ligature-engraver.hh" #include "gregorian-ligature.hh" -#include "warn.hh" -#include "staff-symbol-referencer.hh" -#include "spanner.hh" +#include "international.hh" #include "paper-column.hh" #include "pitch.hh" +#include "spanner.hh" +#include "staff-symbol-referencer.hh" +#include "stream-event.hh" +#include "warn.hh" /* * This abstract class is the common superclass for all ligature @@ -31,16 +33,10 @@ Gregorian_ligature_engraver::Gregorian_ligature_engraver () pes_or_flexa_req_ = 0; } -bool -Gregorian_ligature_engraver::try_music (Music *m) +void +Gregorian_ligature_engraver::listen_pes_or_flexa (Stream_event *ev) { - if (m->is_mus_type ("pes-or-flexa-event")) - { - pes_or_flexa_req_ = m; - return true; - } - else - return Ligature_engraver::try_music (m); + pes_or_flexa_req_ = ev; } void fix_prefix (char *name, int mask, @@ -83,10 +79,10 @@ void fix_prefix_set (int *current_set, int min_set, int max_set, Grob *primitive fix_prefix ("pes_or_flexa", LINEA, current_set, min_set, max_set, primitive); } -void check_and_fix_all_prefixes (Array primitives) +void check_and_fix_all_prefixes (vector primitives) { /* Check for illegal head modifier combinations */ - for (int i = 0; i < primitives.size (); i++) + for (vsize i = 0; i < primitives.size (); i++) { Grob *primitive = primitives[i].grob (); @@ -194,18 +190,18 @@ void check_and_fix_all_prefixes (Array primitives) * Marks those heads that participate in a pes or flexa. */ void -provide_context_info (Array primitives) +provide_context_info (vector primitives) { Grob *prev_primitive = 0; int prev_prefix_set = 0; int prev_context_info = 0; int prev_pitch = 0; - for (int i = 0; i < primitives.size (); i++) + for (vsize i = 0; i < primitives.size (); i++) { Grob *primitive = primitives[i].grob (); - Music *music_cause = primitives[i].music_cause (); + Stream_event *event_cause = primitives[i].event_cause (); int context_info = 0; - int pitch = unsmob_pitch (music_cause->get_property ("pitch"))->steps (); + int pitch = unsmob_pitch (event_cause->get_property ("pitch"))->steps (); int prefix_set = scm_to_int (primitive->get_property ("prefix-set")); if (prefix_set & PES_OR_FLEXA) @@ -241,7 +237,7 @@ provide_context_info (Array primitives) void Gregorian_ligature_engraver::build_ligature (Spanner *ligature, - Array primitives) + vector primitives) { // apply style-independent checking and transformation check_and_fix_all_prefixes (primitives);