From: Jan Nieuwenhuizen Date: Sat, 12 Feb 2005 10:11:49 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: release/2.4.6~30 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=625d32b04415473decb9bc25d1c4dfb8f3ac8c04;p=lilypond.git *** empty log message *** --- diff --git a/ChangeLog b/ChangeLog index 1361820e42..a8779dab18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-02-12 Jan Nieuwenhuizen + + * Slur-dash patch by Bertalan. + 2005-02-10 Jan Nieuwenhuizen * stepmake/aclocal.m4: teTeX-3.0 inimf fix. Comment-out. diff --git a/input/test/slur-dash.ly b/input/test/slur-dash.ly index dcda968b70..68d3e34f3c 100644 --- a/input/test/slur-dash.ly +++ b/input/test/slur-dash.ly @@ -1,5 +1,5 @@ \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. " } @@ -8,9 +8,10 @@ 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) | diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index b84097ee2e..a1578920c6 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -26,7 +26,7 @@ struct Lookup 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); diff --git a/lily/lookup.cc b/lily/lookup.cc index 69db6c1086..69ffc54379 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -76,10 +76,13 @@ Lookup::beam (Real slope, Real width, Real thick, Real blot) } 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); @@ -87,7 +90,8 @@ Lookup::dashed_slur (Bezier b, Real thick, Real dash) 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)); diff --git a/lily/slur.cc b/lily/slur.cc index cde2669578..c6128c1a23 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -71,9 +71,11 @@ Slur::print (SCM smob) /* 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); @@ -241,6 +243,6 @@ Slur::after_line_breaking (SCM smob) 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"); diff --git a/ly/property-init.ly b/ly/property-init.ly index c820c5c703..97ce6a1a55 100644 --- a/ly/property-init.ly +++ b/ly/property-init.ly @@ -11,8 +11,18 @@ slurDown = \override Slur #'direction = #-1 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 diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index 0740f9ece4..53af9ecba2 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -150,7 +150,7 @@ negative, no line is drawn at all.") 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? diff --git a/scm/output-pdf.scm b/scm/output-pdf.scm index 691e8f3c55..bf918d8a35 100644 --- a/scm/output-pdf.scm +++ b/scm/output-pdf.scm @@ -101,10 +101,10 @@ (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)) diff --git a/scm/output-pdftex.scm b/scm/output-pdftex.scm index f20f7a02aa..4bad8d9af5 100644 --- a/scm/output-pdftex.scm +++ b/scm/output-pdftex.scm @@ -53,8 +53,8 @@ (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) " ")) diff --git a/scm/output-ps.scm b/scm/output-ps.scm index 5db157f282..2eda1052c3 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -128,16 +128,15 @@ " ] 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? diff --git a/scm/output-sketch.scm b/scm/output-sketch.scm index afe39c4076..1323944b24 100644 --- a/scm/output-sketch.scm +++ b/scm/output-sketch.scm @@ -46,7 +46,7 @@ ; ((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) @@ -218,15 +218,15 @@ ;; 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) diff --git a/scm/output-tex.scm b/scm/output-tex.scm index 4ea8fbe77d..4fd9079635 100644 --- a/scm/output-tex.scm +++ b/scm/output-tex.scm @@ -88,8 +88,8 @@ (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)