+ SCM sml = me->get_grob_property ("use-breve-rest");
+
+ if (measures == 1)
+ {
+ if (sml == SCM_BOOL_T)
+ {
+ Molecule s = musfont->find_by_name (Rest::glyph_name (me, -1, ""));
+
+ s.translate_axis ((space - s.extent (X_AXIS).length ())/2, X_AXIS);
+
+ return s ;
+ }
+ else
+ {
+ Molecule s = musfont->find_by_name (Rest::glyph_name (me, 0, ""));
+
+ /*
+ ugh.
+ */
+ if (Staff_symbol_referencer::get_position (me) == 0.0)
+ s.translate_axis (staff_space, Y_AXIS);
+
+ s.translate_axis ((space - s.extent (X_AXIS).length ())/2, X_AXIS);
+
+ return s ;
+ }
+ }
+ else
+ {
+ return church_rest (me, musfont, measures, space);
+ }
+}
+
+
+
+Molecule
+Multi_measure_rest::big_rest (Grob *me, Real width)
+{
+ Real thick = gh_scm2double (me->get_grob_property ("thickness"));
+ Real ss = Staff_symbol_referencer::staff_space (me);
+
+ Real slt = me->get_paper ()->get_var ("linethickness");
+ Real y = slt * thick/2 * ss;
+ Box b(Interval (0, width), Interval (-y, y));
+ Real ythick = slt * ss;
+
+ Molecule m = Lookup::filledbox (b);
+ Molecule yb = Lookup::filledbox (Box (Interval (-ythick, ythick), Interval (-ss, ss)));
+
+ m.add_at_edge (X_AXIS, RIGHT, yb, -ythick);
+ m.add_at_edge (X_AXIS, LEFT, yb, -ythick);
+
+ m.align_to (X_AXIS, LEFT);
+
+ return m;
+}
+
+/*
+ Kirchenpause (?)
+ */
+Molecule
+Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
+ Real space)
+{
+ SCM mols = SCM_EOL;
+
+ /*
+ see Wanske pp. 125
+ */
+ int l = measures;
+ int count = 0;
+ Real symbols_width = 0.0;
+
+ SCM sml = me->get_grob_property ("use-breve-rest");
+
+ while (l)
+ {
+ if (sml == SCM_BOOL_T)
+ {
+ int k;
+ if (l >= 2)
+ {
+ l-=2;
+ k = -2;
+ }
+ else
+ {
+ l -= 1;
+ k = -1;
+ }
+
+ Molecule r (musfont->find_by_name ("rests-" + to_string (k)));
+ symbols_width += r.extent (X_AXIS).length ();
+ mols = gh_cons (r.smobbed_copy (), mols);
+ }
+ else