+
+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 = new Item (get_property ("BreakAlignGroup"));
+
+ group->set_grob_property ("break-align-symbol", align_name);
+ group->set_parent (align_, Y_AXIS);
+ announce_grob(group, item->self_scm());
+
+ 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,
+/* descr */ "Align grobs with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder",
+/* creats*/ "BreakAlignment BreakAlignGroup LeftEdge",
+/* accepts */ "general-music",
+/* acks */ "break-aligned-interface"
+,/* reads */ "breakAlignOrder",
+/* write */ "");