+SCM
+Rest::print (SCM smob)
+{
+ return brew_internal_stencil (smob);
+}
+MAKE_SCHEME_CALLBACK (Rest,extent_callback,2);
+/*
+ We need the callback. The real stencil has ledgers depending on
+ Y-position. The Y-position is known only after line breaking. */
+SCM
+Rest::extent_callback (SCM smob, SCM ax)
+{
+ Axis a = (Axis) gh_scm2int (ax);
+ SCM m = brew_internal_stencil (smob);
+ return ly_interval2scm (unsmob_stencil (m)->extent (a));
+}
+
+MAKE_SCHEME_CALLBACK (Rest,polyphonic_offset_callback,2);
+SCM
+Rest::polyphonic_offset_callback (SCM smob, SCM)
+{
+ Grob* me = unsmob_grob (smob);
+ Direction d = get_grob_direction (me);
+ Real off = 2* d ;
+ if(off)
+ off *= Staff_symbol_referencer::staff_space (me);
+ return gh_double2scm (off);
+}