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.
2005-03-30 Jan Nieuwenhuizen <janneke@gnu.org>
+ * 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):
@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]
<c\1 e\2 g\3>
}
-\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
}
}
\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
}
\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 "|."
}
\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
;;; 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))
(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))
(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))))