From 954667c556cfa0b7c01f456e6e9cee0a1c1f1af8 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 26 Jan 2007 02:59:07 +0100 Subject: [PATCH] Fix #174. Tune dash-period to end on a full dash. --- input/regression/line-dashed-period.ly | 27 ++++++++++++++++++++++++++ lily/line-interface.cc | 7 ++++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 input/regression/line-dashed-period.ly diff --git a/input/regression/line-dashed-period.ly b/input/regression/line-dashed-period.ly new file mode 100644 index 0000000000..dd0b55e898 --- /dev/null +++ b/input/regression/line-dashed-period.ly @@ -0,0 +1,27 @@ +\header { + + texidoc = "The period of a dashed line is adjusted such that it +starts and ends on a full dash. " + +} + +\version "2.11.13" + +\layout { + indent = 0.0\mm + ragged-right = ##T +} + +\relative << + \new Staff { + \override DynamicTextSpanner #'dash-fraction = ##f + \setTextCresc + c1_\< c c1\! + } + \new Staff { + \override DynamicTextSpanner #'dash-period = #3 + \override DynamicTextSpanner #'dash-fraction = #0.3 + \setTextCresc + c1^\< c c1\! + } +>> diff --git a/lily/line-interface.cc b/lily/line-interface.cc index ff7fae5783..3f66437f3f 100644 --- a/lily/line-interface.cc +++ b/lily/line-interface.cc @@ -128,9 +128,14 @@ Line_interface::line (Grob *me, Offset from, Offset to) Real period = Staff_symbol_referencer::staff_space (me) * robust_scm2double (me->get_property ("dash-period"), 1.0); - if (period < 0) + if (period <= 0) return Stencil (); + Real len = (to-from).length(); + + int n = (int) rint ((len - period * fraction) / period); + period = ((to-from).length() - period * fraction) / n; + stil = make_dashed_line (thick, from, to, period, fraction); } else -- 2.39.5