X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column.cc;h=7296041000ced4c25196c42e339e4ed63d30d300;hb=d9b43b93f2c885409bafdb157138158f65cc49aa;hp=e9cd3be70ecb18e31b3a6377a5f12798894515ff;hpb=4995fea559cd5399b4f462de546a15195d76f4c3;p=lilypond.git diff --git a/lily/paper-column.cc b/lily/paper-column.cc index e9cd3be70e..7296041000 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -3,14 +3,34 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2001 Han-Wen Nienhuys + (c) 1997--2002 Han-Wen Nienhuys */ + #include "moment.hh" #include "paper-column.hh" #include "paper-score.hh" #include "debug.hh" #include "axis-group-interface.hh" #include "spaceable-grob.hh" +#include "molecule.hh" +#include "text-item.hh" +#include "lookup.hh" +#include "font-interface.hh" + + +/* + Paper_columns form the top-most item parent. (The Paper_columns X + parent is Line_of_score, which is a spanner.) + + Paper_columns form the units for the spacing engine. They are + numbered, the first (leftmost) is column 0. Numbering happens before + line-breaking, and columns are not renumbered after line breaking. + + Since many columns go unused, you should only use the rank field to + get ordering information. Two adjacent columns may have + non-adjacent numbers. + + */ void Paper_column::do_break_processing () @@ -59,18 +79,20 @@ Paper_column::when_mom (Grob*me) } return s; } - + bool -Paper_column::musical_b () const +Paper_column::musical_b (Grob *me) { - SCM m = get_grob_property ("shortest-starter-duration"); + SCM m = me->get_grob_property ("shortest-starter-duration"); Moment s (0); if (unsmob_moment (m)) { s = *unsmob_moment (m); } return s != Moment (0); + } + bool Paper_column::used_b (Grob*me) @@ -79,3 +101,29 @@ Paper_column::used_b (Grob*me) || gh_pair_p (me->get_grob_property ("bounded-by-me")) ; } + +/* + Print a vertical line and the rank number, to aid debugging. + */ + +MAKE_SCHEME_CALLBACK(Paper_column,brew_molecule,1); +SCM +Paper_column::brew_molecule (SCM p) +{ + Grob *me = unsmob_grob (p); + + String r = to_str (Paper_column::rank_i (me)); + SCM properties = Font_interface::font_alist_chain (me); + + Molecule t = Text_item::text2molecule (me, ly_str02scm (r.ch_C()), + properties); + t.align_to (X_AXIS, CENTER); + t.align_to (Y_AXIS, DOWN); + + Molecule l = Lookup::filledbox (Box (Interval (-0.01, 0.01), + Interval (-2, -1))); + + t.add_molecule (l); + return t.smobbed_copy (); +} +