2005-02-11 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * Slur-dash patch by Bertalan.
* ly/engraver-init.ly (EasyNotation): glyph name dash -> period.
--- /dev/null
+\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 }
+}
+
+
+
+++ /dev/null
-\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 }
-}
-
-
-
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);
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);
/*
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",
- "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");
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 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)
(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) " "))
" ] 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)
;; 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
(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))