From 3cd4ec70813835810b04383581ab57eb7085e4a2 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 30 Mar 2005 12:22:10 +0000 Subject: [PATCH] * scm/output-lib.scm (make-stencil-boxer): Junk code duplication, use box-stencil. Remove y-padding argument. (make-stencil-circler): New function. * scm/stencil.scm (make-circle-stencil): New function. * scm/stencil.scm (circle-stencil): New function. --- ChangeLog | 4 ++++ Documentation/topdocs/NEWS.tely | 20 +++++++++++++++-- input/regression/bar-number.ly | 26 ++++++++++------------- input/regression/rehearsal-mark-number.ly | 19 +++++++++-------- input/test/bar-number-regular-interval.ly | 24 +++++++++++---------- input/test/boxed-stencil.ly | 6 +++--- scm/output-lib.scm | 22 ++++++------------- scm/stencil.scm | 8 +++---- 8 files changed, 69 insertions(+), 60 deletions(-) diff --git a/ChangeLog b/ChangeLog index b0e1c0b343..283ed8631b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-03-30 Jan Nieuwenhuizen + * scm/output-lib.scm (make-stencil-boxer): Junk code duplication, + use box-stencil. Remove y-padding argument. + (make-stencil-circler): New function. + * buildscripts/lilypond-words.py (F): * elisp/SConscript (a): * elisp/GNUmakefile (LILYPOND_WORDS_DEPENDS): diff --git a/Documentation/topdocs/NEWS.tely b/Documentation/topdocs/NEWS.tely index 1205ac00ee..b2d3a33272 100644 --- a/Documentation/topdocs/NEWS.tely +++ b/Documentation/topdocs/NEWS.tely @@ -24,14 +24,30 @@ See user manual, \NAME\ @documentencoding utf-8 @documentlanguage en -@node Top, , , +@node Top @top @unnumbered New features in 2.5 since 2.4 @itemize @bullet @item -String numbers are now printed on chords as well, +A new @code{\circle} markup command allows for all kinds of circled texts + +@lilypond[relative,relative=2,raggedright,fragment] +c1 +\set Score.markFormatter + = #(lambda (mark context) + (make-circle-markup (format-mark-numbers mark context))) +\mark \default +c2 d^\markup{\circle \finger "2"} +\override Score.BarNumber #'break-visibility = #all-visible +\override Score.BarNumber #'print-function + = #(make-stencil-circler 0.1 0.25 Text_interface::print) +@end lilypond + + +@item +String numbers are now printed on chords as well @lilypond[relative,relative=1,raggedright,fragment,verbatim] diff --git a/input/regression/bar-number.ly b/input/regression/bar-number.ly index d5869cd2d2..2d3b9751a0 100644 --- a/input/regression/bar-number.ly +++ b/input/regression/bar-number.ly @@ -12,19 +12,15 @@ be increased. } -\score { - \relative c'' { - \partial 4 c4 - c1 c c - \set Score.currentBarNumber = #99999 - \override Score.BarNumber #'padding = #3 - c1 c - } - \layout { - raggedright = ##t - \context { - \Score - \override BarNumber #'break-visibility = #all-visible - } - } +\layout { + raggedright = ##t +} + +\relative c'' { + \override Score.BarNumber #'break-visibility = #all-visible + \partial 4 c4 + c1 c c + \set Score.currentBarNumber = #99999 + \override Score.BarNumber #'padding = #3 + c1 c } diff --git a/input/regression/rehearsal-mark-number.ly b/input/regression/rehearsal-mark-number.ly index aa44376fd3..e6c1e3550d 100644 --- a/input/regression/rehearsal-mark-number.ly +++ b/input/regression/rehearsal-mark-number.ly @@ -6,17 +6,18 @@ By setting @code{markFormatter} we may choose a different style of mark printing } \version "2.4.0" -\score { - \relative c''{ - \set Score.markFormatter = #format-mark-numbers +\relative c''{ + \set Score.markFormatter = #format-mark-numbers c1 | \mark \markup { \musicglyph #"scripts-coda" } c1 | \mark \default c1 | \mark \default - \set Score.markFormatter = #(lambda (mark context) - (make-box-markup (format-mark-numbers mark context))) - - c1 | \mark \default - c1 | \mark \default - } + \set Score.markFormatter + = #(lambda (mark context) + (make-box-markup (format-mark-numbers mark context))) + c1 | \mark \default + \set Score.markFormatter + = #(lambda (mark context) + (make-circle-markup (format-mark-numbers mark context))) + c1 | \mark \default } diff --git a/input/test/bar-number-regular-interval.ly b/input/test/bar-number-regular-interval.ly index afb7fbce51..e5062be39c 100644 --- a/input/test/bar-number-regular-interval.ly +++ b/input/test/bar-number-regular-interval.ly @@ -1,22 +1,24 @@ \header { texidoc = " -Bar numbers can also be printed inside boxes. +Bar numbers can be printed at regular intervals, inside a box or a circle. " } \version "2.4.0" -\score { - \context Staff \transpose c c' { - \override Score.BarNumber #'break-visibility = #end-of-line-invisible - \set Score.barNumberVisibility = #(every-nth-bar-number-visible 4) - \override Score.BarNumber #'print-function = - #(make-stencil-boxer 0.1 0.25 0.25 Text_interface::print) - \override Score.BarNumber #'font-size = #2 - - \repeat unfold 9 { c1 } \bar "|." - } +\relative c'{ + \override Score.BarNumber #'break-visibility = #end-of-line-invisible + \set Score.barNumberVisibility = #(every-nth-bar-number-visible 4) + \override Score.BarNumber #'font-size = #2 + + \override Score.BarNumber #'print-function + = #(make-stencil-boxer 0.1 0.25 Text_interface::print) + \repeat unfold 5 { c1 } \bar "|" + + \override Score.BarNumber #'print-function + = #(make-stencil-circler 0.1 0.25 Text_interface::print) + \repeat unfold 4 { c1 } \bar "|." } diff --git a/input/test/boxed-stencil.ly b/input/test/boxed-stencil.ly index 35b698ab6f..70aa54b3d8 100644 --- a/input/test/boxed-stencil.ly +++ b/input/test/boxed-stencil.ly @@ -10,15 +10,15 @@ grob. " } \score { \relative c'' { \override TextScript #'print-function = - #(make-stencil-boxer 0.1 0.3 0.2 Text_interface::print) + #(make-stencil-boxer 0.1 0.3 Text_interface::print) c'4^"foo" \override Stem #'print-function = - #(make-stencil-boxer 0.05 0.25 0.25 Stem::print) + #(make-stencil-boxer 0.05 0.25 Stem::print) \override Score.RehearsalMark #'print-function = - #(make-stencil-boxer 0.15 0.3 0.3 Text_interface::print) + #(make-stencil-boxer 0.15 0.3 Text_interface::print) b8 \revert Stem #'print-function diff --git a/scm/output-lib.scm b/scm/output-lib.scm index fa3659f405..6adb53fcfb 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -92,23 +92,13 @@ ;;; end of tablature functions +(define-public (make-stencil-boxer thickness padding callback) + "Return function that adds a box around the grob passed as argument." + (lambda (grob) (box-stencil (callback grob) thickness padding))) -(define-public (make-stencil-boxer line-thick x-padding y-padding callback) - "Makes a routine that adds a box around the grob parsed as argument" - (define (stencil-boxer grob) - (let* ((mol (callback grob)) - (x-ext (interval-widen (ly:stencil-extent mol 0) x-padding)) - (y-ext (interval-widen (ly:stencil-extent mol 1) y-padding)) - (x-rule (make-filled-box-stencil (interval-widen x-ext line-thick) - (cons 0 line-thick))) - (y-rule (make-filled-box-stencil (cons 0 line-thick) y-ext))) - - (set! mol (ly:stencil-combine-at-edge mol 0 1 y-rule x-padding)) - (set! mol (ly:stencil-combine-at-edge mol 0 -1 y-rule x-padding)) - (set! mol (ly:stencil-combine-at-edge mol 1 1 x-rule 0)) - (set! mol (ly:stencil-combine-at-edge mol 1 -1 x-rule 0)) - mol)) - stencil-boxer) +(define-public (make-stencil-circler thickness padding callback) + "Return function that adds a box around the grob passed as argument." + (lambda (grob) (circle-stencil (callback grob) thickness padding))) (define-public (arg->string arg) (cond ((number? arg) (ly:inexact->string arg 10)) diff --git a/scm/stencil.scm b/scm/stencil.scm index 70b65dce98..8b193ce15d 100644 --- a/scm/stencil.scm +++ b/scm/stencil.scm @@ -79,13 +79,13 @@ encloses the contents. (make-filled-box-stencil (cons (- (car xext) thick) (car xext)) yext)))) ;; TODO merge this and prev function. -(define-public (box-stencil stencil thick padding) +(define-public (box-stencil stencil thickness padding) "Add a box around STENCIL, producing a new stencil." (let* ((x-ext (interval-widen (ly:stencil-extent stencil 0) padding)) (y-ext (interval-widen (ly:stencil-extent stencil 1) padding)) - (y-rule (make-filled-box-stencil (cons 0 thick) y-ext)) + (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext)) (x-rule (make-filled-box-stencil - (interval-widen x-ext thick) (cons 0 thick)))) + (interval-widen x-ext thickness) (cons 0 thickness)))) (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil X -1 y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil Y 1 x-rule 0.0)) @@ -98,7 +98,7 @@ encloses the contents. (y-ext (ly:stencil-extent stencil 1)) (diameter (max (- (cdr x-ext) (car x-ext)) (- (cdr y-ext) (car y-ext)))) - (radius (+ (/ diameter 2) padding))) + (radius (+ (/ diameter 2) padding thickness))) (ly:stencil-add (centered-stencil stencil) (make-circle-stencil radius thickness)))) -- 2.39.5