X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Falign-interface.cc;h=6d7c34d62143037569b2025881219aae99793575;hb=a1c2a3a778efafbb8abbd44eb212a3f52f34c5f9;hp=3d68bce912115b9bf16baba295895b428e8d6002;hpb=cb01be4028886109ecc4772234452965ce7dfb66;p=lilypond.git diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 3d68bce912..6d7c34d621 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -1,9 +1,20 @@ /* - align-interface.cc -- implement Align_interface + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2000--2010 Han-Wen Nienhuys - (c) 2000--2009 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "align-interface.hh" @@ -148,10 +159,6 @@ Align_interface::get_minimum_translations (Grob *me, get_skylines (me, &elems, a, pure, start, end, &skylines); - SCM forced_distances = ly_assoc_get (ly_symbol2scm ("alignment-distances"), - Page_layout_problem::get_details (me), - SCM_EOL); - Real where = 0; Real default_padding = robust_scm2double (me->get_property ("padding"), 0.0); vector translates; @@ -170,7 +177,7 @@ Align_interface::get_minimum_translations (Grob *me, down_skyline.merge (skylines[j-1][stacking_dir]); dy = down_skyline.distance (skylines[j][-stacking_dir]); - SCM spec = Page_layout_problem::get_spacing_spec (elems[j-1], elems[j]); + SCM spec = Page_layout_problem::get_spacing_spec (elems[j-1], elems[j], pure, start, end); Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding")); Real min_distance = 0; @@ -182,7 +189,7 @@ Align_interface::get_minimum_translations (Grob *me, // Spaceable staves may have min-distance and padding // constraints coming from the previous spaceable staff // as well as from the previous staff. - spec = Page_layout_problem::get_spacing_spec (last_spaceable_element, elems[j]); + spec = Page_layout_problem::get_spacing_spec (last_spaceable_element, elems[j], pure, start, end); Real spaceable_padding = 0; Page_layout_problem::read_spacing_spec (spec, &spaceable_padding, @@ -194,15 +201,6 @@ Align_interface::get_minimum_translations (Grob *me, &min_distance, ly_symbol2scm ("minimum-distance"))) dy = max (dy, min_distance + stacking_dir*(last_spaceable_element_pos - where)); - - if (scm_is_pair (forced_distances)) - { - SCM forced_dist = scm_car (forced_distances); - forced_distances = scm_cdr (forced_distances); - - if (scm_is_number (forced_dist)) - dy = scm_to_double (forced_dist) + stacking_dir * (last_spaceable_element_pos - where); - } } } @@ -242,9 +240,13 @@ void Align_interface::align_elements_to_ideal_distances (Grob *me) { System *sys = me->get_system (); - Page_layout_problem layout (NULL, SCM_EOL, scm_list_1 (sys->self_scm ())); - - layout.solution (true); + if (sys) + { + Page_layout_problem layout (NULL, SCM_EOL, scm_list_1 (sys->self_scm ())); + layout.solution (true); + } + else + programming_error ("vertical alignment called before line breaking"); } void @@ -332,10 +334,7 @@ ADD_INTERFACE (Align_interface, " or bottom to top. For vertical alignments of staves, the" " @code{break-system-details} of the left" " @rinternals{NonMusicalPaperColumn} may be set to tune" - " vertical spacing. Set @code{alignment-extra-space} to add" - " extra space for staves. Set" - " @code{fixed-alignment-extra-space} to force staves in" - " @code{PianoStaff}s further apart.", + " vertical spacing.", /* properties */ "align-dir "