#include "grace-align-item.hh"
#include "align-interface.hh"
-#include "lookup.hh"
+
#include "paper-column.hh"
#include "paper-def.hh"
-Grace_align_item::Grace_align_item ()
+MAKE_SCHEME_CALLBACK(Grace_align_item,before_line_breaking,1);
+SCM
+Grace_align_item::before_line_breaking (SCM smob)
{
- set_elt_property ("stacking-dir", gh_int2scm (RIGHT));
- Align_interface (this).set_interface();
- Align_interface (this).set_axis (X_AXIS);
+ Grob*me = unsmob_grob (smob);
+
+ SCM space = me->get_grob_property ("horizontal-space");
+ me->set_grob_property ("threshold",
+ gh_cons (space,
+ gh_double2scm (infinity_f)));
+ dynamic_cast<Item*>(me)->column_l ()->set_grob_property ("contains-grace", SCM_BOOL_T);
+
+ return SCM_UNSPECIFIED;
}
-
+
void
-Grace_align_item::before_line_breaking ()
+Grace_align_item::set_interface (Grob*me)
{
- Real nhw = // lookup_l ()->notehead (2, "").dim_[X_AXIS].length();
- paper_l ()->get_var ("quartwidth");
-
- set_elt_property ("threshold",
- gh_cons (gh_double2scm (nhw* 1.5),
- gh_double2scm (infinity_f)));
- column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T);
+ me->set_interface (ly_symbol2scm ("grace-align-interface"));
+ me->set_grob_property ("stacking-dir", gh_int2scm (RIGHT));
+ Align_interface::set_interface(me);
+ Align_interface::set_axis (me,X_AXIS);
}
-void
-Grace_align_item::do_add_processing ()
+
+bool
+Grace_align_item::has_interface (Grob*m)
{
+ return m&& m->has_interface (ly_symbol2scm ("grace-align-interface"));
}
-