\header {
texidoc = "An accidental following a bar gets space so
- the left edge of the acc is at 0.3 - 0.6 staff space of the bar line"
+ the left edge of the acc is at 0.3 staff space from the bar line"
}
public:
DECLARE_GROB_INTERFACE ();
- static Spring get_spacing (Grob *, Grob *right_col);
+ static Spring get_spacing (Grob *, Grob *, Real);
static Interval bar_y_positions (Grob *);
};
}
else if (Staff_spacing::has_interface (sp))
{
- Spring spring = Staff_spacing::get_spacing (sp, rc);
+ Spring spring = Staff_spacing::get_spacing (sp, rc, 0.0);
dists[d] = max (dists[d], spring.min_distance ());
}
vector<Spring> springs;
Spring spring;
+ Real full_measure_space = 0.0;
+ if (Paper_column::is_musical (r)
+ && l->break_status_dir () == CENTER
+ && fills_measure (me, l, r))
+ full_measure_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0);
+
Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l);
if (dt == Moment (0, 0))
*/
assert (spacing_grob->get_column () == l);
- springs.push_back (Staff_spacing::get_spacing (spacing_grob, r));
+ springs.push_back (Staff_spacing::get_spacing (spacing_grob, r,
+ full_measure_space));
}
}
spring *= 0.8;
}
- if (Paper_column::is_musical (r)
- && l->break_status_dir () == CENTER
- && fills_measure (me, l, r))
- {
- Real full_measure_extra_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0);
- spring.set_distance (spring.distance () + full_measure_extra_space);
- spring.set_default_compress_strength ();
- }
-
if (options->stretch_uniformly_ && l->break_status_dir () != RIGHT)
{
spring.set_min_distance (0.0);
We arrange things so that the fixed distance will be attained when the
line is compressed with a force of 1.0 */
Spring
-Staff_spacing::get_spacing (Grob *me, Grob *right_col)
+Staff_spacing::get_spacing (Grob *me, Grob *right_col, Real situational_space)
{
Item *me_item = dynamic_cast<Item *> (me);
Grob *left_col = me_item->get_column ();
ideal = fixed;
}
+ Real stretchability = ideal - fixed;
+
+ /* 'situational_space' passed by the caller
+ could include full-measure-extra-space */
+ ideal += situational_space;
+
Real optical_correction = next_notes_correction (me, last_grob);
+ fixed += optical_correction;
+ ideal += optical_correction;
+
Real min_dist = Paper_column::minimum_distance (left_col, right_col);
/* ensure that the "fixed" distance will leave a gap of at least 0.3 ss. */
Real min_dist_correction = max (0.0, 0.3 + min_dist - fixed);
- Real correction = max (optical_correction, min_dist_correction);
-
- fixed += correction;
- ideal += correction;
+ fixed += min_dist_correction;
+ ideal = max (ideal, fixed);
Spring ret (ideal, min_dist);
- ret.set_inverse_stretch_strength (max (0.0, ideal - fixed));
+ ret.set_inverse_stretch_strength (max (0.0, stretchability));
return ret;
}
(key-signature . (minimum-space . 3.5))
(time-signature . (minimum-space . 4.2))
(first-note . (minimum-fixed-space . 5.0))
- (next-note . (extra-space . 0.5))
+ (next-note . (extra-space . 1.0))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
(Y-offset . ,ly:staff-symbol-referencer::callback)
(time-signature . (minimum-space . 4.2))
(custos . (minimum-space . 0.0))
(first-note . (minimum-fixed-space . 3.0))
- (next-note . (extra-space . 0.5))
+ (next-note . (extra-space . 1.0))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
(Y-offset . ,ly:staff-symbol-referencer::callback)
(key-signature . (minimum-space . 3.5))
(time-signature . (minimum-space . 4.2))
(first-note . (minimum-fixed-space . 5.0))
- (next-note . (extra-space . 0.5))
+ (next-note . (extra-space . 1.0))
(right-edge . (extra-space . 0.5))))
(stencil . ,ly:clef::print)
(Y-offset . ,ly:staff-symbol-referencer::callback)
(fret-diagram-details . ((finger-code . below-string)))
(stencil . ,fret-board::calc-stencil)
(extra-spacing-height . (0.2 . -0.2))
+ (extra-spacing-width . (-0.5 . 0.5))
(meta . ((class . Item)
(interfaces . (chord-name-interface
font-interface