-ADD_INTERFACE (Cluster,"cluster-interface",
- "A graphically drawn musical cluster. "
- "\n\n"
- "@code{padding} adds to the vertical extent of the shape (top and "
- "bottom). \n\n"
- "The property @code{style} controls the shape of cluster segments. Valid values "
- "include @code{leftsided-stairs}, @code{rightsided-stairs}, @code{centered-stairs}, "
- "and @code{ramp}.\n"
-,
- "style padding columns");
+ADD_INTERFACE (Cluster,
+ "A graphically drawn musical cluster.\n"
+ "\n"
+ "@code{padding} adds to the vertical extent of the shape (top"
+ " and bottom).\n"
+ "\n"
+ "The property @code{style} controls the shape of cluster"
+ " segments. Valid values include @code{leftsided-stairs},"
+ " @code{rightsided-stairs}, @code{centered-stairs}, and"
+ " @code{ramp}.\n",
+
+ /* properties */
+ "style "
+ "padding "
+ "columns "
+ );
+
+struct Cluster_beacon
+{
+public:
+ DECLARE_SCHEME_CALLBACK (height, (SCM));
+ DECLARE_GROB_INTERFACE ();
+};
+
+MAKE_SCHEME_CALLBACK (Cluster_beacon, height, 1);
+SCM
+Cluster_beacon::height (SCM g)
+{
+ Grob *me = unsmob_grob (g);
+ Interval v = robust_scm2interval (me->get_property ("positions"),
+ Interval (0, 0));
+ return ly_interval2scm (Staff_symbol_referencer::staff_space (me) * 0.5 * v);
+}
+
+ADD_INTERFACE (Cluster_beacon,
+ "A place holder for the cluster spanner to determine the"
+ " vertical extents of a cluster spanner at this"
+ " X@tie{}position.",
+
+ /* properties */
+ "positions "
+ );