X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspan-arpeggio-engraver.cc;h=e81dcfe258235f2842b73c92b4072d57d24680f2;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=38df515034ca50fe1def5e7e8a3e236ba617c665;hpb=4a401ca1c60f428daa242dbdd102fdb3f327ebfb;p=lilypond.git diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc index 38df515034..e81dcfe258 100644 --- a/lily/span-arpeggio-engraver.cc +++ b/lily/span-arpeggio-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2011 Jan Nieuwenhuizen + Copyright (C) 2000--2015 Jan Nieuwenhuizen Han-Wen Nienhuys @@ -21,10 +21,11 @@ #include "engraver.hh" #include "arpeggio.hh" +#include "item.hh" #include "pointer-group-interface.hh" +#include "separation-item.hh" #include "side-position-interface.hh" #include "staff-symbol-referencer.hh" -#include "item.hh" /** Make arpeggios that span multiple staves. Catch arpeggios, and span a @@ -35,6 +36,7 @@ class Span_arpeggio_engraver : public Engraver public: TRANSLATOR_DECLARATIONS (Span_arpeggio_engraver); DECLARE_ACKNOWLEDGER (arpeggio); + DECLARE_ACKNOWLEDGER (note_column); protected: void process_acknowledged (); @@ -43,6 +45,7 @@ protected: private: Item *span_arpeggio_; vector arpeggios_; + vector note_columns_; }; Span_arpeggio_engraver::Span_arpeggio_engraver () @@ -57,6 +60,12 @@ Span_arpeggio_engraver::acknowledge_arpeggio (Grob_info info) arpeggios_.push_back (info.grob ()); } +void +Span_arpeggio_engraver::acknowledge_note_column (Grob_info info) +{ + note_columns_.push_back (info.grob ()); +} + void Span_arpeggio_engraver::process_acknowledged () { @@ -69,9 +78,13 @@ Span_arpeggio_engraver::process_acknowledged () */ if (!span_arpeggio_ && arpeggios_.size () > 1 && to_boolean (get_property ("connectArpeggios"))) + span_arpeggio_ = make_item ("Arpeggio", SCM_EOL); + + if (span_arpeggio_) { - span_arpeggio_ = make_item ("Arpeggio", SCM_EOL); - span_arpeggio_->set_property ("cross-staff", SCM_BOOL_T); + for (vsize i = 0; i < note_columns_.size (); i++) + Separation_item::add_conditional_item (note_columns_[i], span_arpeggio_); + note_columns_.clear (); } } @@ -107,11 +120,13 @@ Span_arpeggio_engraver::stop_translation_timestep () span_arpeggio_ = 0; } arpeggios_.clear (); + note_columns_.clear (); } #include "translator.icc" ADD_ACKNOWLEDGER (Span_arpeggio_engraver, arpeggio); +ADD_ACKNOWLEDGER (Span_arpeggio_engraver, note_column); ADD_TRANSLATOR (Span_arpeggio_engraver, /* doc */ "Make arpeggios that span multiple staves.",