From 7830737ca0bfe509a39ce10d0b17a0a65f5e3e03 Mon Sep 17 00:00:00 2001 From: fred Date: Sun, 24 Mar 2002 19:32:18 +0000 Subject: [PATCH] lilypond-0.0.32 --- hdr/complexcolumn.hh | 15 ++++---- hdr/complexwalker.hh | 82 ++++++++++++++++++++++++++++---------------- src/register.cc | 17 +++++++-- 3 files changed, 75 insertions(+), 39 deletions(-) diff --git a/hdr/complexcolumn.hh b/hdr/complexcolumn.hh index 50ad5fc8a0..4065954b64 100644 --- a/hdr/complexcolumn.hh +++ b/hdr/complexcolumn.hh @@ -10,6 +10,8 @@ #ifndef COMPLEXCOLUMN_HH #define COMPLEXCOLUMN_HH +#include "stcol.hh" + /// column of Complex_staff: store one request struct Complex_column : Staff_column { @@ -22,14 +24,13 @@ struct Complex_column : Staff_column { Slur_req *find_slur(Voice *); - void typeset_item(Item *, int=1); - void typeset_item_directional(Item *, int dir, int=1); - Molecule *create_command_mol(Command *com); - - void take_request(Request *rq); - virtual void setup_requests(); + void typeset_musical_item(Item *); + void typeset_breakable_items(Array &pre_p_arr, + Array &nobreak_p_arr, + Array &post_p_arr); + virtual void setup_one_request(Request*); - Complex_column(Score_column*s,Complex_staff*rs); + Complex_column(Complex_staff*rs); }; #endif // COMPLEXCOLUMN_HH diff --git a/hdr/complexwalker.hh b/hdr/complexwalker.hh index a4ba27b03b..d8444c7c9e 100644 --- a/hdr/complexwalker.hh +++ b/hdr/complexwalker.hh @@ -1,5 +1,5 @@ /* - complexwalker.hh -- part of LilyPond + complexwalker.hh -- declare Complex_walker (c) 1996,97 Han-Wen Nienhuys */ @@ -8,70 +8,92 @@ #define COMPLEXWALKER_HH #include "proto.hh" -#include "grouping.hh" #include "voicegroup.hh" #include "assoc.hh" #include "staffwalker.hh" -#include "key.hh" -#include "clef.hh" -#include "register.hh" -#include "localkeyreg.hh" - +#include "staffeleminfo.hh" +#include "plist.hh" /** - A staff walker which uses registers to what to print + A staff walker which uses registers to decide what to print */ -struct Complex_walker: Staff_walker { - Local_key local_key_; - Key key_; - Array *oldkey_undo; - Array typesetkey; - - int processed_bar_priority; - bool processed_key; - bool processed_clef; - Clef clef_; - Rhythmic_grouping default_grouping; - +class Complex_walker: public Staff_walker { + bool try_command_request(Nonmusical_req *req_l); + void do_change_group( Voice * v, String group_id_str); + void do_announces(); + void try_request(Request*req); + int c0_position_i_; + Array prebreak_item_p_arr_; + Array nobreak_item_p_arr_; + Array postbreak_item_p_arr_; + +public: + IPointerList voice_reg_list_; IPointerList group_reg_list_; Assoc voice_group_map_; - Local_key_register local_key_reg_; + Clef_register *clef_reg_p_; + Local_key_register *local_key_reg_p_; + Key_register *key_reg_p_; + Bar_register *bar_reg_p_; + Meter_register *meter_reg_p_; + Array announce_info_arr_; /* *************** */ + Voice_registers *find_voice_reg(Voice*v_l)const; Voice_registers *get_voice_reg(Voice*v_l); - /// search and return. return 0 if not found. + /** search for voice_group containing #v_l# + + @return + pointer if found, 0 if not found. + */ Voice_group_registers *find_voice_group(Voice* v_l)const; + /// search. Create if necessary Voice_group_registers *get_voice_group(Voice* v_l); - /// search and return. return 0 if not found + /** search for voice_group named #id# + + @return + pointer if found, 0 if not found. + */ Voice_group_registers *find_voice_group(const char* id)const; - /// Create if necessary + + /** + search for voice_group named #id#, create if necessary + */ Voice_group_registers *get_voice_group(const char*); Array get_voice_regs(Voice_group_registers *) const; void regs_process_requests(); + void typeset_breakable_item(Item * pre_p , + Item * nobreak_p, Item * post_p); void typeset_element(Staff_elem *elem_p); void announce_element(Staff_elem_info); - virtual void do_TYPESET_command(Command*); - virtual void do_INTERPRET_command(Command*); virtual void process_requests(); virtual void do_post_move(); virtual void do_pre_move(); - + /** + @return the position of central c. + */ + int c0_position_i() const; + + /** + set the position of central c. + @param the new position + */ + void set_c0_position(int j); Complex_walker(Complex_staff*); + ~Complex_walker(); + Complex_column *col(); Complex_staff *staff(); private: - void do_change_group( Voice * v, String group_id_str); - void do_announces(); - void try_request(Request*req); }; diff --git a/src/register.cc b/src/register.cc index 7eeeb46ada..d58f262295 100644 --- a/src/register.cc +++ b/src/register.cc @@ -7,7 +7,7 @@ */ #include "voice.hh" -#include "request.hh" +#include "musicalrequest.hh" #include "register.hh" #include "notehead.hh" #include "complexwalker.hh" @@ -18,7 +18,7 @@ Staff_elem_info::Staff_elem_info(Staff_elem*s_l, Request*r_l, Request_register *reg_l) { elem_p_ = s_l; - voice_l_ = r_l->elt_l_->voice_l_; + voice_l_ = (r_l)?r_l->elt_l_->voice_l_:0; req_l_ = r_l; group_regs_l_ = 0; origin_reg_l_ = reg_l; @@ -35,6 +35,11 @@ Staff_elem_info::Staff_elem_info() } /* *************** */ +bool +Request_register::try_request(Request*) +{ + return false; +} Request_register::Request_register() { @@ -80,3 +85,11 @@ Request_register::paper()const { return walk_l_->staff()->paper(); } + +void +Request_register::typeset_breakable_item(Item * pre_p , Item * nobreak_p, + Item * post_p) +{ + walk_l_->typeset_breakable_item(pre_p, nobreak_p,post_p); +} + -- 2.39.5