From: Carl Sorensen Date: Fri, 9 Jan 2009 04:37:59 +0000 (-0700) Subject: Merge branch 'master' of carldsorensen@git.sv.gnu.org:/srv/git/lilypond into fret... X-Git-Tag: release/2.12.2-1~42 X-Git-Url: https://git.donarmstrong.com/?p=lilypond.git;a=commitdiff_plain;h=a9d9433bc7b95cb2d4b3d96eefce7a8437c0d44e Merge branch 'master' of carldsorensen@git.sv.gnu.org:/srv/git/lilypond into fret-update --- a9d9433bc7b95cb2d4b3d96eefce7a8437c0d44e diff --cc scm/fret-diagrams.scm index ebd79049a1,3a0ffe53ce..fab6868fd3 --- a/scm/fret-diagrams.scm +++ b/scm/fret-diagrams.scm @@@ -2,40 -2,51 +2,40 @@@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; - ;;;; (c) 2004--2008 Carl D. Sorensen + ;;;; (c) 2004--2009 Carl D. Sorensen -(define (fret-parse-marking-list marking-list fret-count) - (let* ((fret-range (list 1 fret-count)) - (capo-fret 0) - (barre-list '()) - (dot-list '()) - (xo-list '()) - (output-alist '())) - (let parse-item ((mylist marking-list)) - (if (not (null? mylist)) - (let* ((my-item (car mylist)) (my-code (car my-item))) - (cond - ((or (eq? my-code 'open)(eq? my-code 'mute)) - (set! xo-list (cons* my-item xo-list))) - ((eq? my-code 'barre) - (set! barre-list (cons* (cdr my-item) barre-list))) - ((eq? my-code 'capo) - (set! capo-fret (cadr my-item))) - ((eq? my-code 'place-fret) - (set! dot-list (cons* (cdr my-item) dot-list)))) - (parse-item (cdr mylist))))) - ;; calculate fret-range - (let ((maxfret 0) - (minfret (if (> capo-fret 0) capo-fret 99))) - (let updatemax ((fret-list dot-list)) - (if (null? fret-list) - '() - (let ((fretval (second (car fret-list)))) - (if (> fretval maxfret) (set! maxfret fretval)) - (if (< fretval minfret) (set! minfret fretval)) - (updatemax (cdr fret-list))))) - (if (> maxfret fret-count) - (set! fret-range - (list minfret - (let ((upfret (- (+ minfret fret-count) 1))) - (if (> maxfret upfret) maxfret upfret))))) - (set! capo-fret (1+ (- capo-fret minfret))) - ; subtract fret from dots - (set! dot-list (subtract-base-fret (- (car fret-range) 1) dot-list))) - (acons 'fret-range fret-range - (acons 'barre-list barre-list - (acons 'dot-list dot-list - (acons 'xo-list xo-list - (acons 'capo-fret capo-fret '()))))))) +; +; Utility functions +; +; + +(define (cons-fret new-value old-list) + "Put together a fret-list in the format desired by parse-string" + (if (eq? old-list '()) + (list new-value) + (cons* new-value old-list))) + +(define (get-numeric-from-key keystring) + "Get the numeric value from a key of the form k:val" + (string->number (substring keystring 2 (string-length keystring)))) + +(define (numerify mylist) + "Convert string values to numeric or character" + (if (null? mylist) + '() + (let ((numeric-value (string->number (car mylist)))) + (if numeric-value + (cons* numeric-value (numerify (cdr mylist))) + (cons* (car (string->list (car mylist))) + (numerify (cdr mylist))))))) + +(define (stepmag mag) + "Calculate the font step necessary to get a desired magnification" + (* 6 (/ (log mag) (log 2)))) + +(define (fret-count fret-range) + "Calculate the fret count for the diagram given the range of frets in the diagram." + (1+ (- (cdr fret-range) (car fret-range)))) (define (subtract-base-fret base-fret dot-list) "Subtract @var{base-fret} from every fret in @var{dot-list}" diff --cc scm/stencil.scm index 9067e0974e,aeea39a288..8513c6389a --- a/scm/stencil.scm +++ b/scm/stencil.scm @@@ -2,15 -2,8 +2,15 @@@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; - ;;;; (c) 2003--2008 Han-Wen Nienhuys + ;;;; (c) 2003--2009 Han-Wen Nienhuys +(define-public (translate-stencil stencil coordinate-pair) + "Translate @code{stencil} by the distances specified in +@code{coordinate-pair}." + (ly:stencil-translate-axis + (ly:stencil-translate-axis stencil (cdr coordinate-pair) Y) + (car coordinate-pair) X)) + (define-public (stack-stencils axis dir padding stils) "Stack stencils STILS in direction AXIS, DIR, using PADDING." (cond