+2005-02-12 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * Slur-dash patch by Bertalan.
+
2005-02-10 Jan Nieuwenhuizen <janneke@gnu.org>
* stepmake/aclocal.m4: teTeX-3.0 inimf fix. Comment-out.
\version "2.4.0"
-\header {texidoc = "@cindex Slur, dotted
+\header {texidoc = "@cindex Slur, dotted, dashed
The appearance of slurs may be changed from solid to dotted or dashed.
"
}
c( d e c) |
\slurDotted
c( d e c) |
- \slurSolid
+ \slurDashed
c( d e c) |
- \override Slur #'dashed = #0.0
+ \override Slur #'dash-period = #2.0
+ \override Slur #'dash-fraction = #0.4
c( d e c) |
\slurSolid
c( d e c) |
static Stencil slur (Bezier controls, Real cthick, Real thick);
static Stencil bezier_sandwich (Bezier top_curve, Bezier bottom_curve);
static Stencil beam (Real slope, Real width, Real thick, Real blot);
- static Stencil dashed_slur (Bezier, Real thick, Real dash);
+ static Stencil dashed_slur (Bezier, Real thick, Real dash_period, Real dash_fraction);
static Stencil blank (Box b);
static Stencil filled_box (Box b);
static Stencil round_filled_box (Box b, Real blotdiameter);
}
Stencil
-Lookup::dashed_slur (Bezier b, Real thick, Real dash)
+Lookup::dashed_slur (Bezier b, Real thick, Real dash_period, Real dash_fraction)
{
SCM l = SCM_EOL;
+ Real on = dash_fraction * dash_period;
+ Real off = dash_period - on;
+
for (int i= 4; i -- ;)
{
l = scm_cons (ly_offset2scm (b.control_[i]), l);
SCM at = (scm_list_n (ly_symbol2scm ("dashed-slur"),
scm_make_real (thick),
- scm_make_real (dash),
+ scm_make_real (on),
+ scm_make_real (off),
ly_quote_scm (l),
SCM_UNDEFINED));
/*
TODO: replace dashed with generic property.
*/
- SCM d = me->get_property ("dashed");
- if (scm_is_number (d))
- a = Lookup::dashed_slur (one, thick, thick * robust_scm2double (d, 0));
+ SCM p = me->get_property ("dash-period");
+ SCM f = me->get_property ("dash-fraction");
+ if (scm_is_number (p) && scm_is_number (f))
+ a = Lookup::dashed_slur (one, thick, robust_scm2double (p, 1.0),
+ robust_scm2double(f,0));
else
a = Lookup::slur (one, get_grob_direction (me) * base_thick * ss / 10.0,
thick);
ADD_INTERFACE (Slur, "slur-interface",
"A slur",
- "quant-score excentricity encompass-objects control-points dashed slur-details direction height-limit note-columns ratio thickness");
+ "quant-score excentricity encompass-objects control-points dash-period dash-fraction slur-details direction height-limit note-columns ratio thickness");
slurNeutral = \revert Slur #'direction
% There's also dash, but setting dash period/length should be fixed.
-slurDotted = \override Slur #'dashed = #1
-slurSolid = \revert Slur #'dashed
+slurDashed = {
+ \override Slur #'dash-period = #1
+ \override Slur #'dash-fraction = #0.4
+}
+slurDotted = {
+ \override Slur #'dash-period = #1
+ \override Slur #'dash-fraction = #0.1
+}
+slurSolid = {
+ \revert Slur #'dash-period
+ \revert Slur #'dash-fraction
+}
phrasingSlurUp = \override PhrasingSlur #'direction = #1
dash-period. Should be between 0.0 (no line) and 1.0 (continuous
line).")
- ;; [FIXME: use dash-period/dash length; see text-spanner]
+ ;; use dash-period/dash-fraction instead;
(dashed ,number? " number representing the length of the dashes.")
;; todo: why is this tunable?
(invoke-char " show" i))
-(define (dashed-slur thick dash l)
+(define (dashed-slur thick on off l)
(string-append (setlineparams)
- "[ " (ly:number->string dash) " "
- (ly:number->string (* 10 thick)) " ] 0 d "
+ "[ " (ly:number->string on) " "
+ (ly:number->string off) " ] 0 d "
(setlinewidth thick)
(moveto-pair (car l))
(apply curveto (cdr l))
(define (bracket arch_angle arch_width arch_height height arch_thick thick)
(embedded-pdf (list 'bracket arch_angle arch_width arch_height height arch_thick thick)))
-(define (dashed-slur thick dash l)
- (embedded-pdf (list 'dashed-slur thick dash l)))
+(define (dashed-slur thick on off l)
+ (embedded-pdf (list 'dashed-slur thick on off l)))
(define (char i)
(string-append "\\char" (ly:inexact->string i 10) " "))
" ] 0 draw_dashed_line"))
;; what the heck is this interface ?
-(define (dashed-slur thick dash l)
+(define (dashed-slur thick on off l)
(string-append
(string-join (map ly:number-pair->string l) " ")
" "
(ly:number->string thick)
" [ "
- (ly:number->string dash)
- " "
- ;;UGH. 10 ?
- (ly:number->string (* 10 thick))
+ (ly:number->string on)
+ " "
+ (ly:number->string off)
" ] 0 draw_dashed_slur"))
; todo: merge with tex-font-command?
; ((eq? keyword 'char x y i)
; ((eq? keyword 'comment s)
; ((eq? keyword 'dashed-line thick on off dx dy)
-; ((eq? keyword 'dashed-slur thick dash l)
+; ((eq? keyword 'dashed-slur thick on off l)
; ((eq? keyword 'define-origin a b c ) "")
; ((eq? keyword 'experimental-on) "")
; ((eq? keyword 'ez-ball ch letter-col ball-col)
;; what the heck is this interface ?
-(define (dashed-slur thick dash l)
+(define (dashed-slur thick on off l)
(string-append
(string-join (map ly:number-pair->string l) " ")
" "
(ly:number->string thick)
" [ "
- (ly:number->string dash)
+ (ly:number->string on)
" "
- (ly:number->string (* 10 thick)) ;UGH. 10 ?
+ (ly:number->string off)
" ] 0 draw_dashed_slur"))
(define (dashed-line thick on off dx dy)
(define (bracket arch_angle arch_width arch_height height arch_thick thick)
(embedded-ps (list 'bracket arch_angle arch_width arch_height height arch_thick thick)))
-(define (dashed-slur thick dash l)
- (embedded-ps (list 'dashed-slur thick dash `(quote ,l))))
+(define (dashed-slur thick on off l)
+ (embedded-ps (list 'dashed-slur thick on off `(quote ,l))))
(define (char font i)
(string-append "\\" (tex-font-command font)