]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tie.cc
release: 1.3.3
[lilypond.git] / lily / tie.cc
index 1bd0d1cdee2e5d8007ca83c56106ac58bb9c4a96..af2c6fb1a50be54c81f5831a27c9ed8a5a6d430e 100644 (file)
@@ -37,14 +37,14 @@ Tie::Tie()
 Direction
 Tie::get_default_dir () const
 {
-  int m = (head_l_drul_[LEFT]->position_i_ 
-         + head_l_drul_[RIGHT]->position_i_) /2;
+  int m = int (head_l_drul_[LEFT]->position_f () 
+              + head_l_drul_[RIGHT]->position_f ()) /2;
 
   /*
     If dir is not determined: inverse of stem: down
     (see stem::get_default_dir ())
    */
-  Direction neutral_dir = (int)paper_l ()->get_var ("stem_default_neutral_direction");
+  Direction neutral_dir = (Direction)(int)paper_l ()->get_var ("stem_default_neutral_direction");
   return (m == 0) ? other_dir (neutral_dir) : (m < 0) ? DOWN : UP;
 }
 
@@ -68,7 +68,7 @@ Tie::do_post_processing()
 {
   assert (head_l_drul_[LEFT] || head_l_drul_[RIGHT]);
 
-  Real interline_f = paper_l ()->get_realvar (interline_scm_sym);
+  Real interline_f = paper_l ()->get_var ("interline");
   Real internote_f = interline_f / 2;
   Real x_gap_f = paper_l ()->get_var ("tie_x_gap");
   Real y_gap_f = paper_l ()->get_var ("tie_y_gap");
@@ -99,8 +99,6 @@ Tie::do_post_processing()
       */
       if (head_l_drul_[d]
          /*
-           && head_l_drul_[d]->remove_elt_property (extremal_scm_sym) != SCM_BOOL_F)
-           ugh, ugh:
 
                a~a~a;
 
@@ -109,8 +107,8 @@ Tie::do_post_processing()
            Getting scared a bit by score-element's comment:
            // is this a good idea?
          */
-         && (head_l_drul_[d]->get_elt_property (extremal_scm_sym)
-             != SCM_BOOL_F))
+         && (head_l_drul_[d]->get_elt_property ("extremal")
+             != SCM_UNDEFINED))
        {
        if (d == LEFT)
            dx_f_drul_[d] += head_width_f;
@@ -129,6 +127,8 @@ Tie::do_post_processing()
 
   if (head_l_drul_[LEFT])
     dx_f_drul_[LEFT] = head_l_drul_[LEFT]->extent (X_AXIS).length ();
+  else
+    dx_f_drul_[LEFT] = get_broken_left_end_align ();
   dx_f_drul_[LEFT] += x_gap_f;
   dx_f_drul_[RIGHT] -= x_gap_f;
 
@@ -149,24 +149,25 @@ Tie::do_post_processing()
         for smal slurs
    */
 
-  int ypos_i = head_l_drul_[LEFT] ? head_l_drul_[LEFT]->position_i_
-    : head_l_drul_[RIGHT]->position_i_;
-
-  Real y_f = internote_f * ypos_i; 
+  Real ypos = head_l_drul_[LEFT] ? head_l_drul_[LEFT]->position_f ()
+    : head_l_drul_[RIGHT]->position_f ();
 
+  Real y_f = internote_f * ypos; 
+  int ypos_i = int (ypos);
   Real dx_f = extent (X_AXIS).length () + dx_f_drul_[RIGHT] - dx_f_drul_[LEFT];
   if (dx_f < paper_l ()->get_var ("tie_staffspace_length"))
     {
       if (abs (ypos_i) % 2)
-       y_f += dir_ * internote_f;
-      y_f += dir_ * y_gap_f;
+       y_f += get_direction () * internote_f;
+      y_f += get_direction () * y_gap_f;
     }
   else
     {
       if (! (abs (ypos_i) % 2))
-       y_f += dir_ * internote_f;
-      y_f += dir_ * internote_f;
-      y_f -= dir_ * y_gap_f;
+       y_f += get_direction () * internote_f;
+      y_f += get_direction () * internote_f;
+      y_f -= get_direction () * y_gap_f;
     }
   
   dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = y_f;
@@ -193,3 +194,4 @@ Tie::get_rods () const
   a.push (r);
   return a;
 }
+