X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstem.cc;h=e63b96019ae4adadf54fc6812d53be95c9a139ff;hb=fac580f452bba58330da41b14cbe2026d8114d8f;hp=6016eebbb439b7b067201225a0f7adcdd84d85b0;hpb=b696bba38675d4b9ba88cc64e3111d3dec0fc506;p=lilypond.git diff --git a/lily/stem.cc b/lily/stem.cc index 6016eebbb4..e63b96019a 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -241,6 +241,7 @@ Stem::pure_height (SCM smob, SCM start, SCM end) return ly_interval2scm (iv); Real ss = Staff_symbol_referencer::staff_space (me); + Real rad = Staff_symbol_referencer::staff_radius (me); if (!to_boolean (me->get_property ("cross-staff"))) { @@ -255,12 +256,15 @@ Stem::pure_height (SCM smob, SCM start, SCM end) 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); + /* extend the stem (away from the head) to cover the staff */ + if (dir == UP) + iv[UP] = max (iv[UP], rad * ss); + else + iv[DOWN] = min (iv[DOWN], -rad * ss); + } + else + iv = Interval (-rad * ss, rad * ss); return ly_interval2scm (iv); } @@ -698,6 +702,9 @@ Stem::print (SCM smob) if (!lh && stemlet && !beam) return SCM_EOL; + if (lh && robust_scm2int (lh->get_property ("duration-log"), 0) < 1) + return SCM_EOL; + if (is_invisible (me)) return SCM_EOL; @@ -992,27 +999,30 @@ Stem::calc_cross_staff (SCM smob) /* FIXME: Too many properties */ ADD_INTERFACE (Stem, - "The stem represent the graphical stem. " - "In addition, it internally connects note heads, beams and" - "tremolos. " - "Rests and whole notes have invisible stems." - - "\n\nThe following properties may be set in the details list." + "The stem represents the graphical stem. In addition, it" + " internally connects note heads, beams, and tremolos. Rests" + " and whole notes have invisible stems.\n" + "\n" + "The following properties may be set in the @code{details}" + " list.\n" + "\n" "@table @code\n" - "@item beamed-lengths \n" - "list of stem lengths given beam multiplicity. \n" - "@item beamed-minimum-free-lengths \n" - "list of normal minimum free stem lengths (chord to beams) given beam multiplicity.\n" + "@item beamed-lengths\n" + "List of stem lengths given beam multiplicity.\n" + "@item beamed-minimum-free-lengths\n" + "List of normal minimum free stem lengths (chord to beams)" + " given beam multiplicity.\n" "@item beamed-extreme-minimum-free-lengths\n" - "list of extreme minimum free stem lengths (chord to beams) given beam multiplicity.\n" + "List of extreme minimum free stem lengths (chord to beams)" + " given beam multiplicity.\n" "@item lengths\n" - "Default stem lengths. The list gives a length for each flag-count.\n" + "Default stem lengths. The list gives a length for each" + " flag count.\n" "@item stem-shorten\n" - "How much a stem in a forced direction " - "should be shortened. The list gives an amount depending on the number " - "of flags/beams." - "@end table\n" - , + "How much a stem in a forced direction should be shortened." + " The list gives an amount depending on the number of flags" + " and beams.\n" + "@end table\n", /* properties */ "avoid-note-head "