]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/paper-book.cc
* Unify fetaDynamic and fetaNumber into one fetaText encoding
[lilypond.git] / lily / paper-book.cc
index 4700a8ce0a54dedfa3eb8115242a7dc3c6bfad54..33998a190b84183e566342b8dc861f2b5fdf5180 100644 (file)
@@ -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 <janneke@gnu.org>
 
-  (c) 2004--2009 Jan Nieuwenhuizen <janneke@gnu.org>
+  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 <http://www.gnu.org/licenses/>.
 */
 
 #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);