X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspacing-spanner.cc;h=cc353bc365896abd19b5ada958a688d5a3d8a27e;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=022c6a121949543fa05c7fd4b4fba680aa8b1fea;hpb=01df8ad908c92687d0c352e5ad5f067e52809423;p=lilypond.git diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 022c6a1219..cc353bc365 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2012 Han-Wen Nienhuys + Copyright (C) 1999--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,7 +58,7 @@ MAKE_SCHEME_CALLBACK (Spacing_spanner, set_springs, 1); SCM Spacing_spanner::set_springs (SCM smob) { - Spanner *me = unsmob_spanner (smob); + Spanner *me = unsmob (smob); /* can't use get_system () ? --hwn. @@ -89,7 +89,7 @@ MAKE_SCHEME_CALLBACK (Spacing_spanner, calc_common_shortest_duration, 1); SCM Spacing_spanner::calc_common_shortest_duration (SCM grob) { - Spanner *me = unsmob_spanner (grob); + Spanner *me = unsmob (grob); vector cols (get_columns (me)); @@ -106,7 +106,7 @@ Spacing_spanner::calc_common_shortest_duration (SCM grob) { if (Paper_column::is_musical (cols[i])) { - Moment *when = unsmob_moment (cols[i]->get_property ("when")); + Moment *when = unsmob (cols[i]->get_property ("when")); /* ignore grace notes for shortest notes. @@ -115,7 +115,7 @@ Spacing_spanner::calc_common_shortest_duration (SCM grob) continue; SCM st = cols[i]->get_property ("shortest-starter-duration"); - Moment this_shortest = *unsmob_moment (st); + Moment this_shortest = *unsmob (st); assert (this_shortest.to_bool ()); shortest_in_measure = min (shortest_in_measure, this_shortest.main_part_); } @@ -161,7 +161,7 @@ Spacing_spanner::calc_common_shortest_duration (SCM grob) SCM bsd = me->get_property ("base-shortest-duration"); Rational d = Rational (1, 8); - if (Moment *m = unsmob_moment (bsd)) + if (Moment *m = unsmob (bsd)) d = m->main_part_; if (max_idx != VPOS) @@ -237,7 +237,7 @@ set_column_rods (vector const &cols, Real padding) if (Separation_item::is_empty (r) && (!rb || Separation_item::is_empty (rb))) continue; - Skyline_pair *skys = Skyline_pair::unsmob (r->get_property ("horizontal-skylines")); + Skyline_pair *skys = unsmob (r->get_property ("horizontal-skylines")); overhangs[i] = skys ? (*skys)[RIGHT].max_height () : 0.0; if (0 == i) continue; @@ -315,11 +315,13 @@ Spacing_spanner::musical_column_spacing (Grob *me, Item *right_col, Spacing_options const *options) { - Real base_note_space = note_spacing (me, left_col, right_col, options); - Spring spring; + Spring spring = note_spacing (me, left_col, right_col, options); if (options->stretch_uniformly_) - spring = Spring (base_note_space, 0.0); + { + spring.set_min_distance (0.0); + spring.set_default_strength (); + } else { vector springs; @@ -349,42 +351,30 @@ Spacing_spanner::musical_column_spacing (Grob *me, /* This is probably a waste of time in the case of polyphonic music. */ - if (found_matching_column && Note_spacing::has_interface (wish)) + if (found_matching_column && has_interface (wish)) { Real inc = options->increment_; - Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing")); + Grob *gsp = unsmob (left_col->get_object ("grace-spacing")); if (gsp && Paper_column::when_mom (left_col).grace_part_) { 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)); + springs.push_back (Note_spacing::get_spacing (wish, right_col, spring, inc)); } } if (springs.empty ()) { - - if (!Paper_column::is_musical (right_col)) - { - /* - 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. - */ - spring = Spring (max (base_note_space, options->increment_), - options->increment_); - } - else + if (Paper_column::is_musical (right_col)) { /* Min distance should be 0.0. If there are no spacing wishes, we're probably dealing with polyphonic spacing of hemiolas. */ - spring = Spring (base_note_space, 0.0); + spring.set_min_distance (0.0); } } else @@ -457,7 +447,7 @@ Spacing_spanner::fills_measure (Grob *me, Item *left, Item *col) Moment dt = Paper_column::when_mom (next) - Paper_column::when_mom (col); - Moment *len = unsmob_moment (left->get_property ("measure-length")); + Moment *len = unsmob (left->get_property ("measure-length")); if (!len) return false; @@ -499,7 +489,7 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r, { Item *spacing_grob = dynamic_cast (wishes[i]); - if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob)) + if (!spacing_grob || !has_interface (spacing_grob)) continue; /*