From: fred Date: Sun, 24 Mar 2002 19:44:32 +0000 (+0000) Subject: lilypond-0.0.65 X-Git-Tag: release/1.5.59~4658 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=16c4aa1fc443174cad2bc0b7439e0a493d27d740;p=lilypond.git lilypond-0.0.65 --- diff --git a/lily/include/walk-regs.hh b/lily/include/walk-regs.hh index 3326daad80..e339baa983 100644 --- a/lily/include/walk-regs.hh +++ b/lily/include/walk-regs.hh @@ -1,7 +1,7 @@ /* walkregs.hh -- declare Walker_registers - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter (c) 1997 Han-Wen Nienhuys */ @@ -12,35 +12,40 @@ #include "register-group.hh" - +#include "parray.hh" /** Top level registers: the interface to Complex_walker. [sigh. Sometimes I wish C++ could do better late binding.] - */ -struct Walker_registers : Register_group_register { + + Basically, this distributes and collects elements and elementinfo to + children + */ +class Walker_registers : public Register_group_register { + Array prebreak_item_p_arr_; Array nobreak_item_p_arr_; Array postbreak_item_p_arr_; + Link_array musical_item_p_arr_; + Array announce_info_arr_; Complex_walker * walk_l_; - - /* *************** */ - - void typeset_musical_item(Score_elem * elem_p); - Walker_registers(Complex_walker*); - void do_announces(); - +protected: virtual Staff_info get_staff_info(); virtual void announce_element(Score_elem_info); virtual void acknowledge_element(Score_elem_info); virtual void typeset_breakable_item(Item * pre_p , Item * nobreak_p, Item * post_p); virtual void typeset_element(Score_elem*elem_p); + virtual Paper_def * paper() const; +public: virtual void pre_move_processing(); virtual void post_move_processing(); - virtual Paper_def * paper() const; + + + void do_announces(); + Walker_registers(Complex_walker*); }; #endif // WALKREGS_HH diff --git a/lily/walk-regs.cc b/lily/walk-regs.cc index 404500dcee..328fa177cd 100644 --- a/lily/walk-regs.cc +++ b/lily/walk-regs.cc @@ -1,20 +1,21 @@ /* walkregs.cc -- implement Walker_registers - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter (c) 1997 Han-Wen Nienhuys */ #include "debug.hh" #include "walk-regs.hh" #include "staff-regs.hh" -#include "staff-elem.hh" +#include "score-elem.hh" #include "staff.hh" #include "complex-walker.hh" #include "staff-column.hh" #include "score-walker.hh" #include "bar.hh" // needed for Bar::static_name #include "input-register.hh" +#include "staffline.hh" Walker_registers::Walker_registers(Complex_walker *w) { @@ -60,25 +61,25 @@ Walker_registers::do_announces() void Walker_registers::typeset_element(Score_elem *elem_p) { - typeset_musical_item(elem_p); -} - -void -Walker_registers::typeset_musical_item(Score_elem * elem_p) -{ - walk_l_->typeset_element(elem_p); + musical_item_p_arr_.push(elem_p); } void Walker_registers::typeset_breakable_item(Item * pre_p , Item * nobreak_p, Item * post_p) { - if (pre_p) + if (pre_p) { prebreak_item_p_arr_.push(pre_p); - if (nobreak_p) + walk_l_->staff_l_->staff_line_l_->add_element(pre_p); + } + if (nobreak_p) { nobreak_item_p_arr_.push(nobreak_p); - if (post_p) + walk_l_->staff_l_->staff_line_l_->add_element(nobreak_p); + } + if (post_p) { postbreak_item_p_arr_.push(post_p); + walk_l_->staff_l_->staff_line_l_->add_element(post_p); + } } void @@ -89,6 +90,9 @@ Walker_registers::pre_move_processing() walk_l_->ptr()->typeset_breakable_items(prebreak_item_p_arr_, nobreak_item_p_arr_, postbreak_item_p_arr_); + for (int i=0; i < musical_item_p_arr_.size(); i++) + walk_l_->typeset_element(musical_item_p_arr_[i]); + musical_item_p_arr_.set_size(0); } void Walker_registers::post_move_processing()