/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2009--2010 Joe Neeman <joeneeman@gmail.com>
+ Copyright (C) 2009--2011 Joe Neeman <joeneeman@gmail.com>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
up_skyline.shift (indent);
down_skyline.shift (indent);
- Real minimum_distance = up_skyline.distance (bottom_skyline_) + padding;
+ /*
+ We need to call distance with skyline-horizontal-padding because
+ the system skyline-horizontal-padding is not added during the creation
+ of an individual staff. So we add the padding for the distance check
+ at the time of adding in the system.
+ */
+ Real minimum_distance = up_skyline.distance (bottom_skyline_, robust_scm2double (sys->get_property ("skyline-horizontal-padding"), 0)) + padding;
Spring spring_copy = spring;
spring_copy.ensure_min_distance (minimum_distance);
solution_ = spacer.spring_positions ();
if (!spacer.fits ())
- warning (_f ("couldn't fit music on page: overflow is %f",
- spacer.configuration_length(spacer.force()) - page_height_));
+ {
+ Real overflow = spacer.configuration_length (spacer.force ())
+ - page_height_;
+ if (ragged && overflow < 1e-6)
+ warning (_ ("couldn't fit music on page: ragged-spacing was requested, but page was compressed"));
+ else
+ {
+ warning (_f ("couldn't fit music on page: overflow is %f",
+ overflow));
+ warning (_ ("compressing music to fit"));
+ vsize space_count = solution_.size ();
+ Real spacing_increment = overflow / (space_count - 2);
+ for (vsize i = 2; i < space_count; i++)
+ solution_[i] -= (i-1) * spacing_increment;
+ }
+ }
}
// The solution_ vector stores the position of every live VerticalAxisGroup
Real stretchability = 0;
if (Page_layout_problem::read_spacing_spec (spec, &stretchability, ly_symbol2scm ("stretchability"))
&& stretchability == 0)
- Page_layout_problem::read_spacing_spec (spec, &ret, ly_symbol2scm ("space"));
+ Page_layout_problem::read_spacing_spec (spec, &ret, ly_symbol2scm ("basic-distance"));
// If we're pure, then paper-columns have not had their systems set,
// and so elts[i]->get_system () is unreliable.
Real space;
Real stretch;
Real min_dist;
- if (read_spacing_spec (spec, &space, ly_symbol2scm ("space")))
+ if (read_spacing_spec (spec, &space, ly_symbol2scm ("basic-distance")))
spring->set_distance (space);
if (read_spacing_spec (spec, &min_dist, ly_symbol2scm ("minimum-distance")))
spring->set_min_distance (min_dist);