2005-10-02 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/paper-system-scheme.cc (LY_DEFINE): remove ly:paper-system-{extent,stencil}
+
* Documentation/user/global.itely (Paper size): explain how to add
sizes.
class Paper_system
{
DECLARE_SMOBS (Paper_system,);
- Stencil stencil_;
SCM mutable_property_alist_;
SCM immutable_property_alist_;
public:
Paper_system (Stencil, SCM);
- Stencil to_stencil () const;
- SCM stencils () const;
SCM internal_get_property (SCM sym) const;
void internal_set_property (SCM sym, SCM val);
- bool is_title () const;
-
Real break_before_penalty () const;
};
#include "paper-system.hh"
-LY_DEFINE (ly_paper_system_height, "ly:paper-system-extent",
- 2, 0, 0, (SCM system, SCM axis),
- "Return the extent of @var{system}.")
-{
- 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)scm_to_int (axis);
- return ly_interval2scm (ps->to_stencil ().extent (ax));
-}
-
-LY_DEFINE (ly_paper_system_stencil, "ly:paper-system-stencil",
- 1, 0, 0, (SCM system),
- "Return the height of @var{system}.")
-{
- Paper_system *ps = unsmob_paper_system (system);
- SCM_ASSERT_TYPE (ps, system, SCM_ARG1, __FUNCTION__, "paper-system");
- return ps->to_stencil ().smobbed_copy ();
-}
-
LY_DEFINE (ly_paper_system_property, "ly:paper-system-property",
mutable_property_alist_ = SCM_EOL;
immutable_property_alist_ = immutable_init;
smobify_self ();
- stencil_ = s;
- init_vars ();
-}
+ SCM yext = get_property ("Y-extent");
+
+ if (is_number_pair (yext))
+ {
+
+ Box b = s.extent_box();
+ b[Y_AXIS] = ly_scm2interval (yext);
+
+ s = Stencil (b, s.expr ());
+ }
+ set_property ("stencil", s.smobbed_copy ());
+}
Paper_system::~Paper_system ()
{
{
Paper_system *system = (Paper_system *) SCM_CELL_WORD_1 (smob);
scm_gc_mark (system->mutable_property_alist_);
- scm_gc_mark (system->immutable_property_alist_);
- return system->stencil_.expr ();
+ return system->immutable_property_alist_;
}
int
return 1;
}
-
-Stencil
-Paper_system::to_stencil () const
-{
- return stencil_;
-}
-
void
Paper_system::init_vars ()
{
- SCM yext = get_property ("Y-extent");
- if (is_number_pair (yext))
- {
- Box b = stencil_.extent_box();
- b[Y_AXIS] = ly_scm2interval (yext);
-
- stencil_ = Stencil (b, stencil_.expr ());
- }
}
SCM
putter
(format "\\lybox{~a}{~a}{%\n"
(ly:number->string
- (max 0 (interval-end (ly:paper-system-extent line X))))
+ (max 0 (interval-end (paper-system-extent line X))))
(ly:number->string
- (interval-length (ly:paper-system-extent line Y)))))
+ (interval-length (paper-system-extent line Y)))))
(ly:outputter-dump-stencil putter (ly:paper-system-stencil line))
(ly:outputter-dump-string
))
-(define-public (paper-system-title? ps)
- (equal? #t (ly:paper-system-property ps 'is-title)
+(define-public (paper-system-title? system)
+ (equal? #t (ly:paper-system-property system 'is-title)
))
+(define-public (paper-system-extent system axis)
+ (ly:stencil-extent (ly:paper-system-property system 'stencil) axis))
+
;;;;;;;;;;;;;;;;
;; alist
(define-public assoc-get ly:assoc-get)
(define-public (shift-right-at-line-begin g)
"Shift an item to the right, but only at the start of the line."
- (if (and (ly:item? g) (equal? (ly:item-break-dir g) RIGHT))
+ (if (and (ly:item? g)
+ (equal? (ly:item-break-dir g) RIGHT))
(ly:grob-translate-axis! g 3.5 X)))
(define-public (paper-system-staff-extents ps)
(ly:paper-system-property ps 'refpoint-Y-extent '(0 . 0)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (page-headfoot layout scopes number sym sepsym dir last?)
(list->vector
(append
(map
- (lambda (sys) (ly:paper-system-extent sys Y)) lines)
+ (lambda (sys) (paper-system-extent sys Y)) lines)
(if (= (length lines) 1)
'((0 . 0))
'()))))
ly:layout-def?
ly:paper-get-font
ly:paper-get-number
- ly:paper-system-extent
ly:paper-system-stencil
ly:paper-system?
ly:output-def-lookup