X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscore-engraver.cc;h=432d18b720bef59146ccafa4a4346d08ea9c1492;hb=6dcc906d0eab776bddec84fe6d95fa53ed06b607;hp=27c7d520384cb956de17b6c92eb4ff8fa382af00;hpb=1855cf7137149c0bd27b5851fd9db498385591b3;p=lilypond.git diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 27c7d52038..432d18b720 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -15,7 +15,7 @@ #include "score-engraver.hh" #include "paper-score.hh" #include "paper-column.hh" -#include "paper-def.hh" +#include "output-def.hh" #include "axis-group-interface.hh" #include "context-def.hh" #include "staff-spacing.hh" @@ -79,7 +79,7 @@ Score_engraver::prepare (Moment m) SCM w = m.smobbed_copy (); command_column_->set_property ("when", w); musical_column_->set_property ("when", w); - + recurse_over_translators (context (), &Translator::start_translation_timestep, DOWN); } @@ -101,11 +101,17 @@ Score_engraver::initialize () Font_metric *fm = all_fonts_global->find_afm ("feta20"); if (!fm) error (_f ("can't find `%s'", "feta20.afm") - + "\n" +_ ("Fonts have not been installed properly. Aborting")); + + "\n" +_ ("Music font has not been installed properly. Aborting")); + + SCM pfa_path = ly_kpathsea_expand_path (scm_makfrom0str ("ecrm10.pfa")); + if (!scm_is_string (pfa_path)) + error (_f ("can't find `%s'", "ecrm10.pfa") + + "\n" +_f ("Install the ec-mftraced package from %s. Aborting", + "http://lilypond.org/download/fonts/")); pscore_ = new Paper_score; - pscore_->paper_ = dynamic_cast (get_output_def ()); + pscore_->layout_ = dynamic_cast (get_output_def ()); SCM props = updated_grob_properties (context (), ly_symbol2scm ("System")); @@ -140,7 +146,7 @@ Score_engraver::one_time_step () if (!to_boolean (get_property ("skipTypesetting"))) { recurse_over_translators (context (), &Engraver::process_music, UP); - recurse_over_translators (context (), &Engraver::do_announces, UP); + Engraver_group_engraver::do_announces(); } recurse_over_translators (context (), &Translator::stop_translation_timestep, UP); @@ -239,11 +245,11 @@ Score_engraver::try_music (Music *m) if (m->is_mus_type ("break-event")) { SCM pen = command_column_->get_property ("penalty"); - Real total_penalty = ly_c_number_p (pen) ? ly_scm2double (pen) : 0.0; + Real total_penalty = scm_is_number (pen) ? scm_to_double (pen) : 0.0; SCM mpen = m->get_property ("penalty"); - if (ly_c_number_p (mpen)) - total_penalty += ly_scm2double (mpen); + if (scm_is_number (mpen)) + total_penalty += scm_to_double (mpen); command_column_->set_property ("penalty", scm_make_real (total_penalty)); @@ -252,10 +258,10 @@ Score_engraver::try_music (Music *m) forbid_breaks (); SCM page_pen = command_column_->get_property ("page-penalty"); - Real total_pp = ly_c_number_p (page_pen) ? ly_scm2double (page_pen) : 0.0; + Real total_pp = scm_is_number (page_pen) ? scm_to_double (page_pen) : 0.0; SCM mpage_pen = m->get_property ("page-penalty"); - if (ly_c_number_p (mpage_pen)) - total_pp += ly_scm2double (mpage_pen); + if (scm_is_number (mpage_pen)) + total_pp += scm_to_double (mpage_pen); command_column_->set_property ("page-penalty", scm_make_real (total_pp)); return true; @@ -285,6 +291,22 @@ Score_engraver::acknowledge_grob (Grob_info gi) ly_symbol2scm ("spacing-wishes"), gi.grob_); } + + if (Axis_group_interface::has_interface (gi.grob_) + && gi.grob_->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface"))) + { + SCM spaceable = get_property ("verticallySpacedContexts"); + Context *orig = gi.origin_contexts (this)[0]; + + if (scm_memq (ly_symbol2scm (orig->context_name ().to_str0()), + spaceable) != SCM_BOOL_F) + { + Pointer_group_interface::add_grob (system_, + ly_symbol2scm ("spaceable-staves"), + gi.grob_); + } + } + } @@ -301,6 +323,6 @@ ENTER_DESCRIPTION (Score_engraver, , /* creats*/ "System PaperColumn NonMusicalPaperColumn", /* accepts */ "break-event", -/* acks */ "note-spacing-interface staff-spacing-interface", -/* reads */ "currentMusicalColumn currentCommandColumn", +/* acks */ "note-spacing-interface staff-spacing-interface axis-group-interface", +/* reads */ "currentMusicalColumn currentCommandColumn verticallySpacedContexts", /* write */ "");