]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.65
authorfred <fred>
Sun, 24 Mar 2002 19:44:32 +0000 (19:44 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:44:32 +0000 (19:44 +0000)
lily/include/walk-regs.hh
lily/walk-regs.cc

index 3326daad80dab97331fbafbc79a6982b97ede63c..e339baa9836447dcbc2a3a5a03f20195bf8f2dbd 100644 (file)
@@ -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 <hanwen@stack.nl>
 */
 
 
 #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<Item*> prebreak_item_p_arr_;
     Array<Item*> nobreak_item_p_arr_;
     Array<Item*> postbreak_item_p_arr_;
+    Link_array<Score_elem> musical_item_p_arr_;
+    
     Array<Score_elem_info> 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
index 404500dceecc039bf6fca8a6039b891d05553ec7..328fa177cd7d25421a591034c9543415f0a97892 100644 (file)
@@ -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 <hanwen@stack.nl>
 */
 #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()