X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column-engraver.cc;h=6dd29300130878be798fc0bfb9670035874d02a7;hb=8659a99f233f5c4684292728e7ad4206669b35b0;hp=b92abe8171da0747fce745c7cc9b7ff1af81e428;hpb=809acd76be2af232cb4cbc43f86dad820bf97ae0;p=lilypond.git diff --git a/lily/paper-column-engraver.cc b/lily/paper-column-engraver.cc index b92abe8171..6dd2930013 100644 --- a/lily/paper-column-engraver.cc +++ b/lily/paper-column-engraver.cc @@ -18,7 +18,6 @@ */ #include "paper-column-engraver.hh" -#include "system.hh" #include "international.hh" #include "accidental-placement.hh" #include "accidental-interface.hh" @@ -35,7 +34,8 @@ #include "translator.icc" -Paper_column_engraver::Paper_column_engraver () +Paper_column_engraver::Paper_column_engraver (Context *c) + : Engraver (c) { last_moment_.main_part_ = Rational (-1, 1); command_column_ = 0; @@ -98,7 +98,7 @@ Paper_column_engraver::make_columns () void Paper_column_engraver::initialize () { - system_ = derived_unsmob (get_property ("rootSystem")); + system_ = unsmob (get_property ("rootSystem")); make_columns (); system_->set_bound (LEFT, command_column_); @@ -143,14 +143,12 @@ Paper_column_engraver::set_columns (Paper_column *new_command, system_->add_column (musical_column_); } -IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, break); void Paper_column_engraver::listen_break (Stream_event *ev) { break_events_.push_back (ev); } -IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, label); void Paper_column_engraver::listen_label (Stream_event *ev) { @@ -214,7 +212,7 @@ Paper_column_engraver::process_music () if (start_of_measure) { Moment mlen = Moment (measure_length (context ())); - Grob *column = Grob::unsmob (get_property ("currentCommandColumn")); + Grob *column = unsmob (get_property ("currentCommandColumn")); if (column) column->set_property ("measure-length", mlen.smobbed_copy ()); else @@ -232,6 +230,18 @@ Paper_column_engraver::stop_translation_timestep () command_column_->set_property ("when", m); musical_column_->set_property ("when", m); + SCM mpos = get_property ("measurePosition"); + SCM barnum = get_property ("internalBarNumber"); + if (unsmob (mpos) + && scm_is_integer (barnum)) + { + SCM where = scm_cons (barnum, + mpos); + + command_column_->set_property ("rhythmic-location", where); + musical_column_->set_property ("rhythmic-location", where); + } + for (vsize i = 0; i < items_.size (); i++) { Item *elem = items_[i]; @@ -239,13 +249,13 @@ Paper_column_engraver::stop_translation_timestep () if (!elem->get_parent (X_AXIS)) elem->set_parent (col, X_AXIS); - if (!Grob::is_smob (elem->get_object ("axis-group-parent-X"))) + if (!unsmob (elem->get_object ("axis-group-parent-X"))) elem->set_object ("axis-group-parent-X", col->self_scm ()); - if (Accidental_placement::has_interface (elem) - || Arpeggio::has_interface (elem)) + if (has_interface (elem) + || has_interface (elem)) Separation_item::add_conditional_item (col, elem); - else if (!Accidental_interface::has_interface (elem)) + else if (!has_interface (elem)) Separation_item::add_item (col, elem); } items_.clear (); @@ -277,18 +287,6 @@ Paper_column_engraver::stop_translation_timestep () first_ = false; label_events_.clear (); - - SCM mpos = get_property ("measurePosition"); - SCM barnum = get_property ("internalBarNumber"); - if (Moment::is_smob (mpos) - && scm_is_integer (barnum)) - { - SCM where = scm_cons (barnum, - mpos); - - command_column_->set_property ("rhythmic-location", where); - musical_column_->set_property ("rhythmic-location", where); - } } void @@ -302,9 +300,16 @@ Paper_column_engraver::start_translation_timestep () } } -ADD_ACKNOWLEDGER (Paper_column_engraver, item); -ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing); -ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing); + +void +Paper_column_engraver::boot () +{ + ADD_LISTENER (Paper_column_engraver, break); + ADD_LISTENER (Paper_column_engraver, label); + ADD_ACKNOWLEDGER (Paper_column_engraver, item); + ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing); + ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing); +} ADD_TRANSLATOR (Paper_column_engraver, /* doc */