--- /dev/null
+\version "2.11.37"
+
+\header {
+ texidoc = "When a tie is broken, the spacing engine must consider the
+accidental after the line break, to prevent a collision from occurring."
+}
+
+{ \key g \major gis''1~ \break gis''4
+\repeat unfold 43 {d4 \noBreak} }
+
+
if (to_boolean (me->get_property ("forced"))
|| !unsmob_grob (me->get_object ("tie"))
- || rank != start + 1) /* we are in the middle of a line */
+ || rank == start + 1) /* we are at the start of a line */
{
Stencil *s = unsmob_stencil (get_stencil (me));
if (s)
SCM size = me->get_property ("bar-size");
- if (!scm_is_number (size))
+ if (!scm_is_number (size)
+ || !Staff_symbol_referencer::get_staff_symbol (me))
return ly_interval2scm (Interval ());
Real h = scm_to_double (size);
ideal = max (ideal, min_desired_space);
stem_dir_correction (me, right_col, increment, &ideal, &min_desired_space);
+ /* TODO: grace notes look bad when things are stretched. Should we increase
+ their stretch strength? */
Spring ret (max (0.0, ideal), min_dist);
ret.set_inverse_compress_strength (max (0.0, ideal - min_desired_space));
ret.set_inverse_stretch_strength (max (0.1, base_space - increment));
This is probably a waste of time in the case of polyphonic
music. */
if (Note_spacing::has_interface (wish))
- springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, options->increment_));
+ {
+ Real inc = options->increment_;
+ if (Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing")))
+ {
+ Spacing_options grace_opts;
+ grace_opts.init_from_grob (gsp);
+ inc = grace_opts.increment_;
+ }
+ springs.push_back (Note_spacing::get_spacing (wish, right_col, base_note_space, inc));
+ }
}
if (springs.empty ())
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")))
{
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);
}
. (
(axes . (,Y))
(Y-extent . ,ly:axis-group-interface::height)
+ (X-extent . ,ly:axis-group-interface::width)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
(staff-padding . 1.0)
. (
(axes . (,Y))
(Y-extent . ,ly:axis-group-interface::height)
+ (X-extent . ,ly:axis-group-interface::width)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
(padding . 1.2)
. (
(axes . (,Y))
(Y-extent . ,ly:axis-group-interface::height)
+ (X-extent . ,ly:axis-group-interface::width)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(side-axis . ,Y)
(padding . 1.2)