]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.74pre
authorfred <fred>
Sun, 24 Mar 2002 19:47:22 +0000 (19:47 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:47:22 +0000 (19:47 +0000)
lily/include/music-iterator.hh
lily/rest-collision.cc

index 661d380d6c27a1570014d215d30c5ce32119f039..25f3c7fbc3b8a0e31764bc6cc5a18d84066a48a5 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "lily-proto.hh"
 #include "plist.hh"
+#include "varray.hh"
 #include "moment.hh"
 
 class Music_iterator {
@@ -22,11 +23,17 @@ protected:
 public:
     Music_iterator *daddy_iter_l_;
     NAME_MEMBERS();
-    Translator *report_to_l_;
+    Array<Translator *>report_to_l_arr_;
+
+    Translator *report_to_l()const;
     
     static Music_iterator* static_get_iterator_p(Music*,Translator*);
     Music_iterator* get_iterator_p(Music*)const;
     void set_translator(Translator*);
+    void push_translator(Translator*);
+    void pop_translator();
+
+    
     Music_iterator();
     
     virtual void process_and_next(Moment until);
index e3b7807f6dd81623c71cd679bc8586ea9957a272..6408a9645087c3fac8158df80ed56995a18746a5 100644 (file)
@@ -64,7 +64,6 @@ Rest_collision::do_post_processing()
     if (!(stem_l->beams_left_i_ || stem_l->beams_right_i_))
        return;
 
-    Real inter_f = paper()->internote_f();
     int dir_i = rest_l_arr_[0]->dir_i_;
     int midpos = 4;
 #if 1
@@ -75,8 +74,7 @@ Rest_collision::do_post_processing()
 #else // nogo: stem_start not set for rests?
     int pos = (stem_l->stem_start_f() - midpos) + dir_i * 2;
 #endif
-    Real dy = pos * inter_f;
-    rest_l_arr_[0]->translate_y(dy);   
+    rest_l_arr_[0]->translate_heads(pos);      
 }
 
 void
@@ -97,39 +95,41 @@ Rest_collision::do_pre_processing()
     if (rest_l_arr_.size() + ncol_l_arr_.size() < 2 )
        return;
 
-    Real inter_f = paper()->internote_f();
-
     // meisjes met meisjes
     if (!ncol_l_arr_.size()) {
-       Real dy = rest_l_arr_.size() > 2 ? 6 * inter_f : 4 * inter_f;
-       rest_l_arr_[0]->translate_y(dy);        
+       int dy = rest_l_arr_.size() > 2 ? 6 : 4;
+       rest_l_arr_[0]->translate_heads(dy);    
        // top is last element...
-       rest_l_arr_.top()->translate_y(-dy);    
+       rest_l_arr_.top()->translate_heads(-dy);        
     }
     // meisjes met jongetjes
     else {
 #if 0 // breendet: rests go always under
        // geen gemug, trug op je rug
        int dir_i = -1;
-       rest_l_arr_[0]->translate_y(dir_i * 3 * inter_f);       
+       rest_l_arr_[0]->translate_heads(dir_i * 3 );    
 #else
        // int dir_i = - ncol_l_arr_[0]->dir_i_;
        int dir_i = rest_l_arr_[0]->dir_i_;
        // hope it's 4: if it works->doco
        int midpos = 4;
-       // minimum move
+       
+        // minimum move
        int minpos = 4;
+       
        // quart rest height
+       // UGH Should get dims from table!
        int size_i = 6;
+       
        int sep_i = 3 + size_i / 2;
        for (int i = 0; i < ncol_l_arr_.size(); i++) {
            // how to know whether to sort?
            ncol_l_arr_[i]->sort();
            for ( int j = 0; j < ncol_l_arr_[i]->head_l_arr_.size(); j++ )
-               minpos = minpos >? dir_i * ( ncol_l_arr_[i]->head_l_arr_[j]->position_i_ - midpos ) + sep_i;
+               minpos = minpos >? dir_i * 
+                   (ncol_l_arr_[i]->head_l_arr_[j]->position_i_ -midpos ) + sep_i;
        }
-       Real dy = dir_i * minpos * inter_f;
-       rest_l_arr_[0]->translate_y(dy);        
+       rest_l_arr_[0]->translate_heads(dir_i * minpos );       
 #endif
     }
 }