]> git.donarmstrong.com Git - lilypond.git/commitdiff
* input/test/title-markup.ly: Add \noPagebreak test.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 11 Apr 2004 15:15:51 +0000 (15:15 +0000)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 11 Apr 2004 15:15:51 +0000 (15:15 +0000)
* lily/score-engraver.cc (try_music): Bugfix.

ChangeLog
input/test/title-markup.ly
lily/score-engraver.cc
lily/system.cc

index f6d75da1822ae0204a093392b1601cdd64a5a5d0..37e8c13e3e7f4ca09566516e499f238c13dccbb7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * input/test/title-markup.ly: Add \noPagebreak test.
+
+       * lily/score-engraver.cc (try_music): Bugfix.
+
 2004-04-11  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
        * lily/main.cc (main_with_guile): call lilypond-main
index bc0641e5f73870ee723ee4f5b4fd81d8d25e1373..63b1ecd010a36a996d4395d5339066dc424ea611 100644 (file)
@@ -85,6 +85,9 @@ spaceTest = \markup { "two space chars" }
     %% bookTitle = \markup { \fill-line < \huge\bold \title > > }
 }
 
+%% suggest harder :-)
+%% noPagebreak = #(make-event-chord (list (make-penalty-music 0 1e9)))
+
 \book {
     
     \score {
@@ -101,7 +104,12 @@ spaceTest = \markup { "two space chars" }
            %% stress page breaking:
            %% 35 keep on 3 pages
            %% 36 spread evenly over 4 pages
-           \repeat unfold 36 { a b c d \break }
+           \repeat unfold 6 { a b c d \break }
+           
+           %% FIXME: TODO factor \pagebreak \noPagebreak into regtest
+           %% Without this, page breaks are better, after measure: 12
+           \noPagebreak
+           \repeat unfold 30 { a b c d \break }
            c1
        }
        \header {
index 52e6c63ba32f4ac075ba5813546d4c25d134f748..818bb2ac5f7bc429473f45ee3ce0f478f63601d6 100644 (file)
@@ -280,17 +280,12 @@ Score_engraver::try_music (Music *m)
        forbid_breaks ();
 
       SCM page_pen = command_column_->get_property ("page-penalty");
-      if (is_number (page_pen))
-       {
-         Real total_pp = ly_scm2double (page_pen);
-         SCM mpage_pen = m->get_property ("page-penalty");
-         if (is_number (mpen))
-           total_pp += ly_scm2double (mpage_pen);
-
-         // FIXME: this never reaches a grob that System::get_line sees.
-         command_column_->set_property ("page-penalty",
-                                        scm_make_real (total_pp));
-       }
+      Real total_pp = is_number (page_pen) ? ly_scm2double (page_pen) : 0.0;
+      SCM mpage_pen = m->get_property ("page-penalty");
+      if (is_number (mpage_pen))
+       total_pp += ly_scm2double (mpage_pen);
+      
+      command_column_->set_property ("page-penalty", scm_make_real (total_pp));
       return true;
     }
   return false;
index 1e6a24446c0653c1d132cc6b95309b9fc52e86ac..00a7caf69b9cb131fb45bd1735bda47d7d2f83b3 100644 (file)
@@ -362,27 +362,17 @@ System::get_line ()
        unsmob_stencil (my_stencil)->translate (o + extra);
        stencils = scm_cons (my_stencil, stencils);
 
-#if 0
-       // FIXME: never original  
-       if (!penalty || g->original_)
+       if (g->original_)
          {
            if (Item *it = dynamic_cast <Item*> (g))
              {
                Grob *col = it->get_column ();
                SCM s = col->get_property ("page-penalty");
-               // FIXME: 'page-penalty is never set
                // FIXME; page breaking is not discrete at +-10000
                if (is_number (s)) // && fabs (ly_scm2double (s)) < 10000)
                  penalty += ly_scm2double (s);
              }
          }
-#else
-       SCM s = g->get_property ("page-penalty");
-       // FIXME: 'page-penalty is never set
-       // FIXME; page breaking is not discrete at +-10000
-       if (is_number (s)) // && fabs (ly_scm2double (s)) < 10000)
-         penalty += ly_scm2double (s);
-#endif 
       }
 
   Interval x (extent (this, X_AXIS));