]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/paper-system.cc
* scripts/abc2ly.py (dump_slyrics): add ord().
[lilypond.git] / lily / paper-system.cc
index f51d2cbd7e502165d9e641aa9bc2b85db6166b89..3a5835079c59f66a54ef0e58b0da922bf272ef5d 100644 (file)
@@ -7,8 +7,7 @@
 */
 
 #include "paper-system.hh"
-#include "stencil.hh"
-#include "string.hh"
+
 #include "virtual-methods.hh"
 
 #include "ly-smobs.icc"
@@ -26,6 +25,7 @@ Paper_system::Paper_system (Stencil s, bool is_title)
   penalty_ = 0;
   smobify_self ();
   stencil_ = s;
+  staff_refpoints_ = Interval(0,0);
 }
 
 Paper_system::~Paper_system ()
@@ -35,14 +35,14 @@ 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);
@@ -67,13 +67,6 @@ Paper_system::penalty () const
   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
 {
@@ -87,10 +80,12 @@ LY_DEFINE (ly_paper_system_height, "ly:paper-system-extent",
   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?")
@@ -127,3 +122,14 @@ LY_DEFINE (ly_paper_system_stencil, "ly:paper-system-stencil",
   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_);
+}
+