X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpart-combine-engraver.cc;h=44e9a81a6587ed989cf7a8256b3bf026ce0a4528;hb=811be522d0b79493159f47789e5621dc85493495;hp=b32b83236fd820d8504d702f59a5c2630a9fba65;hpb=58bcc84c9480dae1b21bc24d8396b91fe19e0131;p=lilypond.git diff --git a/lily/part-combine-engraver.cc b/lily/part-combine-engraver.cc index b32b83236f..44e9a81a65 100644 --- a/lily/part-combine-engraver.cc +++ b/lily/part-combine-engraver.cc @@ -9,7 +9,7 @@ */ #include "engraver.hh" -#include "text-item.hh" +#include "text-interface.hh" #include "note-head.hh" #include "stem.hh" #include "side-position-interface.hh" @@ -20,9 +20,11 @@ class Part_combine_engraver : public Engraver TRANSLATOR_DECLARATIONS (Part_combine_engraver); protected: - virtual void acknowledge_grob (Grob_info); - virtual void process_music (); - virtual void stop_translation_timestep (); + DECLARE_ACKNOWLEDGER (note_head); + DECLARE_ACKNOWLEDGER (stem); + + void process_music (); + void stop_translation_timestep (); virtual bool try_music (Music *); private: Item *text_; @@ -66,25 +68,25 @@ Part_combine_engraver::process_music () } void -Part_combine_engraver::acknowledge_grob (Grob_info i) +Part_combine_engraver::acknowledge_note_head (Grob_info i) { if (text_) { - if (Note_head::has_interface (i.grob_)) - { - Grob *t = text_; - Side_position_interface::add_support (t, i.grob_); - if (Side_position_interface::get_axis (t) == X_AXIS - && !t->get_parent (Y_AXIS)) - t->set_parent (i.grob_, Y_AXIS); - } - if (Stem::has_interface (i.grob_)) - { - Side_position_interface::add_support (text_, i.grob_); - } + Grob *t = text_; + Side_position_interface::add_support (t, i.grob ()); + if (Side_position_interface::get_axis (t) == X_AXIS + && !t->get_parent (Y_AXIS)) + t->set_parent (i.grob (), Y_AXIS); } } +void +Part_combine_engraver::acknowledge_stem (Grob_info i) +{ + if (text_) + Side_position_interface::add_support (text_, i.grob ()); +} + void Part_combine_engraver::stop_translation_timestep () { @@ -92,12 +94,14 @@ Part_combine_engraver::stop_translation_timestep () event_ = 0; } +#include "translator.icc" +ADD_ACKNOWLEDGER (Part_combine_engraver, note_head); +ADD_ACKNOWLEDGER (Part_combine_engraver, stem); ADD_TRANSLATOR (Part_combine_engraver, /* descr */ "Part combine engraver for orchestral scores: " "Print markings a2, Solo, Solo II, and unisono ", /* creats*/ "CombineTextScript", /* accepts */ "part-combine-event", - /* acks */ "multi-measure-rest-interface " - "slur-interface stem-interface note-head-interface", - /* reads */ "printPartCombineTexts", + /* reads */ "printPartCombineTexts soloText soloIIText " + "aDueText", /* write */ "");