]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/output-lib.scm
Rework skyline algorithm for a more compact representation and less fuzzy
[lilypond.git] / scm / output-lib.scm
index 3360fbb80851a9590c92514c9df00439e0ecb901..3cfefc8f3e58f53aac4f323105d7f769fb32d3ef 100644 (file)
   (lambda (grob) (circle-stencil (callback grob) thickness padding)))
 
 (define-public (print-circled-text-callback grob)
-  (let* ((text (ly:grob-property grob 'text))
-        
-        (layout (ly:grob-layout grob))
-        (defs (ly:output-def-lookup layout 'text-font-defaults))
-        (props (ly:grob-alist-chain grob defs))
-        (circle (ly:text-interface::interpret-markup
-                 layout props (make-circle-markup text))))
-    circle))
-
-(define-public (music-cause grob)
-  (let*
-      ((event (event-cause grob)))
-
-    (if (ly:stream-event? event)
-       (ly:event-property event 'music-cause)
-       #f)))
+  (grob-interpret-markup grob (make-circle-markup
+                  (ly:grob-property grob 'text))
+            ))
 
 (define-public (event-cause grob)
   (let*
   (ly:duration-dot-count
    (ly:event-property (event-cause grob) 'duration)))
 
+(define-public (dots::calc-staff-position grob)
+  (let*
+      ((head (ly:grob-parent grob Y))
+       (log (ly:grob-property head 'duration-log)))
+
+    (cond
+     ((or (not (grob::has-interface head 'rest-interface))
+        (not (integer? log))) 0)
+     ((= log 7) 4)
+     ((> log 4) 3)
+     ((= log 0) -1)
+     ((= log 1) 1)
+     ((= log -1) 1)
+     (else 0))))
+
 (define (note-head::calc-tablature-stem-attachment grob)
   (cons 0.0 1.35))
 
       ;; statement.  -- jr
       ((xcircle) "2xcircle")
       ((harmonic) "0harmonic")
+      ((harmonic-black) "2harmonic")
+      ((harmonic-mixed) (if (<= log 1) "0harmonic"
+                                       "2harmonic"))
       ((baroque) 
        ;; Oops, I actually would not call this "baroque", but, for
        ;; backwards compatibility to 1.4, this is supposed to take
@@ -354,16 +359,24 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public (accidental-interface::calc-alteration grob)
   (ly:pitch-alteration  (ly:event-property (event-cause grob) 'pitch)))
 
+
+(define-public cancellation-glyph-name-alist
+  '((0 . "accidentals.natural")))
+
 (define-public standard-alteration-glyph-name-alist
-     '((1 . "accidentals.doublesharp")
-       (3/4 . "accidentals.sharp.slashslash.stemstemstem")
+     '(
+       ;; ordered for optimal performance.
+       (0 . "accidentals.natural")
+       (-1/2 . "accidentals.flat")
        (1/2 . "accidentals.sharp")
+
+       (1 . "accidentals.doublesharp")
+       (-1 . "accidentals.flatflat")
+       
+       (3/4 . "accidentals.sharp.slashslash.stemstemstem")
        (1/4 . "accidentals.sharp.slashslash.stem")
-       (0 . "accidentals.natural")
        (-1/4 . "accidentals.mirroredflat")
-       (-1/2 . "accidentals.flat")
        (-3/4 . "accidentals.mirroredflat.flat")
-       (-1 . "accidentals.flatflat")
        ))
 
 (define-public makam-alteration-glyph-name-alist
@@ -385,7 +398,7 @@ centered, X==1 is at the right, X == -1 is at the left."
      (0 . "accidentals.vaticana0")
      (-1/2 . "accidentals.mensural1")))
 
-(define-public alteration-medicae-glyph-name-alist
+(define-public alteration-medicaea-glyph-name-alist
    '((1/2 . "accidentals.medicaea-1")
      (0 . "accidentals.vaticana0")
      (-1/2 . "accidentals.mensural1")))
@@ -413,7 +426,7 @@ centered, X==1 is at the right, X == -1 is at the left."
     (list lp rp)))
 
 
-(define (grob-text grob text)
+(define-public (grob-interpret-markup grob text)
   (let*
       ((layout (ly:grob-layout grob))
        (defs (ly:output-def-lookup layout 'text-font-defaults))
@@ -425,9 +438,9 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public (parentheses-item::calc-angled-bracket-stencils grob)
   (let* (
         (font (ly:grob-default-font grob))
-        (lp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-text grob (ly:wide-char->utf-8 #x2329))
+        (lp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-interpret-markup grob (ly:wide-char->utf-8 #x2329))
                                                           Y CENTER)  X RIGHT))
-        (rp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-text grob (ly:wide-char->utf-8 #x232A))
+        (rp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-interpret-markup grob (ly:wide-char->utf-8 #x232A))
                                                           Y CENTER) X LEFT))
         )
 
@@ -616,16 +629,12 @@ centered, X==1 is at the right, X == -1 is at the left."
   "Allow interpretation of tildes as lyric tieing marks."
   
   (let*
-      ((text (ly:grob-property grob 'text))
-       (layout (ly:grob-layout grob))
-       (defs (ly:output-def-lookup layout 'text-font-defaults))
-       (props (ly:grob-alist-chain grob defs)))
+      ((text (ly:grob-property grob 'text)))
 
-    (ly:text-interface::interpret-markup layout
-                                        props
-                                        (if (string? text)
-                                            (make-tied-lyric-markup text)
-                                            text))))
+    (grob-interpret-markup grob 
+              (if (string? text)
+                  (make-tied-lyric-markup text)
+                  text))))
 
 (define-public ((grob::calc-property-by-copy prop) grob)
   (ly:event-property (event-cause grob) prop))
@@ -662,10 +671,8 @@ centered, X==1 is at the right, X == -1 is at the left."
 
 (define-public (fret-board::calc-stencil grob)
   (let* ((string-frets (ly:grob-property grob 'string-fret-finger-combinations))
-        (string-count (ly:grob-property grob 'string-count))
-        (layout (ly:grob-layout grob))
-        (defs (ly:output-def-lookup layout 'text-font-defaults))
-        (props (ly:grob-alist-chain grob defs)))
-
-    (make-fret-diagram layout props
-                      (string-frets->description string-frets 6))))
+        (string-count (ly:grob-property grob 'string-count)))
+    
+    (grob-interpret-markup grob
+                          (make-fret-diagram-verbose-markup
+                           (string-frets->description string-frets string-count)))))