X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fpage-layout-problem.hh;h=a98d2643542895b0ab125a0e4b229907fbdfafcd;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=6c952e3eedc0526847673566afce7959345d0fcf;hpb=f93e4199873c91ae32f0e84a610d14853dc379df;p=lilypond.git diff --git a/lily/include/page-layout-problem.hh b/lily/include/page-layout-problem.hh index 6c952e3eed..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,30 +22,35 @@ #include "simple-spacer.hh" #include "skyline.hh" +#include "stencil.hh" class Page_layout_problem { public: - Page_layout_problem (Paper_book *, SCM page, SCM systems, int footnote_count); + 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); + static vector get_footnote_grobs (SCM lines); static vsize get_footnote_count (SCM lines); - static SCM get_footnotes_from_lines (SCM lines, int counter, Paper_book *pb); - static Stencil *get_footnote_separator_stencil (Output_def *paper); + 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 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); @@ -59,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; } @@ -89,12 +96,16 @@ 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_; Real header_padding_; Real footer_padding_; + Real in_note_padding_; + Direction in_note_direction_; }; #endif /* PAGE_LAYOUT_HH */