I think I solved the extra dots on span-bars for repeat bars. It was
merely a matter of calling evaluate_empty before
Bar::before_line_breaking in Span_bar::before_line_breaking.
The patch also changes the look of back-to-back repeat bars a little,
in order to conform to some notation I have here. I am far from
certain that this is correct, however, and would like some feedback
from others here. The notation I have seen for back-to-back repeat
bars is:
double-dot thin-line thick-line thin-line double-dot
What lilypond currently uses is:
double-dot thick-line thick-line double-dot
What do others think is correct? Maybe this should be parameterized?
One thing this patch fails to fix is the postbreaking of Span_bars.
The following file illustrates the problem:
foo = \notes \relative c'' {
\repeat volta 3 { e c d e } \break
\repeat volta 3 { e c d e }
}
\score {
\context StaffGroup <
\context Staff = one \foo
\context Staff = two \foo
>
\midi{}
\paper{}
}
And here is the promised patch:
Generated by Michael Welsh Duggan <[EMAIL PROTECTED]>,
>From = lilypond-1.3.41, To = lilypond-1.3.41.mwd1
usage
cd lilypond-source-dir; patch -E -p1 < lilypond-1.3.41.mwd1.diff
Patches do not contain automatically generated files
or (urg) empty directories,
i.e., you should rerun autoconf, configure
diff -urN ../lilypond-1.3.41/CHANGES ./CHANGES
--- ../lilypond-1.3.41/CHANGES Thu Mar 30 04:05:01 2000
+++ ./CHANGES Fri Mar 31 00:30:53 2000
@@ -1,3 +1,10 @@
+1.3.41.mwd1
+===========
+
+* Fixed extra dots on repeat span-bars.
+
+* Changed the look of :|: repeat bars.
+
1.3.40.jcn3
===========
diff -urN ../lilypond-1.3.41/VERSION ./VERSION
--- ../lilypond-1.3.41/VERSION Thu Mar 30 07:19:49 2000
+++ ./VERSION Fri Mar 31 01:06:09 2000
@@ -2,7 +2,7 @@
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=41
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=mwd1
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
diff -urN ../lilypond-1.3.41/lily/bar.cc ./lily/bar.cc
--- ../lilypond-1.3.41/lily/bar.cc Tue Mar 21 20:15:44 2000
+++ ./lily/bar.cc Thu Mar 30 14:54:02 2000
@@ -122,10 +122,21 @@
}
else if (str == ":|:")
{
- m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
- m.add_at_edge (X_AXIS, LEFT, colon, kern);
- m.add_at_edge (X_AXIS, RIGHT, thick, kern);
+// m.add_at_edge (X_AXIS, LEFT, thick, thinkern);
+// m.add_at_edge (X_AXIS, LEFT, colon, kern);
+// m.add_at_edge (X_AXIS, RIGHT, thick, kern);
+// m.add_at_edge (X_AXIS, RIGHT, colon, kern);
+ m.add_at_edge (X_AXIS, RIGHT, thick, 0);
+ m.add_at_edge (X_AXIS, RIGHT, thin, kern);
m.add_at_edge (X_AXIS, RIGHT, colon, kern);
+ m.add_at_edge (X_AXIS, LEFT, thin, kern);
+ m.add_at_edge (X_AXIS, LEFT, colon, kern);
+ }
+ else if (str == ";|;")
+ {
+ m.add_at_edge (X_AXIS, RIGHT, thick, 0);
+ m.add_at_edge (X_AXIS, RIGHT, thin, kern);
+ m.add_at_edge (X_AXIS, LEFT, thin, kern);
}
else if (str == ".|.")
{
diff -urN ../lilypond-1.3.41/lily/span-bar.cc ./lily/span-bar.cc
--- ../lilypond-1.3.41/lily/span-bar.cc Sun Mar 26 16:00:55 2000
+++ ./lily/span-bar.cc Thu Mar 30 15:18:57 2000
@@ -41,10 +41,10 @@
void
Span_bar::before_line_breaking ()
{
- Bar::before_line_breaking ();
-
evaluate_empty ();
+ Bar::before_line_breaking ();
+
// set_empty (false, Y_AXIS); // a hack to make mark scripts work.
}
@@ -94,13 +94,10 @@
}
else if (type_str== ":|:")
{
- type_str= ".|.";
+ type_str= ";|;";
}
+ set_elt_property ("glyph", ly_str02scm (type_str.ch_C ()));
}
-
- /*
- uhh. should do something with type_str ?!!
- */
}
Interval
diff -urN ../lilypond-1.3.41/scm/lily.scm ./scm/lily.scm
--- ../lilypond-1.3.41/scm/lily.scm Tue Mar 28 04:14:44 2000
+++ ./scm/lily.scm Thu Mar 30 15:01:50 2000
@@ -962,9 +962,11 @@
(define (break-barline glyph dir)
(let ((result (assoc glyph
'((":|:" . (":|" . "|:"))
+ (";|;" . ("|." . ".|"))
("|" . ("|" . ""))
("|s" . (nil . "|"))
("|:" . ("|" . "|:"))
+ (".|" . ("|" . ".|"))
("|." . ("|." . nil))
(":|" . (":|" . nil))
("||" . ("||" . nil))
--
Michael Duggan
([EMAIL PROTECTED])