+ /*
+ Build a rest from smaller parts. Distances inbetween are
+ really variable, see Wanske pp. 125 */
+
+ int l = measures;
+ while (l)
+ {
+ int k;
+ if (l >= 4)
+ {
+ l-=4;
+ k = -2;
+ }
+ else if (l>= 2)
+ {
+ l -= 2;
+ k = -1;
+ }
+ else
+ {
+ k = 0;
+ l --;
+ }
+
+ Real pad = s.empty_b ()
+ ? 0.0 : gh_scm2double (me->get_grob_property ("padding")) * staff_space;
+
+ Molecule r (musfont->find_by_name ("rests-" + to_str (k)));
+ if (k == 0)
+ r.translate_axis (staff_space, Y_AXIS);
+
+ s.add_at_edge (X_AXIS, RIGHT, r, pad);
+ }
+
+
+ s.align_to (X_AXIS, CENTER);