static SCM
stencil2line (Stencil* stil)
{
- static SCM z = ly_offset2scm (Offset (0, 0));
+ static SCM z;
+ if (!z)
+ z = scm_permanent_object (ly_offset2scm (Offset (0, 0)));
Offset dim = Offset (stil->extent (X_AXIS).length (),
stil->extent (Y_AXIS).length ());
return scm_cons (ly_offset2scm (dim),
Paper_book::Paper_book ()
{
+ copyright_ = SCM_EOL;
+ tagline_ = SCM_EOL;
+
smobify_self ();
}
scm_gc_mark (pb->papers_[i]->self_scm ());
for (int i = 0; i < pb->scores_.size (); i++)
scm_gc_mark (pb->scores_[i]);
- return SCM_EOL;
+
+ scm_gc_mark (pb->copyright_);
+
+
+ return pb->tagline_;
}
int
(def-markup-command (smaller paper props arg) (markup?)
"Decrease the font size relative to current setting"
(let* ((fs (chain-assoc-get 'font-size props 0))
- ;; FIXME: crasher fix
- ;; (entry (cons 'font-size (- fs 1))))
- (entry (cons 'font-size (if (number? fs) (- fs 1) 0))))
+ (entry (cons 'font-size (- fs 1))))
(interpret-markup paper (cons (list entry) props) arg)))
(def-markup-command (bigger paper props arg) (markup?)
"Increase the font size relative to current setting"
(let* ((fs (chain-assoc-get 'font-size props 0))
- ;; FIXME: crasher fix
- ;; (entry (cons 'font-size (+ fs 1))))
- (entry (cons 'font-size (if (number? fs) (+ fs 1) 0))))
+ (entry (cons 'font-size (+ fs 1))))
(interpret-markup paper (cons (list entry) props) arg)))
(def-markup-command larger (markup?)
(define (chain-assoc-get x alist-list . default)
"Return ALIST entry for X. Return DEFAULT (optional, else #f) if not
found."
- (if (null? alist-list)
- (if (pair? default) (car default) #f)
- (let* ((handle (assoc x (car alist-list))))
- (if (pair? handle)
- (cdr handle)
- (chain-assoc-get x (cdr alist-list) default)))))
+
+ (define (helper x alist-list default)
+ (if (null? alist-list)
+ default
+ (let* ((handle (assoc x (car alist-list))))
+ (if (pair? handle)
+ (cdr handle)
+ (helper x (cdr alist-list) default)))))
+
+ (helper x alist-list
+ (if (pair? default) (car default) #f)))
(define (map-alist-vals func list)
"map FUNC over the vals of LIST, leaving the keys."
(variable-ref v)
(if (module? (cdr modules)) (ly:modules-lookup (cdr modules) sym)))))
+(define (page-properties paper)
+ (list (append `((linewidth . ,(ly:paper-get-number
+ paper 'linewidth)))
+ (ly:paper-lookup paper 'text-font-defaults))))
(define-public (book-title paper scopes)
"Generate book title from header strings."
(let ((x (ly:modules-lookup scopes sym)))
(if (and x (not (unspecified? x))) x "")))
- (let ((props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- )
- (ly:paper-lookup paper 'text-font-defaults)))))
+ (let ((props (page-properties paper)))
+
(interpret-markup
paper props
(markup
(define-public (user-title paper markup)
"Generate book title from header markup."
(if (markup? markup)
- (let ((BASELINE-SKIP 2)
- (props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- (font-family . roman))
- (ly:paper-lookup paper 'font-defaults)))))
+ (let ((props (page-properties paper))
+ (baseline-skip (chain-assoc-get 'baseline-skip props 2)) )
(stack-lines DOWN 0 BASELINE-SKIP
(list (interpret-markup paper props markup))))))
(let ((x (ly:modules-lookup scopes sym)))
(if (and x (not (unspecified? x))) x "")))
- (let ((props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- (font-family . roman))
- (ly:paper-lookup paper 'font-defaults)))))
+ (let ((props (page-properties paper)))
(interpret-markup
paper props
#:fill-line (#:large #:bigger #:caps (get 'piece) "")))))))
(define-public (make-header paper page-number)
- (let ((props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- (font-family . roman))
- (ly:paper-lookup paper 'font-defaults)))))
+ (let ((props (page-properties paper) ))
(interpret-markup paper props
(markup #:fill-line
;; FIXME: font not found
("" (number->string page-number))))))
(define-public (make-footer paper page-number)
- (let ((props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- (font-family . roman))
- (ly:paper-lookup paper 'font-defaults)))))
- (interpret-markup paper props
+ (let ((props (page-properties paper)))
+
+ (interpret-markup paper props
(markup #:fill-line ("" (number->string page-number))))))
(string-append "Engraved by LilyPond (version " (lilypond-version) ")"))
(define-public (make-tagline paper scopes)
- (let* ((props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- (font-family . roman))
- (ly:paper-lookup paper 'font-defaults))))
+ (let* ((props (page-properties paper))
(tagline-var (ly:modules-lookup scopes 'tagline))
(tagline (if (markup? tagline-var) tagline-var TAGLINE)))
+
(cond ((string? tagline)
(if (not (equal? tagline ""))
(interpret-markup paper props
((markup? tagline) (interpret-markup paper props tagline)))))
(define-public (make-copyright paper scopes)
- (let ((props (list (append `((linewidth . ,(ly:paper-get-number
- paper 'linewidth))
- (font-family . roman))
- (ly:paper-lookup paper 'font-defaults))))
+ (let ((props (page-properties paper))
(copyright (ly:modules-lookup scopes 'copyright)))
+
(cond ((string? copyright)
(if (not (equal? copyright ""))
(interpret-markup paper props