X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column.cc;h=21ec714301b4751bfe9cb62db593dc4b5470fc1d;hb=d1d00ad7111adbd421dd7f1d72863cde14fd7497;hp=8b990511f56a982713502765881df4d6d50532f1;hpb=b4139c2fb2ec738a17ee1157edf23e8ea56ed560;p=lilypond.git diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 8b990511f5..21ec714301 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2003 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ #include "moment.hh" @@ -12,33 +12,31 @@ #include "warn.hh" #include "axis-group-interface.hh" #include "spaceable-grob.hh" -#include "molecule.hh" +#include "stencil.hh" #include "text-item.hh" #include "lookup.hh" #include "font-interface.hh" - +#include "paper-def.hh" ADD_INTERFACE (Paper_column, "paper-column-interface", - " Paper_columns form the top-most item parent. (The Paper_columns X\n" -" parent is System, which is a spanner.)\n" -"\n" -" Paper_columns form the units for the spacing engine. They are\n" -" numbered, the first (leftmost) is column 0. Numbering happens before\n" -" line-breaking, and columns are not renumbered after line breaking.\n" -"\n" -" Since many columns go unused, you should only use the rank field to\n" -" get ordering information. Two adjacent columns may have\n" -" non-adjacent numbers.\n" -"\n" -" Don't be confused by right-items: each spacing wish can also contain\n" -" a number of items, with which a spacing constraint may be kept. It's\n" -" a little baroque, but it might come in handy later on?\n" -"\n", - "between-cols between-system-string when bounded-by-me shortest-playing-duration shortest-starter-duration"); - + "@code{Paper_column} objects form the top-most X-parents for items. " + " The are two types of columns: musical columns, where are attached to, and " + " non-musical columns, where bar-lines, clefs etc. are attached to. " + " The spacing engine determines the X-positions of these objects." + "\n\n" + "They are\n" + " numbered, the first (leftmost) is column 0. Numbering happens before\n" + " line-breaking, and columns are not renumbered after line breaking.\n" + " Since many columns go unused, you should only use the rank field to\n" + " get ordering information. Two adjacent columns may have\n" + " non-adjacent numbers.\n" + "\n" + , + "between-cols between-system-string when bounded-by-me " + "shortest-playing-duration shortest-starter-duration"); void Paper_column::do_break_processing () @@ -76,7 +74,7 @@ Paper_column::Paper_column (SCM l) Moment Paper_column::when_mom (Grob*me) { - SCM m = me->get_grob_property ("when"); + SCM m = me->get_property ("when"); Moment s (0); if (unsmob_moment (m)) { @@ -86,24 +84,23 @@ Paper_column::when_mom (Grob*me) } bool -Paper_column::musical_b (Grob *me) +Paper_column::is_musical (Grob *me) { - SCM m = me->get_grob_property ("shortest-starter-duration"); + SCM m = me->get_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) +Paper_column::is_used (Grob*me) { - return gh_pair_p (me->get_grob_property ("elements")) || Item::breakable_b (me) - || gh_pair_p (me->get_grob_property ("bounded-by-me")) + return gh_pair_p (me->get_property ("elements")) || Item::is_breakable (me) + || gh_pair_p (me->get_property ("bounded-by-me")) ; } @@ -111,24 +108,26 @@ Paper_column::used_b (Grob*me) Print a vertical line and the rank number, to aid debugging. */ -MAKE_SCHEME_CALLBACK(Paper_column,brew_molecule,1); +MAKE_SCHEME_CALLBACK (Paper_column,print,1); SCM -Paper_column::brew_molecule (SCM p) +Paper_column::print (SCM p) { Grob *me = unsmob_grob (p); String r = to_string (Paper_column::get_rank (me)); - SCM properties = Font_interface::font_alist_chain (me); - - Molecule t = Text_item::interpret_new_markup (p, properties, - scm_makfrom0str (r.to_str0 ())); + SCM properties = Font_interface::text_font_alist_chain (me); + + SCM scm_mol = Text_item::interpret_markup (me->get_paper ()->self_scm (), + properties, + scm_makfrom0str (r.to_str0 ())); + Stencil t = *unsmob_stencil (scm_mol); t.align_to (X_AXIS, CENTER); t.align_to (Y_AXIS, DOWN); - Molecule l = Lookup::filledbox (Box (Interval (-0.01, 0.01), + Stencil l = Lookup::filled_box (Box (Interval (-0.01, 0.01), Interval (-2, -1))); - t.add_molecule (l); + t.add_stencil (l); return t.smobbed_copy (); } @@ -139,13 +138,13 @@ Paper_column::brew_molecule (SCM p) THIS IS BROKEN KLUDGE. WE SHOULD INVENT SOMETHING BETTER. */ -MAKE_SCHEME_CALLBACK(Paper_column,before_line_breaking,1); +MAKE_SCHEME_CALLBACK (Paper_column,before_line_breaking,1); SCM Paper_column::before_line_breaking (SCM grob) { Grob *me = unsmob_grob (grob); - SCM c = me->get_grob_property ("bounded-by-me"); + SCM c = me->get_property ("bounded-by-me"); SCM *ptrptr = &c; while (gh_pair_p (*ptrptr)) @@ -162,6 +161,6 @@ Paper_column::before_line_breaking (SCM grob) } } - me->set_grob_property ("bounded-by-me", c); + me->set_property ("bounded-by-me", c); return SCM_UNSPECIFIED; }