X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Farpeggio-engraver.cc;h=e0face3d7a0d82fc4a8ee9c235d1cd1053a167be;hb=a6a51abfd0195a3cf7d6ea095cf69808852f21ce;hp=38be529e732570d0a0a37dd42fe352b5e8a72936;hpb=f93e4199873c91ae32f0e84a610d14853dc379df;p=lilypond.git diff --git a/lily/arpeggio-engraver.cc b/lily/arpeggio-engraver.cc index 38be529e73..e0face3d7a 100644 --- a/lily/arpeggio-engraver.cc +++ b/lily/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 LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,14 +19,15 @@ #include "engraver.hh" -#include "pointer-group-interface.hh" #include "arpeggio.hh" -#include "stem.hh" +#include "item.hh" +#include "note-column.hh" +#include "pointer-group-interface.hh" #include "rhythmic-head.hh" +#include "separation-item.hh" #include "side-position-interface.hh" +#include "stem.hh" #include "stream-event.hh" -#include "note-column.hh" -#include "item.hh" #include "translator.icc" @@ -37,22 +38,24 @@ public: void acknowledge_stem (Grob_info); void acknowledge_rhythmic_head (Grob_info); + void acknowledge_note_column (Grob_info); + protected: void process_music (); void stop_translation_timestep (); - DECLARE_TRANSLATOR_LISTENER (arpeggio); + void listen_arpeggio (Stream_event *); private: Item *arpeggio_; Stream_event *arpeggio_event_; }; -Arpeggio_engraver::Arpeggio_engraver () +Arpeggio_engraver::Arpeggio_engraver (Context *c) + : Engraver (c) { arpeggio_ = 0; arpeggio_event_ = 0; } -IMPLEMENT_TRANSLATOR_LISTENER (Arpeggio_engraver, arpeggio); void Arpeggio_engraver::listen_arpeggio (Stream_event *ev) { ASSIGN_EVENT_ONCE (arpeggio_event_, ev); @@ -83,6 +86,13 @@ Arpeggio_engraver::acknowledge_rhythmic_head (Grob_info info) Side_position_interface::add_support (arpeggio_, info.grob ()); } +void +Arpeggio_engraver::acknowledge_note_column (Grob_info info) +{ + if (arpeggio_) + Separation_item::add_conditional_item (info.grob (), arpeggio_); +} + void Arpeggio_engraver::process_music () { @@ -99,8 +109,15 @@ Arpeggio_engraver::stop_translation_timestep () arpeggio_event_ = 0; } -ADD_ACKNOWLEDGER (Arpeggio_engraver, stem); -ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head); + +void +Arpeggio_engraver::boot () +{ + ADD_LISTENER (Arpeggio_engraver, arpeggio); + ADD_ACKNOWLEDGER (Arpeggio_engraver, stem); + ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head); + ADD_ACKNOWLEDGER (Arpeggio_engraver, note_column); +} ADD_TRANSLATOR (Arpeggio_engraver, /* doc */