]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.30
authorfred <fred>
Tue, 11 Feb 1997 00:48:50 +0000 (00:48 +0000)
committerfred <fred>
Tue, 11 Feb 1997 00:48:50 +0000 (00:48 +0000)
src/voicegroup.cc

index f3088d73e2604c2813d958c073aafe4378c06a3b..35de10df4f4713a514455e6889fdb4bdf774f34f 100644 (file)
@@ -1,76 +1,94 @@
 #include "request.hh"
-#include "complexwalker.hh"
-#include "complexstaff.hh"
 #include "voicegroup.hh"
 #include "register.hh"
+#include "textreg.hh"
+#include "stembeamreg.hh"
+#include "scriptreg.hh"
+#include "complexwalker.hh"
+
 
 static int temp_id_count;
 
 Voice_group_registers::Voice_group_registers(Complex_walker*w_l, String id)
-    : text_reg_(w_l),
-      stem_beam_reg_(w_l),
-      script_reg_(w_l)
 {
     walk_l_ = w_l;
+    text_reg_=new Text_register(w_l);
+    stem_beam_reg_= new Stem_beam_register(w_l);
+    script_reg_ = new Script_register(w_l);
     if (id=="")
        id = __FUNCTION__ + String(temp_id_count++);
     group_id_str_ = id;
     dir_i_ = 0;
 }
 
+Voice_group_registers::~Voice_group_registers()
+{
+    delete text_reg_;
+    delete stem_beam_reg_;
+    delete script_reg_;
+}
 void
 Voice_group_registers::pre_move_processing()
 {
-    stem_beam_reg_.pre_move_processing();
-    script_reg_.pre_move_processing();
-    text_reg_.pre_move_processing();  
+    stem_beam_reg_->pre_move_processing();
+    script_reg_->pre_move_processing();
+    text_reg_->pre_move_processing();  
 }
 
 void
 Voice_group_registers::post_move_processing()
 {
-    stem_beam_reg_.post_move_processing();
-    text_reg_.post_move_processing();
-    script_reg_.post_move_processing();
+    stem_beam_reg_->post_move_processing();
+    text_reg_->post_move_processing();
+    script_reg_->post_move_processing();
 }
 
 bool
 Voice_group_registers::try_request(Request*r_l)
 {
     if (r_l->groupfeature()) {
-       dir_i_ = r_l->groupfeature()->stemdir_i_;
+       set_dir(r_l->groupfeature()->stemdir_i_);
        return true;
     } 
-    bool b = stem_beam_reg_.try_request(r_l);
+    bool b = stem_beam_reg_->try_request(r_l);
     if (!b)
-       b|= script_reg_.try_request(r_l);
+       b|= script_reg_->try_request(r_l);
     if (!b)
-       b|=  text_reg_.try_request(r_l);
+       b|=  text_reg_->try_request(r_l);
 
     return b;
 }
     
 void
-Voice_group_registers::announce_element(Staff_elem_info i)
+Voice_group_registers::acknowledge_element(Staff_elem_info i)
 {
     if (i.group_regs_l_!= this)
        return;
        
-    stem_beam_reg_.acknowledge_element(i);
-    script_reg_.acknowledge_element(i);
-    text_reg_.acknowledge_element(i);
+    stem_beam_reg_->acknowledge_element(i);
+    script_reg_->acknowledge_element(i);
+    text_reg_->acknowledge_element(i);
 }
 
-
 void
-Voice_group_registers::process_requests()
+Voice_group_registers::set_dir(int i)
 {
-    stem_beam_reg_.process_request();
-    if (dir_i_)
-       stem_beam_reg_.set_dir (dir_i_);
+    stem_beam_reg_->set_dir(i);
+    script_reg_->set_dir(i);
+    text_reg_->set_dir(i);
     
-    script_reg_.process_request();
-    text_reg_.process_request();
+    Array<Voice_registers*> vr_arr (walk_l_->get_voice_regs(this));
+    for (int j=0; j<vr_arr.size(); j++) {
+       if (vr_arr[j])
+           vr_arr[j]->set_dir(i);
+}
+}
+void
+Voice_group_registers::process_requests()
+{
+    stem_beam_reg_->process_request();    
+    script_reg_->process_request();
+    text_reg_->process_request();
 }