From: hanwen Date: Sat, 12 Feb 2005 10:34:36 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: release/2.5.23~549 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=bb553ed9e1753bf32948c6fe5c8da0e9bb53da0f;p=lilypond.git *** empty log message *** --- diff --git a/ChangeLog b/ChangeLog index 1ba21de39b..013820ce52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,6 @@ 2005-02-11 Han-Wen Nienhuys + + * Slur-dash patch by Bertalan. * ly/engraver-init.ly (EasyNotation): glyph name dash -> period. diff --git a/input/regression/slur-dash.ly b/input/regression/slur-dash.ly new file mode 100644 index 0000000000..68d3e34f3c --- /dev/null +++ b/input/regression/slur-dash.ly @@ -0,0 +1,23 @@ +\version "2.4.0" +\header {texidoc = "@cindex Slur, dotted, dashed +The appearance of slurs may be changed from solid to dotted or dashed. +" +} +\score{ + \relative c'{ + c( d e c) | + \slurDotted + c( d e c) | + \slurDashed + c( d e c) | + \override Slur #'dash-period = #2.0 + \override Slur #'dash-fraction = #0.4 + c( d e c) | + \slurSolid + c( d e c) | + } + \layout{ raggedright=##t } +} + + + diff --git a/input/test/slur-dash.ly b/input/test/slur-dash.ly deleted file mode 100644 index dcda968b70..0000000000 --- a/input/test/slur-dash.ly +++ /dev/null @@ -1,22 +0,0 @@ -\version "2.4.0" -\header {texidoc = "@cindex Slur, dotted -The appearance of slurs may be changed from solid to dotted or dashed. -" -} -\score{ - \relative c'{ - c( d e c) | - \slurDotted - c( d e c) | - \slurSolid - c( d e c) | - \override Slur #'dashed = #0.0 - c( d e c) | - \slurSolid - c( d e c) | - } - \layout{ raggedright=##t } -} - - - diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index f5e787c0d9..bf53592937 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -22,7 +22,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 da0ccde182..f012ca6930 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -75,21 +75,26 @@ Lookup::beam (Real slope, Real width, Real thick, Real blot) return Stencil (b, at); } + 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), - ly_quote_scm (l), - SCM_UNDEFINED)); + scm_make_real (thick), + scm_make_real (on), + scm_make_real (off), + ly_quote_scm (l), + SCM_UNDEFINED)); Box box (Interval (0, 0), Interval (0, 0)); return Stencil (box, at); diff --git a/lily/slur.cc b/lily/slur.cc index 3057fc2c37..5d8138b36e 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -68,9 +68,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); @@ -238,6 +240,6 @@ Slur::after_line_breaking (SCM smob) ADD_INTERFACE (Slur, "slur-interface", "A slur", - "positions quant-score excentricity encompass-objects control-points dashed slur-details direction height-limit note-columns ratio thickness"); + "positions 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 8103849c65..52d4e7e419 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 0cb0793f22..fd4934f60a 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -149,7 +149,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 6cc3a1f751..954dffd187 100644 --- a/scm/output-pdf.scm +++ b/scm/output-pdf.scm @@ -101,13 +101,13 @@ (invoke-char " show" i)) -(define (dashed-slur thick dash lst) +(define (dashed-slur thick on off l) (string-append (setlineparams) - "[ " (ly:number->string dash) " " - (ly:number->string (* 10 thick)) " ] 0 d " - (setlinewidth thick) - (moveto-pair (car lst)) - (apply curveto (cdr lst)) + "[ " (ly:number->string on) " " + (ly:number->string off) " ] 0 d " + (setlinewidth thick) + (moveto-pair (car l)) + (apply curveto (cdr l)) (closestroke))) (define (dashed-line thick on off dx dy) diff --git a/scm/output-pdftex.scm b/scm/output-pdftex.scm index 9dfb6040ae..f4c39ce21c 100644 --- a/scm/output-pdftex.scm +++ b/scm/output-pdftex.scm @@ -45,8 +45,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 lst) - (embedded-pdf (list 'dashed-slur thick dash lst))) +(define (dashed-slur thick on off lst) + (embedded-pdf (list 'dashed-slur thick on off lst))) (define (char i) (string-append "\\char" (ly:inexact->string i 10) " ")) diff --git a/scm/output-ps.scm b/scm/output-ps.scm index 3b1e91c653..67042e214e 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -126,16 +126,15 @@ " ] 0 draw_dashed_line")) ;; what the heck is this interface ? -(define (dashed-slur thick dash lst) +(define (dashed-slur thick on off l) (string-append - (string-join (map ly:number-pair->string lst) " ") + (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")) (define (dot x y radius) diff --git a/scm/output-sketch.scm b/scm/output-sketch.scm index 6a42089b47..7fb0f96343 100644 --- a/scm/output-sketch.scm +++ b/scm/output-sketch.scm @@ -217,16 +217,8 @@ ;; what the heck is this interface ? -(define (dashed-slur thick dash lst) - (string-append - (string-join (map ly:number-pair->string lst) " ") - " " - (ly:number->string thick) - " [ " - (ly:number->string dash) - " " - (ly:number->string (* 10 thick)) ;UGH. 10 ? - " ] 0 draw_dashed_slur")) +(define (dashed-slur thick on off l) + "") (define (dashed-line thick on off dx dy) (string-append diff --git a/scm/output-tex.scm b/scm/output-tex.scm index 6bc3f50a06..c0aa31680b 100644 --- a/scm/output-tex.scm +++ b/scm/output-tex.scm @@ -90,8 +90,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 lst) - (embedded-ps (list 'dashed-slur thick dash `(quote ,lst)))) +(define (dashed-slur thick on off lst) + (embedded-ps (list 'dashed-slur thick on off `(quote ,lst)))) (define (named-glyph font name) (let* ((info (ly:otf-font-glyph-info font name))