*/
#include "paper-system.hh"
-#include "stencil.hh"
-#include "string.hh"
+
#include "virtual-methods.hh"
#include "ly-smobs.icc"
penalty_ = 0;
smobify_self ();
stencil_ = s;
+ staff_refpoints_ = Interval(0,0);
}
Paper_system::~Paper_system ()
SCM
Paper_system::mark_smob (SCM smob)
{
- Paper_system *system = (Paper_system*) ly_cdr (smob);
+ Paper_system *system = (Paper_system*) SCM_CELL_WORD_1 (smob);
return system-> stencil_.expr ();
}
int
Paper_system::print_smob (SCM smob, SCM port, scm_print_state*)
{
- Paper_system *p = (Paper_system*) ly_cdr (smob);
+ Paper_system *p = (Paper_system*) SCM_CELL_WORD_1 (smob);
scm_puts ("#<", port);
scm_puts (classname (p), port);
scm_puts (" ", port);
return penalty_;
}
-Offset
-Paper_system::dim () const
-{
- return Offset (stencil_.extent (X_AXIS).length (),
- stencil_.extent (Y_AXIS).length ());
-}
-
Stencil
Paper_system::to_stencil () const
{
Paper_system *ps = unsmob_paper_system (system);
SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
SCM_ASSERT_TYPE (is_axis (axis), axis, SCM_ARG2, __FUNCTION__, "axis");
- Axis ax = (Axis)ly_scm2int (axis);
- return scm_make_real (ps->dim ()[ax]);
+ Axis ax = (Axis)scm_to_int (axis);
+ return ly_interval2scm (ps->to_stencil().extent (ax));
}
+
+
LY_DEFINE (ly_paper_system_title_p, "ly:paper-system-title?",
1, 0, 0, (SCM system),
"Is @var{system} a title system?")
return ps->to_stencil ().smobbed_copy ();
}
+
+
+LY_DEFINE (ly_paper_system_staff_extent, "ly:paper-system-staff-extents",
+ 1, 0, 0, (SCM system),
+ "Return the top and bottom staff refpoint.")
+{
+ Paper_system *ps = unsmob_paper_system (system);
+ SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
+ return ly_interval2scm (ps->staff_refpoints_);
+}
+