X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspacing-spanner.cc;h=568283846d345b99065c56f3c0d922e0922f9804;hb=5bbca339abd8ca056f1360a829cc9798bd6ecd8b;hp=50848ecc598a2ae8c33f944605e6efd3ce2967d5;hpb=16cb456cabf477f6d398ff731aa0f10b60913394;p=lilypond.git diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 50848ecc59..568283846d 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -50,7 +50,7 @@ Spacing_spanner::set_springs (SCM smob) Spanner *me = unsmob_spanner (smob); /* - can't use get_system() ? --hwn. + can't use get_system () ? --hwn. */ Spacing_options options; options.init_from_grob (me); @@ -167,15 +167,10 @@ Spacing_spanner::generate_pair_spacing (Grob *me, { if (Paper_column::is_musical (left_col)) { - bool skip_unbroken_right = false; - if (!Paper_column::is_musical (right_col) && options->float_nonmusical_columns_ && after_right_col && Paper_column::is_musical (after_right_col)) - skip_unbroken_right = true; - - if (skip_unbroken_right) { /* TODO: should generate rods to prevent collisions. @@ -233,8 +228,7 @@ Spacing_spanner::generate_springs (Grob *me, } /* - Generate the space between two musical columns LEFT_COL and RIGHT_COL, given - spacing parameters INCR and SHORTEST. + Generate the space between two musical columns LEFT_COL and RIGHT_COL. */ void Spacing_spanner::musical_column_spacing (Grob *me, @@ -242,8 +236,7 @@ Spacing_spanner::musical_column_spacing (Grob *me, Item *right_col, Spacing_options const *options) { - bool expand_only = false; - Real base_note_space = note_spacing (me, left_col, right_col, options, &expand_only); + Real base_note_space = note_spacing (me, left_col, right_col, options); Real max_fixed = 0; Real max_space = 0; @@ -319,13 +312,14 @@ Spacing_spanner::musical_column_spacing (Grob *me, if (!Paper_column::is_musical (right_col)) { /* - reconsider this: breaks with wide marks/tempos/etc. + There used to be code that examined left_col->extent + (X_AXIS), but this is resulted in unexpected wide + spacing, because the width of s^"text" output is also + taken into account here. */ - Real left_col_stick_out = robust_relative_extent (left_col, left_col, X_AXIS)[RIGHT]; - compound_fixed_note_space = max (left_col_stick_out, options->increment_); - + compound_fixed_note_space = options->increment_; compound_note_space = max (base_note_space, - base_note_space - options->increment_ + left_col_stick_out); + options->increment_); } else { @@ -404,7 +398,7 @@ bool Spacing_spanner::fills_measure (Grob *me, Item *left, Item *col) { System *sys = get_root_system (me); - Item *next = sys->column (col->get_column()->get_rank () + 1); + Item *next = sys->column (col->get_column ()->get_rank () + 1); if (!next) return false; @@ -460,17 +454,15 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob)) continue; - Real space = 0.; - Real fixed_space = 0.; - /* column for the left one settings should be ok due automatic pointer munging. */ assert (spacing_grob->get_column () == l); - Staff_spacing::get_spacing_params (spacing_grob, - &space, &fixed_space); + Spring sp = Staff_spacing::get_spacing_params (spacing_grob); + Real space = sp.distance_; + Real fixed = sp.distance_ - sp.inverse_compress_strength_; if (Paper_column::when_mom (r).grace_part_) { @@ -483,10 +475,10 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, } max_space = max (max_space, space); - max_fixed = max (max_fixed, fixed_space); + max_fixed = max (max_fixed, fixed); compound_space += space; - compound_fixed += fixed_space; + compound_fixed += fixed; wish_count++; } } @@ -527,6 +519,7 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, Real inverse_strength = (compound_space - compound_fixed); Real distance = compound_space; + message (_f ("adding spring of length %f", distance)); Spaceable_grob::add_spring (l, r, distance, inverse_strength); }