]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/output-lib.scm
(grob-cause): escape spaces in URLs.
[lilypond.git] / scm / output-lib.scm
index d5d9d10264b5748adcf5f3bd65dcd313ce749751..03556dc7c50617d01109c357fd18ee501d835ba1 100644 (file)
 
 ;; The TabNoteHead stem attachment function.
 (define (tablature-stem-attachment-function style duration)
-  (cons 0.0 0.5))
+  (cons 0.0 1.35))
 
 ;; The TabNoteHead tablatureFormat callback.
 ;; Compute the text grob-property
 (define-public (fret-number-tablature-format string tuning pitch)
-  (number->string
-   (- (ly:pitch-semitones pitch)
-      (list-ref tuning
-               ;; remove 1 because list index starts at 0 and guitar string at 1. 
-                (- string 1)))))
+  (make-whiteout-markup
+   (make-vcenter-markup  
+    (number->string
+     (- (ly:pitch-semitones pitch)
+       (list-ref tuning
+                 ;; remove 1 because list index starts at 0 and guitar string at 1. 
+                 (- string 1)))))))
 
 ;; The 5-string banjo has got a extra string, the fifth (duh), wich
 ;; starts at the fifth fret on the neck. Frets on the fifth string
 ;;   on the banjo neck.
 ;; We solve this by defining a new fret-number-tablature function:
 (define-public (fret-number-tablature-format-banjo string tuning pitch)
+  (make-whiteout-markup
+   (make-vcenter-markup  
     (let ((fret (- (ly:pitch-semitones pitch) (list-ref tuning (- string 1)))))
-        (number->string (cond
-            ((and (> fret 0) (= string 5))
-                (+ fret 5))
-            (else fret)))))
-
-(define-public (hammer-print-function grob)
-  (let* ((note-collums (ly:grob-property grob 'note-columns))
-         (note-column1 (cadr note-collums))
-         (note-column2 (car  note-collums))
-         (note1 (car (ly:grob-property note-column1 'note-heads)))
-         (note2 (car (ly:grob-property note-column2 'note-heads)))
-        (text1 (ly:grob-property note1 'text))
-        (text2 (ly:grob-property note2 'text))
-         (fret1 (if (string? text1) (string->number text1) 0))
-         (fret2 (if (string? text2) (string->number text2) 0))
-         (letter (cond
-                 ((< fret1 fret2) "H")
-                 ((> fret1 fret2) "P")
-                 (else ""))))
-    (let* ((slur
-           ;; (Slur::print grob)
-
-           ;; 
-           ;; FIXME: a hammer is not a slur.
-           ;; 
-           (ly:make-stencil '() '(0 . 0) '(0 . 0)))
-          (layout (ly:grob-layout grob))
-          (text (interpret-markup
-                 layout
-                 (ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults))
-                 letter)))
-      
-      (let ((x (/ (- (cdr (ly:stencil-extent slur 0)) 
-                     (/ (cdr (ly:stencil-extent text 0)) 2.0))
-                  -2.0)))
-
-       (set! text
-             (ly:make-stencil (ly:stencil-expr text)
-                              (cons x x)
-                              (ly:stencil-extent text Y)))
-       
-        (ly:stencil-aligned-to text X RIGHT)))))
+      (number->string (cond
+                      ((and (> fret 0) (= string 5))
+                       (+ fret 5))
+                      (else fret)))))))
 
 
 (define-public guitar-tuning '(4 -1 -5 -10 -15 -20))
         (number->string duration)))
     ((mensural)
      (string-append (number->string duration) (symbol->string style)))
+    ((petrucci)
+     (if (< duration 0)
+        (string-append (number->string duration) "mensural")
+        (string-append (number->string duration) (symbol->string style))))
     ((neomensural)
      (string-append (number->string duration) (symbol->string style)))
     ((default)
@@ -203,16 +173,19 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public (default-bar-number-visibility barnum) (> barnum 1))
 
 ;; See documentation of Item::visibility_lambda_
-(define-safe-public (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t)))
-(define-safe-public (end-of-line-visible d) (if (= d -1) '(#f . #f) '(#t . #t)))
-(define-safe-public (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
-
-(define-safe-public (all-visible d) '(#f . #f))
-(define-safe-public (all-invisible d) '(#t . #t))
-(define-safe-public (begin-of-line-invisible d) (if (= d 1) '(#t . #t) '(#f . #f)))
-(define-safe-public (center-invisible d) (if (= d 0) '(#t . #t) '(#f . #f)))
-(define-safe-public (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
-
+(define-public begin-of-line-visible
+  #(#f #f #t))
+(define-public end-of-line-visible
+  #(#t #f #f))
+(define-public end-of-line-invisible
+  #(#f #t #t))
+(define-public spanbar-begin-of-line-invisible
+  #(#t #f #f))
+(define-public all-visible #(#t #t #t))
+(define-public all-invisible #(#f #f #f))
+(define-public begin-of-line-invisible
+  #(#t #t #f))
+(define-public center-invisible #(#t #f #t))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Bar lines.
@@ -274,3 +247,20 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public darkcyan    '(0.5 0.5 0.0))
 (define-public darkmagenta '(0.5 0.0 0.5))
 (define-public darkyellow  '(0.0 0.5 0.5))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Pitch Trill Heads
+
+(define (parenthesize-elements grob)
+  (let*
+      ((elts (ly:grob-object grob 'elements))
+       (x-ext (ly:relative-group-extent elts grob X))
+       (font (ly:grob-default-font grob))
+       (lp (ly:font-get-glyph font "accidentals.leftparen"))
+       (rp (ly:font-get-glyph font "accidentals.rightparen"))
+       (padding 0.1))
+
+    (ly:stencil-add
+     (ly:stencil-translate-axis lp (- (car x-ext) padding) X)
+     (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))
+  ))