--- /dev/null
+\version "2.15.28"
+
+\header {
+texidoc = "A @code{MetronomeMark}, @code{RehearsalMark} and @code{BarNumber}
+should not effect the starting point of spanners.
+"
+}
+
+<<
+ \new Staff {
+ e'1 \time 4/4 \break |
+ \tempo \markup { "fooooo" } 4 = 90
+ e'1 |
+ e'1 |
+ }
+
+ \new Staff {
+ \override Score.MetronomeMark #'break-visibility = #all-visible
+ \override TupletBracket #'breakable = ##t
+ \override Beam #'breakable = ##t
+ \override Glissando #'breakable = ##t
+
+ \ottava #1 \times 1/1 { e'8\<\startTextSpan\startTrillSpan\glissando
+ [ \override NoteColumn #'glissando-skip = ##t\repeat unfold 22 e'8
+ \revert NoteColumn #'glissando-skip e'8\!\stopTextSpan\stopTrillSpan ] } |
+ }
+ \addlyrics { ah __ \repeat unfold 21 { \skip 4 } _ rrgh }
+ \addlyrics { ah -- \repeat unfold 21 { \skip 4 } _ rrgh }
+>>
+
+\layout {
+ \context {
+ \Voice
+ \remove "Forbid_line_break_engraver"
+ }
+}
#include "beam.hh"
+#include "axis-group-interface.hh"
#include "align-interface.hh"
#include "beam-scoring-problem.hh"
#include "beaming-pattern.hh"
&& me->get_bound (event_dir)->break_status_dir ())
{
current.horizontal_[event_dir]
- = (robust_relative_extent (me->get_bound (event_dir),
- commonx, X_AXIS)[RIGHT]
+ = (Axis_group_interface::generic_bound_extent (me->get_bound (event_dir),
+ commonx, X_AXIS)[RIGHT]
+ event_dir * break_overshoot[event_dir]);
}
else
do
{
Item *b = bounds[d];
- Interval e = (Axis_group_interface::has_interface (b)
- ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
- : robust_relative_extent (b, common, X_AXIS));
+ Interval e = (Paper_column::has_interface (b) && b->break_status_dir ())
+ ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
+ : robust_relative_extent (b, common, X_AXIS);
x_points[d] = b->relative_coordinate (common, X_AXIS);
if (broken [d])
#include "lyric-hyphen.hh"
+#include "axis-group-interface.hh"
#include "lookup.hh"
#include "output-def.hh"
#include "paper-column.hh"
Interval span_points;
Direction d = LEFT;
- Drul_array<bool> broken;
do
{
- Interval iv = bounds[d]->extent (common, X_AXIS);
+ Interval iv = bounds[d]->break_status_dir ()
+ ? Axis_group_interface::generic_bound_extent (bounds[d], common, X_AXIS)
+ : robust_relative_extent (bounds[d], common, X_AXIS);
span_points[d] = iv.is_empty ()
? bounds[d]->relative_coordinate (common, X_AXIS)
along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "axis-group-interface.hh"
#include "text-interface.hh"
#include "spanner.hh"
#include "font-interface.hh"
if (broken[d])
{
- span_points[d] = b->extent (common, X_AXIS)[RIGHT];
+ span_points[d] = Axis_group_interface::generic_bound_extent (b, common, X_AXIS)[RIGHT];
shorten[d] = 0.;
}
*/
#include "tuplet-bracket.hh"
+#include "axis-group-interface.hh"
#include "line-interface.hh"
#include "beam.hh"
#include "warn.hh"
Direction d = LEFT;
do
{
- x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS)[d];
-
+ x_span[d] = bounds[d]->break_status_dir ()
+ ? Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[d]
+ : robust_relative_extent (bounds[d], commonx, X_AXIS)[d];
if (connect_to_other[d])
{
Interval overshoot (robust_scm2drul (me->get_property ("break-overshoot"),
if (d == RIGHT)
x_span[d] += d * overshoot[d];
else
- x_span[d] = robust_relative_extent (bounds[d],
- commonx, X_AXIS)[RIGHT]
+ x_span[d] = (bounds[d]->break_status_dir ()
+ ? Axis_group_interface::generic_bound_extent (bounds[d], commonx, X_AXIS)[-d]
+ : robust_relative_extent (bounds[d], commonx, X_AXIS)[-d])
- overshoot[LEFT];
}
(allow-loose-spacing . #t)
(axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
+ (bound-alignment-interfaces . (break-alignment-interface))
(full-measure-extra-space . 1.0)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
;; (stencil . ,ly:paper-column::print)