X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscore.cc;h=455cebd63d3f879ef26fdbf5b37c50057770f874;hb=1f72695816f79df61958fc3649591fbf6b95a05a;hp=b62844147539607001d06401a6d49fc8c7650c5a;hpb=711bbb9b9608ccd3ef2e876ab0c13af181fde283;p=lilypond.git diff --git a/lily/score.cc b/lily/score.cc index b628441475..455cebd63d 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1999 Han-Wen Nienhuys */ #include "score.hh" @@ -15,7 +15,7 @@ #include "music-iterator.hh" #include "music.hh" #include "global-translator.hh" -#include "header.hh" +#include "scope.hh" #include "cpu-timer.hh" #include "main.hh" #include "paper-def.hh" @@ -30,6 +30,7 @@ Score::Score() } Score::Score (Score const &s) + : Input (s) { music_p_ = (s.music_p_) ? s.music_p_->clone() : 0; for (int i=0; i < s.def_p_arr_.size (); i++) @@ -52,19 +53,22 @@ Score::run_translator (Music_output_def *odef_l) Cpu_timer timer; Global_translator * trans_p = odef_l->get_global_translator_p(); if (!trans_p) - return ; + { + non_fatal_error (_("no toplevel translator")); + return ; + } + *mlog << '\n' << _("Interpreting music...") << flush; + trans_p->last_mom_ = music_p_->length_mom (); - *mlog << _("\nInterpreting music ..."); - trans_p->last_mom_ = music_p_->time_int().max (); + Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_, trans_p); + - Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_, - trans_p); iter->construct_children(); if (! iter->ok()) { delete iter; - warning (_("Need music in a score")); + warning (_("need music in a score")); errorlevel_i_ =1; return ; } @@ -73,23 +77,26 @@ Score::run_translator (Music_output_def *odef_l) while (iter->ok() || trans_p->moments_left_i ()) { - Moment w = infinity_mom; + Moment w; + w.set_infinite (1); if (iter->ok()) { w = iter->next_moment(); - DOUT << "proccing: " << w <<"\n"; + DOUT << "proccing: " << w << '\n'; if (!monitor->silent_b ("walking")) iter->print(); } trans_p->modify_next (w); trans_p->prepare (w); + if (!monitor->silent_b ("walking")) trans_p->print(); iter->process_and_next (w); trans_p->process(); } + delete iter; trans_p->finish(); @@ -97,13 +104,12 @@ Score::run_translator (Music_output_def *odef_l) if (errorlevel_i_) { // should we? hampers debugging. - warning (_("Errors found, /*not processing score*/")); + warning (_ ("errors found, /*not processing score*/")); } Music_output * output = trans_p->get_output_p(); delete trans_p; - *mlog << _(" (time: ") << String(timer.read (), "%.2f") << _(" seconds)"); - + *mlog << endl << _f ("time: %.2f seconds", timer.read ()) << flush; output->header_l_ = header_p_; output->origin_str_ = location_str(); @@ -123,7 +129,7 @@ Score::process() for (int i=0; i < def_p_arr_.size (); i++) { if (no_paper_global_b - && def_p_arr_[i]->is_type_b (Paper_def::static_name ())) + && dynamic_cast(def_p_arr_[i])) continue; run_translator (def_p_arr_[i]); } @@ -144,7 +150,7 @@ Score::print() const } void -Score::add (Music_output_def *pap_p) +Score::add_output (Music_output_def *pap_p) { def_p_arr_.push(pap_p); }