]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/system.cc
Merge branch 'master' into lilypond/translation
[lilypond.git] / lily / system.cc
index e700615523045a4882030f00cf08e8bf73e56d45..e0964482fcf91373fb73aaf07aebac53844d7ce3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1996--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #include "system.hh"
 #include "axis-group-interface.hh"
 #include "grob-array.hh"
 #include "international.hh"
+#include "lookup.hh"
 #include "main.hh"
 #include "output-def.hh"
 #include "paper-column.hh"
 #include "paper-score.hh"
 #include "paper-system.hh"
 #include "pointer-group-interface.hh"
-#include "spacing-interface.hh"
+#include "skyline-pair.hh"
 #include "staff-symbol-referencer.hh"
 #include "warn.hh"
-#include "lookup.hh"
-
-extern bool debug_skylines;
 
 System::System (System const &src)
   : Spanner (src)
@@ -177,7 +175,7 @@ System::do_break_substitution_and_fixup_refpoints ()
     }
 
   if (be_verbose_global)
-    message (_f ("Element count %d.", count + element_count ()));
+    message (_f ("Element count %d", count + element_count ()) + "\n");
 }
 
 SCM
@@ -227,11 +225,17 @@ System::break_into_pieces (vector<Column_x_positions> const &breaking)
 
       system->set_bound (LEFT, c[0]);
       system->set_bound (RIGHT, c.back ());
+      SCM system_labels = SCM_EOL;
       for (vsize j = 0; j < c.size (); j++)
        {
          c[j]->translate_axis (breaking[i].config_[j], X_AXIS);
          dynamic_cast<Paper_column *> (c[j])->system_ = system;
+         /* collect the column labels */
+         SCM col_labels = c[j]->get_property ("labels");
+         if (scm_is_pair (col_labels))
+           system_labels = scm_append (scm_list_2 (col_labels, system_labels));
        }
+      system->set_property ("labels", system_labels);
       
       set_loose_columns (system, &breaking[i]);
       broken_intos_.push_back (system);
@@ -390,8 +394,12 @@ System::get_paper_system ()
       Skyline_pair *skylines = Skyline_pair::unsmob (get_property ("vertical-skylines"));
       if (skylines)
        {
-         sys_stencil.add_stencil (Lookup::points_to_line_stencil (0.1, (*skylines)[UP].to_points (X_AXIS)).in_color (255, 0, 0));
-         sys_stencil.add_stencil (Lookup::points_to_line_stencil (0.1, (*skylines)[DOWN].to_points (X_AXIS)).in_color (0, 255, 0));
+         Stencil up
+           = Lookup::points_to_line_stencil (0.1, (*skylines)[UP].to_points (X_AXIS));
+         Stencil down
+           = Lookup::points_to_line_stencil (0.1, (*skylines)[DOWN].to_points (X_AXIS));
+         sys_stencil.add_stencil (up.in_color (255, 0, 0));
+         sys_stencil.add_stencil (down.in_color (0, 255, 0));
        }
     }
 
@@ -411,7 +419,8 @@ System::get_paper_system ()
   Interval staff_refpoints;
   extract_grob_set (this, "spaceable-staves", staves);
   for (vsize i = 0; i < staves.size (); i++)
-    staff_refpoints.add_point (staves[i]->relative_coordinate (this, Y_AXIS));
+    if (staves[i]->is_live ())
+      staff_refpoints.add_point (staves[i]->relative_coordinate (this, Y_AXIS));
 
   pl->set_property ("staff-refpoint-extent", ly_interval2scm (staff_refpoints));
   pl->set_property ("system-grob", this->self_scm ()); 
@@ -507,12 +516,14 @@ get_root_system (Grob *me)
 }
 
 ADD_INTERFACE (System,
-              "This is the toplevel object: each object in a score "
-              "ultimately has a System object as its X and Y parent. ",
+              "This is the top-level object: Each object in a score"
+              " ultimately has a @code{System} object as its X and"
+              " Y@tie{}parent.",
 
               /* properties */
               "all-elements "
               "columns "
+              "labels "
               "pure-Y-extent "
               "spaceable-staves "
               "skyline-distance "