X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsystem.cc;h=e0964482fcf91373fb73aaf07aebac53844d7ce3;hb=754cc32a99b43f5fee5ebf7ed1213017268d4939;hp=e700615523045a4882030f00cf08e8bf73e56d45;hpb=39135672a39e378f6c66586a027a426d2164e7b4;p=lilypond.git diff --git a/lily/system.cc b/lily/system.cc index e700615523..e0964482fc 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996--2007 Han-Wen Nienhuys + (c) 1996--2009 Han-Wen Nienhuys */ #include "system.hh" @@ -13,18 +13,16 @@ #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 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 (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 "