+MAKE_SCHEME_CALLBACK (Break_aligned_interface, calc_break_visibility, 1)
+SCM
+Break_aligned_interface::calc_break_visibility (SCM smob)
+{
+ /* a BreakAlignGroup is break-visible iff it has one element that is break-visible */
+ Grob *me = unsmob_grob (smob);
+ SCM ret = scm_c_make_vector (3, SCM_EOL);
+ extract_grob_set (me, "elements", elts);
+ for (int dir = 0; dir <= 2; dir++)
+ {
+ bool visible = false;
+ for (vsize i = 0; i < elts.size (); i++)
+ {
+ SCM vis = elts[i]->get_property ("break-visibility");
+ if (scm_is_vector (vis) && to_boolean (scm_c_vector_ref (vis, dir)))
+ visible = true;
+ }
+ scm_c_vector_set_x (ret, dir, scm_from_bool (visible));
+ }
+ return ret;
+}
+
+ADD_INTERFACE (Break_alignable_interface,
+ "Object that is aligned on a break aligment.",
+
+ /* properties */
+ "break-align-symbols "
+ );