]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/stem.cc
Remove hungarian postfix.
[lilypond.git] / lily / stem.cc
index 9ef07652e33bff3df8fc314e793fbed3a4e51c11..6016eebbb439b7b067201225a0f7adcdd84d85b0 100644 (file)
@@ -240,22 +240,27 @@ Stem::pure_height (SCM smob, SCM start, SCM end)
   if (!is_normal_stem (me))
     return ly_interval2scm (iv);
 
-  /* if we are part of a cross-staff beam, return empty */
-  if (get_beam (me) && Beam::is_cross_staff (get_beam (me)))
-    return ly_interval2scm (iv);
-  
   Real ss = Staff_symbol_referencer::staff_space (me);
-  Real len = scm_to_double (calc_length (smob)) * ss / 2;
-  Direction dir = get_grob_direction (me);
 
-  Interval hp = head_positions (me);
-  if (dir == UP)
-    iv = Interval (0, len);
-  else
-    iv = Interval (-len, 0);
+  if (!to_boolean (me->get_property ("cross-staff")))
+    {
+      Real len = scm_to_double (calc_length (smob)) * ss / 2;
+      Direction dir = get_grob_direction (me);
 
-  if (!hp.is_empty ())
-    iv.translate (hp[dir] * ss / 2);
+      Interval hp = head_positions (me);
+      if (dir == UP)
+       iv = Interval (0, len);
+      else
+       iv = Interval (-len, 0);
+
+      if (!hp.is_empty ())
+       iv.translate (hp[dir] * ss / 2);
+    }
+
+  /* at a minimum, make the pure-height cover the staff symbol */
+  Real rad = Staff_symbol_referencer::staff_radius (me);
+  iv.add_point (-rad * ss);
+  iv.add_point (rad * ss);
 
   return ly_interval2scm (iv);
 }
@@ -285,8 +290,8 @@ Stem::calc_stem_end_position (SCM smob)
   Real stem_end = dir ? hp[dir] + dir * length : 0;
 
   /* TODO: change name  to extend-stems to staff/center/'()  */
-  bool no_extend_b = to_boolean (me->get_property ("no-stem-extend"));
-  if (!no_extend_b && dir * stem_end < 0)
+  bool no_extend = to_boolean (me->get_property ("no-stem-extend"));
+  if (!no_extend && dir * stem_end < 0)
     stem_end = 0.0;
 
   return scm_from_double (stem_end);
@@ -926,9 +931,9 @@ Stem::calc_stem_info (SCM smob)
   Obviously not for grace beams.
 
   Also, not for knees.  Seems to be a good thing. */
-  bool no_extend_b = to_boolean (me->get_property ("no-stem-extend"));
+  bool no_extend = to_boolean (me->get_property ("no-stem-extend"));
   bool is_knee = to_boolean (beam->get_property ("knee"));
-  if (!no_extend_b && !is_knee)
+  if (!no_extend && !is_knee)
     {
       /* Highest beam of (UP) beam must never be lower than middle
         staffline */