X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fpage-layout-problem.hh;h=a98d2643542895b0ab125a0e4b229907fbdfafcd;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=c0577b9ab072b37e4d1a9a996d9415d92b2d9c0c;hpb=a42aaa559b71ce5776795fa11a7e1df9110d85b7;p=lilypond.git diff --git a/lily/include/page-layout-problem.hh b/lily/include/page-layout-problem.hh index c0577b9ab0..a98d264354 100644 --- a/lily/include/page-layout-problem.hh +++ b/lily/include/page-layout-problem.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2009--2011 Joe Neeman + Copyright (C) 2009--2015 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,6 +22,7 @@ #include "simple-spacer.hh" #include "skyline.hh" +#include "stencil.hh" class Page_layout_problem { @@ -29,8 +30,10 @@ public: Page_layout_problem (Paper_book *, SCM page, SCM systems); SCM solution (bool ragged); + SCM fixed_force_solution (Real force); void set_header_height (Real); void set_footer_height (Real); + Real force () const; static bool read_spacing_spec (SCM spec, Real *dest, SCM sym); static bool is_spaceable (Grob *g); static SCM get_details (Grob *g); @@ -38,16 +41,16 @@ public: static vsize get_footnote_count (SCM lines); static SCM get_footnotes_from_lines (SCM lines); static void add_footnotes_to_lines (SCM lines, int counter, Paper_book *pb); - static Stencil *get_footnote_separator_stencil (Output_def *paper); + static Stencil get_footnote_separator_stencil (Output_def *paper); static SCM get_spacing_spec (Grob *before, Grob *after, bool pure, int start, int end); static Real get_fixed_spacing (Grob *before, Grob *after, int spaceable_index, bool pure, int start, int end); - static void add_footnotes_to_footer (SCM footnotes, Stencil *foot, Paper_book *pb); + static Stencil add_footnotes_to_footer (SCM footnotes, Stencil foot, Paper_book *pb); protected: void append_system (System *, Spring const &, Real indent, Real padding); void append_prob (Prob *, Spring const &, Real padding); - void solve_rod_spring_problem (bool ragged); + void solve_rod_spring_problem (bool ragged, Real fixed_force); SCM find_system_offsets (); void distribute_loose_lines (vector const &, vector const &, Real, Real); @@ -61,14 +64,16 @@ protected: Prob *prob; vector staves; vector min_offsets; - // Store the appropriate '*-*-spacing 'padding, - // for spacing any adjacent loose line + // Store the appropriate '*-*-spacing 'padding, and skyline-distance, + // considering indentation, from the previous system. + Real min_distance; Real padding; - Element (vector const &a, vector const &o, Real p) + Element (vector const &a, vector const &o, Real m, Real p) { staves = a; min_offsets = o; + min_distance = m; padding = p; prob = 0; } @@ -91,7 +96,9 @@ protected: vector springs_; vector elements_; vector solution_; + Real force_; Skyline bottom_skyline_; + Real bottom_loose_baseline_; Real page_height_; Real header_height_; Real footer_height_;