]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/stem.cc
Merge branch 'master' of git://git.sv.gnu.org/lilypond
[lilypond.git] / lily / stem.cc
index d333690491c6d98de4d1e85bb21688afb96728f8..e155a0611e628b64657a09bf6a0f54241f5d80e0 100644 (file)
@@ -214,28 +214,36 @@ Stem::add_head (Grob *me, Grob *n)
 bool
 Stem::is_invisible (Grob *me)
 {
-  Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"),
-                                          0.0);
+  return !is_normal_stem (me)
+    && (robust_scm2double (me->get_property ("stemlet-length"),
+                          0.0) == 0.0);
+}
+
 
-  return !((head_count (me)
-           || stemlet_length > 0.0)
-          && scm_to_int (me->get_property ("duration-log")) >= 1);
+bool
+Stem::is_normal_stem (Grob *me)
+{
+  return head_count (me) && scm_to_int (me->get_property ("duration-log")) >= 1;
 }
 
+
 MAKE_SCHEME_CALLBACK (Stem, pure_height, 3)
 SCM
 Stem::pure_height (SCM smob, SCM start, SCM end)
 {
   (void) start;
   (void) end;
-  
-  
+
   Grob *me = unsmob_grob (smob);
+  Interval iv;
+
+  if (!is_normal_stem (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 iv;
   Interval hp = head_positions (me);
   if (dir == UP)
     iv = Interval (0, len);