]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/paper-system.cc
* lily/dots.cc (print): replace -
[lilypond.git] / lily / paper-system.cc
index f51d2cbd7e502165d9e641aa9bc2b85db6166b89..49fe5cb0b726e686dd2904665535ccbb92793b70 100644 (file)
@@ -7,8 +7,7 @@
 */
 
 #include "paper-system.hh"
-#include "stencil.hh"
-#include "string.hh"
+
 #include "virtual-methods.hh"
 
 #include "ly-smobs.icc"
@@ -23,9 +22,10 @@ Paper_system::Paper_system (Stencil s, bool is_title)
 {
   is_title_ = is_title;
   number_ = 0;
-  penalty_ = 0;
+  break_before_penalty_ = 0;
   smobify_self ();
   stencil_ = s;
+  staff_refpoints_ = Interval(0,0);
 }
 
 Paper_system::~Paper_system ()
@@ -35,20 +35,20 @@ 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);
   scm_puts (to_string (p->number_).to_str0 (), port);
   scm_puts ("p ", port);
-  scm_puts (to_string (p->penalty_).to_str0 (), port);
+  scm_puts (to_string (p->break_before_penalty_).to_str0 (), port);
   if (p->is_title ())
     scm_puts (" t", port);
   scm_puts (" >", port);
@@ -62,16 +62,9 @@ Paper_system::is_title () const
 }
 
 Real
-Paper_system::penalty () const
-{
-  return penalty_;
-}
-
-Offset
-Paper_system::dim () const
+Paper_system::break_before_penalty () const
 {
-  return Offset (stencil_.extent (X_AXIS).length (),
-                stencil_.extent (Y_AXIS).length ());
+  return break_before_penalty_;
 }
 
 Stencil
@@ -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?")
@@ -109,13 +104,13 @@ LY_DEFINE (ly_paper_system_number, "ly:paper-system-number",
   return scm_int2num (ps->number_);
 }
 
-LY_DEFINE (ly_paper_system_break_score, "ly:paper-system-break-penalty",
+LY_DEFINE (ly_paper_system_break_before_penalty, "ly:paper-system-break-before-penalty",
           1, 0, 0, (SCM system),
           "Return the score for page break after @var{system}.")
 {
   Paper_system *ps = unsmob_paper_system (system);
   SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
-  return scm_int2num (int (ps->penalty ()));
+  return scm_int2num (int (ps->break_before_penalty ()));
 }
 
 LY_DEFINE (ly_paper_system_stencil, "ly:paper-system-stencil",
@@ -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_);
+}
+