X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column.cc;h=8c9e0aea4eec10a8607358dc777557f795834a72;hb=b4e93466da7a06bb2d2845db17360de7b570dabb;hp=53dfd4a906a2b907baeb59ced8b2ae998bcd3a7e;hpb=d3893f0e1ba5d8cf85b73b9a59fab58d8f675e5b;p=lilypond.git diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 53dfd4a906..8c9e0aea4e 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -8,6 +8,7 @@ #include "paper-column.hh" +#include "break-align-interface.hh" #include "moment.hh" #include "paper-score.hh" #include "warn.hh" @@ -157,6 +158,25 @@ Paper_column::minimum_distance (Grob *left, Grob *right) return max (0.0, skys[LEFT].distance (skys[RIGHT])); } +Interval +Paper_column::break_align_width (Grob *me) +{ + Grob *p = me->get_parent (X_AXIS); + + if (is_musical (me)) + { + me->programming_error ("tried to get break-align-width of a non-musical column"); + return Interval (0, 0) + me->relative_coordinate (p, X_AXIS); + } + + Grob *align = Pointer_group_interface::find_grob (me, ly_symbol2scm ("elements"), + Break_alignment_interface::has_interface); + if (!align) + return Interval (0, 0) + me->relative_coordinate (p, X_AXIS); + + return align->extent (p, X_AXIS); +} + /* Print a vertical line and the rank number, to aid debugging. */ @@ -294,19 +314,18 @@ Paper_column::before_line_breaking (SCM grob) ADD_INTERFACE (Paper_column, - "@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", - + "@code{Paper_column} objects form the top-most X@tie{}parents" + " for items. There 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@tie{}positions of these objects.\n" + "\n" + "They are numbered, the first (leftmost) is column@tie{}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.", /* properties */ "between-cols " @@ -325,5 +344,6 @@ ADD_INTERFACE (Paper_column, "shortest-starter-duration " "spacing " "used " - "when "); + "when " + );