]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.93
authorfred <fred>
Tue, 26 Mar 2002 23:56:41 +0000 (23:56 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:56:41 +0000 (23:56 +0000)
lily/breathing-sign.cc
lily/dots.cc
lily/include/staff-symbol-referencer.hh
lily/note-head.cc
lily/staff-symbol-referencer.cc

index f6225e51e17cc4e302a8764ed87e4734d957f283..4810dec72ef05f24311c7ea4bf71d3fa3a4fc268 100644 (file)
@@ -42,7 +42,6 @@ Breathing_sign::offset_callback (Score_element * b, Axis a)
 {
   Score_element * me = (Score_element*)b;
   
-  Real space = Staff_symbol_referencer::staff_space (b);
   Direction d = Directional_element_interface::get (b);
   if (!d)
     {
@@ -50,7 +49,9 @@ Breathing_sign::offset_callback (Score_element * b, Axis a)
       Directional_element_interface::set (me, d);
     }
 
-  return 2.0 * space * d;
+  Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
+  int sz = Staff_symbol_referencer::line_count (me)-1;
+  return inter_f * sz * d;
 }
 
 void
index c249d6a1cf969967cc4cfd360892e915df9e4278..25e4cec7dd18b0233ad477d6e37c782fe97ce5fe 100644 (file)
@@ -26,9 +26,7 @@ Dots::quantised_position_callback (Score_element * me, Axis a)
       if (!Directional_element_interface::get (me))
        Directional_element_interface::set (me, UP);
 
-
-      int pos = int (Staff_symbol_referencer::position_f (me));
-      if (!(pos % 2))
+      if (Staff_symbol_referencer::on_staffline (me))
        return Staff_symbol_referencer::staff_space (me) / 2.0 * Directional_element_interface::get (me);
     }
 
index 82c84cfc6acb9cb266363fb2584c2a91470418a6..129848172bbeddab67f690890c38e69b75e58b9e 100644 (file)
@@ -33,6 +33,8 @@ public:
  
   static Real staff_space (Score_element*);
   static Score_element * staff_symbol_l (Score_element*);
+  static bool on_staffline (Score_element*);
+  static bool on_staffline (Score_element*,int);
   static int line_count (Score_element*);
   static Real position_f (Score_element*);
   static Real staff_radius (Score_element*);
index b0b97cb9a7b10b1200e3ae7ff116fc174523077a..847799f180c1ad23c14549a6b16904ef35fe1e51 100644 (file)
@@ -60,10 +60,10 @@ Note_head::brew_molecule (SCM smob)
   
   Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
   int sz = Staff_symbol_referencer::line_count (me)-1;
-  Real p = Staff_symbol_referencer::position_f (me);
+  int p = (int)Staff_symbol_referencer::position_f (me);
   int streepjes_i = abs (p) < sz 
     ? 0
-    : (abs((int)p) - sz) /2;
+    : (abs(p) - sz) /2;
 
   SCM style  = me->get_elt_property ("style");
   if (!gh_symbol_p (style))
@@ -89,13 +89,15 @@ Note_head::brew_molecule (SCM smob)
       
 
       ledger.set_empty (true);
-      int parity =  abs(int (p)) % 2;
-      
+      Real offs = (Staff_symbol_referencer::on_staffline (me))
+       ? 0.0
+       : -dir * inter_f;
+
       for (int i=0; i < streepjes_i; i++)
        {
          Molecule s (ledger);
-         s.translate_axis (-dir * inter_f * (i*2 + parity),
-                          Y_AXIS);
+         s.translate_axis (-dir * inter_f * i*2 + offs,
+                           Y_AXIS);
          out.add_molecule (s);
        }
     }
index b4a2351ea3348aa9a3e69596f87f607b468bf1ec..4e70b158b6b58d2e1611076e5a5c25a4ebc080a8 100644 (file)
@@ -39,6 +39,19 @@ Staff_symbol_referencer::line_count (Score_element*me)
   return st  ?  Staff_symbol::line_count (st) : 0;
 }
 
+bool
+Staff_symbol_referencer::on_staffline (Score_element*me)
+{
+  return on_staffline (me, (int) position_f (me));
+}
+
+bool
+Staff_symbol_referencer::on_staffline (Score_element*me, int pos)
+{
+  int sz = line_count (me)-1;
+  return ((pos + sz) % 2) == 0;
+}
+
 Score_element*
 Staff_symbol_referencer::staff_symbol_l (Score_element*me) 
 {