]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/output-lib.scm
Fix 1286.
[lilypond.git] / scm / output-lib.scm
index 27c69fdfbe82eba10f1d3dcc20fe8156863c0926..e76c46cdb18ddbfade41573a913de1b5dd889671 100644 (file)
   (ly:duration-log
    (ly:event-property (event-cause grob) 'duration)))
 
+(define-public (stem::length val)
+  (lambda (grob)
+    (let* ((d (ly:grob-property grob 'direction))
+           (ss (ly:staff-symbol-staff-space grob))
+           (beg (ly:stem::calc-stem-begin-position grob))
+           (y1 (* beg (* 0.5 ss)))
+           (y2 (* ((if (eqv? d DOWN) - +) beg val) (* 0.5 ss))))
+      (if (eqv? d DOWN)
+          (cons y2 y1)
+          (cons y1 y2)))))
+
 (define-public (note-head::calc-duration-log grob)
   (min 2
        (ly:duration-log
@@ -324,13 +335,16 @@ and duration-log @var{log}."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Tuplets
 
+(define-public (tuplet-number::calc-direction grob)
+  (ly:tuplet-bracket::calc-direction (ly:grob-object grob 'bracket)))
+
 (define-public (tuplet-number::calc-denominator-text grob)
   (number->string (ly:event-property (event-cause grob) 'denominator)))
 
 (define-public (tuplet-number::calc-fraction-text grob)
   (let ((ev (event-cause grob)))
 
-    (format "~a:~a"
+    (format #f "~a:~a"
            (ly:event-property ev 'denominator)
            (ly:event-property ev 'numerator))))
 
@@ -360,7 +374,7 @@ and duration-log @var{log}."
          (den (if denominator denominator (ly:event-property ev 'denominator)))
          (num (if numerator numerator (ly:event-property ev 'numerator))))
 
-    (format "~a:~a" den num)))
+    (format #f "~a:~a" den num)))
 
 ;; Print a tuplet fraction with note durations appended to the numerator and the
 ;; denominator
@@ -382,10 +396,10 @@ and duration-log @var{log}."
          (num (if numerator numerator (ly:event-property ev 'numerator))))
 
     (make-concat-markup (list
-                        (make-simple-markup (format "~a" den))
+                        (make-simple-markup (format #f "~a" den))
                         (markup #:fontsize -5 #:note denominatornote UP)
                         (make-simple-markup " : ")
-                        (make-simple-markup (format "~a" num))
+                        (make-simple-markup (format #f "~a" num))
                         (markup #:fontsize -5 #:note numeratornote UP)))))
 
 
@@ -464,6 +478,25 @@ and duration-log @var{log}."
        (+ c0 p))))
 
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; annotations
+
+(define-public (numbered-footnotes int)
+  (markup #:tiny (number->string (+ 1 int))))
+
+(define-public (symbol-footnotes int)
+  (define (helper symbols out idx n)
+    (if (< n 1)
+        out
+        (helper symbols
+                (string-append out (list-ref symbols idx))
+                idx
+                (- n 1))))
+  (markup #:tiny (helper '("*" "†" "‡" "§" "¶")
+                          ""
+                          (remainder int 5)
+                          (+ 1 (quotient int 5)))))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; accidentals
 
@@ -589,7 +622,7 @@ and duration-log @var{log}."
      (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))))
 
 
-(define (parentheses-item::print me)
+(define-public (parentheses-item::print me)
   (let* ((elts (ly:grob-object me 'elements))
         (y-ref (ly:grob-common-refpoint-of-array me elts Y))
         (x-ref (ly:grob-common-refpoint-of-array me elts X))