From 7043b5d2a6a70935ef0e84b62dc021452e28a59f Mon Sep 17 00:00:00 2001 From: Carl Sorensen Date: Mon, 6 Jun 2005 14:40:39 +0000 Subject: [PATCH] *** empty log message *** --- ChangeLog | 18 ++++++- input/regression/fret-diagrams.ly | 48 ++++++++++++++++++ scm/fret-diagrams.scm | 82 +++++++++++++++---------------- scm/output-ps.scm | 17 ------- scm/output-tex.scm | 8 --- 5 files changed, 104 insertions(+), 69 deletions(-) create mode 100644 input/regression/fret-diagrams.ly diff --git a/ChangeLog b/ChangeLog index 114388c300..1c6715ee6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ + + +2005-06-06 Carl Sorensen + + * input/regression/fret-diagrams.ly: new file to test fret diagram + capability + + * scm/output-tex.scm: remove white-dot and white-text + + * scm/output-ps.scm: remove white-dot and white-text + + * scm/fret-diagrams.scm (sans-serif-stencil-white): removed -- + using ly:stencil-in-color instead + (draw-dots) : remove call to white-dot + 2005-06-06 Han-Wen Nienhuys * flower/memory-stream.cc (Memory_out_stream): remove fopencookie support. @@ -7,7 +22,7 @@ * flower/include/file-cookie.hh: new file. lily_cookie extension * flower/file-cookie.cc: new file. lily_cookie extension. - + 2005-06-06 Jan Nieuwenhuizen * scm/editor.scm (editor-command-template-alist): Add syn @@ -244,6 +259,7 @@ * Documentation/pictures/GNUmakefile (OUT_DIST_FILES): Add ly-icon rules. +>>>>>>> 1.3718 2005-05-28 Han-Wen Nienhuys * lily/stencil-scheme.cc (LY_DEFINE): ly:stencil-in-color diff --git a/input/regression/fret-diagrams.ly b/input/regression/fret-diagrams.ly new file mode 100644 index 0000000000..03ff52b5ee --- /dev/null +++ b/input/regression/fret-diagrams.ly @@ -0,0 +1,48 @@ +% regression test for fret diagram markups +\version "2.5.27" +\score { + << + \chords {s2 c c c d} + + \context Voice=mel { + +% A chord for ukelele + a'2 ^\markup + \override #'(string-count . 4) { + \override #'(dot-color . white) { + \fret-diagram #"4-2-2;3-1-1;2-o;1-o;"}} + +% C major for guitar, barred on third fret + c' ^\markup + \override #'(number-type . roman-lower) { % lower-case roman numeral fret label + \override #'(size . 1.1) { % 110% of default size + \override #'(finger-code . below-string) { % string labels below strings + \override #'(barre-type . straight) { % straight barre + \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) }}}} +% C major for guitar, barred on third fret + c' ^\markup + \override #'(number-type . arabic) { % lower-case roman numeral fret label + \override #'(dot-color . white) { % white dots + \override #'(finger-code . in-dot) { % string labels in dots + \override #'(barre-type . curved) { % straight barre + \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) }}}} +% C major for guitar, barred on third fret + c' ^\markup + \override #'(number-type . roman-upper) { % upper-case roman numeral fret label + \override #'(label-dir . -1) { % label fret at left side of diagram + \override #'(finger-code . in-dot) { % string labels in dots + \override #'(barre-type . curved) { % curved barre + \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) }}}} + +% simple D chord + + d' ^\markup + \override #'(finger-code . below-string) { + \override #'(dot-radius . 0.35) { + \override #'(dot-position . 0.5) { + \override #'(fret-count . 5) { + \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;" }}}} + + } + >> +} diff --git a/scm/fret-diagrams.scm b/scm/fret-diagrams.scm index e70a756a0e..bc74dc9803 100644 --- a/scm/fret-diagrams.scm +++ b/scm/fret-diagrams.scm @@ -58,16 +58,6 @@ with magnification @varr{mag} of the string @var{text}." (prepend-alist-chain 'font-family 'sans props)))) (interpret-markup layout my-props text))) -(define (sans-serif-stencil-white layout props mag text) -"create a stencil with white text in sans-serif font based on -@var{layout} and @var{props} with magnification @varr{mag} of the -string @var{text}." - (let* ((text-stencil (sans-serif-stencil layout props mag text)) - (x-extent (ly:stencil-extent text-stencil X)) - (y-extent (ly:stencil-extent text-stencil Y)) - (c `(white-text ,(* 2 mag) ,text))) ;urg -- workaround for using ps font - (ly:make-stencil c x-extent y-extent))) ;urg -- extent is not from ps font, but we hope it's close - (define (draw-strings string-count fret-range th size) "Draw the strings (vertical lines) for a fret diagram with @@ -140,18 +130,20 @@ Line thickness is given by @var{th}, fret & string spacing by (- size th) 0))) -(define (draw-dots layout props string-count fret-range size finger-code dot-position dot-radius dot-list) +(define (draw-dots layout props string-count fret-range size finger-code + dot-position dot-radius dot-thickness dot-list) "Make dots for fret diagram." (let* ((scale-dot-radius (* size dot-radius)) + (scale-dot-thick (* size dot-thickness)) (dot-color (chain-assoc-get 'dot-color props 'black)) ; (finger-xoffset (chain-assoc-get 'finger-xoffset props -0.25)) ; (finger-yoffset (chain-assoc-get 'finger-yoffset props (- size))) (finger-xoffset -0.25) - (finger-yoffset (- size)) + (finger-yoffset (- (* size 0.5))) ; (dot-label-font-mag (* scale-dot-radius (chain-assoc-get 'dot-label-font-mag props 1.0))) (dot-label-font-mag scale-dot-radius) ; (string-label-font-mag (* size (chain-assoc-get 'label-font-mag props 0.7))) - (string-label-font-mag (* size 0.7)) + (string-label-font-mag (* size 0.6)) (fret-count (+ (- (cadr fret-range) (car fret-range) 1))) (mypair (car dot-list)) (restlist (cdr dot-list)) @@ -163,46 +155,51 @@ Line thickness is given by @var{th}, fret & string spacing by (finger (caddr mypair)) (finger (if (number? finger) (number->string finger) finger)) (dotstencil (if (eq? dot-color 'white) - (begin - (ly:make-stencil (list 'white-dot 0 0 scale-dot-radius) extent extent)) - (ly:make-stencil (list 'dot 0 0 scale-dot-radius ) extent extent))) - (positioned-dot (ly:stencil-translate-axis - (ly:stencil-translate-axis dotstencil xpos X) - ypos Y)) + (ly:stencil-add + (make-circle-stencil scale-dot-radius scale-dot-thick #t) + (ly:stencil-in-color + (make-circle-stencil + (- scale-dot-radius (* 0.5 scale-dot-thick)) 0 #t) + 1 1 1)) + (make-circle-stencil scale-dot-radius scale-dot-thick #t))) + (positioned-dot (begin + ;(display dotstencil) + (ly:stencil-translate-axis + (ly:stencil-translate-axis dotstencil xpos X) + ypos Y))) + (labeled-dot-stencil (if (or (eq? finger '())(eq? finger-code 'none)) positioned-dot - (if (eq? finger-code 'in-dot) - (let* ((dot-proc (if (eq? dot-color 'white) 'white-dot 'dot))) - (ly:stencil-add - (ly:stencil-translate-axis - (ly:stencil-translate-axis - (if (eq? dot-color 'white) - (centered-stencil (sans-serif-stencil layout props dot-label-font-mag finger)) - (centered-stencil (sans-serif-stencil-white layout props - dot-label-font-mag finger))) - xpos X) - ypos Y) - (ly:stencil-translate-axis - (ly:stencil-translate-axis - (ly:make-stencil (list dot-proc 0 0 scale-dot-radius) extent extent) + (if (eq? finger-code 'in-dot) + (let* ((finger-label (centered-stencil + (sans-serif-stencil layout props + dot-label-font-mag finger)))) + (ly:stencil-translate-axis + (ly:stencil-translate-axis + (ly:stencil-add + dotstencil + (if (eq? dot-color 'white) + finger-label + (ly:stencil-in-color finger-label 1 1 1))) xpos X) - ypos Y))) + ypos Y)) (if (eq? finger-code 'below-string) (ly:stencil-add positioned-dot (ly:stencil-translate-axis (ly:stencil-translate-axis (centered-stencil (sans-serif-stencil layout props - string-label-font-mag finger)) xpos X) - (* size finger-yoffset) Y)) + string-label-font-mag finger)) + xpos X) + (* size finger-yoffset) Y)) ;unknown finger-code positioned-dot))))) (if (null? restlist) labeled-dot-stencil (ly:stencil-add (draw-dots layout props string-count fret-range size finger-code - dot-position dot-radius restlist) + dot-position dot-radius dot-thickness restlist) labeled-dot-stencil)))) (define (draw-xo layout props string-count fret-range size xo-list) @@ -270,7 +267,6 @@ Line thickness is given by @var{th}, fret & string spacing by (draw-barre layout props string-count fret-range size finger-code dot-position dot-radius (cdr barre-list))) barre-stencil )))) - (define (stepmag mag) "Calculate the font step necessary to get a desired magnification" @@ -280,7 +276,7 @@ Line thickness is given by @var{th}, fret & string spacing by "Label the base fret on a fret diagram" (let* ((base-fret (car fret-range)) ; (label-font-mag (chain-assoc-get 'label-font-mag props 0.7)) - (label-font-mag 0.7) + (label-font-mag 0.5) ; (label-vertical-offset (chain-assoc-get 'fret-label-vertical-offset props -0.2)) (label-vertical-offset -0.2) (number-type (chain-assoc-get 'number-type props 'roman-lower)) @@ -356,8 +352,8 @@ indications per string. (alignment (chain-assoc-get 'align-dir props -0.4)) ; needed only here ; (xo-padding (* th (chain-assoc-get 'padding props 2))) ; needed only here - (label-space 0.25) - (xo-padding (* th 2)) + (label-space (* 0.25 size)) + (xo-padding (* th size 5)) (label-dir (chain-assoc-get 'label-dir props RIGHT)) (parameters (fret-parse-marking-list marking-list fret-count)) (dot-list (cdr (assoc 'dot-list parameters))) @@ -374,9 +370,9 @@ indications per string. fret-diagram-stencil))) (if (not (null? dot-list)) (set! fret-diagram-stencil (ly:stencil-add + fret-diagram-stencil (draw-dots layout props string-count fret-range size finger-code - dot-position dot-radius dot-list) - fret-diagram-stencil))) + dot-position dot-radius th dot-list)))) (if (not (null? xo-list)) (set! fret-diagram-stencil (ly:stencil-combine-at-edge fret-diagram-stencil Y UP diff --git a/scm/output-ps.scm b/scm/output-ps.scm index bcbcef0bbe..bbb0d0c381 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -21,7 +21,6 @@ blank circle dot - white-dot beam dashed-slur char @@ -38,7 +37,6 @@ filledbox round-filled-box text - white-text polygon draw-line no-origin)) @@ -303,21 +301,6 @@ (ly:warning (_ "utf8-string encountered in PS backend"))) -;; TODO: FIX THIS. -;; -(define (white-dot x y radius) - (string-append - " " - (ly:numbers->string - (list x y radius)) " draw_white_dot")) - -(define (white-text scale s) - (let ((mystring (string-append - "(" s ") " (number->string scale) - " /Helvetica-Bold " - " draw_white_text"))) - mystring - )) (define (zigzag-line centre? zzw zzh thick dx dy) (string-append diff --git a/scm/output-tex.scm b/scm/output-tex.scm index 7f9b5b432a..baee6e7f2d 100644 --- a/scm/output-tex.scm +++ b/scm/output-tex.scm @@ -24,7 +24,6 @@ blank circle dot - white-dot beam dashed-slur named-glyph @@ -37,7 +36,6 @@ filledbox round-filled-box text - white-text setcolor resetcolor polygon @@ -82,9 +80,6 @@ (define (embedded-ps string) (embedded-ps (list 'embedded-ps string))) -(define (white-dot x y radius) - (embedded-ps (list 'white-dot x y radius))) - (define (beam width slope thick blot) (embedded-ps (list 'beam width slope thick blot))) @@ -154,9 +149,6 @@ "\\hbox{\\~a{}~a}" (tex-font-command font) (sanitize-tex-string s))) -(define (white-text scale s) - (embedded-ps (list 'white-text scale s))) - (define (setcolor r g b) (string-append "\\color[rgb]{" (number->string r) ", " -- 2.39.5