+
+void
+Break_align_engraver::add_to_group (SCM align_name, Item*item)
+{
+ SCM s = scm_assoc (align_name, column_alist_);
+ Item * group = 0;
+
+ if (s != SCM_BOOL_F)
+ {
+ Grob *e = unsmob_grob (ly_cdr (s));
+ group = dynamic_cast<Item*> (e);
+ }
+ else
+ {
+ group = make_item ("BreakAlignGroup", item->self_scm () );
+
+ group->set_property ("break-align-symbol", align_name);
+ group->set_parent (align_, Y_AXIS);
+
+ column_alist_ = scm_assoc_set_x (column_alist_, align_name, group->self_scm ());
+
+ }
+ Axis_group_interface::add_element (group, item);
+}
+
+ENTER_DESCRIPTION (Break_align_engraver,
+ "Align grobs with corresponding @code{break-align-symbols} into "
+ "groups, and order the groups according to @code{breakAlignOrder}. "
+ "The left edge of the alignment gets a separate group, with a symbol @code{left-edge}. "
+ ,
+ /* creats*/ "BreakAlignment BreakAlignGroup LeftEdge",
+ /* accepts */ "",
+ /* acks */ "break-aligned-interface",
+ /* reads */ "",
+ /* write */ "");