From: Nicolas Sceaux Date: Wed, 11 Jul 2007 20:48:38 +0000 (+0200) Subject: Page spacing: compute more accurately page space when a line next-space is equal... X-Git-Tag: release/2.11.28-1^2~6 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d58ab73175d0d5d06d0e5ebda68c8682948c5e6a;p=lilypond.git Page spacing: compute more accurately page space when a line next-space is equal to 0. --- diff --git a/lily/include/page-spacing.hh b/lily/include/page-spacing.hh index fc4c15f55e..ba05a4de9d 100644 --- a/lily/include/page-spacing.hh +++ b/lily/include/page-spacing.hh @@ -77,5 +77,4 @@ struct Page_spacing void clear (); }; -Real line_space (Line_details const &line); #endif /* PAGE_SPACING_HH */ diff --git a/lily/page-breaking.cc b/lily/page-breaking.cc index 270337da7d..9ad833610a 100644 --- a/lily/page-breaking.cc +++ b/lily/page-breaking.cc @@ -619,7 +619,7 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num) Real ext_len = cached_line_details_[i].extent_.length (); Real next_rod_height = cur_rod_height + ext_len + ((cur_rod_height > 0) ? cached_line_details_[i].padding_: 0); - Real next_spring_height = cur_spring_height + line_space (cached_line_details_[i]); + Real next_spring_height = cur_spring_height + cached_line_details_[i].space_; Real next_height = next_rod_height + (ragged () ? next_spring_height : 0); @@ -628,7 +628,7 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num) && cached_line_details_[i-1].page_permission_ == ly_symbol2scm ("force"))) { cur_rod_height = ext_len; - cur_spring_height = line_space (cached_line_details_[i]); + cur_spring_height = cached_line_details_[i].space_; cur_page_height = page_height (first_page_num + ret, false); ret++; } diff --git a/lily/page-spacing.cc b/lily/page-spacing.cc index 536e4ff7a0..fa1c273f37 100644 --- a/lily/page-spacing.cc +++ b/lily/page-spacing.cc @@ -13,21 +13,14 @@ #include "page-breaking.hh" #include "warn.hh" -/* In order to prevent possible division by zero, we require every line - to have a spring of non-zero length. */ -Real -line_space (const Line_details &line) -{ - return max (0.1, line.space_); -} - void Page_spacing::calc_force () { - if (rod_height_ + last_line_.bottom_padding_ >= page_height_ || !inverse_spring_k_) + if (rod_height_ + last_line_.bottom_padding_ >= page_height_) force_ = infinity_f; else - force_ = (page_height_ - rod_height_ - last_line_.bottom_padding_ - spring_len_) / inverse_spring_k_; + force_ = (page_height_ - rod_height_ - last_line_.bottom_padding_ - spring_len_) + / max (0.1, inverse_spring_k_); } void @@ -36,8 +29,8 @@ Page_spacing::append_system (const Line_details &line) rod_height_ += last_line_.padding_; rod_height_ += line.extent_.length (); - spring_len_ += line_space (line); - inverse_spring_k_ += max (0.1, line.inverse_hooke_); + spring_len_ += line.space_; + inverse_spring_k_ += line.inverse_hooke_; last_line_ = line; @@ -53,8 +46,8 @@ Page_spacing::prepend_system (const Line_details &line) last_line_ = line; rod_height_ += line.extent_.length (); - spring_len_ += line_space (line); - inverse_spring_k_ += max (0.1, line.inverse_hooke_); + spring_len_ += line.space_; + inverse_spring_k_ += line.inverse_hooke_; calc_force (); }