X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-book.cc;h=33998a190b84183e566342b8dc861f2b5fdf5180;hb=31097723b2b816696ad61696630a80ff17a39557;hp=4700a8ce0a54dedfa3eb8115242a7dc3c6bfad54;hpb=0b75a399362e0e06c738d37ae096ee0e8bcc1af1;p=lilypond.git diff --git a/lily/paper-book.cc b/lily/paper-book.cc index 4700a8ce0a..33998a190b 100644 --- a/lily/paper-book.cc +++ b/lily/paper-book.cc @@ -1,9 +1,20 @@ /* - paper-book.cc -- implement Paper_book + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2004--2010 Jan Nieuwenhuizen - (c) 2004--2009 Jan Nieuwenhuizen + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "paper-book.hh" @@ -505,15 +516,20 @@ Paper_book::get_system_specs () paper_->self_scm (), page_properties, scm_car (s)); - for (SCM list = texts ; scm_is_pair (list) ; list = scm_cdr (list)) + Prob *ps; + SCM list; + for (list = texts ; scm_is_pair (list) ; list = scm_cdr (list)) { SCM t = scm_car (list); // TODO: init props - Prob *ps = make_paper_system (SCM_EOL); + ps = make_paper_system (SCM_EOL); ps->set_property ("page-break-permission", ly_symbol2scm ("allow")); ps->set_property ("page-turn-permission", ly_symbol2scm ("allow")); + ps->set_property ("last-markup-line", SCM_BOOL_F); + ps->set_property ("first-markup-line", + list == texts? SCM_BOOL_T : SCM_BOOL_F); paper_system_set_stencil (ps, *unsmob_stencil (t)); ps->set_property ("is-title", SCM_BOOL_T); @@ -533,6 +549,18 @@ Paper_book::get_system_specs () // FIXME: figure out penalty. //set_system_penalty (ps, scores_[i].header_); } + // We may want to place a check here, for whether the line is too short + if (list == texts) + { + // if there is only one line in the paragraph, + // do not try to avoid orphans + ps->set_property ("last-markup-line", SCM_BOOL_F); + ps->set_property ("first-markup-line", SCM_BOOL_F); + } + else + { + ps->set_property ("last-markup-line", SCM_BOOL_T); + } } else assert (0);