From ae9a9c7c23aa3aaa78d2719641972b20242f7ecc Mon Sep 17 00:00:00 2001 From: fred Date: Sun, 24 Mar 2002 19:47:11 +0000 Subject: [PATCH] lilypond-0.0.73pre --- NEWS | 13 ++++++- lily/engraver-group.cc | 49 ++++++++++++++++---------- lily/include/scoreline.hh | 7 +--- lily/include/span-bar.hh | 28 +++++++++++++++ lily/include/vertical-align-elem.hh | 3 +- lily/include/vertical-align-spanner.hh | 24 +++++++++++++ 6 files changed, 98 insertions(+), 26 deletions(-) create mode 100644 lily/include/span-bar.hh create mode 100644 lily/include/vertical-align-spanner.hh diff --git a/NEWS b/NEWS index 71128cd93f..b9d083dda7 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,17 @@ +pl 73pre + - some refs doco. + - move Input_engraver into Paper_def + - junk Interpreter + - naming: Request_engraver -> Engraver, + - Music_iterator::next() -> process_and_next() + - junk Voice_engravers + - Span_bar, Span_bar_engraver + - Vertical_align_engraver + +******* july 2 pl 72pre - - paper{} syntax: var = 1.0\pt;, with an Assoc array + - \paper{} syntax: var = 1.0\pt;, with an Assoc array - sketch of MIDI Performer classes. - bf: memleak in parser - naming: Acceptor -> Translator diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index bcfa32a034..c91921cefc 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -50,7 +50,7 @@ Engraver_group_engraver::set_feature(Feature d) iter_top(grav_list_, i); while (i.ok()) { // this construction to ensure clean deletion - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->set_feature(d); } } @@ -61,7 +61,7 @@ Engraver_group_engraver::sync_features() iter_top(grav_list_, i); while (i.ok()) { - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->sync_features(); } } @@ -72,7 +72,7 @@ Engraver_group_engraver::do_pre_move_processing() iter_top(grav_list_, i); while (i.ok()) { - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->pre_move_processing(); } } @@ -83,7 +83,7 @@ Engraver_group_engraver::do_process_requests() iter_top(grav_list_, i); while (i.ok()) { - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->process_requests(); } } @@ -95,16 +95,16 @@ Engraver_group_engraver::do_post_move_processing() iter_top(grav_list_, i); while (i.ok()) { // this construction to ensure clean deletion - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->post_move_processing(); } } bool -Engraver_group_engraver::contains_b(Request_engraver* grav_l)const +Engraver_group_engraver::contains_b(Engraver* grav_l)const { - bool parent_b = Request_engraver::contains_b(grav_l); + bool parent_b = Engraver::contains_b(grav_l); if (parent_b) return true; @@ -127,8 +127,14 @@ Engraver_group_engraver::do_try_request(Request*req_l) return hebbes_b ; } +bool +Engraver_group_engraver::try_request(Request* r) +{ + return Engraver::try_request(r); +} + void -Engraver_group_engraver::add(Request_engraver *grav_p) +Engraver_group_engraver::add(Engraver *grav_p) { grav_list_.bottom().add(grav_p); grav_p->daddy_grav_l_ = this; @@ -141,8 +147,8 @@ Engraver_group_engraver::add(Request_engraver *grav_p) } -Request_engraver * -Engraver_group_engraver::remove_engraver_p(Request_engraver*grav_l) +Engraver * +Engraver_group_engraver::remove_engraver_p(Engraver*grav_l) { group_l_arr_.substitute((Engraver_group_engraver*)grav_l,0); nongroup_l_arr_.substitute(grav_l,0); @@ -152,16 +158,16 @@ Engraver_group_engraver::remove_engraver_p(Request_engraver*grav_l) } void -Engraver_group_engraver::terminate_engraver(Request_engraver*r_l) +Engraver_group_engraver::terminate_engraver(Engraver*r_l) { mtor << "Removing " << r_l->name() << " at " << get_staff_info().when() << "\n"; r_l->do_removal_processing(); - Request_engraver * grav_p =remove_engraver_p(r_l); + Engraver * grav_p =remove_engraver_p(r_l); delete grav_p; } -IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Request_engraver, Translator); +IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator); IMPLEMENT_STATIC_NAME(Engraver_group_engraver); ADD_THIS_ENGRAVER(Engraver_group_engraver); @@ -237,7 +243,7 @@ void Engraver_group_engraver::announce_element(Score_elem_info info) { announce_info_arr_.push(info); - Request_engraver::announce_element(info); + Engraver::announce_element(info); } void @@ -254,7 +260,7 @@ Engraver_group_engraver::do_announces() if (!info.req_l_) info.req_l_ = &dummy_req; - for (int i=0; i < nongroup_l_arr_.size(); i++) { + for (int i=0; i < nongroup_l_arr_.size(); i++) { // Is this good enough?6 if (nongroup_l_arr_[i] != info.origin_grav_l_arr_[0]) nongroup_l_arr_[i]->acknowledge_element(info); } @@ -273,7 +279,7 @@ Engraver_group_engraver::do_removal_processing() Staff_info Engraver_group_engraver::get_staff_info()const { - Staff_info inf = Request_engraver::get_staff_info(); + Staff_info inf = Engraver::get_staff_info(); for (int i=0; i < nongroup_l_arr_.size(); i++) nongroup_l_arr_[i]->fill_staff_info(inf); @@ -284,14 +290,21 @@ Engraver_group_engraver::get_staff_info()const Translator* Engraver_group_engraver::get_default_interpreter() { - if ( interpreter_l() ) + // ? + if ( is_bottom_engraver_b() ) return daddy_grav_l_->get_default_interpreter(); Engraver_group_engraver *grav_p= igrav_l_-> get_default_igrav_l()->get_group_engraver_p(); add(grav_p ); - if (grav_p->interpreter_l()) + if (grav_p->is_bottom_engraver_b()) return grav_p; else return grav_p->get_default_interpreter(); } + +bool +Engraver_group_engraver::is_bottom_engraver_b()const +{ + return !igrav_l_->get_default_igrav_l(); +} diff --git a/lily/include/scoreline.hh b/lily/include/scoreline.hh index 5cc5c9aa4f..2f44031851 100644 --- a/lily/include/scoreline.hh +++ b/lily/include/scoreline.hh @@ -9,10 +9,9 @@ #include "colhpos.hh" #include "spanner-elem-group.hh" -#include "vertical-align-elem.hh" /// the columns of a score that form one line. -class Line_of_score : public Spanner, public Vertical_align_elem { +class Line_of_score : public Spanner{ public: Link_array cols; bool error_mark_b_; @@ -26,16 +25,12 @@ public: /// is #c# contained in #*this#? bool contains_b(PCol const *c)const; - bool contains_b(Score_elem const*e) const { - return Vertical_align_elem::contains_b(e); - } Link_array get_lines()const; void set_breaking(Array const&); protected: virtual void break_into_pieces(); - virtual void do_substitute_dependency(Score_elem*,Score_elem*); virtual Interval do_width()const; virtual void do_print() const; SCORE_ELEM_CLONE(Line_of_score); diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh new file mode 100644 index 0000000000..177ada65c4 --- /dev/null +++ b/lily/include/span-bar.hh @@ -0,0 +1,28 @@ +/* + span-bar.hh -- declare Span_bar + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef SPAN_BAR_HH +#define SPAN_BAR_HH + +#include "bar.hh" + +class Span_bar : public Bar +{ + Link_array spanning_l_arr_; + +public: + NAME_MEMBERS(); + SCORE_ELEM_CLONE(Span_bar); + void add(Bar* ); + void set( Vertical_align_element *); + void do_pre_processing(); + void do_substitute_dependency(Score_elem*,Score_elem*); + Molecule * brew_molecule_p()const; +}; +#endif // SPAN_BAR_HH diff --git a/lily/include/vertical-align-elem.hh b/lily/include/vertical-align-elem.hh index 0f17b97fbf..cf20de93cc 100644 --- a/lily/include/vertical-align-elem.hh +++ b/lily/include/vertical-align-elem.hh @@ -14,11 +14,12 @@ /** Order elements top to bottom. */ -class Vertical_align_elem : virtual public Score_elem { +class Vertical_align_element : virtual public Score_elem { Link_array elem_l_arr_; public: void add(Score_elem*); bool contains_b(Score_elem const*)const; + Vertical_align_element(); NAME_MEMBERS(); protected: virtual void do_substitute_dependency(Score_elem*,Score_elem*); diff --git a/lily/include/vertical-align-spanner.hh b/lily/include/vertical-align-spanner.hh new file mode 100644 index 0000000000..ccf2224c8b --- /dev/null +++ b/lily/include/vertical-align-spanner.hh @@ -0,0 +1,24 @@ +/* + vertical-align-spanner.hh -- declare Vertical_align_spanner + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef VERTICAL_ALIGN_SPANNER_HH +#define VERTICAL_ALIGN_SPANNER_HH + +#include "spanner.hh" +#include "vertical-align-elem.hh" + +class Vertical_align_spanner : public Vertical_align_element, public Spanner +{ +public: + NAME_MEMBERS(); + SCORE_ELEM_CLONE(Vertical_align_spanner); + virtual void do_print() const { Vertical_align_element::do_print() ; } + +}; +#endif // VERTICAL_ALIGN_SPANNER_HH -- 2.39.5