From: Han-Wen Nienhuys Date: Sun, 20 May 2007 21:10:15 +0000 (-0300) Subject: add Page_spacing_result::average_force() X-Git-Tag: release/2.11.25-1~6 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=7741e1904574bff22738432a0dcc1c32c4d55656;p=lilypond.git add Page_spacing_result::average_force() --- diff --git a/lily/include/page-spacing-result.hh b/lily/include/page-spacing-result.hh index 46a25d04ed..c37153285e 100644 --- a/lily/include/page-spacing-result.hh +++ b/lily/include/page-spacing-result.hh @@ -19,6 +19,7 @@ struct Page_spacing_result { Real penalty_; Real demerits_; + Real average_force () const; vsize page_count () const; vsize system_count () const; Page_spacing_result (); diff --git a/lily/optimal-page-breaking.cc b/lily/optimal-page-breaking.cc index f25d75f039..728e726a5e 100644 --- a/lily/optimal-page-breaking.cc +++ b/lily/optimal-page-breaking.cc @@ -92,17 +92,11 @@ Optimal_page_breaking::solve () best_division = bound; } - if (best_for_this_sys_count.systems_per_page_.size () < page_count) - { - /* if the pages are stretched on average, stop trying to reduce sys_count */ - Real average_force = 0; - for (vsize i = 0; i < best_for_this_sys_count.systems_per_page_.size (); i++) - average_force += best_for_this_sys_count.force_[i]; - - average_force /= best_for_this_sys_count.page_count (); - if (average_force > 0) - break; - } + /* if the pages are stretched on average, stop trying to reduce sys_count */ + if (best_for_this_sys_count.page_count () < page_count + && best_for_this_sys_count.average_force () > 0) + break; + if (isinf (best_for_this_sys_count.demerits_)) break; diff --git a/lily/page-spacing-result.cc b/lily/page-spacing-result.cc index 510567e1ac..f677476b34 100644 --- a/lily/page-spacing-result.cc +++ b/lily/page-spacing-result.cc @@ -30,3 +30,14 @@ Page_spacing_result::page_count () const { return systems_per_page_.size(); } + +Real +Page_spacing_result::average_force () const +{ + Real average_force = 0; + for (vsize i = 0; i < page_count (); i++) + average_force += force_[i]; + + average_force /= page_count (); + return average_force; +}