+#include "text-interface.hh"
+#include "font-interface.hh"
+#include "grob.hh"
+
+/*
+ TODO: thickness should be a grob property (unit: linethickness)
+ rather than hardwired to (staff_space / 6).
+*/
+
+/*
+ UGH : this is full of C&P code. Consolidate! --hwn
+*/
+
+/*
+ Gregorian chant divisio minima. (Actually, this was the original
+ breathing sign by Michael. -- jr)
+*/
+MAKE_SCHEME_CALLBACK (Breathing_sign, divisio_minima, 1);
+SCM
+Breathing_sign::divisio_minima (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ Real staff_space = Staff_symbol_referencer::staff_space (me);
+
+ Real thickness = Staff_symbol_referencer::line_thickness (me);
+ thickness *= robust_scm2double (me->get_property ("thickness"), 1.0);
+
+ Real blotdiameter = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
+
+ /*
+ * Draw a small vertical line through the uppermost (or, depending
+ * on direction, lowermost) staff line.
+ */
+ Interval xdim (0, thickness);
+ Interval ydim (-0.5 * staff_space, +0.5 * staff_space);
+ Box b (xdim, ydim);
+ Stencil out = Lookup::round_filled_box (b, blotdiameter);
+ return out.smobbed_copy ();
+}
+
+/*
+ Gregorian chant divisio maior.
+*/
+MAKE_SCHEME_CALLBACK (Breathing_sign, divisio_maior, 1);
+SCM
+Breathing_sign::divisio_maior (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ Real staff_space = Staff_symbol_referencer::staff_space (me);
+ Real staff_size;
+ Real thickness = Staff_symbol_referencer::line_thickness (me);
+ thickness *= robust_scm2double (me->get_property ("thickness"), 1.0);