]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.32
authorfred <fred>
Sun, 24 Mar 2002 19:32:18 +0000 (19:32 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:32:18 +0000 (19:32 +0000)
hdr/complexcolumn.hh
hdr/complexwalker.hh
src/register.cc

index 50ad5fc8a0e30848382b12ace263f32d156a4fa0..4065954b645ee4029c32c17bd520e3a25eb76c05 100644 (file)
@@ -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<Item *> &pre_p_arr,
+                                Array<Item *> &nobreak_p_arr,
+                                Array<Item *> &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
index a4ba27b03b925d30e5a6a0394bdd8e4bb60c282c..d8444c7c9edb9f3e5a69040ecb759ad76cee0a02 100644 (file)
@@ -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<int> *oldkey_undo;
-    Array<int> 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<Item*> prebreak_item_p_arr_;
+    Array<Item*> nobreak_item_p_arr_;
+    Array<Item*> postbreak_item_p_arr_;
+    
+public:
+    
     IPointerList<Voice_registers *> voice_reg_list_;
     IPointerList<Voice_group_registers*> group_reg_list_;
     Assoc<Voice *, Voice_group_registers *> 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<Staff_elem_info> 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<Voice_registers *> 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);
 };
 
 
index 7eeeb46ada77dfcc07de9dea3a25537d1111d91e..d58f2622959d8f3bfeae718808bb51cb65bd8c6a 100644 (file)
@@ -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);
+}
+