]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/headreg.cc
release: 0.0.50
[lilypond.git] / lily / headreg.cc
index dc5d72d572aa1ab02782c6c2965ab0348794c2fa..2d551cdd2cf37cda4dfc839002053fe4e8a75718 100644 (file)
@@ -3,12 +3,12 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
-#include "rest.hh"
+
 #include "notehead.hh"
-#include "headreg.hh"
+#include "head-reg.hh"
 #include "paper-def.hh"
 #include "complex-walker.hh"
-#include "musicalrequest.hh"
+#include "musical-request.hh"
 
 Notehead_register::Notehead_register()
 {
@@ -40,21 +40,21 @@ Notehead_register::process_requests()
     if (!note_req_l_)
        return;
     
+    Notehead*n_p = new Notehead(8);    // ugh
+    note_p_ = n_p;
+    n_p->set_rhythmic(note_req_l_->rhythmic());
 
     if (note_req_l_->note()) {
-       Notehead*n_p = new Notehead(8); // ugh
-       note_p_ = n_p;
-       n_p->set_rhythmic(note_req_l_->rhythmic());
        n_p->position = note_req_l_->note()->height() +
-           *get_staff_info().c0_position_i_;
-    } else {
-       note_p_ = new Rest ( note_req_l_->rhythmic()->balltype,
-                            note_req_l_->rhythmic()->dots);
-       if (note_req_l_->rhythmic()->balltype <= 2)
+           *get_staff_info().c0_position_i_l_;
+    } else if (note_req_l_->rest()) {
+       n_p->rest_b_ = true;
+       if (note_req_l_->rhythmic()->duration_.type_i_ <= 2)
            note_p_->translate(
                Offset(0,
                       6 * paper()->internote()));
     }
+    
     Staff_elem_info itinf(note_p_,note_req_l_);
     announce_element(itinf);
 }
@@ -63,8 +63,9 @@ void
 Notehead_register::pre_move_processing()
 {
     if (note_p_) {
-       if (dir_i_ && note_p_->name() == Rest::static_name())
-           note_p_->translate(Offset(0, 4*dir_i_ * paper()->internote()));
+       if (dir_i_ && note_p_->rest_b_ && note_p_->balltype <= 2) {
+           note_p_->position +=4*dir_i_ ;
+       }
        typeset_element(note_p_);
        note_p_ = 0;
     }
@@ -74,3 +75,6 @@ Notehead_register::post_move_processing()
 {
     note_req_l_ = 0;
 }
+
+IMPLEMENT_STATIC_NAME(Notehead_register);
+ADD_THIS_REGISTER(Notehead_register);