]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.19
authorfred <fred>
Tue, 26 Mar 2002 22:44:58 +0000 (22:44 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:44:58 +0000 (22:44 +0000)
432 files changed:
CHANGES
Documentation/faq.texi
Documentation/programmer/regression-test.tely
TODO
flower/axis.cc
flower/cpu-timer.cc
flower/dstream.cc
flower/getopt-long.cc
flower/include/arithmetic-operator.hh
flower/include/axes.hh
flower/include/cpu-timer.hh
flower/include/data-file.hh
flower/include/dictionary-iter.hh
flower/include/dictionary.hh
flower/include/direction.hh
flower/include/drul-array.hh
flower/include/dstream.hh
flower/include/file-path.hh
flower/include/flower-debug.hh
flower/include/flower-proto.hh [new file with mode: 0644]
flower/include/international.hh
flower/include/interval.hh
flower/include/interval.tcc
flower/include/libc-extension.hh
flower/include/offset.hh
flower/include/parray.hh
flower/include/parse-afm.hh [new file with mode: 0644]
flower/include/pointer.hh
flower/include/pointer.tcc
flower/include/pqueue.hh
flower/include/rational.hh
flower/include/real.hh
flower/include/scalar.hh
flower/include/string-convert.hh
flower/include/string-data.hh
flower/include/string-data.icc
flower/include/string-handle.hh
flower/include/string-handle.icc
flower/include/string.hh
flower/include/string.icc
flower/include/virtual-methods.hh
flower/international.cc
flower/interval.cc
flower/libc-extension.cc
flower/offset.cc
flower/parse-afm.cc [new file with mode: 0644]
flower/polynomial.cc
flower/rational.cc
flower/scalar.cc
flower/string.cc
flower/stringutil.cc
input/test/grace.ly
input/test/tuplet-2.fly [new file with mode: 0644]
lib/binary-source-file.cc
lib/include/file-storage.hh
lib/include/input.hh
lib/include/mapped-file-storage.hh
lib/include/proto.hh
lib/include/simple-file-storage.hh
lib/include/string-storage.hh
lib/include/warn.hh
lib/input.cc
lib/mapped-file-storage.cc
lib/simple-file-storage.cc
lib/source-file.cc
lib/source.cc
lily/afm-reader.cc
lily/afm.cc
lily/align-element.cc
lily/all-font-metrics.cc
lily/atom.cc
lily/audio-column.cc
lily/audio-element.cc
lily/audio-item-info.cc
lily/audio-item.cc
lily/audio-staff.cc
lily/axis-group-element.cc
lily/bar-number-engraver.cc
lily/bar.cc
lily/base-span-bar-engraver.cc
lily/beam-engraver.cc
lily/beam.cc
lily/bezier-bow.cc
lily/bezier.cc
lily/boxes.cc
lily/break-algorithm.cc
lily/break-align-item.cc
lily/change-iterator.cc
lily/change-translator.cc
lily/chord-name-engraver.cc
lily/chord-name.cc
lily/chord-tremolo-engraver.cc
lily/clef-engraver.cc
lily/clef-item.cc
lily/collision-engraver.cc
lily/collision.cc
lily/column-x-positions.cc
lily/command-request.cc
lily/crescendo.cc
lily/debug.cc
lily/dimension-cache.cc
lily/direction.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dots.cc
lily/duration.cc
lily/dynamic-engraver.cc
lily/engraver-group-engraver.cc
lily/engraver.cc
lily/font-metric.cc
lily/global-translator.cc
lily/gourlay-breaking.cc
lily/idealspacing.cc
lily/identifier.cc
lily/includable-lexer.cc
lily/include/afm.hh
lily/include/afm2.hh [new file with mode: 0644]
lily/include/align-element.hh
lily/include/all-font-metrics.hh
lily/include/atom.hh
lily/include/audio-column.hh
lily/include/audio-element.hh
lily/include/audio-item.hh
lily/include/audio-staff.hh
lily/include/axis-align-spanner.hh
lily/include/axis-group-element.hh
lily/include/axis-group-item.hh
lily/include/axis-group-spanner.hh
lily/include/bar-engraver.hh
lily/include/bar-number-engraver.hh
lily/include/bar.hh
lily/include/base-span-bar-engraver.hh
lily/include/beam-engraver.hh
lily/include/beam.hh
lily/include/bezier.hh
lily/include/bow.hh
lily/include/box.hh
lily/include/break-algorithm.hh
lily/include/break-align-item.hh
lily/include/change-iterator.hh
lily/include/change-translator.hh
lily/include/chord-name-engraver.hh
lily/include/chord-tremolo-engraver.hh
lily/include/clef-item.hh
lily/include/collision-engraver.hh
lily/include/collision.hh
lily/include/column-x-positions.hh
lily/include/command-request.hh
lily/include/crescendo.hh
lily/include/dimension-cache.hh
lily/include/dot-column-engraver.hh
lily/include/dot-column.hh
lily/include/dots.hh
lily/include/duration.hh
lily/include/engraver-group-engraver.hh
lily/include/engraver.hh
lily/include/file-results.hh
lily/include/font-metric.hh
lily/include/font-size-engraver.hh
lily/include/global-translator.hh
lily/include/gourlay-breaking.hh
lily/include/header.hh
lily/include/idealspacing.hh
lily/include/identifier.hh
lily/include/includable-lexer.hh
lily/include/item.hh
lily/include/key-engraver.hh
lily/include/key-item.hh
lily/include/key-performer.hh
lily/include/key.hh
lily/include/keyword.hh
lily/include/least-squares.hh [new file with mode: 0644]
lily/include/leastsquares.hh
lily/include/lily-guile.hh
lily/include/lily-guile.icc
lily/include/lily-proto.hh
lily/include/line-group-group-engraver.hh
lily/include/line-of-score.hh
lily/include/local-key-engraver.hh
lily/include/local-key-item.hh
lily/include/lookup.hh
lily/include/lyric-engraver.hh
lily/include/lyric-performer.hh
lily/include/main.hh
lily/include/mark-engraver.hh
lily/include/midi-def.hh
lily/include/midi-item.hh
lily/include/midi-stream.hh
lily/include/midi-walker.hh
lily/include/minterval.hh
lily/include/molecule.hh
lily/include/mudela-version.hh
lily/include/multi-measure-rest-engraver.hh
lily/include/multi-measure-rest.hh
lily/include/music-iterator.hh
lily/include/music-list.hh
lily/include/music-output-def.hh
lily/include/music-output.hh
lily/include/music-wrapper-iterator.hh
lily/include/music-wrapper.hh
lily/include/music.hh
lily/include/musical-pitch.hh
lily/include/musical-request.hh
lily/include/my-lily-lexer.hh
lily/include/my-lily-parser.hh
lily/include/note-column.hh
lily/include/note-head.hh
lily/include/note-heads-engraver.hh
lily/include/note-performer.hh
lily/include/notename-table.hh
lily/include/paper-column.hh
lily/include/paper-def.hh
lily/include/paper-outputter.hh
lily/include/paper-score.hh
lily/include/performance.hh
lily/include/performer-group-performer.hh
lily/include/performer.hh
lily/include/pitch-squash-engraver.hh
lily/include/priority-halign-engraver.hh
lily/include/property-iterator.hh
lily/include/protected-scm.hh
lily/include/relative-music.hh
lily/include/repeat-engraver.hh
lily/include/request-chord-iterator.hh
lily/include/request-chord.hh
lily/include/request.hh
lily/include/rest-collision-engraver.hh
lily/include/rest-collision.hh
lily/include/rest-engraver.hh
lily/include/rest.hh
lily/include/rhythmic-column-engraver.hh
lily/include/rhythmic-head.hh
lily/include/rod.hh
lily/include/scope.hh
lily/include/score-element-info.hh
lily/include/score-engraver.hh
lily/include/score-performer.hh
lily/include/score-priority-engraver.hh
lily/include/score.hh
lily/include/script-engraver.hh
lily/include/separating-group-spanner.hh
lily/include/separating-line-group-engraver.hh
lily/include/sequential-music-iterator.hh
lily/include/simultaneous-music-iterator.hh
lily/include/single-malt-grouping-item.hh
lily/include/slur-engraver.hh
lily/include/slur.hh
lily/include/span-bar.hh
lily/include/span-score-bar-engraver.hh
lily/include/spanner.hh
lily/include/staff-info.hh
lily/include/staff-margin-engraver.hh
lily/include/staff-performer.hh
lily/include/staff-symbol-referencer.hh
lily/include/staff-symbol.hh
lily/include/stem-engraver.hh
lily/include/stem-info.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/include/super-element.hh
lily/include/swallow-engraver.hh
lily/include/swallow-perf.hh
lily/include/tempo-performer.hh
lily/include/text-item.hh
lily/include/tie-engraver.hh
lily/include/tie.hh
lily/include/time-scaled-music-iterator.hh
lily/include/time-scaled-music.hh
lily/include/time-signature-engraver.hh
lily/include/time-signature-performer.hh
lily/include/time-signature.hh
lily/include/timing-engraver.hh
lily/include/timing-translator.hh
lily/include/translation-property.hh
lily/include/translator-change.hh
lily/include/translator-group.hh
lily/include/translator.hh
lily/include/transposed-music.hh
lily/include/tuplet-engraver.hh
lily/include/tuplet-spanner.hh
lily/include/type-swallow-translator.hh
lily/include/vertical-align-engraver.hh
lily/include/volta-spanner.hh
lily/item.cc
lily/key-engraver.cc
lily/key-item.cc
lily/key-performer.cc
lily/key.cc
lily/least-squares.cc [new file with mode: 0644]
lily/lexer.ll
lily/lily-guile.cc
lily/line-group-group-engraver.cc
lily/line-of-score.cc
lily/local-key-engraver.cc
lily/local-key-item.cc
lily/lookup.cc
lily/lyric-engraver.cc
lily/lyric-performer.cc
lily/main.cc
lily/mark-engraver.cc
lily/midi-def.cc
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/misc.cc
lily/molecule.cc
lily/mudela-version.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music-iterator.cc
lily/music-list.cc
lily/music-output-def.cc
lily/music-sequence.cc
lily/music-wrapper-iterator.cc
lily/music-wrapper.cc
lily/music.cc
lily/musical-pitch.cc
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/my-lily-parser.cc
lily/note-column.cc
lily/note-head.cc
lily/note-heads-engraver.cc
lily/note-performer.cc
lily/notename-table.cc
lily/paper-column.cc
lily/paper-def.cc
lily/paper-outputter.cc
lily/paper-score.cc
lily/paper-stream.cc
lily/parser.yy
lily/performance.cc
lily/performer-group-performer.cc
lily/performer.cc
lily/pitch-squash-engraver.cc
lily/property-iterator.cc
lily/protected-scm.cc
lily/relative-octave-music.cc
lily/repeat-engraver.cc
lily/request-chord-iterator.cc
lily/request.cc
lily/rest-collision-engraver.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/rod.cc
lily/scope.cc
lily/score-element-info.cc
lily/score-element.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/score.cc
lily/scores.cc
lily/script-engraver.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/sequential-music-iterator.cc
lily/side-position-interface.cc
lily/simultaneous-music-iterator.cc
lily/single-malt-grouping-item.cc
lily/slur-engraver.cc
lily/slur.cc
lily/span-bar.cc
lily/span-score-bar-engraver.cc
lily/spanner.cc
lily/staff-info.cc
lily/staff-margin-engraver.cc
lily/staff-performer.cc
lily/staff-symbol-engraver.cc
lily/staff-symbol-referencer.cc
lily/staff-symbol.cc
lily/stem-engraver.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/super-element.cc
lily/swallow-engraver.cc
lily/swallow-perf.cc
lily/template5.cc
lily/tempo-performer.cc
lily/text-engraver.cc
lily/text-item.cc
lily/tfm.cc
lily/tie-engraver.cc
lily/tie.cc
lily/time-scaled-music-iterator.cc
lily/time-scaled-music.cc
lily/time-signature-engraver.cc
lily/time-signature-performer.cc
lily/time-signature.cc
lily/timing-engraver.cc
lily/timing-translator.cc
lily/translation-property.cc
lily/translator-ctors.cc
lily/translator-group.cc
lily/translator.cc
lily/transposed-music.cc
lily/tuplet-engraver.cc
lily/tuplet-spanner.cc
lily/type-swallow-translator.cc
lily/vertical-align-engraver.cc
lily/volta-spanner.cc
lily/warn.cc
lilypond-mode.el [new file with mode: 0644]
mf/feta-accordion.mf
mf/feta-banier.mf
mf/feta-beugel.mf
mf/feta-bolletjes.mf
mf/feta-eindelijk.mf
mf/feta-haak.mf
mf/feta-klef.mf
mf/feta-macros.mf
mf/feta-params.mf
mf/feta-puntje.mf
mf/feta-schrift.mf
mf/feta-slag.mf
mf/feta-sleur.mf
mf/feta-timesig.mf
mf/feta-toevallig.mf
midi2ly/duration-convert.cc
midi2ly/duration-iter.cc
midi2ly/duration.cc
midi2ly/include/duration-convert.hh
midi2ly/include/duration-iter.hh
midi2ly/include/duration.hh
midi2ly/include/plet.hh
midi2ly/main.cc
midi2ly/plet.cc
po/nl.po
scm/generic-property.scm
scm/lily.scm

diff --git a/CHANGES b/CHANGES
index 44adce0ac934efb5d949fa2cac1b5a59b258f34a..00fac87e23471b20fa7edf44e2e8b539849152be 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,24 @@
+1.3.18.uu2
+==========
+
+* lilypond-mode.el for emacs supersedes mudela-mode.el 
+
+* Tuplet spanners don't collide with encompassing notes. 
+
+* Gobbled Adobe parseAFM* code, for future use.
+
+* Big 1999 to 2000 search/replace.
+
+* Big interline to staff_space search/replace for mf files.
+
+* Removed Bow class, and split code into Tie and Slur
+
+* Don't put scripts on grace notes.
+
+* Font_metric uses SCM for name field.
+
+* Various compilation fixes.
+
 1.3.17.jcn2
 ===========
 
@@ -82,8 +103,8 @@ with different dot count. See input/test/collision-merge-dotted.fly
 
 1.3.16.jcn1
 ===========
-       * Fixed cross staff slurs.  It seems that cross-staff sign
-         was swapped.
+* Fixed cross staff slurs.  It seems that cross-staff sign
+  was swapped.
 
 1.3.15.hwn1
 ===========
index a400368adbe5ccc3e5e5c3aa1801775152f7e9c9..a06e8c0665153fb4f9b0d18fcbc22b2c21566497 100644 (file)
@@ -106,9 +106,9 @@ in subdirectories under @file{~/usr/src/}.
 
 @subsubsection Is there an emacs mode?
 
-Yes.  It is included with the source archive as mudela-mode.el.  If
-you have an rpm it is in @file{/usr/doc/lilypond-X/}.  You have to install it
-yourself.
+Yes.  It is included with the source archive as @file{lilypond-mode.el}.
+If you have an RPM it is in @file{/usr/doc/lilypond-X/}.  You have to
+install it yourself.
 
 @subsubsection How do I create the @file{.tfm} files?
 
index b84760bfec5ea2bfbad30e65ea736a6ebb4c6460..dee4b30c7e520f065c4ebbeff549eb4e8ac72e4c 100644 (file)
@@ -112,6 +112,9 @@ can have accidentals, but they are (currently) spaced at a fixed
 distance.  Grace notes (of course) come before the accidentals of the
 main note.  Grace notes can also be positioned after the main note.
 
+Grace notes without beams should have a slash, if @code{flagStyle} is
+not set.  Main note scripts don't end up on the grace note.
+
 @mudelafile{grace.ly}
 
 
diff --git a/TODO b/TODO
index fba7831c56a5f24ba5cf6b0c7e6adbda63368e97..60e085be673049e78f7619e9a391a4d19b14862e 100644 (file)
--- a/TODO
+++ b/TODO
@@ -10,19 +10,26 @@ Grep -i for TODO, FIXME and ugh/ugr/urg.
 
 .* TODO
 . * use hash tabs iso. alist_ for elt property?
-. * tremolos.
+. * fix tremolos.
 . * internationalize GUILE msgs.
+. * with lily 1.3.17, i'm seeing tuplet markings slice mercilessly through
+whatever stands in their way.  for an example, see
+http://www4.smart.net/~jcovey/tmp/smith/closing.ps.gz
+on page 2, end of the second system.  is there any way around this?
 . * unbroken marks.
-. * put  property test  files in refman.
-. * fix slurdotted
+. * put property test files in refman.
+. * use gnome-print ParseAFM
+. * fix slurdotted!
 . * alignment within @itemize
-. * slur dashing.
+. * interstaff stems
 . * junk dstream output.
 . * agressive type-checking for SCM stuff.
+. * \prop slurdir in grace notes
 . * script columns
 . * Must stop before this music ends:
 verse=\lyrics {
 . * input/bugs/clef.sly: clef changes go missing
+. * clean up font metric handling. 
 . * input/test/grace.sly: wierd big spacing on grace notes
 . * TODO^2:
 .  * make  a TODO.texi, like http://www.gnu.org/software/guile/ideas.html
@@ -31,8 +38,6 @@ verse=\lyrics {
 . * context in embedded SCM errors.
 . * acc at tied note after linebreak.
 . * fix font-naming and selecting
-. * barcheck warning doesn't resync anymore
-. * provide settable/invisible span-score-bar bracket
 . * add context information to warnings
 Paper:
 waarschuwing: Kan niet beide uiteinden van bindingsboog vinden
@@ -40,7 +45,6 @@ MIDI:
 pa.ly:33:23: waarschuwing: Schroot verzoek: `Span_req':
   g' a4 bes8 \grace f8(
                          )es16 d es8 r c |
-. * sparse ties.
 . * chord tonic: placement of accidental  C#, Cb (from scm and C++)
 . * note head on stem err msg in dutch.
 . * why need to run -C mf twice?
@@ -55,7 +59,6 @@ John
 . * hara kiri _8 clef. 
 . * junk -M ? 
 . * mudela-book doco
-. * fix or replace feta-accordion.mf
 . * bracket pdf hack
 . * Mondrup:
 - if I change the property minVerticalAlign in a multi staff score with
index b4446bed5f309b4b9c27ba92427da5bcf5c334e5..ed55fddc4983ec83c4ae50d10fb929049ec41064 100644 (file)
@@ -3,7 +3,7 @@
 
 
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
index 6a0a4236bf2772b36ee6f27978207b13003d0ad6..b61ea77ff184dbe5ca93a810bf1c2dc4e50017b0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "cpu-timer.hh"
index e51f97a39e1ef5ea2f802d57f7f17c91f0f77e57..72b3d248db2c408648c87b4b1d8c6852353c0597 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <fstream.h>
index b1e83ef1bd7ad5f1d1fc583901572ed3056bb229..f78e18a8c783c08f871f3191808ea4348641fc00 100644 (file)
@@ -4,6 +4,7 @@
    this is (Copyleft) 1996, Han-Wen Nienhuys, <hanwen@cs.uu.nl>
  */
 
+#include <string.h>
 #include <stdio.h>
 #include <iostream.h>
 #include <assert.h>
@@ -12,6 +13,7 @@
 #include "international.hh"
 #include "string-convert.hh"
 
+
 #if !HAVE_GETTEXT
 inline char*
 gettext (char const* s)
index 74841f8b1520c02dff57b89f8602cbb19e7a2f54..499f57a65ff9d6768557c3d12d1537277830c85c 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index b67eb47766a9d98bbf16f16bcf237856409e24ba..a1f290f8a9143ded2a2093a129bd0fc2c0212b8a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 2418d70efda146e535746fdd1c822e0e32e3a5af..19ad18294770863d9b9c8fd5d34100315d4602a0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9fde76b30522d33a824d2a0603ad854f47e4815d..9ca3a0cbfb5d040e681ecb953aea04609277f313 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 966211bdaae1b59944743c78cd8e10bb4be05387..eaf0317464c08529e3349c91dc15e71798b0121d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e29b483a4cef101004c4d667c646f4655817f74b..3cb1069b39e66c62df2f1ac553ed6bbac093ab6f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 5cce076c0fe8d55c7acfe6c1a828ed11b5b30e96..2e18ff2a49ff504ce06a3ffcd975b58a86bf8d2a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 467cf9f40c2d48f1ea31968d618bc9a008e64ab8..75f98611956ca2494728440f1286cf7c94db32b3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index c207e21e38a65aece7627ad5cf71838b5192af7a..22a31ea798813e9a13a886756c61d1ecc1a8cee0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef DSTREAM_HH
index bdfa5e3870dc6984c04d608add6de84e0c909037..15c295ba4b3880fa593ab8b6ba05422f8322d8cb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef PATH_HH
index fe565c3d6d78af01c6f85e377f411dfdad67f771..26bff024b2b234ab7245aae14f18d9f565da5775 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/flower/include/flower-proto.hh b/flower/include/flower-proto.hh
new file mode 100644 (file)
index 0000000..a900c33
--- /dev/null
@@ -0,0 +1,57 @@
+
+/*
+  fproto.hh -- typenames in flowerlib
+
+  (c) 1996 Han-Wen Nienhuys
+*/
+
+#ifndef FPROTO_HH
+#define FPROTO_HH
+
+
+char const * flower_version_sz();
+
+template<class T> struct Link_array;
+template<class T> struct Array;
+template<class T,class K> struct Assoc;
+template<class K, class V> struct Hash_table;
+template<class K, class V> struct Hash_table_iter;
+template<class T> struct Dictionary_iter;
+template<class T> struct Dictionary;
+template<class T> struct Dictionary_iter;
+template<class T> struct Link_list;
+template<class T> struct Interval_t;
+template<class T> struct PQueue;
+
+#include "real.hh"
+
+typedef Interval_t<Real> Interval;
+typedef Interval_t<int> Slice; // junkme.
+
+struct Offset;
+struct Long_option_init;
+struct Rational;
+struct File_path;
+struct Getopt_long;
+struct String_data;
+struct String_handle;
+struct String_convert;
+struct String;
+
+struct Text_stream;
+struct Data_file;
+struct Text_db;
+struct Scalar;
+
+typedef unsigned char U8;
+typedef short I16;
+typedef unsigned short U16;
+typedef unsigned U32;
+typedef int I32;
+typedef long long I64;
+
+typedef unsigned char Byte;
+
+
+#endif // FPROTO_HH
+
index 5ebbb65aeeaf18946e81d80782e6d656534a4e7e..c710074c86ba646d948b05703125faf8d7211bc4 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
index e02a7495a8fbeb8f4e794e545d4c10a176e812a7..e00db6914e8cc48047c1c37f267d6af6fc3d957d 100644 (file)
@@ -8,7 +8,7 @@
 #define INTERVAL_HH
 
 #include <assert.h> 
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "real.hh"
 #include "drul-array.hh"
 
@@ -156,7 +156,7 @@ Interval_t<T> operator *(Interval_t<T> i,T a){
   return a*i;
 }
 
-// again? see fproto.hh
+// again? see flower-proto.hh
 typedef Interval_t<Real> Interval;
 typedef Interval_t<int> Slice; // weird name
 
index f601d03e6611b65f333d2aa03cb7ae880c423df8..7c51bd18f3879ba6d554d890d507fe2cff9c49b8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 56a7e7c13e217464c2d0618eedbc92c8b1b85b81..76a6d7fc47cd161538af4eb7716d8d359b85a4f1 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the flowerlib
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef LIBC_EXTENSION_HH
 #define LIBC_EXTENSION_HH
 
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "config.h"
 #include <cstddef>
 #include <stdarg.h>
index 0a5a7a10d541887b04124f5e428c895cb102ba6f..b9d7fae509fa6672c47d287c0b12016b62b8e2eb 100644 (file)
@@ -14,6 +14,7 @@
 struct Offset;
 
 Offset complex_multiply (Offset, Offset);
+Offset complex_divide (Offset, Offset);
 Offset complex_exp (Offset);
 
 
index a9baeab836c58c7f80c8f4c11c30e380906b24e1..41099671d6f69f68ee1f7cc7dcd03296e841d78e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/flower/include/parse-afm.hh b/flower/include/parse-afm.hh
new file mode 100644 (file)
index 0000000..3f2d831
--- /dev/null
@@ -0,0 +1,327 @@
+/* Modified 1999 Morten Welinder:
+ * 1. ANSI prototype.
+ * 2. parseFileFree function.
+ */
+// 2000 HWN: AFM_ prefixes.
+/*
+ * (C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved.
+ *
+ * This file may be freely copied and redistributed as long as:
+ *   1) This entire notice continues to be included in the file, 
+ *   2) If the file has been modified in any way, a notice of such
+ *      modification is conspicuously indicated.
+ *
+ * PostScript, Display PostScript, and Adobe are registered trademarks of
+ * Adobe Systems Incorporated.
+ * 
+ * ************************************************************************
+ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+ * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+ * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR 
+ * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY 
+ * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, 
+ * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * ************************************************************************
+ */
+
+/* ParseAFM.h
+ *
+ * This header file is used in conjuction with the parseAFM.c file.
+ * Together these files provide the functionality to parse Adobe Font
+ * Metrics files and store the information in predefined data structures.
+ * It is intended to work with an application program that needs font metric
+ * information. The program can be used as is by making a procedure call to 
+ * parse an AFM file and have the data stored, or an application developer
+ * may wish to customize the code. 
+ *
+ * This header file defines the data structures used as well as the key 
+ * strings that are currently recognized by this version of the AFM parser.
+ * This program is based on the document "Adobe Font Metrics Files, 
+ * Specification Version 2.0".
+ *
+ * AFM files are separated into distinct sections of different data. Because
+ * of this, the parseAFM program can parse a specified file to only save
+ * certain sections of information based on the application's needs. A record 
+ * containing the requested information will be returned to the application.
+ * 
+ * AFM files are divided into five sections of data:
+ *     1) The Global Font Information
+ *     2) The Character Metrics Information 
+ *     3) The Track Kerning Data
+ *     4) The Pair-Wise Kerning Data
+ *     5) The Composite Character Data
+ *
+ * Basically, the application can request any of these sections independent
+ * of what other sections are requested. In addition, in recognizing that
+ * many applications will want ONLY the x-width of characters and not all
+ * of the other character metrics information, there is a way to receive
+ * only the width information so as not to pay the storage cost for the 
+ * unwanted data. An application should never request both the 
+ * "quick and dirty" char metrics (widths only) and the Character Metrics 
+ * Information since the Character Metrics Information will contain all 
+ * of the character widths as well.
+ * 
+ * There is a procedure in parseAFM.c, called parseFile, that can be 
+ * called from any application wishing to get information from the AFM File.
+ * This procedure expects 3 parameters: a vaild file descriptor, a pointer
+ * to a (FontInfo *) variable (for which space will be allocated and then 
+ * will be filled in with the data requested), and a mask specifying
+ * which data from the AFM File should be saved in the FontInfo structure.
+ * 
+ * The flags that can be used to set the appropriate mask are defined below.
+ * In addition, several commonly used masks have already been defined. 
+ * 
+ * History:
+ *     original: DSM  Thu Oct 20 17:39:59 PDT 1988
+ *  modified: DSM  Mon Jul  3 14:17:50 PDT 1989
+ *    - added 'storageProblem' return code
+ *       - fixed typos
+ */
+
+#include <stdio.h>
+
+
+
+/* your basic constants */
+#define TRUE 1
+#define FALSE 0
+#define EOL '\n'                /* end-of-line indicator */
+#define MAX_NAME 4096           /* max length for identifiers */
+#define BOOL int
+#define FLAGS int
+
+
+
+/* Flags that can be AND'ed together to specify exactly what
+ * information from the AFM file should be saved.
+ */
+#define P_G    0x01    /* 0000 0001 */   /* Global Font Info      */
+#define P_W    0x02    /* 0000 0010 */   /* Character Widths ONLY */
+#define P_M    0x06    /* 0000 0110 */   /* All Char Metric Info  */
+#define P_P    0x08    /* 0000 1000 */   /* Pair Kerning Info     */
+#define P_T    0x10    /* 0001 0000 */   /* Track Kerning Info    */
+#define P_C    0x20    /* 0010 0000 */   /* Composite Char Info   */
+
+
+/* Commonly used flags
+ */
+#define P_GW   (P_G | P_W) 
+#define P_GM   (P_G | P_M)
+#define P_GMP  (P_G | P_M | P_P)
+#define P_GMK  (P_G | P_M | P_P | P_T) 
+#define P_GALL (P_G | P_M | P_P | P_T | P_C)
+
+
+
+/* Possible return codes from the parseFile procedure.
+ * 
+ * ok means there were no problems parsing the file.
+ *
+ * parseError means that there was some kind of parsing error, but the
+ * parser went on. This could include problems like the count for any given
+ * section does not add up to how many entries there actually were, or
+ * there was a key that was not recognized. The return record may contain
+ * vaild data or it may not. 
+ *
+ * earlyEOF means that an End of File was encountered before expected. This
+ * may mean that the AFM file had been truncated, or improperly formed.
+ * 
+ * storageProblem means that there were problems allocating storage for
+ * the data structures that would have contained the AFM data.
+ */
+#define AFM_ok 0
+#define AFM_parseError -1
+#define AFM_earlyEOF -2
+#define AFM_storageProblem -3
+
+
+
+/************************* TYPES *********************************/
+/* Below are all of the data structure definitions. These structures
+ * try to map as closely as possible to grouping and naming of data 
+ * in the AFM Files.
+ */
+
+
+/* Bounding box definition. Used for the Font BBox as well as the 
+ * Character BBox.
+ */
+typedef struct
+{ 
+   int llx;    /* lower left x-position  */
+   int lly;    /* lower left y-position  */
+   int urx;    /* upper right x-position */
+   int ury;    /* upper right y-position */
+} BBox;
+
+
+/* Global Font information.
+ * The key that each field is associated with is in comments. For an 
+ * explanation about each key and its value please refer to the AFM
+ * documentation (full title & version given above). 
+ */
+typedef struct
+{  
+   char *afmVersion;           /* key: StartFontMetrics */
+   char *fontName;             /* key: FontName */
+   char *fullName;             /* key: FullName */
+   char *familyName;           /* key: FamilyName */
+   char *weight;               /* key: Weight */
+   float italicAngle;          /* key: ItalicAngle */
+   BOOL isFixedPitch;          /* key: IsFixedPitch */
+   BBox fontBBox;              /* key: FontBBox */
+   int underlinePosition;      /* key: UnderlinePosition */
+   int underlineThickness;     /* key: UnderlineThickness */
+   char *version;              /* key: Version */
+   char *notice;               /* key: Notice */
+   char *encodingScheme;       /* key: EncodingScheme */
+   int capHeight;              /* key: CapHeight */
+   int xHeight;                        /* key: XHeight */
+   int ascender;               /* key: Ascender */
+   int descender;              /* key: Descender */
+} AFM_GlobalFontInfo;
+
+
+/* Ligature definition is a linked list since any character can have
+ * any number of ligatures.
+ */
+typedef struct _t_ligature
+{
+    char *succ, *lig;
+    struct _t_ligature *next;
+} Ligature;
+
+
+/* Character Metric Information. This structure is used only if ALL 
+ * character metric information is requested. If only the character
+ * widths is requested, then only an array of the character x-widths
+ * is returned.
+ *
+ * The key that each field is associated with is in comments. For an 
+ * explanation about each key and its value please refer to the 
+ * Character Metrics section of the AFM documentation (full title
+ * & version given above). 
+ */
+typedef struct
+{
+    int code,          /* key: C */
+        wx,            /* key: WX */
+        wy;            /* together wx and wy are associated with key: W */
+    char *name;        /* key: N */
+    BBox charBBox;     /* key: B */
+    Ligature *ligs;    /* key: L (linked list; not a fixed number of Ls */
+} AFM_CharMetricInfo;
+
+
+/* Track kerning data structure.
+ * The fields of this record are the five values associated with every 
+ * TrackKern entry.
+ *  
+ * For an explanation about each value please refer to the 
+ * Track Kerning section of the AFM documentation (full title
+ * & version given above). 
+ */
+typedef struct 
+{
+    int degree;  
+    float minPtSize, 
+          minKernAmt, 
+          maxPtSize, 
+          maxKernAmt;
+} AFM_TrackKernData;
+
+
+/* Pair Kerning data structure.
+ * The fields of this record are the four values associated with every
+ * KP entry. For KPX entries, the yamt will be zero.
+ *
+ * For an explanation about each value please refer to the 
+ * Pair Kerning section of the AFM documentation (full title
+ * & version given above). 
+ */
+typedef struct 
+{
+    char *name1;
+    char *name2;
+    int xamt,
+        yamt;
+} AFM_PairKernData;
+
+
+/* AFM_Pcc is a piece of a composite character. This is a sub structure of a
+ * AFM_CompCharData described below.
+ * These fields will be filled in with the values from the key AFM_Pcc.
+ * 
+ * For an explanation about each key and its value please refer to the 
+ * Composite Character section of the AFM documentation (full title
+ * & version given above).  
+ */
+typedef struct
+{
+    char *AFM_PccName;
+    int deltax,
+        deltay;
+} AFM_Pcc;
+
+
+/* Composite Character Information data structure. 
+ * The fields ccName and numOfPieces are filled with the values associated
+ * with the key CC. The field pieces points to an array (size = numOfPieces)
+ * of information about each of the parts of the composite character. That
+ * array is filled in with the values from the key AFM_Pcc.
+ * 
+ * For an explanation about each key and its value please refer to the 
+ * Composite Character section of the AFM documentation (full title
+ * & version given above).  
+ */
+typedef struct
+{
+    char *ccName;
+    int numOfPieces;
+    AFM_Pcc *pieces;
+} AFM_CompCharData;
+
+
+/*  FontInfo
+ *  Record type containing pointers to all of the other data
+ *  structures containing information about a font.
+ *  A a record of this type is filled with data by the
+ *  parseFile function.
+ */
+typedef struct
+{ 
+    AFM_GlobalFontInfo *gfi;   /* ptr to a AFM_GlobalFontInfo record */
+    int *cwi;                  /* ptr to 256 element array of just char widths */ 
+    int numOfChars;            /* number of entries in char metrics array */
+    AFM_CharMetricInfo *cmi;   /* ptr to char metrics array */
+    int numOfTracks;           /* number to entries in track kerning array */
+    AFM_TrackKernData *tkd;            /* ptr to track kerning array */
+    int numOfPairs;            /* number to entries in pair kerning array */
+    AFM_PairKernData *pkd;             /* ptr to pair kerning array */
+    int numOfComps;            /* number to entries in comp char array */
+    AFM_CompCharData *ccd;             /* ptr to comp char array */
+} AFM_Font_info;
+
+
+
+/************************* PROCEDURES ****************************/
+
+/*  Call this procedure to do the grunt work of parsing an AFM file.
+ *
+ *  "fp" should be a valid file pointer to an AFM file.
+ *
+ *  "fi" is a pointer to a pointer to a FontInfo record sturcture 
+ *  (defined above). Storage for the FontInfo structure will be
+ *  allocated in parseFile and the structure will be filled in
+ *  with the requested data from the AFM File.
+ *
+ *  "flags" is a mask with bits set representing what data should
+ *  be saved. Defined above are valid flags that can be used to set
+ *  the mask, as well as a few commonly used masks.
+ *
+ *  The possible return codes from parseFile are defined above.
+ */
+
+int parseFile (FILE *fp, AFM_Font_info **fi, FLAGS flags);
+void parseFileFree (AFM_Font_info *fi);
index 336b51056ea6d0817c01f4d9a7c00de57f16a22a..726f3c7e34caedbbd8d37a82e4e85bba89cef49a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index ec98926d7eca3137080b023dfe33eef59243ab2b..318b5b1437e92e21367da5568069851b530cbbd2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d4f652cb9e9de0984b69806ab4fc4b12b9f96353..1661bff73c7fa028e04ea98969407b467cb0d7df 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e0ca9834d1ce318b86aa719e9f3ae3db170efe96..1058d784c4da0b001d8ad2a9414064ecd0a1ee97 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -13,7 +13,7 @@
 
 #include "compare.hh"
 #include "arithmetic-operator.hh"
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "string.hh"
 
 /**
index d2667110a9b00e6bbdcc98c395613c7854bb60dd..73131dd7d3a0a510e62b8cb7492ba7d811313b28 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 88905d62c967d90564b1d4a833d0ad3bc0556cd2..4fecbd16e2ad1bb0ac85cc582edbe478cc1a65d7 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index aa61b9c4dea22c7614f98e838adfc03ee8d1384b..a96b81b234a3232ac7d0476b9cee2168a5d0606d 100644 (file)
@@ -8,7 +8,7 @@
 #define STRING_CONVERT_HH
 
 #include <stdarg.h>
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "string.hh"
 
 
index 6b08fa034f477a6a7b0b882d6b97824249590129..38670869cdf34b04d1dc896bb1422cf0294f9532 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a63895849e9b7587057333b26cae927571d68f56..f15434331a19158cdb57ab1db7a5e2e0c06e54b0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of Flower lib
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef STRINGDATA_INL
index 952a62778daa765e332ab8dec0778b00ff3e5a32..90f128a7362c26fbe9e79d2e1d269df14b148bb4 100644 (file)
@@ -3,13 +3,14 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef STRINGHANDLE_HH
 #define STRINGHANDLE_HH
-#include "fproto.hh"
+
+#include "flower-proto.hh"
 
 
 /**
index 0ae10ed56814234ff0eec418e31bfa1278a12f03..b2404b9ed598d7e0c7221c6ed5d2f8cd9e086d7c 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of Flower lib
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef STRINGHANDLE_INL
index 16f6a81f049d219e2bd386d2d948f2e4588bfad0..a64cce3014e11204e85f3143e0820f9acb2c4590 100644 (file)
 
 
 #include "arithmetic-operator.hh"
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "string-handle.hh"
-class ostream;
-/* Libg++ also has a String class.  Programming errors can lead to
-  confusion about which String is in use.  Uncomment the following if you have 
-  unexplained crashes after mucking with String
-  */
 
-//  #define String FlowerString
+class ostream;
 
 /** 
  
index da95d373e60f74be42cf9853b0cb4a7dd207a949..829f31f6bbbb41be53cb6bea04cbd04b73bee021 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 03605d4135b171bf1eb82d4c95142931b82ac86f..f703f4b398c6540bcc916e8f4c28a0e0f8f049a6 100644 (file)
@@ -3,13 +3,14 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef VIRTUAL_METHODS_HH
 #define VIRTUAL_METHODS_HH
 
+ #include <typeinfo>
 #include "stdlib.h"            // size_t
 
 #define classname(class_ptr)   demangle_classname(typeid(*(class_ptr)))
index 6734a49bff81cff2a28997d086ea31650f1e3d39..d605cd501c8c174901e143522518396a3b26c031 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
index 90c4a1fb32bf92aec43554da5ee0c32c10f95a96..ffcf4782b52d5726f3684d8b434f0b61a1253f5b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 494850a455d595e9bf863e381a6121679217f7c3..7fa57c2ff5a36e3402ad31c0c80b1e32955982f7 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the flowerlib
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
index 90f70b73a66829e0fa0fb0e718d43dac1a4d34de..ed2598da61d8043c13917baaea47a3c428166883 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <math.h>
 
@@ -48,6 +48,23 @@ complex_multiply (Offset z1, Offset z2)
 }
 
 
+Offset
+complex_conjugate (Offset o)
+{
+  o[Y_AXIS] = - o[Y_AXIS];
+  return o;
+}
+
+Offset
+complex_divide (Offset z1, Offset z2)
+{
+  z2 = complex_conjugate (z2);
+  Offset z = complex_multiply (z1, z2);
+  z *= 1/z2.length ();
+  return z;
+}
+
+
 
 Offset
 complex_exp (Offset o)
diff --git a/flower/parse-afm.cc b/flower/parse-afm.cc
new file mode 100644 (file)
index 0000000..8a32e30
--- /dev/null
@@ -0,0 +1,1294 @@
+/* Our mods:
+
+1. FontInfo has become AFM_AFM_Font_info to avoid namespace collisions.
+2. Version is a linetoken because Bitstream Charter has a space in the version.
+3. Added some necessary #include headers.
+4. Added AFM_ prefixes to error codes.
+5. Made it recognize both '\n' and '\r' as line terminators. Sheesh!
+6. Stopped buffer overflows in token and linetoken.
+
+Raph Levien <raph@acm.org> writing on 4 Oct 1998, updating 21 Oct 1998
+
+
+1. parseFileFree function.
+2. Leak fix in parseFile.
+
+Morten Welinder <terra@diku.dk> September 1999.
+
+*/
+
+/*
+ * (C) 1988, 1989, 1990 by Adobe Systems Incorporated. All rights reserved.
+ *
+ * This file may be freely copied and redistributed as long as:
+ *   1) This entire notice continues to be included in the file, 
+ *   2) If the file has been modified in any way, a notice of such
+ *      modification is conspicuously indicated.
+ *
+ * PostScript, Display PostScript, and Adobe are registered trademarks of
+ * Adobe Systems Incorporated.
+ * 
+ * ************************************************************************
+ * THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT
+ * NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS
+ * INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR 
+ * LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY 
+ * KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, 
+ * AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
+ * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ * ************************************************************************
+ */
+
+/* parseAFM.c
+ * 
+ * This file is used in conjuction with the parseAFM.h header file.
+ * This file contains several procedures that are used to parse AFM
+ * files. It is intended to work with an application program that needs
+ * font metric information. The program can be used as is by making a
+ * procedure call to "parseFile" (passing in the expected parameters)
+ * and having it fill in a data structure with the data from the 
+ * AFM file, or an application developer may wish to customize this
+ * code.
+ *
+ * There is also a file, parseAFMclient.c, that is a sample application
+ * showing how to call the "parseFile" procedure and how to use the data
+ * after "parseFile" has returned.
+ *
+ * Please read the comments in parseAFM.h and parseAFMclient.c.
+ *
+ * History:
+ *     original: DSM  Thu Oct 20 17:39:59 PDT 1988
+ *  modified: DSM  Mon Jul  3 14:17:50 PDT 1989
+ *    - added 'storageProblem' return code
+ *       - fixed bug of not allocating extra byte for string duplication
+ *    - fixed typos
+ *  modified: DSM  Tue Apr  3 11:18:34 PDT 1990
+ *    - added free(ident) at end of parseFile routine
+ *  modified: DSM  Tue Jun 19 10:16:29 PDT 1990
+ *    - changed (width == 250) to (width = 250) in initializeArray
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/file.h>
+#include <math.h>
+#include <string.h>
+#include "parse-afm.hh"
+#define lineterm EOL   /* line terminating character */
+#define lineterm_alt '\r' /* alternative line terminating character */
+#define normalEOF 1    /* return code from parsing routines used only */
+                       /* in this module */
+#define Space "space"   /* used in string comparison to look for the width */
+                       /* of the space character to init the widths array */
+#define False "false"   /* used in string comparison to check the value of */
+                       /* boolean keys (e.g. IsFixedPitch)  */
+
+#define MATCH(A,B)             (strncmp((A),(B), MAX_NAME) == 0)
+
+
+
+/*************************** GLOBALS ***********************/
+
+static char *ident = NULL; /* storage buffer for keywords */
+
+
+/* "shorts" for fast case statement 
+ * The values of each of these enumerated items correspond to an entry in the
+ * table of strings defined below. Therefore, if you add a new string as 
+ * new keyword into the keyStrings table, you must also add a corresponding
+ * parseKey AND it MUST be in the same position!
+ *
+ * IMPORTANT: since the sorting algorithm is a binary search, the strings of
+ * keywords must be placed in lexicographical order, below. [Therefore, the 
+ * enumerated items are not necessarily in lexicographical order, depending 
+ * on the name chosen. BUT, they must be placed in the same position as the 
+ * corresponding key string.] The NOPE shall remain in the last position, 
+ * since it does not correspond to any key string, and it is used in the 
+ * "recognize" procedure to calculate how many possible keys there are.
+ */
+
+enum parseKey {
+  ASCENDER, CHARBBOX, CODE, COMPCHAR, CAPHEIGHT, COMMENT, 
+  DESCENDER, ENCODINGSCHEME, ENDCHARMETRICS, ENDCOMPOSITES, 
+  ENDFONTMETRICS, ENDKERNDATA, ENDKERNPAIRS, ENDTRACKKERN, 
+  FAMILYNAME, FONTBBOX, FONTNAME, FULLNAME, ISFIXEDPITCH, 
+  ITALICANGLE, KERNPAIR, KERNPAIRXAMT, LIGATURE, CHARNAME, 
+  NOTICE, COMPCHARPIECE, STARTCHARMETRICS, STARTCOMPOSITES, 
+  STARTFONTMETRICS, STARTKERNDATA, STARTKERNPAIRS, 
+  STARTTRACKKERN, TRACKKERN, UNDERLINEPOSITION, 
+  UNDERLINETHICKNESS, VERSION, XYWIDTH, XWIDTH, WEIGHT, XHEIGHT,
+  NOPE };
+
+/* keywords for the system:  
+ * This a table of all of the current strings that are vaild AFM keys.
+ * Each entry can be referenced by the appropriate parseKey value (an
+ * enumerated data type defined above). If you add a new keyword here, 
+ * a corresponding parseKey MUST be added to the enumerated data type
+ * defined above, AND it MUST be added in the same position as the 
+ * string is in this table.
+ *
+ * IMPORTANT: since the sorting algorithm is a binary search, the keywords
+ * must be placed in lexicographical order. And, NULL should remain at the
+ * end.
+ */
+
+static char *keyStrings[] = {
+  "Ascender", "B", "C", "CC", "CapHeight", "Comment",
+  "Descender", "EncodingScheme", "EndCharMetrics", "EndComposites", 
+  "EndFontMetrics", "EndKernData", "EndKernPairs", "EndTrackKern", 
+  "FamilyName", "FontBBox", "FontName", "FullName", "IsFixedPitch", 
+  "ItalicAngle", "KP", "KPX", "L", "N", 
+  "Notice", "PCC", "StartCharMetrics", "StartComposites", 
+  "StartFontMetrics", "StartKernData", "StartKernPairs", 
+  "StartTrackKern", "TrackKern", "UnderlinePosition", 
+  "UnderlineThickness", "Version", "W", "WX", "Weight", "XHeight",
+  NULL };
+  
+/*************************** PARSING ROUTINES **************/ 
+  
+/*************************** token *************************/
+
+/*  A "AFM File Conventions" tokenizer. That means that it will
+ *  return the next token delimited by white space.  See also
+ *  the `linetoken' routine, which does a similar thing but 
+ *  reads all tokens until the next end-of-line.
+ */
+static char *token(FILE *stream)
+{
+    int ch, idx;
+
+    /* skip over white space */
+    while ((ch = fgetc(stream)) == ' ' || ch == lineterm ||
+           ch == lineterm_alt ||
+            ch == ',' || ch == '\t' || ch == ';');
+    
+    idx = 0;
+    while (idx < MAX_NAME - 1 &&
+          ch != EOF && ch != ' ' && ch != lineterm && ch != lineterm_alt
+           && ch != '\t' && ch != ':' && ch != ';') 
+    {
+        ident[idx++] = ch;
+        ch = fgetc(stream);
+    } /* while */
+
+    if (ch == EOF && idx < 1) return ((char *)NULL);
+    if (idx >= 1 && ch != ':' ) ungetc(ch, stream);
+    if (idx < 1 ) ident[idx++] = ch;   /* single-character token */
+    ident[idx] = 0;
+    
+    return(ident);     /* returns pointer to the token */
+
+} /* token */
+
+
+/*************************** linetoken *************************/
+
+/*  "linetoken" will get read all tokens until the EOL character from
+ *  the given stream.  This is used to get any arguments that can be
+ *  more than one word (like Comment lines and FullName).
+ */
+
+static char *linetoken(FILE *stream)
+{
+    int ch, idx;
+
+    while ((ch = fgetc(stream)) == ' ' || ch == '\t' ); 
+    
+    idx = 0;
+    while (idx < MAX_NAME - 1 &&
+          ch != EOF && ch != lineterm && ch != lineterm_alt) 
+    {
+        ident[idx++] = ch;
+        ch = fgetc(stream);
+    } /* while */
+    
+    ungetc(ch, stream);
+    ident[idx] = 0;
+
+    return(ident);     /* returns pointer to the token */
+
+} /* linetoken */
+
+
+/*************************** recognize *************************/
+
+/*  This function tries to match a string to a known list of
+ *  valid AFM entries (check the keyStrings array above). 
+ *  "ident" contains everything from white space through the
+ *  next space, tab, or ":" character.
+ *
+ *  The algorithm is a standard Knuth binary search.
+ */
+
+static enum parseKey recognize(  register char *ident)
+{
+    int lower = 0, upper = (int) NOPE, midpoint, cmpvalue;
+    BOOL found = FALSE;
+
+    while ((upper >= lower) && !found)
+    {
+        midpoint = (lower + upper)/2;
+        if (keyStrings[midpoint] == NULL) break;
+        cmpvalue = strncmp(ident, keyStrings[midpoint], MAX_NAME);
+        if (cmpvalue == 0) found = TRUE;
+        else if (cmpvalue < 0) upper = midpoint - 1;
+        else lower = midpoint + 1;
+    } /* while */
+
+    if (found) return (enum parseKey) midpoint;
+    else return NOPE;
+    
+} /* recognize */
+
+
+/************************* parseGlobals *****************************/
+
+/*  This function is called by "parseFile". It will parse the AFM File
+ *  up to the "StartCharMetrics" keyword, which essentially marks the
+ *  end of the Global Font Information and the beginning of the character
+ *  metrics information. 
+ *
+ *  If the caller of "parseFile" specified that it wanted the Global
+ *  Font Information (as defined by the "AFM File Specification"
+ *  document), then that information will be stored in the returned 
+ *  data structure.
+ *
+ *  Any Global Font Information entries that are not found in a 
+ *  given file, will have the usual default initialization value
+ *  for its type (i.e. entries of type int will be 0, etc).
+ *
+ *  This function returns an error code specifying whether there was 
+ *  a premature EOF or a parsing error. This return value is used by 
+ *  parseFile to determine if there is more file to parse.
+ */
+static BOOL parseGlobals(FILE *fp, register AFM_GlobalFontInfo *gfi)
+{  
+    BOOL cont = TRUE, save = (gfi != NULL);
+    int error = AFM_ok;
+    register char *keyword;
+    
+    while (cont)
+    {
+        keyword = token(fp);
+        
+        if (keyword == NULL)
+          /* Have reached an early and unexpected EOF. */
+          /* Set flag and stop parsing */
+        {
+            error = AFM_earlyEOF;
+            break;   /* get out of loop */
+        }
+        if (!save)     
+          /* get tokens until the end of the Global Font info section */
+          /* without saving any of the data */
+            switch (recognize(keyword))  
+            {                          
+                case STARTCHARMETRICS:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:   
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                default:
+                    break;
+            } /* switch */
+        else
+          /* otherwise parse entire global font info section, */
+          /* saving the data */
+            switch(recognize(keyword))
+            {
+                case STARTFONTMETRICS:
+                    keyword = token(fp);
+                    gfi->afmVersion = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->afmVersion, keyword);
+                    break;
+                case COMMENT:
+                    keyword = linetoken(fp);
+                    break;
+                case FONTNAME:
+                    keyword = token(fp);
+                    gfi->fontName = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->fontName, keyword);
+                    break;
+                case ENCODINGSCHEME:
+                    keyword = token(fp);
+                    gfi->encodingScheme = (char *) 
+                       malloc(strlen(keyword) + 1);
+                    strcpy(gfi->encodingScheme, keyword);
+                    break; 
+                case FULLNAME:
+                    keyword = linetoken(fp);
+                    gfi->fullName = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->fullName, keyword);
+                    break; 
+                case FAMILYNAME:           
+                   keyword = linetoken(fp);
+                    gfi->familyName = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->familyName, keyword);
+                    break; 
+                case WEIGHT:
+                    keyword = token(fp);
+                    gfi->weight = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->weight, keyword);
+                    break;
+                case ITALICANGLE:
+                    keyword = token(fp);
+                    gfi->italicAngle = atof(keyword);
+                    if (errno == ERANGE) error = AFM_parseError;
+                    break;
+                case ISFIXEDPITCH:
+                    keyword = token(fp);
+                    if (MATCH(keyword, False))
+                        gfi->isFixedPitch = 0;
+                    else 
+                        gfi->isFixedPitch = 1;
+                    break; 
+                   case UNDERLINEPOSITION:
+                    keyword = token(fp);
+                       gfi->underlinePosition = atoi(keyword);
+                    break; 
+                case UNDERLINETHICKNESS:
+                    keyword = token(fp);
+                    gfi->underlineThickness = atoi(keyword);
+                    break;
+                case VERSION:
+                    keyword = linetoken(fp);
+                    gfi->version = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->version, keyword);
+                    break; 
+                case NOTICE:
+                    keyword = linetoken(fp);
+                    gfi->notice = (char *) malloc(strlen(keyword) + 1);
+                    strcpy(gfi->notice, keyword);
+                    break; 
+                case FONTBBOX:
+                    keyword = token(fp);
+                    gfi->fontBBox.llx = atoi(keyword);
+                    keyword = token(fp);
+                    gfi->fontBBox.lly = atoi(keyword);
+                    keyword = token(fp);
+                    gfi->fontBBox.urx = atoi(keyword);
+                    keyword = token(fp);
+                    gfi->fontBBox.ury = atoi(keyword);
+                    break;
+                case CAPHEIGHT:
+                    keyword = token(fp);
+                    gfi->capHeight = atoi(keyword);
+                    break;
+                case XHEIGHT:
+                    keyword = token(fp);
+                    gfi->xHeight = atoi(keyword);
+                    break;
+                case DESCENDER:
+                    keyword = token(fp);
+                    gfi->descender = atoi(keyword);
+                    break;
+                case ASCENDER:
+                    keyword = token(fp);
+                    gfi->ascender = atoi(keyword);
+                    break;
+                case STARTCHARMETRICS:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                case NOPE:
+                default:
+                    error = AFM_parseError;
+                    break;
+            } /* switch */
+    } /* while */
+    
+    return(error);
+    
+} /* parseGlobals */    
+
+
+
+/************************* initializeArray ************************/
+
+/*  Unmapped character codes are (at Adobe Systems) assigned the
+ *  width of the space character (if one exists) else they get the
+ *  value of 250 ems. This function initializes all entries in the
+ *  char widths array to have this value. Then any mapped character 
+ *  codes will be replaced with the width of the appropriate character 
+ *  when parsing the character metric section.
+ *  This function parses the Character Metrics Section looking
+ *  for a space character (by comparing character names). If found,
+ *  the width of the space character will be used to initialize the
+ *  values in the array of character widths. 
+ *
+ *  Before returning, the position of the read/write pointer of the
+ *  file is reset to be where it was upon entering this function.
+ */
+static int initializeArray(FILE *fp, register int *cwi)
+{  
+    BOOL cont = TRUE, found = FALSE;
+    long opos = ftell(fp);
+    int code = 0, width = 0, i = 0, error = 0;
+    register char *keyword;
+  
+    while (cont)
+    {
+        keyword = token(fp);
+        if (keyword == NULL)
+        {
+            error = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        switch(recognize(keyword))
+        {
+            case COMMENT:
+                keyword = linetoken(fp);
+                break;
+            case CODE:
+                code = atoi(token(fp));
+                break;
+            case XWIDTH:
+                width = atoi(token(fp));
+                break;
+            case CHARNAME: 
+                keyword = token(fp);
+                if (MATCH(keyword, Space))
+                {    
+                    cont = FALSE;
+                    found = TRUE;
+                } 
+                break;            
+            case ENDCHARMETRICS:
+                cont = FALSE;
+                break; 
+            case ENDFONTMETRICS:
+                cont = FALSE;
+                error = normalEOF;
+                break;
+            case NOPE:
+            default: 
+                error = AFM_parseError;
+                break;
+        } /* switch */
+    } /* while */
+    
+    if (!found)
+        width = 250;
+    
+    for (i = 0; i < 256; ++i)
+        cwi[i] = width;
+    
+    fseek(fp, opos, 0);
+    
+    return(error);
+        
+} /* initializeArray */    
+
+
+/************************* parseCharWidths **************************/
+
+/*  This function is called by "parseFile". It will parse the AFM File
+ *  up to the "EndCharMetrics" keyword. It will save the character 
+ *  width info (as opposed to all of the character metric information)
+ *  if requested by the caller of parseFile. Otherwise, it will just
+ *  parse through the section without saving any information.
+ *
+ *  If data is to be saved, parseCharWidths is passed in a pointer 
+ *  to an array of widths that has already been initialized by the
+ *  standard value for unmapped character codes. This function parses
+ *  the Character Metrics section only storing the width information
+ *  for the encoded characters into the array using the character code
+ *  as the index into that array.
+ *
+ *  This function returns an error code specifying whether there was 
+ *  a premature EOF or a parsing error. This return value is used by 
+ *  parseFile to determine if there is more file to parse.
+ */
+static int parseCharWidths(FILE *fp, register int *cwi)
+{  
+    BOOL cont = TRUE, save = (cwi != NULL);
+    int pos = 0, error = AFM_ok;
+    register char *keyword;
+    
+    while (cont)
+    {
+        keyword = token(fp);
+          /* Have reached an early and unexpected EOF. */
+          /* Set flag and stop parsing */
+        if (keyword == NULL)
+        {
+            error = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        if (!save)     
+          /* get tokens until the end of the Char Metrics section without */
+          /* saving any of the data*/
+            switch (recognize(keyword))  
+            {                          
+                case ENDCHARMETRICS:
+                    cont = FALSE;
+                    break; 
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                default: 
+                    break;
+            } /* switch */
+        else
+          /* otherwise parse entire char metrics section, saving */
+          /* only the char x-width info */
+            switch(recognize(keyword))
+            {
+                case COMMENT:
+                    keyword = linetoken(fp);
+                    break;
+                case CODE:
+                    keyword = token(fp);
+                    pos = atoi(keyword);
+                    break;
+                case XYWIDTH:
+                /* PROBLEM: Should be no Y-WIDTH when doing "quick & dirty" */
+                    keyword = token(fp); keyword = token(fp); /* eat values */
+                    error = AFM_parseError;
+                    break;
+                case XWIDTH:
+                    keyword = token(fp);
+                    if (pos >= 0) /* ignore unmapped chars */
+                        cwi[pos] = atoi(keyword);
+                    break;
+                case ENDCHARMETRICS:
+                    cont = FALSE;
+                    break; 
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                case CHARNAME: /* eat values (so doesn't cause AFM_parseError) */
+                    keyword = token(fp); 
+                    break;
+               case CHARBBOX: 
+                    keyword = token(fp); keyword = token(fp);
+                    keyword = token(fp); keyword = token(fp);
+                   break;
+               case LIGATURE:
+                    keyword = token(fp); keyword = token(fp);
+                   break;
+                case NOPE:
+                default: 
+                    error = AFM_parseError;
+                    break;
+            } /* switch */
+    } /* while */
+    
+    return(error);
+    
+} /* parseCharWidths */    
+
+
+/************************* parseCharMetrics ************************/
+
+/*  This function is called by parseFile if the caller of parseFile
+ *  requested that all character metric information be saved
+ *  (as opposed to only the character width information).
+ *
+ *  parseCharMetrics is passed in a pointer to an array of records
+ *  to hold information on a per character basis. This function
+ *  parses the Character Metrics section storing all character
+ *  metric information for the ALL characters (mapped and unmapped) 
+ *  into the array.
+ *
+ *  This function returns an error code specifying whether there was 
+ *  a premature EOF or a parsing error. This return value is used by 
+ *  parseFile to determine if there is more file to parse.
+ */
+static int parseCharMetrics(FILE *fp, register AFM_Font_info *fi)
+{  
+    BOOL cont = TRUE, firstTime = TRUE;
+    int error = AFM_ok, count = 0;
+    register AFM_CharMetricInfo *temp = fi->cmi;
+    register char *keyword;
+  
+    while (cont)
+    {
+        keyword = token(fp);
+        if (keyword == NULL)
+        {
+            error = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        switch(recognize(keyword))
+        {
+            case COMMENT:
+                keyword = linetoken(fp);
+                break; 
+            case CODE:
+                if (count < fi->numOfChars)
+                { 
+                    if (firstTime) firstTime = FALSE;
+                    else temp++;
+                    temp->code = atoi(token(fp));
+                    count++;
+                }
+                else
+                {
+                    error = AFM_parseError;
+                    cont = FALSE;
+                }
+                break;
+            case XYWIDTH:
+                temp->wx = atoi(token(fp));
+                temp->wy = atoi(token(fp));
+                break;                 
+            case XWIDTH: 
+                temp->wx = atoi(token(fp));
+                break;
+            case CHARNAME: 
+                keyword = token(fp);
+                temp->name = (char *) malloc(strlen(keyword) + 1);
+                strcpy(temp->name, keyword);
+                break;            
+            case CHARBBOX: 
+                temp->charBBox.llx = atoi(token(fp));
+                temp->charBBox.lly = atoi(token(fp));
+                temp->charBBox.urx = atoi(token(fp));
+                temp->charBBox.ury = atoi(token(fp));
+                break;
+            case LIGATURE: {
+                Ligature **tail = &(temp->ligs);
+                Ligature *node = *tail;
+                
+                if (*tail != NULL)
+                {
+                    while (node->next != NULL)
+                        node = node->next;
+                    tail = &(node->next); 
+                }
+                
+                *tail = (Ligature *) calloc(1, sizeof(Ligature));
+                keyword = token(fp);
+                (*tail)->succ = (char *) malloc(strlen(keyword) + 1);
+                strcpy((*tail)->succ, keyword);
+                keyword = token(fp);
+                (*tail)->lig = (char *) malloc(strlen(keyword) + 1);
+                strcpy((*tail)->lig, keyword);
+                break; }
+            case ENDCHARMETRICS:
+                cont = FALSE;;
+                break; 
+            case ENDFONTMETRICS: 
+                cont = FALSE;
+                error = normalEOF;
+                break; 
+            case NOPE:
+            default:
+                error = AFM_parseError; 
+                break; 
+        } /* switch */
+    } /* while */
+    
+    if ((error == AFM_ok) && (count != fi->numOfChars))
+        error = AFM_parseError;
+    
+    return(error);
+    
+} /* parseCharMetrics */    
+
+
+
+/************************* parseAFM_TrackKernData ***********************/
+
+/*  This function is called by "parseFile". It will parse the AFM File 
+ *  up to the "EndTrackKern" or "EndKernData" keywords. It will save the
+ *  track kerning data if requested by the caller of parseFile.
+ *
+ *  parseAFM_TrackKernData is passed in a pointer to the FontInfo record.
+ *  If data is to be saved, the FontInfo record will already contain 
+ *  a valid pointer to storage for the track kerning data.
+ *
+ *  This function returns an error code specifying whether there was 
+ *  a premature EOF or a parsing error. This return value is used by 
+ *  parseFile to determine if there is more file to parse.
+ */
+static int parseAFM_TrackKernData(FILE *fp, register AFM_Font_info *fi)
+{  
+    BOOL cont = TRUE, save = (fi->tkd != NULL);
+    int pos = 0, error = AFM_ok, tcount = 0;
+    register char *keyword;
+  
+    while (cont)
+    {
+        keyword = token(fp);
+        
+        if (keyword == NULL)
+        {
+            error = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        if (!save)
+          /* get tokens until the end of the Track Kerning Data */
+          /* section without saving any of the data */
+            switch(recognize(keyword))
+            {
+                case ENDTRACKKERN:
+                case ENDKERNDATA:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                default:
+                    break;
+            } /* switch */
+       else
+          /* otherwise parse entire Track Kerning Data section, */
+          /* saving the data */
+            switch(recognize(keyword))
+            {
+                case COMMENT:
+                    keyword = linetoken(fp);
+                    break;
+                case TRACKKERN:
+                    if (tcount < fi->numOfTracks)
+                    {
+                        keyword = token(fp);
+                        fi->tkd[pos].degree = atoi(keyword);
+                        keyword = token(fp);
+                        fi->tkd[pos].minPtSize = atof(keyword);
+                        if (errno == ERANGE) error = AFM_parseError;
+                        keyword = token(fp);
+                        fi->tkd[pos].minKernAmt = atof(keyword);
+                        if (errno == ERANGE) error = AFM_parseError;
+                        keyword = token(fp);
+                        fi->tkd[pos].maxPtSize = atof(keyword);
+                        if (errno == ERANGE) error = AFM_parseError;
+                        keyword = token(fp);
+                        fi->tkd[pos++].maxKernAmt = atof(keyword);
+                        if (errno == ERANGE) error = AFM_parseError;
+                        tcount++;
+                    }
+                    else
+                    {
+                        error = AFM_parseError;
+                        cont = FALSE;
+                    }
+                    break;
+                case ENDTRACKKERN:
+                case ENDKERNDATA:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                case NOPE:
+                default:
+                    error = AFM_parseError;
+                    break;
+            } /* switch */
+    } /* while */
+    
+    if (error == AFM_ok && tcount != fi->numOfTracks)
+        error = AFM_parseError;
+        
+    return(error);
+    
+} /* parseAFM_TrackKernData */    
+
+
+/************************* parseAFM_PairKernData ************************/
+
+/*  This function is called by "parseFile". It will parse the AFM File 
+ *  up to the "EndKernPairs" or "EndKernData" keywords. It will save
+ *  the pair kerning data if requested by the caller of parseFile.
+ *
+ *  parseAFM_PairKernData is passed in a pointer to the FontInfo record.
+ *  If data is to be saved, the FontInfo record will already contain 
+ *  a valid pointer to storage for the pair kerning data.
+ *
+ *  This function returns an error code specifying whether there was 
+ *  a premature EOF or a parsing error. This return value is used by 
+ *  parseFile to determine if there is more file to parse.
+ */
+static int parseAFM_PairKernData(FILE *fp, register AFM_Font_info *fi)
+{  
+    BOOL cont = TRUE, save = (fi->pkd != NULL);
+    int pos = 0, error = AFM_ok, pcount = 0;
+    register char *keyword;
+  
+    while (cont)
+    {
+        keyword = token(fp);
+        
+        if (keyword == NULL)
+        {
+            error = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        if (!save)
+          /* get tokens until the end of the Pair Kerning Data */
+          /* section without saving any of the data */
+            switch(recognize(keyword))
+            {
+                case ENDKERNPAIRS:
+                case ENDKERNDATA:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                default:
+                    break;
+            } /* switch */
+       else
+          /* otherwise parse entire Pair Kerning Data section, */
+          /* saving the data */
+            switch(recognize(keyword))
+            {
+                case COMMENT:
+                    keyword = linetoken(fp);
+                    break;
+                case KERNPAIR:
+                    if (pcount < fi->numOfPairs)
+                    {
+                        keyword = token(fp);
+                        fi->pkd[pos].name1 = (char *) 
+                            malloc(strlen(keyword) + 1);
+                        strcpy(fi->pkd[pos].name1, keyword);
+                        keyword = token(fp);
+                        fi->pkd[pos].name2 = (char *) 
+                            malloc(strlen(keyword) + 1);
+                        strcpy(fi->pkd[pos].name2, keyword);
+                        keyword = token(fp);
+                        fi->pkd[pos].xamt = atoi(keyword);
+                        keyword = token(fp);
+                        fi->pkd[pos++].yamt = atoi(keyword);
+                        pcount++;
+                    }
+                    else
+                    {
+                        error = AFM_parseError;
+                        cont = FALSE;
+                    }
+                    break;
+                case KERNPAIRXAMT:
+                    if (pcount < fi->numOfPairs)
+                    {
+                        keyword = token(fp);
+                        fi->pkd[pos].name1 = (char *) 
+                            malloc(strlen(keyword) + 1);
+                        strcpy(fi->pkd[pos].name1, keyword);
+                        keyword = token(fp);
+                        fi->pkd[pos].name2 = (char *) 
+                            malloc(strlen(keyword) + 1);
+                        strcpy(fi->pkd[pos].name2, keyword);
+                        keyword = token(fp);
+                        fi->pkd[pos++].xamt = atoi(keyword);
+                        pcount++;
+                    }
+                    else
+                    {
+                        error = AFM_parseError;
+                        cont = FALSE;
+                    }
+                    break;
+                case ENDKERNPAIRS:
+                case ENDKERNDATA:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                case NOPE:
+                default:
+                    error = AFM_parseError;
+                    break;
+            } /* switch */
+    } /* while */
+    
+    if (error == AFM_ok && pcount != fi->numOfPairs)
+        error = AFM_parseError;
+        
+    return(error);
+    
+} /* parseAFM_PairKernData */    
+
+
+/************************* parseAFM_CompCharData **************************/
+
+/*  This function is called by "parseFile". It will parse the AFM File 
+ *  up to the "EndComposites" keyword. It will save the composite 
+ *  character data if requested by the caller of parseFile.
+ *
+ *  parseAFM_CompCharData is passed in a pointer to the FontInfo record, and 
+ *  a boolean representing if the data should be saved.
+ *
+ *  This function will create the appropriate amount of storage for
+ *  the composite character data and store a pointer to the storage
+ *  in the FontInfo record.
+ *
+ *  This function returns an error code specifying whether there was 
+ *  a premature EOF or a parsing error. This return value is used by 
+ *  parseFile to determine if there is more file to parse.
+ */
+static int parseAFM_CompCharData(FILE *fp, register AFM_Font_info *fi)
+{  
+    BOOL cont = TRUE, firstTime = TRUE, save = (fi->ccd != NULL);
+    int pos = 0, j = 0, error = AFM_ok, ccount = 0, pcount = 0;
+    register char *keyword;
+  
+    while (cont)
+    {
+        keyword = token(fp);
+        if (keyword == NULL)
+          /* Have reached an early and unexpected EOF. */
+          /* Set flag and stop parsing */
+        {
+            error = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        if (ccount > fi->numOfComps)
+        {
+            error = AFM_parseError;
+            break; /* get out of loop */
+        }
+        if (!save)
+          /* get tokens until the end of the Composite Character info */
+          /* section without saving any of the data */
+            switch(recognize(keyword))
+            {
+                case ENDCOMPOSITES:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                default:
+                    break;
+            } /* switch */
+       else
+          /* otherwise parse entire Composite Character info section, */
+          /* saving the data */
+            switch(recognize(keyword))
+            {
+                case COMMENT:
+                    keyword = linetoken(fp);
+                    break;
+                case COMPCHAR:
+                    if (ccount < fi->numOfComps)
+                    {
+                        keyword = token(fp);
+                        if (pcount != fi->ccd[pos].numOfPieces)
+                            error = AFM_parseError;
+                        pcount = 0;
+                        if (firstTime) firstTime = FALSE;
+                        else pos++;
+                        fi->ccd[pos].ccName = (char *) 
+                            malloc(strlen(keyword) + 1);
+                        strcpy(fi->ccd[pos].ccName, keyword);
+                        keyword = token(fp);
+                        fi->ccd[pos].numOfPieces = atoi(keyword);
+                        fi->ccd[pos].pieces = (AFM_Pcc *)
+                            calloc(fi->ccd[pos].numOfPieces, sizeof(AFM_Pcc));
+                        j = 0;
+                        ccount++;
+                    }
+                    else
+                    {
+                        error = AFM_parseError;
+                        cont = FALSE;
+                    }
+                    break;
+                case COMPCHARPIECE:
+                    if (pcount < fi->ccd[pos].numOfPieces)
+                    {
+                        keyword = token(fp);
+                        fi->ccd[pos].pieces[j].AFM_PccName = (char *) 
+                                malloc(strlen(keyword) + 1);
+                        strcpy(fi->ccd[pos].pieces[j].AFM_PccName, keyword);
+                        keyword = token(fp);
+                        fi->ccd[pos].pieces[j].deltax = atoi(keyword);
+                        keyword = token(fp);
+                        fi->ccd[pos].pieces[j++].deltay = atoi(keyword);
+                        pcount++;
+                    }
+                    else
+                        error = AFM_parseError;
+                    break;
+                case ENDCOMPOSITES:
+                    cont = FALSE;
+                    break;
+                case ENDFONTMETRICS:
+                    cont = FALSE;
+                    error = normalEOF;
+                    break;
+                case NOPE:
+                default:
+                    error = AFM_parseError;
+                    break;
+            } /* switch */
+    } /* while */
+    
+    if (error == AFM_ok && ccount != fi->numOfComps)
+        error = AFM_parseError;
+    
+    return(error);
+    
+} /* parseAFM_CompCharData */    
+
+
+
+
+/*************************** 'PUBLIC' FUNCTION ********************/ 
+
+
+/*************************** parseFile *****************************/
+
+/*  parseFile is the only 'public' procedure available. It is called 
+ *  from an application wishing to get information from an AFM file.
+ *  The caller of this function is responsible for locating and opening
+ *  an AFM file and handling all errors associated with that task.
+ *
+ *  parseFile expects 3 parameters: a vaild file pointer, a pointer
+ *  to a (FontInfo *) variable (for which storage will be allocated and
+ *  the data requested filled in), and a mask specifying which
+ *  data from the AFM File should be saved in the FontInfo structure.
+ *
+ *  The file will be parsed and the requested data will be stored in 
+ *  a record of type FontInfo (refer to ParseAFM.h).
+ *
+ *  parseFile returns an error code as defined in parseAFM.h. 
+ *
+ *  The position of the read/write pointer associated with the file 
+ *  pointer upon return of this function is undefined.
+ */
+
+extern int parseFile (FILE *fp, AFM_Font_info **fi, int flags)
+{
+    
+    int code = AFM_ok;         /* return code from each of the parsing routines */
+    int error = AFM_ok;        /* used as the return code from this function */
+    
+    register char *keyword; /* used to store a token */         
+    
+                             
+    /* storage data for the global variable ident */                         
+    if (!ident)
+        ident = (char *) calloc(MAX_NAME, sizeof(char)); 
+    if (ident == NULL) {error = AFM_storageProblem; return(error);}      
+  
+    (*fi) = (AFM_Font_info *) calloc(1, sizeof(AFM_Font_info));
+    if ((*fi) == NULL) {error = AFM_storageProblem; return(error);}      
+  
+    if (flags & P_G) 
+    {
+        (*fi)->gfi = (AFM_GlobalFontInfo *) calloc(1, sizeof(AFM_GlobalFontInfo));
+        if ((*fi)->gfi == NULL) {error = AFM_storageProblem; return(error);}      
+    }
+    
+    /* The AFM File begins with Global Font Information. This section */
+    /* will be parsed whether or not information should be saved. */     
+    code = parseGlobals(fp, (*fi)->gfi); 
+    
+    if (code < 0) error = code;
+    
+    /* The Global Font Information is followed by the Character Metrics */
+    /* section. Which procedure is used to parse this section depends on */
+    /* how much information should be saved. If all of the metrics info */
+    /* is wanted, parseCharMetrics is called. If only the character widths */
+    /* is wanted, parseCharWidths is called. parseCharWidths will also */
+    /* be called in the case that no character data is to be saved, just */
+    /* to parse through the section. */
+  
+    if ((code != normalEOF) && (code != AFM_earlyEOF))
+    {
+        (*fi)->numOfChars = atoi(token(fp));
+           if (flags & (P_M ^ P_W))
+        {
+            (*fi)->cmi = (AFM_CharMetricInfo *) 
+                      calloc((*fi)->numOfChars, sizeof(AFM_CharMetricInfo));
+           if ((*fi)->cmi == NULL) {error = AFM_storageProblem; return(error);}
+            code = parseCharMetrics(fp, *fi);             
+        }
+        else
+        {
+            if (flags & P_W)
+            { 
+                (*fi)->cwi = (int *) calloc(256, sizeof(int)); 
+                if ((*fi)->cwi == NULL) 
+                {
+                       error = AFM_storageProblem; 
+                       return(error);
+                }
+            }
+            /* parse section regardless */
+            code = parseCharWidths(fp, (*fi)->cwi);
+        } /* else */
+    } /* if */
+    
+    if ((error != AFM_earlyEOF) && (code < 0)) error = code;
+    
+    /* The remaining sections of the AFM are optional. This code will */
+    /* look at the next keyword in the file to determine what section */
+    /* is next, and then allocate the appropriate amount of storage */
+    /* for the data (if the data is to be saved) and call the */
+    /* appropriate parsing routine to parse the section. */
+    
+    while ((code != normalEOF) && (code != AFM_earlyEOF))
+    {
+        keyword = token(fp);
+        if (keyword == NULL)
+          /* Have reached an early and unexpected EOF. */
+          /* Set flag and stop parsing */
+        {
+            code = AFM_earlyEOF;
+            break; /* get out of loop */
+        }
+        switch(recognize(keyword))
+        {
+            case STARTKERNDATA:
+                break;
+            case ENDKERNDATA:
+                break;
+            case STARTTRACKKERN:
+                keyword = token(fp);
+                if (flags & P_T)
+                {
+                    (*fi)->numOfTracks = atoi(keyword);
+                    (*fi)->tkd = (AFM_TrackKernData *) 
+                        calloc((*fi)->numOfTracks, sizeof(AFM_TrackKernData));
+                    if ((*fi)->tkd == NULL) 
+                    {
+                       error = AFM_storageProblem; 
+                       return(error);
+                    }
+                } /* if */
+                code = parseAFM_TrackKernData(fp, *fi);
+                break;
+            case STARTKERNPAIRS:
+                keyword = token(fp);
+                if (flags & P_P)
+                {
+                    (*fi)->numOfPairs = atoi(keyword);
+                    (*fi)->pkd = (AFM_PairKernData *) 
+                        calloc((*fi)->numOfPairs, sizeof(AFM_PairKernData));
+                    if ((*fi)->pkd == NULL) 
+                    {
+                       error = AFM_storageProblem; 
+                       return(error);
+                    }
+                } /* if */
+                code = parseAFM_PairKernData(fp, *fi);
+                break;
+            case STARTCOMPOSITES:
+                keyword = token(fp);
+                if (flags & P_C)
+                { 
+                    (*fi)->numOfComps = atoi(keyword);
+                    (*fi)->ccd = (AFM_CompCharData *) 
+                        calloc((*fi)->numOfComps, sizeof(AFM_CompCharData));
+                    if ((*fi)->ccd == NULL) 
+                    {
+                       error = AFM_storageProblem; 
+                       return(error);
+                    }
+                } /* if */
+                code = parseAFM_CompCharData(fp, *fi); 
+                break;    
+            case ENDFONTMETRICS:
+                code = normalEOF;
+                break;
+            case NOPE:
+            default:
+                code = AFM_parseError;
+                break;
+        } /* switch */
+        
+        if ((error != AFM_earlyEOF) && (code < 0)) error = code;
+        
+    } /* while */
+  
+    if ((error != AFM_earlyEOF) && (code < 0)) error = code;
+    
+    if (ident != NULL) { free(ident); ident = NULL; }
+        
+    return(error);
+  
+} /* parseFile */
+
+
+void
+parseFileFree (AFM_Font_info *fi)
+{
+     if (fi->gfi) {
+         free (fi->gfi->afmVersion);
+         free (fi->gfi->fontName);
+         free (fi->gfi->fullName);
+         free (fi->gfi->familyName);
+         free (fi->gfi->weight);
+         free (fi->gfi->version);
+         free (fi->gfi->notice);
+         free (fi->gfi->encodingScheme);
+         free (fi->gfi);
+     }
+
+     /* This contains just scalars.  */
+     free (fi->cwi);
+
+     if (fi->cmi) {
+         int i;
+         for (i = 0; i < fi->numOfChars; i++) {
+              free (fi->cmi[i].name);
+              while (fi->cmi[i].ligs) {
+                   Ligature *tmp;
+                   tmp = fi->cmi[i].ligs;
+                   free (tmp->succ);
+                   free (tmp->lig);
+                   free (tmp);
+                   fi->cmi[i].ligs = fi->cmi[i].ligs->next;
+              }
+         }
+         free (fi->cmi);
+     }
+
+     /* This contains just scalars.  */
+     free (fi->tkd);
+
+     if (fi->pkd) {
+         int i;
+         for (i = 0; i < fi->numOfPairs; i++) {
+              free (fi->pkd[i].name1);
+              free (fi->pkd[i].name2);
+         }
+         free (fi->pkd);
+     }
+
+     if (fi->ccd) {
+         int i, j;
+         for (i = 0; i < fi->numOfComps; i++) {
+              free (fi->ccd[i].ccName);
+              for (j = 0; j < fi->ccd[i].numOfPieces; j++) {
+                   free (fi->ccd[i].pieces[j].AFM_PccName);
+              }
+              free (fi->ccd[i].pieces);
+         }
+         free (fi->ccd);
+     }
+
+     free (fi);
+}
index 5a231ca6b2665aa524c2ee5603f759d734e41f74..d43cb9e2a70038a27ee615eb24d762b0e9c16ef6 100644 (file)
@@ -1,7 +1,7 @@
 /*
    poly.cc -- routines for manipulation of polynomials in one var
 
-   (c) 1993--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+   (c) 1993--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
  */
 
 #include <math.h>
index 29663fe20462e2f12400bfc5662dd35d81eace9e..a50228330b16c59bc80004b420feba9c8bc22274 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <math.h>
 #include <stdlib.h>
index 48d4889a4eaed7f1a49fd917ebf604c121b10bb8..1f3f772386d29980f42884947c07d826f5c8e00f 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
index a5d0e2169d1cb5a863a659ff6f2246218c29eb5a..b7afe955f28074958b3fe10419e2281d304a5388 100644 (file)
@@ -2,7 +2,7 @@
 
  string.cc - implement String
  
- (c)  1997--1999 Han-Wen Nienhuys & Jan Nieuwenhuizen
+ (c)  1997--2000 Han-Wen Nienhuys & Jan Nieuwenhuizen
 
  */
 
index e099162b4d5db13583295518453ed11a317054f0..a4f23ac23e3c6083f7ce2a3975d1d9960fc066e4 100644 (file)
@@ -6,7 +6,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl> */
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl> */
 
 #ifdef STRING_DEBUG 
 #define memmove mymemmove
index d9cdb871cdc416a8c667ae7611efd6fff6e317e2..ee5fe5da8e0adc76b00e0ef8b93455b84f4ab8ba 100644 (file)
@@ -1,6 +1,6 @@
 
 \score {\notes \context Voice = VA \relative c'' {
-       \grace b8 c4
+       \grace b8 c4-\fermata
        \grace { [c32 cis32] } gis4
        \grace { [cis32 dis32] } e4
        \grace { [c32 d] }\times 2/3 { [c8 c c] }
diff --git a/input/test/tuplet-2.fly b/input/test/tuplet-2.fly
new file mode 100644 (file)
index 0000000..d685671
--- /dev/null
@@ -0,0 +1,3 @@
+
+\times 2/3 { c''8 c c }
+\times 2/3 { c8 c'' c,, }
index c114b816484691368674d1b37bbfbb672aa39fd7..eb6cbbb0ba8408707d927d652e9ecbde136c52ae 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen
+  (c)  1997--2000 Jan Nieuwenhuizen
 */
 
 
index 9b514586b84764ebbb3f2923badd587b84d89da1..7fbcccad58b5e4a532642ff524c34e25c743763d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a78daa8ef394408561b85815e30a2cd09d6020b7..74ee72efe3082c3c5ce34bbac229adab3ff46463 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index ee219a169c05c00d9ed61cdbac33db3a7ca1618f..958e0b506f3cc7f68a5a58dda72c9a914eff6f50 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 540accfc4a2546468efeeff7b765fa02bb1c5c0e..7ddc87443427cc56a250b85a8e04ebdf6a218c17 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef PROTO_HH
 #define PROTO_HH
 
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "real.hh"
 struct Duration;
 struct Duration_iterator;
index 7fc21baec3da1d19ff352501d0b0677d555a2e3c..120267047c832f7b56d1c0d25e878ff78355f789 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 0bc31520c61ddcf2c84a603865fb4431398dd94d..ac48e15579b242273e80152f0f3a907927dca528 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
index cb369d2c32a3c445e374cdf7fb24427dfc44027a..e63d65ce762177dbe2b9231f0a1d1b7bdeedd54a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index f2dc0a51b376f5d0a322081c9f059e20772fc515..db7c10ee1f3772de16ae5a6e7722ff02cce0289d 100644 (file)
@@ -3,7 +3,7 @@
 
  source file of the LilyPond music typesetter
 
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <iostream.h>
 #include "proto.hh"
index 176d071bd04cbf84f4793b6d943c72438694ff15..329f21ebf0381ab7de6e36c4f2818a3f0ac57770 100644 (file)
@@ -5,7 +5,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>.
 
   Nextstep fixes by tiggr@ics.ele.tue.nl
index 3c92096be24854725ba708a4d0d48b4c153cca18..b7f94acead995dd5a0c99f3b6d364255295c1558 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <stdio.h>
index 4207c070875ac95940c0976889d73d9e85e01925..c5e5b1dd347c2596b84f7efc3529ebc4c3a5cd01 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   & Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
index e7304d1afcedfddc2a5521fd2e78eab0aa9f4a6e..f3b58745479f59d25f9f4a1f301fc30a7467da0a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 1eb882832bc70119c74851570994a32aa308be30..4f65084daac264e742590e4ffa396d7e37e9abf2 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 71a1e25ea98c9d7e8f26e44bdb5bf83c1dd3c5b7..ca162249f14cbb2bb3f3c79fc7607ef242cd55c6 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index fed4065602c52a9b984a867ae860984ce7f49d00..3ca96844617270250295fc9af6d9d73b3e5837ae 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "align-element.hh"
index 4b6e906139d10efad678b1e405e53738c6d815c9..ef266181ad1be7f44d1611af1841722faa4a9c0e 100644 (file)
@@ -36,7 +36,7 @@ All_font_metrics::find_afm (String name)
       progress_indication ("[" + path);
       Adobe_font_metric * afm_p = read_afm_file (path);
 
-      afm_p->name_str_ = name;
+      afm_p->name_ = ly_symbol2scm (name.ch_C ());
       progress_indication ("]");
 
       afm_p_dict_[sname] = afm_p->self_scm_;
@@ -80,7 +80,7 @@ All_font_metrics::find_tfm (String name)
        return 0;
       progress_indication ("[" + path);
       Tex_font_metric  * tfm_p = Tex_font_metric_reader::read_file (path);
-      tfm_p->name_str_ = name;
+      tfm_p->name_ = ly_symbol2scm (name.ch_C( ));
       progress_indication ("]");
 
       tfm_p_dict_[sname] = tfm_p->self_scm_;
@@ -139,14 +139,7 @@ All_font_metrics::font_descriptions () const
   return list;
 }
 
-Font_metric *
-unsmob_metrics( SCM s)
-{
-  if (SMOB_IS_TYPE_B(Font_metric, s))
-    return SMOB_TO_TYPE(Font_metric, s);
-  else
-    return 0;
-}
+
 
 #include "ly-smobs.icc"
 IMPLEMENT_SMOBS(Font_metric);
index 80abf80772dc91e5438704bbab0779606c18a964..eccf3b984351df7181b9ef13405cff5127a504e7 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "atom.hh"
index ff76cfc5d29f3d34175d07240724c74a113c350d..1dde79a5e98d63ed0a3105e87855046615c2b7d7 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "audio-column.hh"
index 3a4685af4cffec98115325b4aea29ea3c87252b2..39fbe8f1788d54f75ef03ff6fce5fbe136ee03ea 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "audio-element.hh"
index 6ca17ecadf3106831008614b6655a8a30e4730c3..4be88d038d5965e1485e9277222cfbe4d2c2f6ea 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "audio-element-info.hh"
index 06ccec24e921f55b4bf8dddf5a0902da880e2726..089469ba051eba78175d88ef84be2e8dd7315e61 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include "debug.hh"
 #include "audio-item.hh"
index a8d7682ce904261934e83db0d31d4efc3a1aef08..e9993dbfdfda02358ef44c718fc4a65f7b26e4e2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "audio-staff.hh"
index 081b42a22faee300ad1e5c6ac66dc0771df5fe8d..7e2cdacf13725082fc30ad0a2778448e1bdb1d83 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "axis-group-element.hh"
index 8e39362e90cd46cbc0e0c5282c759fdef59a62cb..bf22b44c614062ea0b0797019b8370231f2a3842 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 1fea0a1b3e25fbebee5221b26c905eb7e14a97ce..cfbecaa64551ebcf169542d0fe75aa07a2118dfe 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
index e267368cd08b9f1652788f586dbb5d9bbd37b2b9..7d4365fd1e86131b02be0a83fb50e8efc64250a2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
index cb5132932c2d9dd6e6413d5d4d880f49f902b650..ac12b47e5b1c9e3766c0d6a623358644047b9a8c 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "timing-engraver.hh"
index 1daf73682b395abf745300f592038973e4ba448c..6fe8f9b5254c54b3f76da16c1eba6fe0f788493c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
     Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
@@ -14,6 +14,8 @@
     * move paper vars to scm
 
 */
+
+
 #include <math.h>              // tanh.
 
 #include "directional-element-interface.hh"
@@ -22,7 +24,7 @@
 #include "beam.hh"
 #include "misc.hh"
 #include "debug.hh"
-#include "leastsquares.hh"
+#include "least-squares.hh"
 #include "stem.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
@@ -322,7 +324,8 @@ Beam::do_post_processing ()
          set_stem_length (y, dy);
        }
 
-      set_elt_property ("y-position", gh_double2scm (y));
+      // UGH. Y is not in staff position unit?
+      set_elt_property ("y-position", gh_double2scm (y)); 
     }
 }
 
@@ -344,18 +347,18 @@ Beam::calc_position_and_height (Real* y, Real* dy) const
       return;
     }
 
-  Least_squares ls;
+  Array<Offset> ideals;
   Real x0 = first_visible_stem ()->hpos_f ();
   for (int i=0; i < stem_count (); i++)
     {
       Stem* s = stem (i);
       if (s->invisible_b ())
         continue;
-      ls.input.push (Offset (s->hpos_f () - x0, 
-        s->calc_stem_info ().idealy_f_));
+      ideals.push (Offset (s->hpos_f () - x0, 
+                          s->calc_stem_info ().idealy_f_));
     }
   Real dydx;
-  ls.minimise (dydx, *y); // duh, takes references
+  minimise_least_squares (&dydx, y, ideals); // duh, takes references
 
   Real dx = last_visible_stem ()->hpos_f () - x0;
   *dy = dydx * dx;
index 318a328cb07c265c0d4d7b46a09ab7a7498f56a5..65eadb619353923fd15c4b1bf7719ff422b21c74 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -227,6 +227,19 @@ Bezier_bow::to_canonic_form ()
     {
       flipy (encompass_);
     }
+
+  while (encompass_.size () > 1 && encompass_[1][X_AXIS] <= 0.0)
+    {
+      programming_error ("Degenerate slur: infinite steepness reqd");
+      encompass_.del (1);
+    }
+
+  Real l = encompass_.top ()[X_AXIS];
+  while (encompass_.size () > 1 && encompass_.top (1)[X_AXIS] >= l)
+    {
+      programming_error ("Degenerate slur: infinite steepness reqd");
+      encompass_.del (encompass_.size ()-2);
+    }
 }
 
 
index 66a7a55245381ab1c8ae5b32e6de1581067e0db8..28634b473c683b283e95cd27d465814a62d15ab4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
index 360766706cb815d7a249afaefb32bfc0f23d3b8f..6b52a0daeecea5b5ad1e7cf8f5d2681321ee6dcb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "box.hh"
index 003a9cd3218b5416c37eded6a947fae100741bae..540c6597c83671e329f39c7aaa9bc2753c2bd1f6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "paper-column.hh"
index 60dce822e49c809c9c5b6304db8408c146449d34..c2c190fcac39aea06df12518049d91343812d7c0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
index 4fa7c519e460611ca8e108c4c7a2a0eef13c9a66..60478378a4179cbf4708e04f7bbf6bfb1f87f189 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "change-iterator.hh"
index 0eb81394f3b2c86925e0893d54891da0a2d9f605..b0144488be8f262e5bac9cb032ac689bbbe3e2cd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "change-translator.hh"
index e5e31c38f5ddaad8138b21a91a6f5226e13d9087..22377b7d63924d2a55855a769fa2e799ad10d335 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "chord-name-engraver.hh"
index f994dd34527405a7edf9bfce51da9827a01007c0..ba971322fc8650f8f39fe3a87d653589f10f3a11 100644 (file)
@@ -266,7 +266,7 @@ Chord_name::do_brew_molecule_p () const
     {
       name.inversion_mol = lookup_l ()->text ("", "/", paper_l ());
       Musical_pitch p;
-      scm_to (s, &p);
+      p = scm_to (s, &p);
       Molecule mol = pitch2molecule (p);
       name.inversion_mol.add_at_edge (X_AXIS, RIGHT, mol, 0);
     }
@@ -276,7 +276,7 @@ Chord_name::do_brew_molecule_p () const
     {
       name.bass_mol = lookup_l ()->text ("", "/", paper_l ());
       Musical_pitch p;
-      scm_to (s, &p);
+      p = scm_to (s, &p);
       Molecule mol = pitch2molecule (p);
       name.bass_mol.add_at_edge (X_AXIS, RIGHT, mol, 0);
     }
index 6e914015b1d1bab53a2e6eb66dc9aa7f082d0c87..4b6ab0e69b19488045e7674ea2d1892267c89920 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
            Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
index 152d95163e1f0ba6c7c08b149752f95370662309..4dd5889831c5503a32d09c7f7d9f1763bec90a9b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
 
   Mats Bengtsson <matsb@s3.kth.se>
 */
index 5bdcfa8111775d9d797ffaec08729d9623fea1f5..c63e38b4ecbf41dfd69abb762dd9e258e07fdffd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <ctype.h>
index 20bc947c56e0b18e1855fbcbdde689359ca36359..16d0bf30eae44a5f91955d715d662336b5783e05 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "note-column.hh"
index edf04de23d06f91e3fbf1d54ff3333177dd67523..0de6a942f84a66948e38fe427717703bb66b834e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "debug.hh"
 #include "collision.hh"
index 8c5c6186d7082e923f076188412c456494151d36..080c178ce027c32257b483e0fbae9f48aacc4f4b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "column-x-positions.hh"
index c9f75ead8515b42c0279c7bed4d474a995e408fe..6975762e3e610efb663a83e9b44624f68bb80ed6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "command-request.hh"
index ecd51f5d5b393e0a69733dfc069b597385a35ad1..ef32c1e7c964918cbc3454aceb2b8076ee4417ef 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "molecule.hh"
@@ -33,7 +33,8 @@ Crescendo::do_brew_molecule_p () const
 
   if (!isdir_b (dir) || !gh_pair_p (dyns))
     {
-      set_elt_property ("transparent", SCM_BOOL_T);
+Crescendo * me = (Crescendo*)this;
+      me->set_elt_property ("transparent", SCM_BOOL_T);
       return new Molecule;
     }
   
index 9edbf4ac6b2e0ce4b7aa89795e120732a9de977f..3638dd6c764ac0d74bc20b6ad144dc09fed16767 100644 (file)
@@ -9,12 +9,8 @@
 
 #include <fstream.h>
 #include <signal.h>
-
-// libg++ 2.8.0
-// #include <std/new.h>
 #include <stdlib.h>
 
-
 #include "debug.hh"
 #include "dstream.hh"
 #include "flower-debug.hh"
index f7757ee82039a8224bf093ec0dbfb7d4f786497a..005499624b6a1b3f0d743dec272a63ec5bc48526 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
  */
 
 #include "dimension-cache.hh"
index f4b46b1f5eae3b83b3f45b65664526a0fd32e299..aeddc311a27d733bcbf7321fcd4dce837018d932 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index ccf70320b4df75720b767ea4d1ee7fb42e3011de..88108cbea861cdd1c5da8d04a940a018d72f396f 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index b9868a29b88a27079881664c8ad58942da6d3143..61d1c771f248dc675c01dd022e75de28c8195ffe 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dots.hh"
@@ -108,6 +108,6 @@ Dot_column::do_post_processing ()
 
   for (int i=0; i  <dots.size (); pos += 2, i++)
     {
-      staff_symbol_referencer_interface (dots[i]).set_position(pos);
+      staff_symbol_referencer (dots[i]).set_position(pos);
     }
 }
index 93eda7287b7dc7b387d738707cbf1db622e80217..36e0a348441704b42a84fe3e9e0e96b31503d81d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dots.hh"
index 4d485e477facfbece487a0ca123f13c82f8b2148..7eb75b54237dbcfeb5ec26f0f0f68887dd625007 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
            Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 */
index fe27ade94b64565db4b2e980b8bb54ac47f55900..5f42b8ba80e13aea4764ba61391f5aa0dc3a5371 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "debug.hh"
 #include "crescendo.hh"
index 85038b48d2fea90d26950ad840ed5af5adf70ef5..75f16950d0aafa76185e0f72b65c1bab138ae7cb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
index 6121e82eb1a5398a97d3b3f5230e0f3bcdf2c304..9688c2b347d21c6b1c1f88b409dd4a522989f288 100644 (file)
@@ -3,7 +3,7 @@
 
   Sourcefile of GNU LilyPond musictypesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "music-list.hh"
index e542a73cfef7be6909798cb7caf474593726f48c..2d631be2704643c53fa2c78a461e1b56cd6366f7 100644 (file)
@@ -10,7 +10,6 @@
 #include <math.h>
 #include <ctype.h>
 
-
 #include "font-metric.hh"
 
 Box
@@ -72,6 +71,7 @@ Font_metric::~Font_metric ()
 Font_metric::Font_metric ()
 {
   self_scm_ = SCM_EOL;
+  name_ = SCM_EOL;
   smobify_self ();
 }
 
@@ -98,7 +98,7 @@ Scaled_font_metric::Scaled_font_metric (Font_metric* m, int s)
 SCM
 Font_metric::description () const
 {
-  return gh_cons (ly_symbol2scm (name_str_.ch_C()), gh_int2scm (0));
+  return gh_cons (name_, gh_int2scm (0));
 }
 
 
@@ -119,17 +119,25 @@ Font_metric::do_smobify_self ()
 SCM
 Font_metric::mark_smob (SCM s)
 {
-  return SCM_EOL;
+  Font_metric * m = SMOB_TO_TYPE(Font_metric, s);
+  return m->name_;
 }
 
 int
 Font_metric::print_smob (SCM s, SCM port, scm_print_state * )
 {
-  scm_puts ("#<Font_metric>", port);
-  
+  Font_metric *m = unsmob_metrics (s);
+  scm_puts ("#<Font_metric ", port);
+  scm_display (m->name_, port);
+  scm_puts (">", port);
   return 1;
 }
 
-
-
-
+Font_metric *
+unsmob_metrics( SCM s)
+{
+  if (SMOB_IS_TYPE_B(Font_metric, s))
+    return SMOB_TO_TYPE(Font_metric, s);
+  else
+    return 0;
+}
index a508197c239ebce36e13021f761ae30d4552b2ff..4993504d7bf8e0c284659714c19e533d3026f723 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "global-translator.hh"
index d81f170214b7c79f8e77696ca3804ad478b0ee8e..beb260f3f5eb1cba2658cb0a7222a4d5223d3f6f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <math.h>              // rint
 
index 67c87f0ff7d910254b7cc47e58298f426345822b..ec5e17d8a96e885e95330137e672d1e8fe1468b6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "idealspacing.hh"
index e8421fb70db9a435634d3c2fc5f5b6730dbe9cdc..8cf65fae495d116d1f72ec2e91b98438914cd6bf 100644 (file)
@@ -3,10 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
+
 #include "midi-def.hh"
 #include "paper-def.hh"
 #include "score.hh"
@@ -17,8 +18,6 @@
 #include "translator-group.hh"
 #include "notename-table.hh"
 
-
-
 Identifier::Identifier (int code)
 {
   token_code_i_ = code;
@@ -26,8 +25,6 @@ Identifier::Identifier (int code)
   init_b_ = 0;
 }
 
-
-
 Identifier::Identifier (Identifier const&s)
   : Input (s)
 {
index a001d1e403a6e8a23eda6c5ad1137a3deef6ae02..2634c1a1db50caabee4228816573911ef72c4420 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <strstream.h>
index 8c5c0ed9ca92cfc2c59be124c3e8f705d13a3a20..abc185971d9144d11ee1b6225977175acdfd06a6 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
diff --git a/lily/include/afm2.hh b/lily/include/afm2.hh
new file mode 100644 (file)
index 0000000..92a9688
--- /dev/null
@@ -0,0 +1,43 @@
+/*   
+  afm.hh -- declare Adobe_font_metric
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef AFM_HH
+#define AFM_HH
+
+#include "string.hh"
+#include "box.hh"
+#include "array.hh"
+#include "dictionary.hh"
+#include "font-metric.hh"
+
+struct Adobe_font_char_metric :  Character_metric {
+  char_metric_info_;
+  Adobe_font_char_metric (AFM_CharMetricInfo afm_inf);
+  virtual Box dimensions () const;
+};
+
+struct Adobe_font_metric : Font_metric {
+  AFM_Font_info * font_inf_;
+  Array<int> ascii_to_metric_idx_;
+  Dictionary<int> name_to_metric_dict_;
+
+  Character_metric const *get_char (int, bool) const;
+  Adobe_font_char_metric const &find_char (String name, bool warn=true) const;
+  Adobe_font_char_metric const &find_ascii (int ascii,bool warn) const;
+  String str () const;
+  Adobe_font_metric (AFM_Font_info*);
+
+};
+
+Adobe_font_metric *read_afm_file (String fn);
+
+
+
+#endif /* AFM_HH */
+
index f97b7c6162f4b6517445c977106275730eaa357d..1ba8ea1289f8ba262338b031acd0a9b06b35b3c0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index f581d65e9e1f05244f90153b717bad504aac43e4..fa6eb9097c014468071fe8ea60aa139e643d388b 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -38,8 +38,5 @@ public:
   SCM font_descriptions () const;
 };
 
-Font_metric * unsmob_metrics (SCM s);
-
-
 #endif /* ALL_FONTS_HH */
 
index bd566cf91136ca1d839279928ea1f48dbd67313b..931d43f64bf518f00d0a96d3510f64430ee1e8e4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef ATOM_HH
index 3cd36d94e8721169e3a6ea1b1ed646d16a0de908..8b6791933e6ff291bab880e691845806bd3c3800 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-column.hh -- declare Audio_column
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef AUDIO_COLUMN_HH
index c629bcd2b15c4b9a5a3c2c6c7ae9e630ada997a9..6dff0e01f7129523d570ec620e71eff715ef39dd 100644 (file)
@@ -3,13 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef AUDIO_ELEMENT_HH
 #define AUDIO_ELEMENT_HH
 
+ #include <typeinfo>
 #include "virtual-methods.hh"
 
 class Audio_element
index 1c0dac33d34486395fbe5df0b62b51c3ac3310bb..08c780fecfccef6ad15c8e3d782664ca43646aac 100644 (file)
@@ -1,12 +1,13 @@
 /*
   audio-item.hh -- declare Audio_items
 
-  (c) 1996,  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1996,  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef AUDIO_ITEM_HH
 #define AUDIO_ITEM_HH
 
+ #include <typeinfo>
 #include "lily-proto.hh"
 #include "string.hh"
 #include "audio-element.hh"
index edcb5f020ea840748386a94906256c28a6da337c..84cb1172bb0df6aa43a64ff3f54cea4923a694ee 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-staff.hh -- declare Audio_staff
 
-  (c) 1996,  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1996,  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef AUDIO_STAFF_HH
index 04ebf26d353fe4bbe3d0660de401d1daa6dbb1d0..9fdb72194d27fb408c19a8175bbf3367009788aa 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3b1264d5fc6a46e39fdc3290a819f11b432737db..969fd7b73688e42930f534f9df8ed3ffc19a661f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3f75d905e7fb9ba5d65153f351590671545284b2..06561d0301bd9ed4570f61fabf4842e0dbe7d409 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9d7e0c8382fbb1c192abb244f629d7ba121db0f0..a88d9c3dad5d04bee7d36c833923046024757eb0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 64f00634703ac5be2f5fe743270fbb376efefe8b..388cc171495b99a113acdf2241113d05631d9586 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0bbe98d4ed42208c3cf48ee73053f9c65f27c70f..eb1c7de7faf907b47bf79d5457f82608ec8eff7b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e884883fa77be20c6ae68c0c12065693a4306123..21ee05890c46ef9e8e052204d4b74b130513f9fc 100644 (file)
@@ -1,7 +1,7 @@
 /*
   bar.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef BAR_HH
index b4caf237d0cc572bf0da408b03758cc6a6d30822..d3a360db3b84649dd0a5666c98d28f734d92595a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index b0001c89df3808f4859757c8f108662bee215242..044cfaddb7f6460c25d63fd35624f9c76997bc38 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index e2908fe5c38e5376f3bff5fda64bd9c65490cdca..966f3f08e8ac9d03f455bef3ee54318c47983f9b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   beam.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef BEAM_HH
index e9771bfd056e1b9f5785ddb33ba5a66113862016..47890afca282bb42045d8cda90003774fbf06e6a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   bezier.hh -- declare Bezier and Bezier_bow
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef BEZIER_HH
index 16b9741486a4d2cf53c1f901c2dc338dce2335f3..40770af5df78e037b73630b0cae83072b9a8761a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
   */
 class Bow : public Spanner
 {
-public:
-  Bow ();
-  Offset center () const;  
-
 protected:
-  virtual Molecule* do_brew_molecule_p () const;
-
-  virtual Array<Offset> get_encompass_offset_arr () const;
-
-  Interval curve_extent (Axis) const;
-  Bezier get_curve () const;
-  
-  Drul_array<Real> dy_f_drul_;
-  Drul_array<Real> dx_f_drul_;
 };
+#error
 
 #endif // BOW_HH
index c53543d05855087590009b5e1dff587cbe182709..bd3a7e7703d145db295035062ef5c7105ea992e1 100644 (file)
@@ -5,7 +5,7 @@
 #ifndef BOXES_HH
 #define BOXES_HH
 
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "real.hh"
 #include "interval.hh"
 #include "offset.hh"
index e06ae4aa705d0b47dcbdc600af0243693d9d378d..052ad732df86e05cae71ae1e663a50a55935eaba 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index f5b8378a3bb9f1e149772c6c1ab7b3264164184c..20d5a3f749e8fbf02638869f562bc3767c540182 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d76908dbc16e2e79a7aae2b20b1e7b9273204073..4ab9d99e4a8851199fe51c9dca4a7ca32d8b15b1 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d69b71ce96524ffc8b4dc3bb0ba85f1283792183..af18db7eb32d8df27cbb1784388a08aad0bbb811 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 761c3a0d7e72c4a5133908342ac9347bf1622c89..c9a9886f6cef029a63e8f70cc5491bc807bc48f3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef CHORD_NAME_ENGRAVER_HH
index 51b5e2a7200443e42b684a6010fac94516eb93fa..0330680c8aecb0b53b2b00bd0de3dc7cfe740032 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
index 8ef0874bacc35dfd53a781e69ad3981a60aa658c..a5d5585db387eece4452c2cad96a27c41bda9665 100644 (file)
@@ -1,7 +1,7 @@
 /*
   clef-item.hh -- declare Clef_item
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef CLEFITEM_HH
index c1e8e1ddc22d292de1b457cad552033c2b9b13db..ec46aead22ec647235d0ae5111d4c7fd3b4ce0fd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index f17e4378342cbfdc0d4039ec0380d7c99ea54ee4..4fe2de3906551995e5c48691cc5925d2278648c6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 30ee56c2b28f2bf676814a177c7a9cb4a6df6b4f..dd5c323755ea55b0a2bf7c86bbb7ecb34b6ab068 100644 (file)
@@ -1,7 +1,7 @@
 /*
   column-x-positions.hh -- part of GNU LilyPond
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef COLUMN_X_POSITIONS_HH
index 9b24ac4b35c6a4967468252967cd13cd2aa57ef5..3bb3474ac0fc378d2b5c5074eae0fdf49d6b968e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d39f311094f4e239d84786da5f72794a3eb9d478..ef7b6f3310e647aecdf87d4e29ffac9d987134b5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 990888c564c1a731b25b1240413c39cf8c97126d..52985161a3e03d7fb252a182d4050b90505e8332 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 7ac0448cc6a2ceaf20d942b9dc00cbd3e43c35df..deec3183456f516214686c4911187ba05ef14a65 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0389f516858e93c99f2b8c81fdc23b38f83c4c84..78caaf839d08a96158bc6783c1dcc2b8227e7354 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 33c821a7b40e798ae3228101ae883a1a6174c326..647a1255135e89f7a12d348e15b9cc36b46fe997 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0423d47353197a327e9c89618fc6d84e835b8799..c00fc2fcaaf145dfeddb606836a2e25fed6a8f01 100644 (file)
@@ -3,14 +3,14 @@
   
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
 #ifndef DURATION_HH
 #define DURATION_HH
 
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "rational.hh"
 
 
index 975a33d87abb54121046d78ad8ae2f873c500fd4..f531ca4508dfa7fc6f7365c9472ab34379576031 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a073d808ac5fa300ee018ab3ded0bac738a5940f..c8597b78dd47689f06451aecad1eceae3555f139 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index b6b80057dc2113bab01968cabdc96bcb7a8fda5f..fad91f8a2c062fe13f9185bda4ac8372c441f086 100644 (file)
@@ -3,13 +3,13 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
 #ifndef FILE_RESULTS_HH
 #define FILE_RESULTS_HH
-#include "fproto.hh"
+#include "flower-proto.hh"
 
 void do_one_file (String init_str, String file_str);
 extern Scope *header_global_p;
index a26c2e565c13b5ec11342dec2395cf7c44ad45dd..b6c9f78dce861d3062b7237e1347e32243fa4afe 100644 (file)
@@ -20,10 +20,12 @@ struct Character_metric
   virtual ~Character_metric ();
 };
 
+
+
 struct Font_metric
 {
   Font_metric ();
-  String name_str_;
+  SCM name_;
   virtual SCM description () const;
   virtual Character_metric const *get_char (int ascii, bool warn) const; 
   virtual ~Font_metric ();
@@ -45,6 +47,8 @@ struct Scaled_font_metric : public Font_metric
   virtual Box text_dimension (String) const;
 };
 
+Font_metric * unsmob_metrics (SCM s);
+
 
 #endif /* FONT_METRIC_HH */
 
index d36ee646830232a0f71caf60f017f4758b5ed35e..c0fbb35c04887ccf40d7bada289924c1cd35bdda 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 674b2af139af0f418028bb1e2cd22c3ebc96e8ab..ebcb6b34e9f582066137192beec99e64cf267aa7 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index fd8fe4b37cd864a15fb8a819b1b359ffe750e8d9..9f002950767651d0843a569522366ab262c33126 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 2a31d99266fa87b4d7fe56abbe4003a1286222d7..c027fc3958f5cf65fa5cd75c17e5405416d79ff6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 82d8409330d2f727256b10d93154ba225f6aba55..6b8d2a44ba22aed83066061fe8670fc0135214e0 100644 (file)
@@ -1,7 +1,7 @@
 /*
   idealspacing.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef IDEALSPACING_HH
index ded6ac4a0ef4943f34b4a51d332076c1219ef0a6..c80a28770eea7005105bb2e4bbafc460d3bb5dac 100644 (file)
@@ -1,7 +1,7 @@
 /*
   identifier.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef IDENTIFIER_HH
@@ -19,7 +19,6 @@ class Notename_table_identifier;
 class Translator_group_identifier;
 class Music_identifier;
 class Articulation_req_identifier;
-class Symtables_identifier;
 class Midi_def_identifier;
 class Paper_def_identifier;
 class Real_identifier;
@@ -36,7 +35,9 @@ virtual Class *  access_content_ ## Class (bool) const { error (#Class  + String
 
 
 /**
-   A declarable data structure in mudela. 
+   A declarable data structure in mudela.
+
+   TODO: use SCM and SMOBS for union datatype.
    */
 struct Identifier : public Input {
   bool init_b_;
@@ -54,7 +55,6 @@ struct Identifier : public Input {
   IDACCESSOR(Translator_group)
   IDACCESSOR(Notename_table)
   IDACCESSOR(Music)
-  IDACCESSOR(Symtables)
   IDACCESSOR(Midi_def)
   IDACCESSOR(Paper_def)
   IDACCESSOR(Real)
@@ -90,7 +90,6 @@ DECLARE_ID_CLASS(Notename_table);
 DECLARE_ID_CLASS(Real);
 DECLARE_ID_CLASS(String);
 DECLARE_ID_CLASS(General_script_def);
-DECLARE_ID_CLASS(Symtables);
 DECLARE_ID_CLASS(Music);
 DECLARE_ID_CLASS(int);
 DECLARE_ID_CLASS(Score);
index 5acf3cc6c5c28b1cd8fd76635d8c1e2e1008e7d9..6b54d9a5738068c4043b6a162bd32a39bbadbd93 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -14,7 +14,7 @@
 
 #include "string.hh"
 #include "parray.hh"
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "proto.hh"
 
 // GIGA urg!
index b9e2fd8130642db0d8057f07e13579105683d19d..e8ac64c183e68affdce2a1ff78c8663edb594e3b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef ITEM_HH
 #define ITEM_HH
@@ -47,7 +47,6 @@ public:
   /// I am really to be broken?
   bool breakable_b () const;
   bool broken_b () const;
-  bool broken_original_b () const;
   
   Direction break_status_dir () const;
   
index fa5dbc4ff7a5879bd34ee7f46f4d22ccaef7cda2..6e7850290de6ac970acd839793c9f5844538a975 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index ac80432208ce0c00ba959700ac60b81963407510..6c78e9f29e91a8768a2213aa4224336122158869 100644 (file)
@@ -1,7 +1,7 @@
 /*
   key-item.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef KEYITEM_HH
index 896db23ba4b61b730487abe72aa1ac513d57f1c2..335614b91e8c579a1bea84e8ef4047112f6aa7bf 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef KEY_PERFOMER_HH
index aa93545331bb166b0e16e16671d742d4c49b8e94..5c24db2f08e4b22113e76a87a45add99760026d1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   key.hh -- declare Key, Octave_key
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef KEY_HH
index 74bcc33c48427d6868021452570ee4a1617c4004..2db22765e0a197ea4016fe4813f8f62a1b747df6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   keyword.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef KEYWORD_HH
diff --git a/lily/include/least-squares.hh b/lily/include/least-squares.hh
new file mode 100644 (file)
index 0000000..678378e
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+  leastsquare.hh -- part of GNU LilyPond
+
+  (c) 1996--2000 Han-Wen Nienhuys
+*/
+
+#ifndef LEASTSQUARE_HH
+#define LEASTSQUARE_HH
+#include "array.hh"
+#include "offset.hh"
+
+
+/**
+  Least squares minimisation in 2 variables.
+  */
+void minimise_least_squares (Real * coef, Real * offset, Array<Offset>);
+
+#endif // LEASTSQUARE_HH
+
index cb89b7bd725a8c9a26370a81b6b7917c206813a9..65296f81060baccd891380179b283fc7515acef0 100644 (file)
@@ -1,24 +1,2 @@
-/*
-  leastsquare.hh -- part of GNU LilyPond
-
-  (c) 1996--1999 Han-Wen Nienhuys
-*/
-
-#ifndef LEASTSQUARE_HH
-#define LEASTSQUARE_HH
-#include "array.hh"
-#include "offset.hh"
-
-
-/**
-  Least squares minimisation in 2 variables.
-  */
-struct Least_squares {
-    Array<Offset> input;
-    void minimise (Real &coef, Real &offset);
-    void OK() const;
-};
-
-
-#endif // LEASTSQUARE_HH
 
+#error
index c9c4e6a997344594c9b8882f2a444805ae317e84..28cf68fa91959506904208e434b227e91f74fb07 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef LILY_GUILE_HH
@@ -19,17 +19,14 @@ SCM ly_str02scm (char const*c);
 SCM ly_eval_str (String s);
 SCM ly_symbol2scm (char const *);
 String ly_symbol2string (SCM);
-SCM ly_set_x (String name , SCM val);
 
-SCM ly_append (SCM a, SCM b);
+SCM ly_offset2scm (Offset o);
+
 SCM ly_eval (SCM a);
-SCM ly_func_o (char const* name);
 SCM ly_parse_scm (char const* s, int* n);
 SCM ly_quote_scm (SCM s);
 void ly_display_scm (SCM s);
 String ly_scm2string (SCM s);
-SCM array_to_list (SCM *a , int l);
-
 
 #include "array.hh"
 
@@ -52,10 +49,10 @@ template<class T>void scm_to_array (SCM s, Array<T>* arr);
 
 //URG how templates suck!
 SCM to_scm (int i);
-void scm_to (SCM s, int* i);
+int scm_to (SCM s, int* i);
 
 SCM to_scm (Real r);
-void scm_to (SCM s, Real* r);
+Real scm_to (SCM s, Real* r);
 
 /*
   snarfing.
index 9fb611a64b017eaa066a7242fd6dbec6d448263e..42bc9b772dc0af77a08c0d169956e080bfa9a492 100644 (file)
@@ -25,6 +25,8 @@ array_to_scm (Array<T> arr)
   Array<T> scm_to_array (SCM s)
 
   check scm?
+
+  UGH. junkme.
  */
 template<class T>void
 scm_to_array (SCM s, Array<T>* arr)
@@ -32,8 +34,7 @@ scm_to_array (SCM s, Array<T>* arr)
   arr->clear ();
   for (; gh_pair_p (s); s= gh_cdr (s))
     {
-      T t;
-      scm_to (gh_car (s), &t);
+      T t = scm_to (gh_car (s), (T*) 0);
       arr->push (t);
     }
 }
index c7d99235b463e62ab77866b726bfa08b9d30d29e..52a930409ce82894e7d887e5fbf78b6721bb66eb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef LILY_PROTO_HH
index 274301e8b3a1207fe992c347880072f27817aa62..72a10c72a5b9cd5e08b4b9d915fdf9d821c40618 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a6b937a13fa4c37a562e008d35ae5b766a91dc55..1c65a78ebce9bbb257034789a114bf15b7f15a91 100644 (file)
@@ -1,7 +1,7 @@
 /*
   line-of-score.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef SCORELINE_HH
index 260496bd0ca8a86c22c85308c18c7f99aaa08f15..a42051d7cc4834f8af60e9cfad3c1355e12a5910 100644 (file)
@@ -1,7 +1,7 @@
 /*
   local-key-engraver.hh -- declare Local_key_engraver
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9fdcb039f5398d7a7bdeeafc1d864109e1f68662..626af84454cbc3f8ef655d61f52170d1d5a3de40 100644 (file)
@@ -1,7 +1,7 @@
 /*
   local-key-item.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef LOCALKEYITEM_HH
index a566f34b7c7127ed70ead1312badc9dc6161ac00..5b83aef91e30b39c4e9049185ccfbb27eceea790 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
@@ -12,7 +12,7 @@
 
 #include "lily-guile.hh"
 #include "molecule.hh"
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "direction.hh"
 #include "box.hh"
 
index d986205efd354e185456c099fe3f17926787104f..7ed599e27560373101f856f78c65e2211d0a0f34 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d5198fafacfbe9055a0bee07ae8a49d689a24667..6619ab29ee73745151e00126860cdcd913c6a95e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 16459716301478170d5620eaa0a749956262922e..0d7b4ffa1c6aed20e83fc44c446e224724e886bd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef MAIN_HH
 #define MAIN_HH
index 314da60c17937682c63b52e350e85ca42cc1e804..0d9dd4eebf6e2fa55b750d3d6e52c6ae09bc3339 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
- (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index ee91484dda81b048130821aff094479de64705b7..67cdcef24911ca37299bfe750f6a69a2c8387ddb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index f24322e107bc9aaec162bac4d84e267d5105d0f5..b10ad8c5f96b931994e7161dc6c823e141349eeb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-item.hh -- declare Midi items
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_ITEM_HH
index 06c4f84ffcad003aa0aaf92cb4eebdb8785dc50a..13132e6d28963724c64820c0546ca11898baa315 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-stream.hh -- declare Midi_stream
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_STREAM_HH
index f732324ece165c5e4c0528a43490702d0a254c00..e899f0057280e74925c022668fee84593ed8e8b1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-walker.hh -- declare Midi_walker
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys  <hanwen@cs.uu.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index df194e6d83da14e0d82985686f84e4e3818fd946..f0381848f48ff61ab2e6571037534e6d73bca8e5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 90102b62423981b8bb84042b028ec052a07b9f7f..d33a100cdf770b30a6132cc53c5ef7dd4fc54c14 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef MOLECULE_HH
 #define MOLECULE_HH
index 0547e213291ec573dbe1ac3a7ab6d78467fed5fc..f8d8e510ed6602931248a5c72a2276c12e198efd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index aa36e00edf6e198ce266d515e0847e8f24f441fc..c976d681f88e9d19cd74ae03510bce6d465038e9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef MULTI_MEASURE_REST_ENGRAVER_HH
index 1d5fc2bcce4fe79f1bffed501f53428b8df70128..adf3c718d88ad2c01e895635c4c04a72d9088389 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
index f7d9c061e378160b750034b6ecfe96f8c2c7c9d0..754525578a271fc1f82654b84c9131fccb74e3d2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e36fefec7352532e24df971b60e6ee8a6b114ff7..98b2ce82edb23d905e56ba1cf4d89360a7a3844e 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index ee91b59f8a137f82b8a3f88442a548fdeb6971da..c19f9ce6feadd12b57a1f305cfcedb0d397db8b6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 8c65ab21f6606b9e28784ac49099ebf9cf199a72..9ff2f5079058d16cd0b647f1b71aaadda9388c98 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0f8ab73454504b694bbca023b9fad963c435e9f0..97bbe2abc14ce685f75e732d6ca5356753a5a8b4 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index f01a39ff9aa055caa4e57f68b5c40fae02f8921b..95d7f0bd84dde133dc280f7aee93170e3aedecb0 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 0bd1e966d07330c1a066670649d844c5a3be10b5..fc8d7162ddfa4fd99d660fa03ea5a56c1a2ab9ad 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 54899cabb430597a42a8e43d13edd2e46a0ab585..7bc94b499f17562670dd47232c3d7c0f1f04cec1 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -45,7 +45,7 @@ struct Musical_pitch : public Input
 };
 
 SCM to_scm (Musical_pitch p);
-void scm_to (SCM s, Musical_pitch* p);
+Musical_pitch scm_to (SCM s, Musical_pitch* p);
 
 #include "compare.hh"
 INSTANTIATE_COMPARE(Musical_pitch, Musical_pitch::compare);
index 963f6079fadc693ceaa4b546a2ef5f6d25ec1e2c..37f3d6ad094d3f039c76b840b6f075444609f93e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index cc86ccdac19294aa005dec466de5028dbf570033..5cb3eb0124cbf18eb7267998dc3decc33f8a1b4c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef LEXER_HH
@@ -13,8 +13,7 @@
 
 #include "dictionary.hh"
 #include "lily-proto.hh"
-#include "lily-proto.hh"
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "array.hh"
 #include "string.hh"
 #include "includable-lexer.hh"
@@ -47,8 +46,6 @@ public:
   Input here_input () const;
 
   void start_main_input ();
-  bool notename_b (String) const;
-  bool chordmodifier_b (String) const;
   void set_chordmodifier_table (Notename_table*tab_p);
   void set_notename_table (Notename_table*tab_p);
   Identifier*lookup_identifier (String s);
index 01944e6e2d6b1769943646c2768b8a7abbae9f76..4231886b7e26c1a3cf65b860775d44ae178b1ebc 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 1738e427e2aa3d76298f2e72aa1ed0da591a23a4..48f6215d48b5602abd37b3321bee790509f5a29d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d08b85143dd6ce05b7c72af0fc4c8536a184359c..17f2a977f28f3c28d08ed41f38937e017d49b748 100644 (file)
@@ -1,7 +1,7 @@
 /*
   note-head.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef NOTEHEAD_HH
index 9431618b19fa131c9d28cc647fd45e5803d74f74..1d8d667975c9187de70322e92c4288940836ab35 100644 (file)
@@ -1,7 +1,7 @@
 /*
   head-engraver.hh -- part of GNU LilyPond
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0536786d8145b504ba732393404b61ad442bc380..beaae306d9055bdcd715ca6d62661f103a588485 100644 (file)
@@ -1,7 +1,7 @@
 /*
   note-performer.hh -- declare Note_performer
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index 2bbb8e175a79f7e613a7ced7be0cf0b3963b89e4..2d84a7ead0fa1ccf0e1c7b8bf233e2baa35dd81a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index c898b9faacd17d85fef32d61376c27c1774a606e..16b05850577f51cff1266e9c54a771ef24e8ee38 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index b3147fb9e6da7d9d4e8c1f6bf456983f9728ef82..37e35c1b66b3da7885ccc0cfc8d2b29cc419441b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 5a17fb60f9ce37a9d08154dc12c9471a5c130c9d..09e8f58bddac135ffcd271673ac3b47a9e20b7c8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3d33f133bcc633800b5045c5597cf824c1d51a52..9938895086d0ef2d71dc1dea726c11f0faae8433 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 55e9b44052d3bc846c58d552822e27a51a215d6e..e07dc6a89ff52bcb793a9bed88e601d73268f796 100644 (file)
@@ -1,7 +1,7 @@
 /*
   performance.hh -- declare Performance
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMANCE_HH
index 16eb2e8ccb97bfd6787cba05d111f98d5d85b224..e61a3a352b36710758363d45af3e2b5558854d7b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   performer-group-performer.hh -- declare Performer_group_performer
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index ce5b71ad518e88687688bf3ff33393bd86c72190..9213f81fb4870c1e5fef2a6b06b0032420b5cc1c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   performer.hh -- declare Performer
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index bc1b7be97b7ecfe0aa06cbf589bf995f27297259..9e06f31b6853c593cd1d617c40f24f1a617241ab 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 4bd3e871b79fb7a8ffb68a69fc6b3120d7049099..a3209d8b13710bcd6ab39eb74ad3902a57695d94 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0ad84e0fd4ba224cf118e4d668dcecea172c960f..f60632a9e8b584edadfc6858140916478dc6f892 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4574b212fc168e3646f0deeff3af4e602de500ca..cbe08a30c0cd3aaaccb3ae8bdf7c5e62f520e91a 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 2d7cff937bb2d318458f0e91361c492386e18de7..53e770f76a6f8440ac004597ae11edc467c3c4cd 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 2a4067e02e01662b30290bc9d53c78ff382c718c..f3887077b37528f540583d7a8b1910048a1cbb50 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef REPEAT_ENGRAVER_HH
index dea114deec13182e1e18ef3f511793779db38c74..fb9b38e0428d6b6c9b37710dd9950fc04bddcb06 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index bce7bd295a666386d38db5e2eba4663896526f61..c558419bc259b9df9c12f6016f36718b479a55a9 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 496e4209b063392e111bd9b2d914adc362bcd4b4..0b8ec16d6aaa27e985c41202e36ae9656d0dbf86 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef REQUEST_HH
index 20e08e8092a18e92b2897c302dc91a38618c0de8..c0de52bdbc80035059611c00be7b0dc438b7ec92 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e500c2aa12f39f9e84e057c0ad94950083756656..8de616c71dc097f4a7cb3b4f6e27396c027b8e60 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 17be07afee6d53893a10d433a721c601d367409d..a3b6ced3e3190f122c2d6963d70c1546edd284b7 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 591c9eb81b04e28ae2259a5459773c78cc62caa1..ce95e6396bc4b2f4035508eeacfc016b7032001c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a830da1f270c5da340ee00c983ad5f916117e7c6..f67c6bff5863aa9a6b1e30779ee4df574af03a36 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d16d03391c266060d4657fec063bd90f6707abb7..3de4c87acef1aee084ece70dc06df8837694b920 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4d1f13982edfba40270c5e2c52ff60757010c832..4374f3c4eff242cfb0684e7c3a8939fa9536f3da 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 3699953bbb375ec167bc1acba1fbefbc870bfdb2..fb3f1405354b8f8d53ec1b4e7f42779011071fcf 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index b9cd13aa27c1462c5a7521fe2124f98feec6aec4..4d9ede8691f52f13322dc017ca00e337c03cec12 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0f32d95c295d0a47a36d39e176d9b7b7ad313ed9..669a301f4a59d747d227c69f9ca24c1ebb940938 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 289f6948286080592f114b1a511977bf2334f8c5..839d1a456ea0fa84840fdb7615c1582bee1e26e6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   score-performer.hh -- declare Score_performer
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index b84174780b6ffe0efe10dd4ea16c82d34a2d3be7..3ec4360f91d9fa592c18e7a39a2d475e38e48280 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index bc89e7ae8a8a127ebdb95195a6aaebf32829bf67..a496159b10b7359d52af3dc8cf82efe6c7c6dd78 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9cdb243775856eb343fdfd64eb5ce277aa7c51a6..b4862c1317a783155b59429ce5c550696c2531f1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   script-engraver.hh -- part of GNU LilyPond
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 059a3ae7c8c4d1a09b671126b8048de63bca6e91..6deb0fba8ea835912414b572092999c11ab78abd 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 363ab36bebf0b003a40672e28165a5c8dad69a38..eccb4b0ee4dce690d552322bce7e2d2aaf10b9a1 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 160556cc9d914c8a8e030cbb50af31bd4018b866..0d2565abf5dc3536b01e4afad8395a773ca3fa2c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef SEQUENTIAL_MUSIC_ITERATOR_HH
index 1671a30ef68c2bef97c4f374df9d3d088c3078e9..96ec9147602aefee7c6f6471f09521df8a5bb4b4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 27477b05bdbbcd4efd247027db30be980eb0709a..78c325dcf76042e1779b934f2937769c992348aa 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index ba470672f8944f4a30713c7e3dde64097b3a5709..d82cb95cdb374eb455c54a59ae14a94032d44f2b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   slur-engraver.hh -- declare Slur_engraver
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 6e703459a393b2902eb87a2277ec9c2030323f90..2fc37f1df81cd728d8d7e73bfe22d4ad1c1e4235 100644 (file)
@@ -1,19 +1,19 @@
 /*
   slur.hh -- declare Slur
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef SLUR_HH
 #define SLUR_HH
 
-#include "bow.hh"
+#include "spanner.hh"
 #include "rod.hh"
 
 /**
   A #Bow# which tries to drape itself around the stems too.
  */
-class Slur : public Bow
+class Slur : public Spanner
 {
   int cross_staff_count () const;
   Offset encompass_offset (Note_column const* )const;
@@ -23,8 +23,13 @@ public:
 
   void add_column (Note_column*);
 
+
 protected:
+  virtual Molecule* do_brew_molecule_p () const;
   virtual Array<Offset> get_encompass_offset_arr () const;
+  Bezier get_curve () const;
+  Drul_array<Real> dy_f_drul_;
+  Drul_array<Real> dx_f_drul_;
 
   virtual Direction get_default_dir () const;
   virtual void do_post_processing ();
index 6d6e01c1a2ee12c3e49cf2b853a08e3984160703..77b6429fe38cafd4ad90f4dd692356742bcc67c5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 14cd512a60662f9bb5e867f82721f550475dc440..56844615bf158a2beaefa7183853869c594a958d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index ec711110e29df606fca84f7f900275f44c35dc23..7736ed8610c3539b1d6d153991aa7b9992eeaf1f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   spanner.hh -- part of GNU LilyPond
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef SPANNER_HH
index bc544d0d03dd9209df7bf6bfdafa01d6a37f0d7d..d41b391357d0fd2125eb024d67b73cd356d0c873 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9d899b0e420ce81f66d7311a403febceb9f9dc59..3841da0debe8783777f28ea1ad874a063e0bfc5f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 1eb3cda72763a1309c0c2e2fb79c709e8f53c27a..4c552e081f9c86a01bf0c04b29810e87f2eff51d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   staff-performer.hh -- declare Staff_performer
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                  Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index d9d05da0184c4c742672863f355dd0647f3a6a7e..834310db0815057bc4e499986fc4d25245b8c134 100644 (file)
@@ -42,7 +42,7 @@ public:
 int compare_position (Score_element *const&,Score_element *const&); 
 
 
-Staff_symbol_referencer_interface staff_symbol_referencer_interface  (Score_element const*);
+Staff_symbol_referencer_interface staff_symbol_referencer  (Score_element const*);
 
 #endif /* STAFF_SYMBOL_REFERENCER_HH */
 
index 8fde55f94ddc2eaf0ef023eb773c97275e6e6206..ea6a4086539d8049ecf7efbd4ac461f350d8de5c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 1971d53754af133e4e772911c1b309534f6d0503..678a5800bdbf8d5d99c552ca223a9cf780e5c266 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a9fd826e0526a04a58c49ac6a4b89a5051d352d7..f4f87721a17a326207ae0f50560472a68af77897 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index d17936fbec870481426c9defbb8335eec62b7972..9ef3b068292778cb80d5ce83b828859dff2d72fb 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 41a8a78fe6e7268f2e118c7b0994ecac6bc13ae3..2f8298c4d80192d865e55d3b44ed62b768eab419 100644 (file)
@@ -1,7 +1,7 @@
 /*
   stem.hh -- declare Stem
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef STEM_HH
index 6e541e0a8ab8af5d8d54f8f298d04d225305724b..c27d1bd963375d8fd98fbabef3403ebb36712365 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 64f5f190eebfdf50d6b571f9c3b1874128a6a3d0..2ce555683c3f31703e55d4690ab9f9b8c0e429ed 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 38b84befe3be98aa7c9b6b7b2eb97d76629a9257..a3c123382df24bef0e336a1b740bda1689650dfe 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 97c272f131ac86556c6407be990c198a8c1187af..fc7be5139ab009217766c0e9e070c05a8b383b5b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef TEMPO_PERFORMER_HH
index 930af37e107a71aa0be9306b751025c1f9afaa0a..e3c7a89c33fc66ff398b809f62e43167b837507d 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 7246d0e4f81ebda0bac1515a966334b4c168b813..bae7f6aa9a577dfcb1de09b39bfeb94255b99f6c 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 7fe61a3850e2057c5fb7dd96384e2fc480e95fe6..16b3ff13e3cf11169eebacbef866f3934a54d94f 100644 (file)
@@ -3,20 +3,20 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef TIE_HH
 #define TIE_HH
 
-#include "bow.hh"
+#include "spanner.hh"
 #include "rod.hh"
 
 /**
   Connect two noteheads.
   */
-class Tie : public Bow
+class Tie : public Spanner
 {
 public:
   Tie ();
@@ -24,7 +24,15 @@ public:
   VIRTUAL_COPY_CONS(Score_element);
 
   Note_head* head (Direction) const;
+
 protected:
+  virtual Molecule* do_brew_molecule_p () const;
+  virtual Array<Offset> get_encompass_offset_arr () const;
+  Bezier get_curve () const;
+
+  Drul_array<Real> dy_f_drul_;
+  Drul_array<Real> dx_f_drul_;
+
   virtual void do_add_processing ();
   virtual void do_post_processing ();
   virtual Direction get_default_dir() const;
index 192efc9935db9c4e6b611a115e3b9a7c39d83a5c..28ab473db01fd65a2f9514a1c0fa43979e952dfc 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 98fb5286ce60706a90027b6456ac7a419d1fd4f0..21d8e70d87185753f3381fcc6c877a3daa7ac3a5 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 39770351c7fd41232ee5dd1d736acc2d39842f2b..aa35e921ee5becd7ddec2112968db8f6cad6d1fd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e03514706d041557956bac87f14920f50d5161e8..c2c8330715805cde845927cac703dccb0c00eb54 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef TIME_SIGNATURE_PERFORMER_HH
index fbe2f826b06e77e110728fe5c081c9756bd22052..f3491667316c09b4fb3e29035c1c6d43d4f2bd8a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   time_signature.hh -- declare Time_signature
 
-  (c) 1996--1999 Han-Wen Nienhuys
+  (c) 1996--2000 Han-Wen Nienhuys
 */
 
 #ifndef METER_HH
index bcbbfd6e51a9d072debf61dbbaf0b26cb3db985a..5ac4f8a338e2c96e5375a9eb9a04c95cc13c2136 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 84ca4d0528944f3c2ca40a9fe97a8a2feda83c98..4309878562f4f074529a2648b39de2583be42dee 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 8278dd829d8be140380b65a46f131e2fc0f6194f..aecce178f22fb87cbfadd05f5d62f675c0a9bc61 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 676ffc1b20a0269a1ab3438662426e8dd8ee7ea2..508e3d38f0580288835e6eba7b1ce3c4d4daf247 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0846cc9f6dabfcb51b84e97cf52ab4dd19ca39ef..6601498d7154676d49f7b20a0b72bd00d38e8365 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index c97234aa1585425817cd03b1f5296c99ba287e73..6c4e314941a12756b6e4f9ebfb013e6c8f97f731 100644 (file)
@@ -3,12 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef TRANSLATOR_HH
 #define TRANSLATOR_HH
+ #include <typeinfo>
 #include "global-ctor.hh"
 #include "string.hh"
 #include "lily-proto.hh"
index 4643e71a752ee1ea956058951594f258daafb3d1..7ae1db5595e27837e8368e045e27d46f2dcfe6cb 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index b78c6f300caaf1deb451ff28054d0db55cad6403..7b50fb86ec2dabce8c26891bbe8b4f166c5bb5b1 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index d56a331a0ecd3e44ee02a516a7fa1e6bb8ab5591..de429e895409b8797f4873a859e0025851e00a8e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   plet-spanner.hh -- part of GNU LilyPond
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef Tuplet_spanner_HH
@@ -25,6 +25,8 @@ public:
   void add_column (Note_column*);
   void add_beam (Beam*);
 protected:
+  void calc_position_and_height (Real*,Real*)const;
+  
   virtual Molecule* do_brew_molecule_p () const;
   VIRTUAL_COPY_CONS(Score_element);
   virtual void do_add_processing ();
index da857f6c294cc5f7b03f1fb6a9a799c692c3bf64..76f9670f581a182d41de8ed38c01b2340c488dcf 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 98e7ed5495b2f63c313f4a28aa28b956da62b7d3..286395fceb1351d4063beea7dc1874cff5de7e3e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9009c0ceb5ab07b8befd1106efbe1dfbec39c77c..a4f32c035463e97c89f91ddb363e7541e3a0cd30 100644 (file)
@@ -1,7 +1,7 @@
 /*
   volta-spanner.hh -- part of GNU LilyPond
 
-  (c) 1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef VOLTA_SPANNER_HH
index 524c408fa3d82906818eb17372e7398ab1a0ede1..2b70a03e97554f8d262970cbbc6cb7e2c46fc2f8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
@@ -157,11 +157,6 @@ Item::find_broken_piece (Direction d) const
 
 
 
-bool
-Item::broken_original_b () const
-{
-  return broken_to_drul_[LEFT] || broken_to_drul_[RIGHT];
-}
 
 #if 0
 int
index 767b652dd2ff4461e291f580e76d0e8ff8eef264..c94b17811bfead762db31d3b86b6b14cfb331458 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   */
 // clean me up 
 #include "key-engraver.hh"
index 43ddc6931fb598fa0ed05385d0d107ee96941634..56ab8a050678f1981b0099205fe583828a9b523e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   keyplacement by Mats Bengtsson
 */
index d80177c26d403480f41edb84c01b3cb56fc04976..d026cf590de28b1154b8605d79f8222ed652d540 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "key-performer.hh"
index 40e5c7de94293cb760871926cc5257cb38f365db..199f71526fb743d28bb022777971cb140e450b1b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 */
 
diff --git a/lily/least-squares.cc b/lily/least-squares.cc
new file mode 100644 (file)
index 0000000..737cbd6
--- /dev/null
@@ -0,0 +1,43 @@
+/*   
+  least-squares.cc --  implement minimise_least_squares
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "least-squares.hh"
+#include "warn.hh"
+
+
+void
+minimise_least_squares (Real * coef, Real * offset,
+                       Array<Offset> input)
+{
+  Real sx = 0.0;
+  Real sy = 0.0;
+  Real sqx =0.0;
+  Real sxy = 0.0;
+
+  for (int i=0; i < input.size();i++) 
+    {
+      Real x=input[i][X_AXIS];
+      Real y = input[i][Y_AXIS];
+      sx += x;
+      sy += y;
+      sqx += sqr (x);
+      sxy += x*y;
+    }
+  int N = input.size();
+
+  *coef =0.0;
+  *offset =0.;
+  
+  Real den = (N*sqx - sqr (sx));
+  if (!N || !den)
+    programming_error ("minimise_least_squares():  Nothing to minimise");
+
+  *coef = (N * sxy - sx*sy)/den;
+  *offset = (sy - (*coef) * sx)/N;
+}
index 83beb3eb8e048e2b5b8b79910ae072ca1f122346..9c0369c424216404511c30fb000af494266f3498 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdio.h>
 #include <ctype.h>
 
+#include "notename-table.hh"
 #include "lily-guile.hh"
 #include "string.hh"
 #include "string-convert.hh"
@@ -467,20 +468,18 @@ My_lily_lexer::pop_state ()
 int
 My_lily_lexer::scan_escaped_word (String str)
 {
-       DEBUG_OUT << "\\word: `" << str<<"'\n";
        int l = lookup_keyword (str);
        if (l != -1) {
-               DEBUG_OUT << "(keyword)\n";
                return l;
        }
        Identifier * id = lookup_identifier (str);
        if (id) {
-               DEBUG_OUT << "(identifier)\n";
                yylval.id = id;
                return id->token_code_i_;
        }
        if ((YYSTATE != notes) && (YYSTATE != chords)) {
-               if (notename_b (str)) {
+               if (note_tab_p_->elem_b (str))
+               {
                        yylval.pitch = new Musical_pitch (lookup_notename (str));
                        yylval.pitch->set_spot (Input (source_file_l (), 
                          here_ch_C ()));
@@ -491,7 +490,7 @@ My_lily_lexer::scan_escaped_word (String str)
                print_declarations (true);
        String msg (_f ("unknown escaped string: `\\%s'", str));        
        LexerError (msg.ch_C ());
-       DEBUG_OUT << "(string)";
+
        yylval.scm = ly_str02scm(str.ch_C());
 
        return STRING;
@@ -500,16 +499,14 @@ My_lily_lexer::scan_escaped_word (String str)
 int
 My_lily_lexer::scan_bare_word (String str)
 {
-       DEBUG_OUT << "word: `" << str<< "'\n";  
        if ((YYSTATE == notes) || (YYSTATE == chords)) {
-               if (notename_b (str)) {
-                   DEBUG_OUT << "(notename)\n";
+               if (note_tab_p_->elem_b (str)) {
                    yylval.pitch = new Musical_pitch (lookup_notename (str));
                    yylval.pitch->set_spot (Input (source_file_l (), 
                      here_ch_C ()));
                     return (YYSTATE == notes) ? NOTENAME_PITCH : TONICNAME_PITCH;
-               } else if (chordmodifier_b (str)) {
-                   DEBUG_OUT << "(chordmodifier)\n";
+               } else if (chordmodifier_tab_p_->elem_b (str))
+               {
                    yylval.pitch = new Musical_pitch (lookup_chordmodifier (str));
                    yylval.pitch->set_spot (Input (source_file_l (), 
                      here_ch_C ()));
index 2edd23ac88ae3e337c48b1b465aeed74f7562781..e317ea543815e3a466ef1f2440f75eb0235fa652 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
   Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
@@ -19,6 +19,7 @@
 #include "file-path.hh"
 #include "debug.hh"
 #include "direction.hh"
+#include "offset.hh"
 
 SCM
 ly_str02scm (char const*c)
@@ -279,11 +280,13 @@ to_scm (int i)
   return gh_int2scm (i);
 }
 
-void
-scm_to (SCM s, int* i)
+/*
+  UGR. junkme.
+ */
+int
+scm_to (SCM s, int* )
 {
-  // urg
-  *i = gh_number_p (s) ? gh_scm2int (s) : 0;
+  return gh_number_p (s) ? gh_scm2int (s) : 0;
 }
 
 SCM
@@ -292,13 +295,12 @@ to_scm (Real r)
   return gh_double2scm (r);
 }
 
-void
-scm_to (SCM s, Real* r)
+Real
+scm_to (SCM s, Real* )
 {
-  // urg
-  *r = gh_number_p (s) ? gh_scm2double (s) : 0;
+  return gh_number_p (s) ? gh_scm2double (s) : 0;
 }
-  
+
 bool
 to_boolean (SCM s)
 {
@@ -328,3 +330,10 @@ appendable_list_append (SCM l, SCM elt)
   gh_set_cdr_x (gh_car (l), newcons);      
   gh_set_car_x (l, newcons);
 }
+
+
+SCM
+ly_offset2scm (Offset o)
+{
+  return gh_cons (gh_double2scm (o[X_AXIS]), gh_double2scm(o[Y_AXIS]));
+}
index 43aaeb602117b1732626a8f3a6ead4ec78b61b1b..f30e40959fff4ecf89413ba334f7fe73c133f260 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "staff-symbol.hh"
index 0f313f40e96f50c3e5669433fbb6ad9d8b9fbd0b..69d7f363397482f90ab9db253b6abdd214fec784 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "line-of-score.hh"
index 72170cc9db8ebdac5b2dcb95fb1b1b8aa16ad2d8..8ac7cfaf735c78014de0754561f378c6f05d0cbb 100644 (file)
@@ -1,7 +1,7 @@
 /*
   local-key-engraver.cc -- implement Local_key_engraver
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 // clean up!
 
index f0bf3e57e650b3aacc551516d9ee6c88261711dd..7541177600ffa58bb77430b695391c3330b07d84 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "local-key-item.hh"
 #include "molecule.hh"
index 812460e0fc10f062cf0ec98e7cfb46b0f2fd9d5d..4c3be3f3f2713470bf103669f13e9fc6c984e27e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "atom.hh"
 #include "lily-guile.hh"
 
-SCM
-ly_offset2scm (Offset o)
-{
-  return gh_list (gh_double2scm (o[X_AXIS]), gh_double2scm(o[Y_AXIS]),
-                 SCM_UNDEFINED);
-}
 
 Lookup::Lookup ()
 {
@@ -94,7 +88,7 @@ Lookup::afm_find (String s, bool warn) const
       if (!me->afm_l_)
        {
          warning (_f ("Can't find font: `%s'", font_name_));
-         warning (_f ("(search path: `%s')", global_path.str ().ch_C()));
+         warning (_f ("(search path `%s')", global_path.str ().ch_C()));
          error (_ ("Aborting"));
        }
     }
index 5e6f01f36b8a0aaa9e10be915405908a35eca911..60c59e8141d42c7a81cbd0551d0f46f5b37cab4e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
index be719e1c032c258f185c17f8f05b08e5cb7fa417..5a5be595670ce3c5754bb1c8666474087204c92b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "lyric-performer.hh"
index a73534fc608757dbb72d1a1b697ef8f3d739bff4..41d2e36e2a0c37ab4b421e7658b776a7c81f1b5e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <stdlib.h>
@@ -145,7 +145,7 @@ version ()
     "lilypond");
   cout << endl;
 
-  cout << _f ("Copyright (c) %s by", "1996--1999");
+  cout << _f ("Copyright (c) %s by", "1996--2000");
   cout << "Han-Wen Nienhuys <hanwen@cs.uu.nl>\n"
        << "Jan Nieuwenhuizen <janneke@gnu.org>\n";
 }
@@ -157,7 +157,7 @@ notice ()
   // GNU GNU?
   cout << _ ("GNU LilyPond -- The GNU Project music typesetter");
   cout << '\n';
-  cout << _f ("Copyright (c) %s by", "1996--1999");
+  cout << _f ("Copyright (c) %s by", "1996--2000");
   cout << '\n';
   cout << "  Han-Wen Nienhuys <hanwen@cs.uu.nl>\n";
   cout << "  Jan Nieuwenhuizen <janneke@gnu.org>\n";
index 52dbfbe921215c00a554ca73a476dc7ae01c917a..92752b2d9b60e8bfb7a6fa090a4810e00641e3e2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
- (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include "command-request.hh"
 #include "mark-engraver.hh"
index 47899ae06640c4c2ff45302ca4752ebdfd5b162b..753976a9b605792e25913067387ab92d04c9787d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 #include <math.h>
index 867b7bad2bb6d7b036b3c47a600426fc9ca99b7b..aeaa53ffa2a903fd8f6bfc20724c3d8edb920c2d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "proto.hh"
index 2db634bdb6318857d9e5f218fef798b3e3f8f807..05fb19bc6df4327c5763a89acdb3c34430ec1493 100644 (file)
@@ -3,7 +3,7 @@
 //
 // source file of the GNU LilyPond music typesetter
 //
-// (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+// (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <fstream.h>
 #include "string.hh"
index 48c408aaa76a2c4309e0da79396db896e5328745..be00d45a8070c10031005a683cca6133b09ed948 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
          Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index d9c56c4a8da2abd3a2fe5c7b7b4bc13456f2db8e..8523cddd86e76a5e30271619b74e7b83513fc2c4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
     Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
index 710ee8b397298b6bad669b8c3510bb9c8ad46578..2243f8517e8258b9eec3be53afe9d0539400e588 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "interval.hh"
index 628815ed8ad6104798abef375eda68d0983627c5..7b2e9d58ee3e964d175d93bf06e1d57e1c06533b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index 08d97fe22fcce936885721749978aff8a425843f..6bb488a547095c46f77ec6d07acee011dccbb140 100644 (file)
@@ -1,7 +1,7 @@
 /*
   multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
        Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
index 72a23f5b589c7bdf08569d59834ee713527592c3..e25dffbbc6d9d9788762ab4ec52be1af4f0fd146 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
@@ -90,7 +90,7 @@ Multi_measure_rest::do_brew_molecule_p () const
   
   mol_p->add_molecule (s);
   Real staff_space
-    = staff_symbol_referencer_interface (this).staff_space ();
+    = staff_symbol_referencer (this).staff_space ();
   if (measures_i_ == 1 && rest_symbol)
     {
       mol_p->translate_axis (staff_space, Y_AXIS);
index 9de2bb6af7819d21ab708ec25c541a744c0c259c..01e0a5dc5d2ee4416b808a212b4da8d6b005e329 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "debug.hh"
 #include "music-list.hh"
index 2b2fce2fda216187f7917b1cb343cfcba5073df9..abe444cf6f42f330a23668ffbdccc823fed85250 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "music-list.hh"
index c05534131b0f5197c561d589ed133015d66d93f0..f1cf79cb65386443b2dfc60320470cb7b66ba9e9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "scope.hh"
index 60e6459a20f7e850ce1a4a4ca5186c239ff91694..2b77780d39579534307e46b81290ff9ab0d741d0 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "music-list.hh"
index 1f89d771c6740413f9d5c1b5db101fd23399d81a..69429384dc2dea2385afb37ec423a9c4915fd75d 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 71de46fc45bc17d6027be97bd1d3c809ee75b68d..26807805e71bdf126af74db09b02a1b9f89a6f5b 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 10462173df834fe380b5fb81afffe9c42630d501..7b6cf607329ecbb3e19cde1901761949d314afcf 100644 (file)
@@ -3,9 +3,10 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+ #include <typeinfo>
 
 #include "music.hh"
 #include "music-list.hh"
index d60a1fb832f2e043ce0aee6d82bb94c618465eb6..dc4a5171dae5f01e407c5b1664cd6c00cce35674 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "musical-pitch.hh"
@@ -22,11 +22,11 @@ to_scm (Musical_pitch p)
 /*
   TODO: check -- is_pitch () ?
  */
-void
-scm_to (SCM s, Musical_pitch* p)
+Musical_pitch
+scm_to (SCM s, Musical_pitch* )
 {
-  *p = Musical_pitch (gh_scm2int (gh_car (s)),
-                     gh_scm2int (gh_cadr (s)),
+  return Musical_pitch (gh_scm2int (gh_car (s)),
+                         gh_scm2int (gh_cadr (s)),
                      gh_scm2int (gh_caddr (s)));
 }
 
index 16bb0d55133085f272d82eb4c5b752d27b0c0006..192ea5d48eef3547f5a9dc49604431a2534c0a17 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "musical-request.hh"
index cd1b67f9137e5d00c101cc438f667dc504e2a6de..211a6b8c4702fa06b8b2437801cdcc830e667294 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <strstream.h>
@@ -114,8 +114,8 @@ My_lily_lexer::start_main_input ()
 
 
   new_input (main_input_str_, source_global_l);
-  if (safe_global_b)
-    allow_includes_b_ = false;
+  allow_includes_b_ = allow_includes_b_ &&  !(safe_global_b);
+  
   
   print_declarations(true);
 }
@@ -189,11 +189,6 @@ My_lily_lexer::lookup_chordmodifier (String s)
   return chordmodifier_tab_p_->get_pitch (s);
 }
 
-bool
-My_lily_lexer::notename_b (String s) const
-{
-  return note_tab_p_->elem_b (s);
-}
 
 void
 My_lily_lexer::set_notename_table (Notename_table *p)
@@ -202,11 +197,7 @@ My_lily_lexer::set_notename_table (Notename_table *p)
   note_tab_p_ = p;
 }
 
-bool
-My_lily_lexer::chordmodifier_b (String s) const
-{
-  return chordmodifier_tab_p_->elem_b (s);
-}
+
 
 void
 My_lily_lexer::set_chordmodifier_table (Notename_table *p)
index 794e191de7ad5674d8620a57cf8b7dc6c7f455f4..854f846c1b898735f66ddbdae2686fae3acc8e7e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
        Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
@@ -30,7 +30,6 @@ My_lily_parser::My_lily_parser (Sources * source_l)
   lexer_p_ = 0;
   abbrev_beam_type_i_ = 0;
   default_duration_.durlog_i_ = 2;
-  default_pitch_ = Musical_pitch (5*7, 0);
   error_level_i_ = 0;
 
   fatal_error_i_ = 0;
@@ -43,8 +42,6 @@ My_lily_parser::~My_lily_parser()
   delete default_header_p_;
 }
 
-
-
 void
 My_lily_parser::set_version_check (bool ig)
 {
@@ -110,56 +107,8 @@ My_lily_parser::set_abbrev_beam (int type_i)
   abbrev_beam_type_i_ = type_i;
 }
 
-void
-My_lily_parser::set_last_pitch (Musical_pitch const* p)
-{
-  default_pitch_ = *p;
-}
-
-// junk me
-Simultaneous_music*
-My_lily_parser::get_word_element (String s, Duration * duration_p)
-{
-  Simultaneous_music* velt_p = new Request_chord;
-
-  Lyric_req* lreq_p = new Lyric_req;
-  lreq_p ->text_str_ = s;
-  lreq_p->duration_ = *duration_p;
-  lreq_p->set_spot (here_input());
-
-  velt_p->add_music (lreq_p);
-
-  delete  duration_p;
-  return velt_p;
-}
-
-// junk me
-Simultaneous_music *
-My_lily_parser::get_rest_element (String s,  Duration * duration_p)
-{
-  Simultaneous_music* velt_p = new Request_chord;
-  velt_p->set_spot (here_input());
 
-  if (s=="s")
-    { /* Space */
-      Skip_req * skip_p = new Skip_req;
-      skip_p->duration_ = *duration_p;
 
-      skip_p->set_spot (here_input());
-      velt_p->add_music (skip_p);
-    }
-  else
-    {
-      Rest_req * rest_req_p = new Rest_req;
-      rest_req_p->duration_ = *duration_p;
-      rest_req_p->set_spot (here_input());
-
-      velt_p->add_music (rest_req_p);
-    }
-
-  delete duration_p;
-  return velt_p;
-}
 
 // junk me
 Simultaneous_music *
index 7216a4a9b4f8c116bc1642313943ba48d32148a2..00fb47af383604cde151285034cb6de99b791c18 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <math.h>              // ceil
 
index fa911e7ca4b19cea11dc752cdf16ad240ad28cde..f1b3bf192d658b1ef9971ce0447dcbab8947ed38 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "misc.hh"
index 0eadf768e4a375797f4f23c37b5f17352a305225..2815ca843d0642538264cb6d2d29578ea1ce49d3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   head-grav.cc -- part of GNU LilyPond
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "note-head.hh"
index 25a49c2f8591ff34d540461ab0485fc6d6716d4b..d2cfe8dea83e87989e4d7e55c7bec5f3ec775d2d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1996,  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "note-performer.hh"
index 2063f79ee4b0b92ce6981ea183dbfa96edac94de..f3a85c1ad671c12ed811a55568cc16d9321fd067 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "notename-table.hh"
index 67d5577bd23990c16e7d54a18f48ea5048b57329..94e22e0e34be2494c07336de7fab8ff014c094ea 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "moment.hh"
 #include "paper-column.hh"
index 2fedfe4b32ca35c1e63618b7eaea966d371fb9a2..9c6be3c464fe8fdedaed620100cb15c65b652699 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <math.h>
index fd53025c2c64b6e151d3e8e062fffc102ffac237..f1df4c15fef0aad5921ad457f983c8482981b3bd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
@@ -38,7 +38,7 @@ Paper_outputter::output_header ()
 {
   if (safe_global_b)
     {
-      //      ly_set_x ("security-paranoia", SCM_BOOL_T);
+
       gh_define ("security-paranoia", SCM_BOOL_T);      
     }
   String s = String ("(eval (") + output_global_ch + "-scm 'all-definitions))";
index 097ef2bc38982c033efe05f3a880178bacdb9942..0b487a077b78a6d7af26b57fcaf40c453182cf38 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "main.hh"
index fa6ec8c7a0296239aec1b9020967ca23148d769e..bb4ec7121deb5d9baa17ab676a17b12cb00a0d50 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <fstream.h>
index 58931e8277d8baee1a9e5e93e3fbf2305cb574f8..606d9a3f17331427bc2b651d1e849a1c4c7046c1 100644 (file)
@@ -1159,11 +1159,9 @@ explicit_musical_pitch:
 musical_pitch:
        steno_musical_pitch {
                $$ = $1;
-               THIS->set_last_pitch ($1);
        }
        | explicit_musical_pitch {
                $$ = $1;
-               THIS->set_last_pitch ($1);
        }
        ;
 
@@ -1391,7 +1389,29 @@ simple_element:
                $$ = v;
        }
        | RESTNAME optional_notemode_duration           {
-               $$ = THIS->get_rest_element (ly_scm2string ($1), $2);
+  Simultaneous_music* velt_p = new Request_chord;
+  velt_p->set_spot (THIS->here_input());
+
+  if (ly_scm2string ($1) =="s")
+    { /* Space */
+      Skip_req * skip_p = new Skip_req;
+      skip_p->duration_ = *$2;
+
+      skip_p->set_spot (THIS->here_input());
+      velt_p->add_music (skip_p);
+    }
+  else
+    {
+      Rest_req * rest_req_p = new Rest_req;
+      rest_req_p->duration_ = *$2;
+      rest_req_p->set_spot (THIS->here_input());
+
+      velt_p->add_music (rest_req_p);
+    }
+
+  delete $2;
+  $$ = velt_p;
+
 
        }
        | MEASURES optional_notemode_duration   {
@@ -1417,7 +1437,17 @@ simple_element:
        | STRING optional_notemode_duration     {
                if (!THIS->lexer_p_->lyric_state_b ())
                        THIS->parser_error (_ ("Have to be in Lyric mode for lyrics"));
-               $$ = THIS->get_word_element (ly_scm2string ($1), $2);
+                 Simultaneous_music* velt_p = new Request_chord;
+
+                 Lyric_req* lreq_p = new Lyric_req;
+                 lreq_p ->text_str_ = ly_scm2string ($1);
+                 lreq_p->duration_ = *$2;
+                 lreq_p->set_spot (THIS->here_input());
+
+                 velt_p->add_music (lreq_p);
+
+                 delete  $2;
+               $$= velt_p;
 
        }
        | chord {
index 99aa0458de82ee744e7d665db24e0fb55ccd3936..84a8e64b4c5b9f1a92f5b0392abbef062d0ceda8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <time.h>
index 7496881ad0732a1c33f420cd88bc0260379a59e3..583c59a936d5f4fe36808cbd6e1958e247f590dc 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index f0cd2585e22887666b0c957aa744075ec3cef678..7ccad7dd2a3678ab9289f14f6f3296fdf2c1870a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
                Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
index 7ed7a8c085855afa7732bbcceac8cf8994ec3d35..21774fb3af887d3d29dc0fb013428a9005ab7da4 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "staff-symbol-referencer.hh"
index 0af9420ebffb729a435fc4369b7e25d9f09462f9..06d34035ed152ab1dff8b5aed25bd4a1973609f8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "property-iterator.hh"
index 1d8fd16b2a1b1449c90f801fe0fdc9e4547e4af3..71d6b48273684b30c6844e8604b3f4feb4b54b5f 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "protected-scm.hh"
index af18a32b1d80e230d3276ce6e4a81202a4d515d9..e2552b65a819fd50c9be45c4dd1e0f04b709e1d3 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 86b202972eac9e4d49e15c29498ff600b4de830f..0e2b52c5f32f010476186eb4b3f5971dd99d2aac 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "repeat-engraver.hh"
index ae44a7c5e72b0dc771bc6037734fa4f90dacb974..dac3d2500cf58d722f558d6fe834934f5dc293d0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
index 67d1e548e2715acf8b19a84ef54c9f0881a8a79b..f5a869b7889950a41110c9f887a33fd0086a3b51 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "request.hh"
index 756bb50bee558650b1fb9ad17f65b17bc0430f1a..b2fd168d0741c161c3e2c9aa802fd5a528927305 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
index 117c5db333407050ff5f87bfde651b008bdc7d2d..6bdfe4eaf2282d76f97e39bc6db0c57b3003d8b3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <math.h>              // ceil.
 
index 90e63d79c685bec9059813d852db0c9e937433f0..5fe98cf2936f97b4b27d4a5bbc74f82cdbcf323f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "staff-symbol-referencer.hh"
 #include "rest-engraver.hh"
index 57c5816892073562d2c16b80ccf5d433d786755e..671c59bf723b9b0e7dbb4d08f69d5d0580463020 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "molecule.hh"
@@ -31,7 +31,7 @@ Rest::do_post_processing ()
       /*
        UGH. 
        */
-      staff_symbol_referencer_interface (d)
+      staff_symbol_referencer (d)
        .set_position ((balltype_i () == 7) ? 4 : 3);
     }
 }
index 0be292f7013d4068c59b9d29c5d6c22ced199d1b..6e4aaa96c52fedeba56225e21a01a818a907940a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
index 72807c77cc5f950d11d59896b137408e4fd249af..a96a750f74ba515ade874325a7263bb4b72a8dd6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "rhythmic-head.hh"
index c1e8c46b202eb3353a253d8f3e72110d9798d07d..cbf1403cdc517d35eb8713f51db6852e16a6cc5e 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "rod.hh"
index b3e5dc83ab87d47e673a3e80b7d07caaab0c598d..e2923fcb80bfa68ca954be7c6a01235d483ffb5f 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index a5d19969d793ddca0723e6e53487803bb3c0b44f..c3dd700aef33e4e899dd15645b7ef8bc84068ba3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "score-element-info.hh"
index 8e180bc4017b93067a7ea40a484b6dd556470089..6569b790a1424ce3f4dd73e56e20c9769e7e39de 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3b5f9465498eee6db295b4ce05e275a911263631..81bf16fa25b90ff5418bfcdb6f40747d4c4b55a9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "debug.hh"
 #include "dimension-cache.hh"
index b69dcbe5b78f21702c7e29680b0ac115901aff3f..b4eba3d00bd2c143bbed874a130ee463b1c10f48 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1996,  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "score-performer.hh"
index 6911cdfa58cb0c47e83c8ec4cb5396512456d675..3eda39de7005a371e4a37056c4f2b642c0afba1a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "score.hh"
index b3899c2d2e3f6a0e3ad0fe56c564ba911dde04b5..64787328ac23b8cb45b44ea5cc57bceee6695cf5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <fstream.h>
 #include "main.hh"
index af4be4f176af0e0441c9084eb5fc3554ccf27be1..0e6fe2433dbcd77d42f5f6b07483289908460b3c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   script-engraver.cc -- implement Script_engraver
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "script-engraver.hh"
@@ -99,6 +99,12 @@ Script_engraver::do_process_requests()
 void
 Script_engraver::acknowledge_element (Score_element_info inf)
 {
+  bool them_grace = to_boolean (inf.elem_l_->get_elt_property ("grace"));
+  bool us_grace = to_boolean (get_property ("weAreGraceContext",0));
+
+  if (us_grace != them_grace)
+    return;
+  
   if (Stem *s = dynamic_cast<Stem*>(inf.elem_l_))
     {
       for (int i=0; i < script_p_arr_.size(); i++)
index cc4fd64d35b5a3800f99fe8d61cf7ad5631d53d6..c00bfd8e13368ee3a3e2c46d60c5bfd90aace86c 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index b2ae354ab9752613a3ca22b6d025cb1fc587a7db..9cd56f58b618399e31c8250d1cc33cd0df49f641 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 58e04051752d014ef79de72abae9c580a06c91d6..8473d23cd6ec0b259b750470b08ff693fee47f18 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "grace-iterator.hh"
 #include "translator-group.hh"
index d261d33eaf78a76997ec202f6cb3d154f11ceb0c..f19cbf83e38cf361ab2af6eb12818efb3c559b5d 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include <math.h>              // ceil.
index 1faaa67c13663a43eb60d64de06c0c13c034d44a..7e60780cc941bb50f8429953ab0e3f6b13ae74cf 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
index 4a9a9d929efcb3daf86eaf7f0284b3eeb0eab947..54cce299963165a1b0fddc2c48eeed69d9513080 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 4bf349656d8354ddcec864ca74faea104fbefc6e..d5f6f768e78f72aef417fc19bde84ba191b74489 100644 (file)
@@ -1,7 +1,7 @@
 /*
   slur-grav.cc -- implement Slur_engraver
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
index 30112212c89861d337631def9ace88c889c1b919..e7adc849b420636686c597bae4a1dbe10a98ed35 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996,  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
     Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "debug.hh"
 #include "box.hh"
 #include "bezier.hh"
+#include "bezier-bow.hh"
 #include "main.hh"
 #include "cross-staff.hh"
 #include "group-interface.hh"
 
 Slur::Slur ()
 {
+  dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0;
+  dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
   set_elt_property ("note-columns", SCM_EOL);
 }
 
@@ -322,8 +325,11 @@ Slur::do_post_processing ()
    */
   for (int i = 0; i < 3; i++)
     {
-      Real height_f = curve_extent (Y_AXIS).length ();
-      Real width_f = curve_extent (X_AXIS).length ();
+      Bezier c (get_curve ());
+      
+
+      Real height_f = c.extent (X_AXIS).length ();
+      Real width_f = c.extent (Y_AXIS).length ();
       
       dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
       if (!fix_broken_b)
@@ -518,3 +524,123 @@ Slur::get_rods () const
 }
 
 
+
+
+
+Molecule*
+Slur::do_brew_molecule_p () const
+{
+  Real thick = paper_l ()->get_var ("slur_thickness");
+  Bezier one = get_curve ();
+
+  Molecule a;
+  SCM d =  get_elt_property ("dashed");
+  if (gh_number_p (d))
+    a = lookup_l ()->dashed_slur (one, thick, gh_scm2int (d));
+  else
+    a = lookup_l ()->slur (one, directional_element (this).get () * thick, thick);
+  
+  return new Molecule (a); 
+}
+
+
+
+Bezier
+Slur::get_curve () const
+{
+  Bezier_bow b (get_encompass_offset_arr (), directional_element (this).get ());
+
+  b.ratio_ = paper_l ()->get_var ("slur_ratio");
+  b.height_limit_ = paper_l ()->get_var ("slur_height_limit");
+  b.rc_factor_ = paper_l ()->get_var ("slur_rc_factor");
+
+  b.calculate ();
+  return b.get_curve ();
+}
+
+#if 0
+
+/*
+  TODO: FIXME.
+ */
+
+/*
+  Clipping
+
+  This function tries to address two issues:
+    * the tangents of the slur should always point inwards 
+      in the actual slur, i.e.  *after rotating back*.
+
+    * slurs shouldn't be too high 
+      let's try : h <= 1.2 b && h <= 3 staffheight?
+
+  We could calculate the tangent of the bezier curve from
+  both ends going inward, and clip the slur at the point
+  where the tangent (after rotation) points up (or inward
+  with a certain maximum angle).
+  
+  However, we assume that real clipping is not the best
+  answer.  We expect that moving the outer control point up 
+  if the slur becomes too high will result in a nicer slur 
+  after recalculation.
+
+  Knowing that the tangent is the line through the first
+  two control points, we'll clip (move the outer control
+  point upwards) too if the tangent points outwards.
+ */
+
+bool
+Bezier_bow::calc_clipping ()
+{
+  Real clip_height = paper_l_->get_var ("slur_clip_height");
+  Real clip_ratio = paper_l_->get_var ("slur_clip_ratio");
+  Real clip_angle = paper_l_->get_var ("slur_clip_angle");
+
+  Real b = curve_.control_[3][X_AXIS] - curve_.control_[0][X_AXIS];
+  Real clip_h = clip_ratio * b <? clip_height;
+  Real begin_h = curve_.control_[1][Y_AXIS] - curve_.control_[0][Y_AXIS];
+  Real end_h = curve_.control_[2][Y_AXIS] - curve_.control_[3][Y_AXIS];
+  Real begin_dy = 0 >? begin_h - clip_h;
+  Real end_dy = 0 >? end_h - clip_h;
+  
+  Real pi = M_PI;
+  Real begin_alpha = (curve_.control_[1] - curve_.control_[0]).arg () + dir_ * alpha_;
+  Real end_alpha = pi -  (curve_.control_[2] - curve_.control_[3]).arg () - dir_  * alpha_;
+
+  Real max_alpha = clip_angle / 90 * pi / 2;
+  if ((begin_dy < 0) && (end_dy < 0)
+    && (begin_alpha < max_alpha) && (end_alpha < max_alpha))
+    return false;
+
+  transform_back ();
+
+  if ((begin_dy > 0) || (end_dy > 0))
+    {
+      Real dy = (begin_dy + end_dy) / 4;
+      dy *= cos (alpha_);
+      encompass_[0][Y_AXIS] += dir_ * dy;
+      encompass_.top ()[Y_AXIS] += dir_ * dy;
+    }
+  else
+    {
+      //ugh
+      Real c = 0.4;
+      if (begin_alpha >= max_alpha)
+       begin_dy = 0 >? c * begin_alpha / max_alpha * begin_h;
+      if (end_alpha >= max_alpha)
+       end_dy = 0 >? c * end_alpha / max_alpha * end_h;
+
+      encompass_[0][Y_AXIS] += dir_ * begin_dy;
+      encompass_.top ()[Y_AXIS] += dir_ * end_dy;
+
+      Offset delta = encompass_.top () - encompass_[0];
+      alpha_ = delta.arg ();
+    }
+
+  to_canonic_form ();
+
+  return true;
+}
+#endif
+
+
index 951235525f1e89bfb73d1e2731d00206680e0cb9..4393de2def4b7392a23383329a6505d1062d4733 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "dimension-cache.hh"
 #include "span-bar.hh"
index c25121169326e3e682d7d94b6fc41d3d4468d0ab..98782a58da259b81111eb6243e6b2a769c8d3963 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "span-bar.hh"
index 1af6d212831ccf819ba9697a3862cbac99993b09..77d35356b6f9d939355d35e000470939e32e4274 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
index 38d1f6fa8dc26853ff57f47980c728e81c179d80..10b63d8645ba66657db5e525767c5557302d698d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
index 148ce368d54a4045d6537a3b1b08cd8c48bd90dd..0ffb6111e8e00eaa1d5673f32a1c24a3a5c0c591 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "staff-margin-engraver.hh"
index f00bb39f52b58dea23dbc5b0c0a1f07d934e189d..a91d2170c450b7d6b449b29fd7e8b1b78e82d883 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "staff-performer.hh"
index 6c8787c29928be8a29c4fa43c8984673b38094f2..03999e46f6a1f75b95b0ed60dfd741e6b542fcc3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "staff-symbol.hh"
index d7d639fcd95a7995f6ba082fee318e8dc7c42581..d08cee919edb108f27a0c9188636c166754fd9d6 100644 (file)
@@ -99,7 +99,7 @@ Staff_symbol_referencer_interface::callback (Dimension_cache const * c)
   Real off =0.0;
   if (gh_number_p (pos))
     {
-      Real space = staff_symbol_referencer_interface (sc).staff_space ();
+      Real space = staff_symbol_referencer (sc).staff_space ();
       off = gh_scm2double (pos) * space/2.0;
     }
   sc->set_elt_property ("staff-position", gh_double2scm (0.0));
@@ -133,7 +133,7 @@ Staff_symbol_referencer_interface::set_position (Real p)
 }
 
 Staff_symbol_referencer_interface
-staff_symbol_referencer_interface (Score_element const*e)
+staff_symbol_referencer (Score_element const*e)
 {
   return e;                    // gee, I'm so smart!
 }
index 75a3f5a2a54dc41387b302d5b6b713ad29d3d4bc..10d7927201b4aaffa53b71754734aaf6487e9cb6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "staff-symbol.hh"
 #include "lookup.hh"
index c5e84f734df68bb797a908a11ac92662baf16f52..91a679eca6e10dedb2e07f167458cefe6c3907a3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "staff-symbol-referencer.hh"
index 1ca152c2754b3d2687ea8e712e0ba17f5f733ccd..57b35d875e12b6e944b181f016a6bbac47c7403b 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 18889df2d9723ec02c0a6085d5c197c5e0fcc5a8..2061caf1c2d2e0db5d20984b43b6107c298f8d1f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
     Jan Nieuwenhuizen <janneke@gnu.org>
 
   TODO: This is way too hairy
@@ -63,8 +63,8 @@ Stem::head_positions () const
   
   Drul_array<Note_head*> e (extremal_heads ());
 
-  return Interval (staff_symbol_referencer_interface (e[DOWN]).position_f (),
-                  staff_symbol_referencer_interface( e[UP]).position_f ()); 
+  return Interval (staff_symbol_referencer (e[DOWN]).position_f (),
+                  staff_symbol_referencer( e[UP]).position_f ()); 
 }
 
 
@@ -457,9 +457,7 @@ Stem::do_brew_molecule_p () const
   Interval stem_y(y1,y2);
   stem_y.unite (Interval (y2,y1));
 
-  Real dy = staff_symbol_referencer_interface (this)
-    .staff_space ()/2.0;
-
+  Real dy = staff_symbol_referencer (this).staff_space ()/2.0;
   Real head_wid = 0;
   if (support_head ())
     head_wid = support_head ()->extent (X_AXIS).length ();
index dee963dedd196381efb0bb04d981e5d88767f01c..c46d963f2111024c4bdfe7e667960768e5afc04b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "super-element.hh"
index 2a6a8c9e3107482f10a9de3d088e3bea797c838b..476184e6cb08cb4b171094d451069d4fd2054c03 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "swallow-engraver.hh"
 
index 99c9ec54b98bbaca689b0ff63c0a4a18c9cd93a6..7cafeaf9ce2974fd9cc6bab064a31009a5b90c43 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "swallow-perf.hh"
index 22928dedc2b1f5b5cd8cbf04c2fed0bef265f31f..a61b8b8721ad64ee77c1a58e950268920aec6793 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <limits.h>
index bb9f4ae7626435738afedefe6f25f869b71a9236..3463d3e8e4d65483e46e46ead1f4c68ced508c98 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "tempo-performer.hh"
index de0a4bb94166e6a6e36ca32af6f02cb1b7d1756d..6d23595fe483c5329409ea6ce12249c556900978 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "dimension-cache.hh"
index d51a1363852da12891b018dff849c01f66d125cb..034173e7c5688a18c6fe3d292b99340a9b91f0cd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index a46d2a8dab612c2da75b984bd49d454c5c910cd0..7871dede08e4a7cc418446d4b7a6cee5d3bfa804 100644 (file)
@@ -26,8 +26,14 @@ Tex_font_char_metric::Tex_font_char_metric ()
 {
   exists_b_ = false;
   code_ = 0;;
-  width_ = height_ = depth_ = italic_correction_ = 0;
-  width_fix_ = height_fix_ = depth_fix_ = italic_correction_fix_ = 0;
+  width_ = 0;
+  height_ = 0;
+  depth_ = 0;
+  italic_correction_ = 0;
+  width_fix_ = 0;
+  height_fix_ = 0;
+  depth_fix_ = 0;
+  italic_correction_fix_ = 0;
 }
 
 #define APPEND_CHAR_METRIC_ELT(k)  outstr += to_str (#k) + " "  + to_str (k ## _)  + "; "
index 0948237b0e152886cb2bc16c6ed77e7d9d7215c5..29f662c5f00eb4c9b65b86da5fe1b8d12ed6efe9 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 1743da7314bca98a4b43d51d51f03c94a7ae7436..0ae13646c3bcf604ac51fd18b054884c3d526c00 100644 (file)
@@ -3,16 +3,20 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+#include "lookup.hh"
 #include "paper-def.hh"
 #include "tie.hh"
 #include "note-head.hh"
+#include "bezier.hh"
 #include "paper-column.hh"
 #include "debug.hh"
 #include "staff-symbol-referencer.hh"
 #include "directional-element-interface.hh"
+#include "molecule.hh"
+#include "bezier-bow.hh"
 
 void
 Tie::set_head (Direction d, Item * head_l)
@@ -27,6 +31,9 @@ Tie::set_head (Direction d, Item * head_l)
 Tie::Tie()
 {
   set_elt_property ("heads", gh_cons (SCM_EOL, SCM_EOL));
+  dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0;
+  dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
+
 }
 
 Note_head* 
@@ -212,3 +219,136 @@ Tie::get_rods () const
   return a;
 }
 
+
+
+
+Molecule*
+Tie::do_brew_molecule_p () const
+{
+  Real thick = paper_l ()->get_var ("slur_thickness");
+  Bezier one = get_curve ();
+
+  Molecule a;
+  SCM d =  get_elt_property ("dashed");
+  if (gh_number_p (d))
+    a = lookup_l ()->dashed_slur (one, thick, gh_scm2int (d));
+  else
+    a = lookup_l ()->slur (one, directional_element (this).get () * thick, thick);
+  
+  return new Molecule (a); 
+}
+
+
+
+Bezier
+Tie::get_curve () const
+{
+  Bezier_bow b (get_encompass_offset_arr (), directional_element (this).get ());
+
+  b.ratio_ = paper_l ()->get_var ("slur_ratio");
+  b.height_limit_ = paper_l ()->get_var ("slur_height_limit");
+  b.rc_factor_ = paper_l ()->get_var ("slur_rc_factor");
+
+  b.calculate ();
+  return b.get_curve ();
+}
+
+#if 0
+
+/*
+  TODO: FIXME.
+ */
+
+/*
+  Clipping
+
+  This function tries to address two issues:
+    * the tangents of the slur should always point inwards 
+      in the actual slur, i.e.  *after rotating back*.
+
+    * slurs shouldn't be too high 
+      let's try : h <= 1.2 b && h <= 3 staffheight?
+
+  We could calculate the tangent of the bezier curve from
+  both ends going inward, and clip the slur at the point
+  where the tangent (after rotation) points up (or inward
+  with a certain maximum angle).
+  
+  However, we assume that real clipping is not the best
+  answer.  We expect that moving the outer control point up 
+  if the slur becomes too high will result in a nicer slur 
+  after recalculation.
+
+  Knowing that the tangent is the line through the first
+  two control points, we'll clip (move the outer control
+  point upwards) too if the tangent points outwards.
+ */
+
+bool
+Bezier_Tie::calc_clipping ()
+{
+  Real clip_height = paper_l_->get_var ("slur_clip_height");
+  Real clip_ratio = paper_l_->get_var ("slur_clip_ratio");
+  Real clip_angle = paper_l_->get_var ("slur_clip_angle");
+
+  Real b = curve_.control_[3][X_AXIS] - curve_.control_[0][X_AXIS];
+  Real clip_h = clip_ratio * b <? clip_height;
+  Real begin_h = curve_.control_[1][Y_AXIS] - curve_.control_[0][Y_AXIS];
+  Real end_h = curve_.control_[2][Y_AXIS] - curve_.control_[3][Y_AXIS];
+  Real begin_dy = 0 >? begin_h - clip_h;
+  Real end_dy = 0 >? end_h - clip_h;
+  
+  Real pi = M_PI;
+  Real begin_alpha = (curve_.control_[1] - curve_.control_[0]).arg () + dir_ * alpha_;
+  Real end_alpha = pi -  (curve_.control_[2] - curve_.control_[3]).arg () - dir_  * alpha_;
+
+  Real max_alpha = clip_angle / 90 * pi / 2;
+  if ((begin_dy < 0) && (end_dy < 0)
+    && (begin_alpha < max_alpha) && (end_alpha < max_alpha))
+    return false;
+
+  transform_back ();
+
+  if ((begin_dy > 0) || (end_dy > 0))
+    {
+      Real dy = (begin_dy + end_dy) / 4;
+      dy *= cos (alpha_);
+      encompass_[0][Y_AXIS] += dir_ * dy;
+      encompass_.top ()[Y_AXIS] += dir_ * dy;
+    }
+  else
+    {
+      //ugh
+      Real c = 0.4;
+      if (begin_alpha >= max_alpha)
+       begin_dy = 0 >? c * begin_alpha / max_alpha * begin_h;
+      if (end_alpha >= max_alpha)
+       end_dy = 0 >? c * end_alpha / max_alpha * end_h;
+
+      encompass_[0][Y_AXIS] += dir_ * begin_dy;
+      encompass_.top ()[Y_AXIS] += dir_ * end_dy;
+
+      Offset delta = encompass_.top () - encompass_[0];
+      alpha_ = delta.arg ();
+    }
+
+  to_canonic_form ();
+
+  return true;
+}
+#endif
+
+
+
+Array<Offset>
+Tie::get_encompass_offset_arr () const
+{
+  Array<Offset> offset_arr;
+  offset_arr.push (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
+  offset_arr.push (Offset (spanner_length () + dx_f_drul_[RIGHT],
+                          dy_f_drul_[RIGHT]));
+                     
+  return offset_arr;
+}
+
+
index b42884bc99322d89031c3a26c73ad2b19cc1ceab..da04bbf30f8fca60d600d66b1ec9e3effe677f93 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 16c38b34d5a7fcf153d4e95dd592b976c2b6b8aa..4aa1d037afec4b4714d95cdce8a83a957f7a5c5c 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index bba35fe2b1d9421f1f3ea7cd4ab034eb03a210e7..965ecbf3c4431f53ef2df6750c7b4a70699bbef9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "time-signature-engraver.hh"
index 9a326de1d1f4d91ddf78b8247903834e9c2b672e..3db298cdc4a513b7a64c1601d3d9c00c5bcd5a28 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "time-signature-performer.hh"
index 456663699e90fffdaa8bfbdba47b429ea479dad0..09e51cf2b00610cd11a76a66d8f3837d2fbfb725 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1996--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index e576f036c9c5fbe742a0e167dbf76e34bd8e270d..feb368ba3665018d8046541c8404f2f926aaf419 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "score-engraver.hh"
index 3879f6963481b9da1206c1466b0d3abaa05c679a..479ed456d43a25e83d7d27bebf756588fed2a1f1 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
index 42e43643490e59a3c354fc2ca8f99d22f484b27a..45f8de630c37dd7901d975f57d68a328febbc19a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translation-property.hh"
index 253a7edb60ca311faff1a9f42859b67fb0d90623..acb9523cc04a75dbe9656057173ba8393808b0e2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
index 6271a01a7fff54ee5542db558fc3bbdf69b630d9..5331074f1f2078d12a9d42499fdb7e509ff64905 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "music-output-def.hh"
index 515a85af9bbba3ea26dabcee6468d4fd5d9474f6..274ef2b4123f3ca2f08c9c2f3ab25e62f9f52f3c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4db446b3f7392ad6f8cbc8a8168f14a8bbdf0153..2547fac08bf8dcfe2429dc0ba57ff084c5de9efe 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index e6fe96b12cdb5f17a93b0a3f828f1e534c713a01..478ad40abd99345b213c8a74459423020e671490 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index ce9afe22432a9ef4b92d0a1553978a3e654f58a0..348db3f89051e4a0d4bf5bf9bcb66c3907fc1c6d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "beam.hh"
@@ -70,13 +70,8 @@ Tuplet_spanner::do_brew_molecule_p () const
 
 
       Real staff_space = paper_l ()->get_var ("interline");
-      
-
       Direction dir = directional_element (this).get ();
-      Real dy = column_arr.top ()->extent (Y_AXIS) [dir]
-           - column_arr[0]->extent (Y_AXIS) [dir];
-      
-
+      Real dy = gh_scm2double (get_elt_property ("delta-y"));
       SCM number = get_elt_property ("text");
       if (gh_string_p (number))
        {
@@ -119,24 +114,63 @@ Tuplet_spanner::do_add_processing ()
       set_bounds (RIGHT, column_arr.top ());  
     }
 }
+
+/*
+  use first -> last note for slope, and then correct for disturbing
+  notes in between.  */
+void
+Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const
+{
+  Link_array<Note_column> column_arr=
+    Group_interface__extract_elements (this, (Note_column*)0, "columns");
+
+  
+  Direction d = directional_element (this).get ();
+  *dy = column_arr.top ()->extent (Y_AXIS) [d]
+    - column_arr[0]->extent (Y_AXIS) [d];
+
+  *offset = - d * infinity_f;
   
+  Real x0 = column_arr[0]->hpos_f ();
+  Real x1 = column_arr.top ()->hpos_f ();
+  for (int i = 0; i < column_arr.size ();  i++)
+    {
+      Real notey = column_arr[i]->extent (Y_AXIS)[d];
+      Real x = column_arr[i]->hpos_f () - x0;
+      Real tuplety =  *dy * x / (x1 -x0);
+
+      if (notey * d > (*offset + tuplety) * d)
+       *offset = notey - tuplety; 
+    }
+}
+
 void
 Tuplet_spanner::do_post_processing ()
 {
+
   Link_array<Note_column> column_arr=
     Group_interface__extract_elements (this, (Note_column*)0, "columns");
-      
+
+  if (!column_arr.size ())
+    {
+      set_elt_property ("transparent", SCM_BOOL_T);
+      set_empty (X_AXIS);
+      set_empty (Y_AXIS);
+    }
 
   Direction d =   directional_element (this).get ();
   if (!d)
     {
       d = UP;
       directional_element (this).set (d);
+
     }
-  
-  if (column_arr.size())
-    translate_axis (column_arr[0]->extent (Y_AXIS)[d], Y_AXIS);
+  Real dy, offset;
+
+  calc_position_and_height (&offset, &dy);
+  set_elt_property ("delta-y", gh_double2scm (dy));
 
+  translate_axis (offset, Y_AXIS);
   
   if (scm_ilength (get_elt_property ("beams")) == 1)
     {
@@ -158,7 +192,7 @@ Tuplet_spanner::get_default_dir () const
   SCM dir_sym =get_elt_property ("dir-forced");
   if (gh_number_p (dir_sym))
     {
-      d= (Direction) gh_scm2int (dir_sym);
+      d= to_dir (dir_sym);
       if (d != CENTER)
        return d;
     }
index 8c33c86f56043c12c00aac684bd787dd703cfd6e..1aa529cd52490b70ca8f9edd4bfdd354f63758c8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "type-swallow-translator.hh"
index 7f047f908eec98142898d4abe7575f7f96befe75..7c99d70ed93d068f63edd2bc7fa89f1f919ab86e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "translator-group.hh"
 #include "axis-group-engraver.hh"
index 15e2fc86979d9ce4fae1a86be3cf3ac2a0ce9f73..9ea8b7a2c7ed547c3b48c25960a6c8ee0caa0c20 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 74265b9e31bf7340cf31291c6299ea71e92bfcd5..5513d2524f623c54e7cf266c37392dbe5b44d3cd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
diff --git a/lilypond-mode.el b/lilypond-mode.el
new file mode 100644 (file)
index 0000000..962659f
--- /dev/null
@@ -0,0 +1,380 @@
+;;; lilypond-mode.el --- Major mode for editing GNU LilyPond music scores
+
+;; Copyright (C) 1992,1993,1994  Tim Peters
+
+;; Author: 1999: Jan Nieuwenhuizen
+;; Author: 1997: Han-Wen Nienhuys
+;; Author: 1995-1996 Barry A. Warsaw
+;;         1992-1994 Tim Peters
+;; Created:       Feb 1992
+;; Version:       0.0
+;; Last Modified: 12SEP97
+;; Keywords: mudela languages music
+
+;; This software is provided as-is, without express or implied
+;; warranty.  Permission to use, copy, modify, distribute or sell this
+;; software, without fee, for any purpose and by any individual or
+;; organization, is hereby granted, provided that the above copyright
+;; notice and this paragraph appear in all copies.
+
+;; Sigh
+
+;; This is a cannabalised version of python-mode.el (HWN)
+;; Added lily-eval-buffer -- jcn
+;;
+;; TODO: 
+;; * lily/ly/lilypond?
+;; * fix lily-keymap 
+;; * mail Tim Peters about silly copyright (notice)?
+;; * syntax
+;;   - should handle block comments too.
+;;   - handle lexer modes (\header, \melodic, \lyric) etc.
+;;   - indentation
+;;   - notenames?
+;;   - fontlock: \melodic \melodic
+
+
+(defconst lily-version "1.3.19"
+  "`lilypond-mode' version number.")
+
+(defconst lily-help-address "hanwen@cs.uu.nl"
+  "Address accepting submission of bug reports.")
+
+(defconst lily-font-lock-keywords
+  (let* ((keywords '("spanrequest" "simultaneous" "sequential" "accepts"
+                    "alternative" "bar" "breathe"
+                    "cadenza" "chordmodifiers" "chords" "clef" "cm" "consists"
+                    "consistsend" "context"
+                    "duration" "font" "grace" "header" "in" "lyrics"
+                    "key" "keysignature" "mark" "musicalpitch"
+                    "time" "times" "midi" "mm" "name" "notenames"
+                    "notes" "partial" "paper" "penalty" "property" "pt"
+                    "relative" "remove" "repeat" "repetitions" "addlyrics"
+                    "scm" "scmfile" "score" "script"
+                    "shape" "skip" "textscript" "tempo" "translator" "transpose"
+                    "type" "version" 
+                    ))
+       (kwregex (mapconcat (lambda (x) (concat "\\\\" x))  keywords "\\|")))
+
+    (list 
+      (concat ".\\(" kwregex "\\)[^a-zA-Z]")
+      (concat "^\\(" kwregex "\\)[^a-zA-Z]")
+      '(".\\(\\\\[a-zA-Z][a-zA-Z]*\\)" 1 font-lock-variable-name-face)
+      '("^[\t ]*\\([a-zA-Z][_a-zA-Z]*\\) *=" 1 font-lock-variable-name-face)     
+    ))
+  "Additional expressions to highlight in Mudela mode.")
+
+;; define a mode-specific abbrev table for those who use such things
+(defvar lilypond-mode-abbrev-table nil
+  "Abbrev table in use in `lilypond-mode' buffers.")
+
+(define-abbrev-table 'lilypond-mode-abbrev-table nil)
+
+(defvar lilypond-mode-hook nil
+  "*Hook called by `lilypond-mode'.")
+
+(defvar lily-mode-syntax-table nil
+  "Syntax table used in `lilypond-mode' buffers.")
+
+;;
+(if lily-mode-syntax-table
+    ()
+  (setq lily-mode-syntax-table (make-syntax-table))
+  (mapcar (function
+          (lambda (x) (modify-syntax-entry
+                       (car x) (cdr x) lily-mode-syntax-table)))
+         '(( ?\( . "." ) ( ?\) . "." )
+           ( ?\[ . "." ) ( ?\] . "." )
+           ( ?\{ . "(}" ) ( ?\} . "){" )
+           ( ?\< . "(>" )( ?\> . ")>") 
+           ( ?\$ . "." ) ( ?\% . "." ) ( ?\& . "." )
+           ( ?\* . "." ) ( ?\+ . "." ) ( ?\- . "." )
+           ( ?\/ . "." )  ( ?\= . "." )
+           ( ?\| . "." ) (?\\ . "\\" )
+           ( ?\_ . "." )       
+           ( ?\' . "w")        
+           ( ?\" . "\"" )
+           ( ?\% . "<")
+           ( ?\n . ">")
+
+; FIXME
+;          ( ?%  .  ". 124b" )
+;          ( ?{  .  ". 23" )
+           ))
+
+  )    
+
+(defconst lily-imenu-generic-re "^\\([a-zA-Z_][a-zA-Z0-9_]*\\) *="
+  "Regexp matching Identifier definitions.")
+
+;; Sadly we need this for a macro in Emacs 19.
+(eval-when-compile
+  ;; Imenu isn't used in XEmacs, so just ignore load errors.
+  (condition-case ()
+      (require 'imenu)
+    (error nil)))
+
+(defvar lily-imenu-generic-expression
+  (list (list nil lily-imenu-generic-re 1))
+  "Expression for imenu")
+
+
+;;; we're using some handy compile commands
+(require 'compile)
+
+(defcustom lily-command "lilypond"
+  "* LilyPond executable."
+  :type 'string
+  :group 'lily)
+
+(defcustom lily-parameters ""
+  "*."
+  :type 'string
+  :group 'lily)
+
+(defvar lily-regexp-alist
+  '(("\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 2))
+  "Regexp used to match LilyPond errors.  See `compilation-error-regexp-alist'.")
+
+(defcustom lily-tex-command "tex"
+  "*."
+  :type 'string
+  :group 'lily)
+
+(defcustom lily-xdvi-command "xdvi"
+  "*."
+  :type 'string
+  :group 'lily)
+
+(defun lily-compile-file (command parameters file)
+  ;; Setting process-setup-function makes exit-message-function work
+  ;; even when async processes aren't supported.
+  (let ((command-args (concat command " " parameters " " file)))
+       (compile-internal command-args "No more errors" "LilyPond")))
+
+;; do we still need this, now that we're using compile-internal?
+(defun lily-save-buffer ()
+  (if (buffer-modified-p) (save-buffer)))
+
+;;; return (dir base ext)
+(defun split-file-name (name)
+  (let* ((i (string-match "[^/]*$" name))
+        (dir (if (> i 0) (substring name 0 i) "./"))
+        (file (substring name i (length name)))
+        (i (string-match "[^.]*$" file)))
+    (if (and
+        (> i 0)
+        (< i (length file)))
+       (list dir (substring file 0 (- i 1)) (substring file i (length file)))
+      (list dir file ""))))
+
+;;;###autoload
+(defun lily-eval-buffer ()
+  "Run LilyPond on buffer."
+  (interactive)
+  (let ((buffer (buffer-name)))
+    (if buffer-file-name
+       (progn
+         (lily-save-buffer)
+         (lily-compile-file lily-command lily-parameters buffer))
+      (progn
+       (error "Buffer %s is not associated with a file" buffer)
+       (lily-eval-region (min-point) (max-point))))))
+
+;;;###autoload
+(defun lily-eval-region (start end)
+  "Run LilyPond on region."
+  (interactive "r")
+  ;;  (message "saving current buffer to temporary file ...")
+  ;;  (write-file tmp-file-with-directory)
+  ;;(lily-compile-file lily-command "--init=init.fly" "-")
+  (let ((basename "emacs-lily"))
+    (write-region start end (concat basename ".fly") nil 'nomsg)
+    (lily-compile-file lily-command lily-parameters basename)))
+
+(defun lily-running ()
+  (let ((process (get-process "lilypond")))
+  (and process
+       (eq (process-status process) 'run))))
+
+(defun lily-tex-file (basename)
+  (call-process lily-tex-command nil t nil basename))
+
+(defun lily-xdvi-file (basename)
+  (let ((outbuf (get-buffer-create "*lily-xdvi*"))
+       (name "xdvi")
+       (command (concat lily-xdvi-command " " basename)))
+    (if (get-process "xdvi")
+       ;; Don't open new xdvi window, but force redisplay
+       ;; We could make this an option.
+       (signal-process (process-id (get-process "xdvi")) 'SIGUSR1)
+      (if (fboundp 'start-process)
+         (let* ((process-environment (cons "EMACS=t" process-environment))
+                (proc (start-process-shell-command name outbuf command)))
+           ;;(set-process-sentinel proc 'compilation-sentinel)
+           ;;(set-process-filter proc 'compilation-filter)
+           (set-marker (process-mark proc) (point) outbuf))
+       ;;(setq compilation-in-progress (cons proc compilation-in-progress)))
+       
+       ;; No asynchronous processes available.
+       (message "Executing `%s'..." command)
+       ;; Fake modeline display as if `start-process' were run.
+       (setq mode-line-process ":run")
+       (force-mode-line-update)
+       (sit-for 0)                     ; Force redisplay
+      (call-process shell-file-name nil outbuf nil "-c" command)
+      (message "Executing `%s'...done" command)))))
+      
+
+;;;###autoload
+(defun lily-xdvi-buffer ()
+  "Run LilyPond, TeX and Xdvi on buffer."
+  (interactive)
+
+  (let* ((split (split-file-name buffer-file-name))
+        (dir (car split))
+        (base (cadr split)))
+
+    ;; we don't really need this...
+    (let ((tex (concat dir base ".tex"))
+         (dvi (concat dir base ".dvi")))
+      (if (file-exists-p tex) (delete-file tex))
+      (if (file-exists-p dvi) (delete-file dvi)))
+
+    (lily-eval-buffer)
+    (set-buffer "*lilypond*")
+    
+    ;;(setq default-directory dir)
+    (while (lily-running)
+      (continue-process (get-process "lilypond")))
+    (sit-for 0)                        ; Force redisplay
+    
+    (if (= 0 (process-exit-status (get-process "lilypond")))
+       (progn
+         (if (= 0 (lily-tex-file base))
+             (lily-xdvi-file base))))))
+  
+;;;###autoload
+(defun lily-xdvi-region (start end)
+  "Run LilyPond, TeX and Xdvi on region."
+  (interactive "r")
+
+  (let ((dir default-directory)
+       (base "emacs-lily"))
+
+    ;; we don't really need this...
+    (let ((tex (concat dir base ".tex"))
+         (dvi (concat dir base ".dvi")))
+      (if (file-exists-p tex) (delete-file tex))
+      (if (file-exists-p dvi) (delete-file dvi)))
+    
+    (lily-eval-region start end)
+    (set-buffer "*lilypond*")
+    
+    ;;(setq default-directory dir)
+    (while (lily-running)
+      (continue-process (get-process "lilypond")))
+    (sit-for 0)                        ; Force redisplay
+    
+    (if (= 0 (process-exit-status (get-process "lilypond")))
+       (progn
+         (if (= 0 (lily-tex-file base))
+             (lily-xdvi-file base))))))
+
+;;;###autoload
+(defun lily-kill-job ()
+  "Kill the currently running LilyPond job."
+  (interactive)
+  (quit-process (get-process "lilypond") t))
+
+;; hmm
+;;  (kill-process (get-process "xdvi") t)
+
+(defvar lily-mode-map ()
+  "Keymap used in `lilypond-mode' buffers.")
+
+(if lily-mode-map
+    ()
+  (setq lily-mode-map (make-sparse-keymap))
+  ;; this doesn't work, here
+  ;; I would very much like to have [f9], globally defined as 'compile,
+  ;; being overidden to 'lily-eval-buffer for LilyPond buffers
+  (define-key lily-mode-map [C-f9] 'lily-eval-buffer)
+  ;; urg
+  ;; add to .emacs:
+  ;; (global-set-key [C-f9] 'lily-eval-buffer)
+  ) 
+
+(defun lilypond-mode ()
+  "Major mode for editing Mudela files."
+  (interactive)
+  ;; set up local variables
+  (kill-all-local-variables)
+
+  (make-local-variable 'font-lock-defaults)
+  (setq font-lock-defaults '(lily-font-lock-keywords))
+
+  (make-local-variable 'paragraph-separate)
+  (setq paragraph-separate "^[ \t]*$")
+
+  (make-local-variable 'paragraph-start)
+  (setq        paragraph-start "^[ \t]*$")
+
+  (make-local-variable 'comment-start)
+  (setq comment-start "%")
+
+  (make-local-variable 'comment-start-skip)
+  (setq comment-start-skip "%{? *")
+
+  (make-local-variable 'comment-end)
+  (setq comment-end "\n")
+
+  (make-local-variable 'block-comment-start)
+  (setq block-comment-start "%{")
+
+  (make-local-variable 'block-comment-end)  
+  (setq block-comment-end   "%}")
+
+  ;; (make-local-variable 'comment-column)
+  ;; (setq comment-column 40)
+
+  (make-local-variable 'imenu-generic-expression)
+  (setq imenu-generic-expression lily-imenu-generic-expression)
+
+  (make-local-variable 'indent-line-function)
+  (setq indent-line-function 'indent-relative-maybe)
+  ;;
+  (set-syntax-table lily-mode-syntax-table)
+  (setq major-mode 'lilypond-mode)
+  (setq mode-name "Mudela")
+  (setq local-abbrev-table lilypond-mode-abbrev-table)
+  (use-local-map lily-mode-map)
+
+  ;; run the mode hook. lily-mode-hook use is deprecated
+  (run-hooks 'lilypond-mode-hook))
+
+
+(defun lily-keep-region-active ()
+  ;; do whatever is necessary to keep the region active in XEmacs.
+  ;; Ignore byte-compiler warnings you might see.  Also note that
+  ;; FSF's Emacs 19 does it differently and doesn't its policy doesn't
+  ;; require us to take explicit action.
+  (and (boundp 'zmacs-region-stays)
+       (setq zmacs-region-stays t)))
+
+
+;;(defun lily-comment-region (beg end &optional arg)
+;;  "Like `comment-region' but uses double hash (`#') comment starter."
+;;  (interactive "r\nP")
+;;  (let ((comment-start lily-block-comment-prefix))
+;;    (comment-region beg end arg)))
+\f
+(defun lily-version ()
+  "Echo the current version of `lilypond-mode' in the minibuffer."
+  (interactive)
+  (message "Using `lilypond-mode' version %s" lily-version)
+  (lily-keep-region-active))
+
+(provide 'lilypond-mode)
+;;; lilypond-mode.el ends here
index 2ba90d28d87872904ee970420b5678325d93b7dd..2ac7cdecbedf50199a838555fade12b804704f8a 100644 (file)
@@ -1,6 +1,6 @@
 % -*- Fundamental -*-
 
-accreg_dot_size# := .5interline#;
+accreg_dot_size# := .5staff_space#;
 
 % FIXME
 % 'strange turning path' in accSB and others:
@@ -11,7 +11,7 @@ accreg_linethickness# := 1.3stafflinethickness#;
 % This dimention is the same on all registersymbols.
 % The different symbols should calculate their other
 % dimensions from this and accreg_dot_size
-accreg_lh# := 1.0interline#;
+accreg_lh# := 1.0staff_space#;
 
 define_pixels(accreg_dot_size, accreg_linethickness, accreg_lh);
 pen accreg_pen;
@@ -133,10 +133,10 @@ enddef;
 def def_some_vars =
        save hs, mb, mt, thin, thick, height, width, cOne, cTwo;
        width = .8staffsize;
-       height = 2.4interline;
-       thin = 0.05interline;
-       thick = 0.2interline;
-       hs = 0.4interline;
+       height = 2.4staff_space;
+       thin = 0.05staff_space;
+       thick = 0.2staff_space;
+       hs = 0.4staff_space;
        mb = .53;
        mt = .47;       
        cOne = 0.65;
@@ -144,7 +144,7 @@ def def_some_vars =
 enddef;
 
 fet_beginchar("accSB", "accSB", "accSB")
-       set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
+       set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
        def_some_vars;
        def_B(.35width, .7height);
 
@@ -169,11 +169,11 @@ fet_beginchar("accSB", "accSB", "accSB")
        currentpicture := currentpicture shifted (-.40width, -.85height);
        draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
                --(-.5width, -height)--(-.5width, 0);
-       currentpicture := currentpicture shifted (0, 2.4interline);
+       currentpicture := currentpicture shifted (0, 2.4staff_space);
 fet_endchar;
 
 fet_beginchar("accBB", "accBB", "accBB")
-       set_char_box(.4staffsize#, .4staffsize#, 0, 2.4interline#);
+       set_char_box(.4staffsize#, .4staffsize#, 0, 2.4staff_space#);
        def_some_vars;
        def_B(.35width, .7height);
 
@@ -192,17 +192,17 @@ fet_beginchar("accBB", "accBB", "accBB")
        currentpicture := currentpicture shifted(-.40width, -.85height);
        draw (-.5width, 0)--(.5width, 0)--(.5width, -height)
                --(-.5width, -height)--(-.5width, 0);
-       currentpicture := currentpicture shifted (0, 2.4interline);
+       currentpicture := currentpicture shifted (0, 2.4staff_space);
 fet_endchar;
 
 
 fet_beginchar("accOldEE", "accOldEE", "accOldEE")
-       set_char_box(interline#, interline#, 0, 2interline#);
+       set_char_box(staff_space#, staff_space#, 0, 2staff_space#);
        show w;
        show h;
-       r = interline;
-       lr = .3interline;
-       ir = .6interline;
+       r = staff_space;
+       lr = .3staff_space;
+       ir = .6staff_space;
        pickup accreg_pen;
        draw fullcircle scaled 2r;
        pickup penrazor;
@@ -221,9 +221,9 @@ fet_beginchar("accOldEE", "accOldEE", "accOldEE")
 fet_endchar;
 
 fet_beginchar("accOldEES", "accOldEES", "accOldEES")
-       set_char_box(interline#, interline#, 0, 2interline#);
+       set_char_box(staff_space#, staff_space#, 0, 2staff_space#);
        save r, shy;
-       r = interline;
+       r = staff_space;
        shy = .3;
        pickup accreg_pen;
        draw fullcircle scaled 2r;
index 28aaa545d5997604239ffddbeb56a096384afa24..246f599bfe3e29c6be75e60e1354b28aea5dafe5 100644 (file)
@@ -99,12 +99,12 @@ fet_beginchar("8th Flag (up)", "u3", "eighthflag")
                hip_depth_ratio, hip_width,
                foot_depth, foot_width_ratio;
 
-       flare# = 1.0 interline#;
+       flare# = 1.0 staff_space#;
        hip_depth_ratio = .72; 
        foot_width_ratio = .8;
        hip_width# = upflag_width# - hip_thickness#/2;
 
-       foot_depth# =  3 interline#;
+       foot_depth# =  3 staff_space#;
 
        set_char_box(stemthickness# /2, hip_width# 
                + stemthickness#/2 + right_upflag_space#, 
@@ -117,7 +117,7 @@ fet_beginchar("8th Flag (up)", "u3", "eighthflag")
                hip_depth_ratio, foot_width_ratio, hip_thickness, foot_thickness);
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
 fet_endchar;
 
 fet_beginchar("16th Flag (up)", "u4", "sixteenthflag")
@@ -125,10 +125,10 @@ fet_beginchar("16th Flag (up)", "u4", "sixteenthflag")
                hip_depth_ratio, hip_width,
                foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
-       total_depth# = 3.5 interline#;
+       total_depth# = 3.5 staff_space#;
        flag_count = 2;
-       flare# = .85 interline#;
-       flagspace# = .85 interline#;    
+       flare# = .85 staff_space#;
+       flagspace# = .85 staff_space#;  
        hip_depth_ratio = .72 ;
        hip_width# = upflag_width# - hip_thickness#/2;
        flagspace# + foot_depth# = total_depth#;
@@ -150,7 +150,7 @@ fet_beginchar("16th Flag (up)", "u4", "sixteenthflag")
                .97, 1.00, 1.25, hip_thickness, foot_thickness);  
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
 fet_endchar;
 
 
@@ -160,9 +160,9 @@ fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag")
                foot_depth, foot_width_ratio;
        save flagspace, total_depth, flag_count;
        flag_count = 3;
-       total_depth#=4.25 interline#;
-       flare# = .85 interline#;
-       flagspace# = .87 interline#;    
+       total_depth#=4.25 staff_space#;
+       flare# = .85 staff_space#;
+       flagspace# = .87 staff_space#;  
        hip_depth_ratio = .72 ;
        hip_width# = upflag_width# - hip_thickness#/2;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
@@ -188,7 +188,7 @@ fet_beginchar("32nd Flag (up)", "u5", "thirtysecondflag")
                .95, 1.05, 1.25, hip_thickness, foot_thickness);  
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
 fet_endchar;
 
 fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag")
@@ -198,11 +198,11 @@ fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag")
        save flagspace, total_depth, flag_count;
        
        flag_count = 4;
-       flare# = .85 interline#;
-       flagspace# = .9 interline#;     
+       flare# = .85 staff_space#;
+       flagspace# = .9 staff_space#;   
        hip_depth_ratio = .72 ;
        hip_width# = upflag_width# - hip_thickness#/2;
-       total_depth# = 5.25 interline#;
+       total_depth# = 5.25 staff_space#;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
 
        foot_width_ratio = .8;
@@ -227,7 +227,7 @@ fet_beginchar("64th Flag (up)", "u6", "sixtyfourthflag")
        add_flag(flagspace, flare,
                .95, 1.05, 1.25, hip_thickness, foot_thickness);  
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
 fet_endchar;
 
 fet_beginchar("grace dash (up)", "ugrace", "gracedash")
@@ -235,11 +235,11 @@ fet_beginchar("grace dash (up)", "ugrace", "gracedash")
                hip_depth_ratio, hip_width,
                foot_depth;
 
-       flare# = 1.0 interline#;
+       flare# = 1.0 staff_space#;
        hip_depth_ratio = .72; 
        hip_width# = upflag_width# - hip_thickness#/2;
 
-       foot_depth# =  3 interline#;
+       foot_depth# =  3 staff_space#;
 
        define_pixels(flare, hip_width, hip_thickness,
                foot_depth, foot_thickness);
@@ -260,11 +260,11 @@ fet_beginchar("8th (down)", "d3", "deighthflag")
        save flagspace, total_depth, flag_count;
        
        flag_count = 1;
-       flare# = .99 interline#;
-       flagspace# = .9 interline#;     
+       flare# = .99 staff_space#;
+       flagspace# = .9 staff_space#;   
        hip_depth_ratio = .72 ;
        hip_width# = downflag_width# - hip_thickness#/2;
-       total_depth# = 2.85 interline#;
+       total_depth# = 2.85 staff_space#;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
 
        foot_width_ratio = .8;
@@ -283,7 +283,7 @@ fet_beginchar("8th (down)", "d3", "deighthflag")
 
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
        y_mirror_char;
 fet_endchar;
 
@@ -294,11 +294,11 @@ fet_beginchar("16th (down)", "d4", "dsixteenthflag")
        save flagspace, total_depth, flag_count;
        
        flag_count = 2;
-       flare# = .8 interline#;
-       flagspace# = .9 interline#;     
+       flare# = .8 staff_space#;
+       flagspace# = .9 staff_space#;   
        hip_depth_ratio = .85 ;
        hip_width# = downflag_width# - hip_thickness#/2;
-       total_depth# = 3.0 interline#;
+       total_depth# = 3.0 staff_space#;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
 
        foot_width_ratio = .95;
@@ -320,7 +320,7 @@ fet_beginchar("16th (down)", "d4", "dsixteenthflag")
        
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
        y_mirror_char;
 fet_endchar;
 
@@ -331,11 +331,11 @@ fet_beginchar("32nd (down)", "d5", "dthirtysecondflag")
        save flagspace, total_depth, flag_count;
        
        flag_count = 3;
-       flare# = .84 interline#;
-       flagspace# = .9 interline#;     
+       flare# = .84 staff_space#;
+       flagspace# = .9 staff_space#;   
        hip_depth_ratio = .85 ;
        hip_width# = downflag_width# - hip_thickness#/2;
-       total_depth# = 3.85 interline#;
+       total_depth# = 3.85 staff_space#;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
 
        foot_width_ratio = .95;
@@ -360,7 +360,7 @@ fet_beginchar("32nd (down)", "d5", "dthirtysecondflag")
        
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
        y_mirror_char;
 fet_endchar;
 fet_beginchar("64th (down)", "d6", "dsixtyfourthflag")
@@ -370,11 +370,11 @@ fet_beginchar("64th (down)", "d6", "dsixtyfourthflag")
        save flagspace, total_depth, flag_count;
        
        flag_count = 4;
-       flare# = .8 interline#;
-       flagspace# = .9 interline#;     
+       flare# = .8 staff_space#;
+       flagspace# = .9 staff_space#;   
        hip_depth_ratio = .85 ;
        hip_width# = downflag_width# - hip_thickness#/2;
-       total_depth# = 4.35 interline#;
+       total_depth# = 4.35 staff_space#;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
 
        foot_width_ratio = .98;
@@ -401,7 +401,7 @@ fet_beginchar("64th (down)", "d6", "dsixtyfourthflag")
        
 
        pickup pencircle scaled stemthickness;
-       draw (0, 0) .. (0,-2 interline);
+       draw (0, 0) .. (0,-2 staff_space);
        y_mirror_char;
 fet_endchar;
 
@@ -411,11 +411,11 @@ fet_beginchar("grace dash (down)", "dgrace", "dgracedash")
        save flagspace, total_depth, flag_count;
        
        flag_count = 1;
-       flare# = .99 interline#;
-       flagspace# = .9 interline#;     
+       flare# = .99 staff_space#;
+       flagspace# = .9 staff_space#;   
        hip_depth_ratio = .72 ;
        hip_width# = downflag_width# - hip_thickness#/2;
-       total_depth# = 2.85 interline#;
+       total_depth# = 2.85 staff_space#;
        (flag_count-1) * flagspace# + foot_depth# = total_depth#;
 
        foot_width_ratio = .8;
index 7f8558f69b835407d55aabf2ae3a74b4cf993430..c51128173ae1c4726c8b3c3b4d8475db288a9170 100644 (file)
@@ -15,7 +15,7 @@ def draw_brace( expr height_sharp, width_sharp) =
  
        define_pixels (height, width);
        thin = 2 stafflinethickness;
-       thick = .5 interline;
+       thick = .5 staff_space;
        
        z2 = .5 [z1, z3];
        y3 = y1 + height/2;
@@ -40,5 +40,5 @@ enddef;
 
 
 for h :=  2 staffsize#  step 1 pt# until (7 * staffsize#):
-       draw_brace(h, interline# );
+       draw_brace(h, staff_space# );
 endfor
index fdeebb84038eedcc7cf763c4dd7511a4b87ebf1f..efb52eb290cf318017ce98810cd70b6de25b14b7 100644 (file)
@@ -18,7 +18,7 @@ numeric black_notehead_width;
 
 fet_begingroup("noteheads");
 
-noteheight#:=interline#+ (1 + overdone_heads) *stafflinethickness#;
+noteheight#:=staff_space#+ (1 + overdone_heads) *stafflinethickness#;
 define_pixels(noteheight);
 
 
@@ -30,7 +30,7 @@ define_pixels(noteheight);
 %
 %
 %
-brevis_wid# := 2 interline#;
+brevis_wid# := 2 staff_space#;
 
 def draw_brevis(expr brevwid) =
        save beamheight, head_width;
@@ -84,7 +84,7 @@ def draw_longa (expr wid) =
        x7r = head_width;
        y7 = y5;
 %      z7 = z5;
-       z6 - z7 = (stem_width/2, -interline);
+       z6 - z7 = (stem_width/2, -staff_space);
        theta = angle(z6-z7)+ 90;
        penpos7(stem_width, theta);
        penpos6(1.2 stem_width, theta);
@@ -149,15 +149,15 @@ def draw_mensural_open_head (expr wid)=
 enddef;
 
 fet_beginchar("Mensural open head","0mensural","mensuralminimhead")
-       draw_mensural_open_head (interline#);
+       draw_mensural_open_head (staff_space#);
 fet_endchar;
 
 fet_beginchar("Mensural open head","1mensural","mensuralsemiminimhead")
-       draw_mensural_open_head (interline#);
+       draw_mensural_open_head (staff_space#);
 fet_endchar;
 
 fet_beginchar("Mensural black head","2mensural","fusahead")
-       draw_mensural_black_head (interline#);
+       draw_mensural_black_head (staff_space#);
 fet_endchar;
 
 
index 96a9249eb46f8b527d9aed03fc72517c72e818f9..538b006eb00d286a6d6c61fc13b33dbe9a2ff840 100644 (file)
@@ -13,7 +13,7 @@ begingroup
 thick#:=1/16designsize;
 define_blacker_pixels(thick);
 
-rthin:=1/8*interline;
+rthin:=1/8*staff_space;
 % rthick:=2rthin;
 rthick:=2thick+rthin;
 
@@ -25,10 +25,10 @@ enddef;
 %
 save stem, ball_crook_stem, ball_crook_balldiam, flare;
 
-% stem#:=1/8*interline#;
-stem# = 1/5interline#;
-% flare# = 2/3interline#;
-flare# = 2/3interline# - 1/8stafflinethickness#;
+% stem#:=1/8*staff_space#;
+stem# = 1/5staff_space#;
+% flare# = 2/3staff_space#;
+flare# = 2/3staff_space# - 1/8stafflinethickness#;
 
 define_pixels(stem,flare);
 
@@ -38,8 +38,8 @@ ball_crook_balldiam =flare;
 
 save block_rest_y, block_rest_x;
 
-block_rest_y# = 5/8 interline#;
-block_rest_x# = 3/2 interline#;
+block_rest_y# = 5/8 staff_space#;
+block_rest_x# = 3/2 staff_space#;
 
 define_pixels(block_rest_y, block_rest_x);
 
@@ -90,10 +90,10 @@ fet_endchar;
 
 save breve_rest_y, breve_rest_x;
 
-breve_rest_y# =  interline#;
-breve_rest_x# = 3/5 interline#;
-multi_rest_x# = 2 interline#;
-multi_rest_y# = 1/3 interline#;
+breve_rest_y# =  staff_space#;
+breve_rest_x# = 3/5 staff_space#;
+multi_rest_x# = 2 staff_space#;
+multi_rest_y# = 1/3 staff_space#;
 
 define_pixels(breve_rest_y, breve_rest_x, multi_rest_x, multi_rest_y);
 
@@ -124,12 +124,12 @@ fet_beginchar("Quarter rest","2","quartrest");
 %      draw_staff (-2, 2, 0.0);        
        save alpha, yshift, height;
        alpha:=-50;
-       yshift# = -1.25 interline#;
-       height# = 2.8125 interline#;
+       yshift# = -1.25 staff_space#;
+       height# = 2.8125 staff_space#;
        define_pixels (yshift, height);
 
        
-       set_char_box(0, 27/25interline#,
+       set_char_box(0, 27/25staff_space#,
          -yshift#,
          yshift# + height#);
        
@@ -154,15 +154,15 @@ fet_beginchar("Quarter rest","2","quartrest");
        z13=z2r+1/2rthin*ne+1/2rthin*nw;
 
        y1r = h;
-       x1l=1/3interline;
-       z2r=z1+interline*se;
+       x1l=1/3staff_space;
+       z2r=z1+staff_space*se;
        z3=1/2[z2,z4];
-       x4=3/8interline;
+       x4=3/8staff_space;
        y4= 0;
-       z5=z4l+1.3interline*se;
+       z5=z4l+1.3staff_space*se;
        x6l=x4l;
        y6l=y4r;
-       x7=2/5interline;
+       x7=2/5staff_space;
        y7= -d;
        
        fill z1l{se}..{se}z10..z3l..z11{se}..{se}z5l..z5r{nw}..{nw}z12..z3r..z13{nw}..{nw}z1r.. cycle;
@@ -170,8 +170,8 @@ fet_beginchar("Quarter rest","2","quartrest");
        penlabels(1,2,3,4,5,6,7);
        penlabels(10,11,12,13);
        
-%        3/4 interline# + yshift#,
-%        18/5interline# + yshift#)
+%        3/4 staff_space# + yshift#,
+%        18/5staff_space# + yshift#)
 
        fet_endchar;
 
@@ -182,14 +182,14 @@ enddef;
 fet_beginchar("8th rest","3","eighthrest");
 %      draw_staff (-2, 2, 0.0);
        save yshift, ballcorrection;
-       ballcorrection = 0.005 interline;
+       ballcorrection = 0.005 staff_space;
 
-       yshift# := -1.0 interline#;
+       yshift# := -1.0 staff_space#;
        define_pixels(yshift);
 
 
-       set_char_box(0, 4/3interline#, -yshift#, yshift# +
-                       5/3interline#+7/4stafflinethickness#);
+       set_char_box(0, 4/3staff_space#, -yshift#, yshift# +
+                       5/3staff_space#+7/4stafflinethickness#);
 
        %
        % The curve is like a valley causing less space between
@@ -199,7 +199,7 @@ fet_beginchar("8th rest","3","eighthrest");
 
        x1=w-stem/6;
 
-       y1 = yshift + 1.5 interline + flare/4 + ballcorrection; 
+       y1 = yshift + 1.5 staff_space + flare/4 + ballcorrection; 
        rest_crook (z1,w-stem/6);
        z2-z1=whatever*dir70;
        y2= yshift + stem/2;
@@ -210,29 +210,29 @@ fet_beginchar("8th rest","3","eighthrest");
 fet_beginchar("16th rest","4","sixteenthrest");
 %      draw_staff (-2, 2, 0.0);
        save yshift, ballcorrection;
-       ballcorrection = 0.005 interline;
+       ballcorrection = 0.005 staff_space;
 
-       yshift# := - 2 interline#;
+       yshift# := - 2 staff_space#;
        define_pixels(yshift);
 
        save alpha,cw,h,w, height;
        alpha=74;
-       cw#=7/6interline#;
-       height# =  5/3interline#+interline#+7/4stafflinethickness#;
-       set_char_box(0, cw#+(height#-3/2interline#)/tand(alpha),
+       cw#=7/6staff_space#;
+       height# =  5/3staff_space#+staff_space#+7/4stafflinethickness#;
+       set_char_box(0, cw#+(height#-3/2staff_space#)/tand(alpha),
                -yshift#, height# + yshift#);
 
        define_pixels(cw);
        save x,y;
        x1=w-stem/6;
-       y1 = yshift + 2.5 interline + flare/4 + ballcorrection;
+       y1 = yshift + 2.5 staff_space + flare/4 + ballcorrection;
 
        z2-z1=whatever*dir alpha;
        y2= yshift + stem/2;
        brush(z1,2/3stem,z2,stem);
        rest_crook (z1,cw);
        z3-z1=whatever*dir alpha;
-       y3=y1-interline;
+       y3=y1-staff_space;
        rest_crook (z3,cw);
        penlabels(1,2);
        fet_endchar;
@@ -240,68 +240,68 @@ fet_beginchar("16th rest","4","sixteenthrest");
 fet_beginchar("32th rest","5","thirtysecondrest");
 %      draw_staff (-2, 2, 0.0);
        save yshift, ballcorrection;
-       ballcorrection = 0.005 interline;
+       ballcorrection = 0.005 staff_space;
 
-       yshift# := -2 interline#;
+       yshift# := -2 staff_space#;
        define_pixels(yshift);
 
        save alpha,cw,h;
        alpha=76;
-       cw#=7/6interline#;
-       h#=5/3interline#+2interline#+7/4stafflinethickness#;
+       cw#=7/6staff_space#;
+       h#=5/3staff_space#+2staff_space#+7/4stafflinethickness#;
 
-       set_char_box(0, cw#+(h#-3/2interline#)/tand(alpha),
+       set_char_box(0, cw#+(h#-3/2staff_space#)/tand(alpha),
                -yshift#,yshift# +h#);
        define_pixels(cw);
        save x,y;
        x1=w-stem/6;
-       y1 = yshift + 3.5 interline + flare/4 + ballcorrection;
+       y1 = yshift + 3.5 staff_space + flare/4 + ballcorrection;
 
        z2-z1=whatever*dir alpha;
        y2=stem/2 + yshift;
        brush(z1,2/3stem,z2,stem);
        rest_crook (z1,cw);
        z3-z1=whatever*dir alpha;
-       y3=y1-interline;
+       y3=y1-staff_space;
        rest_crook (z3,cw);
        z4-z1=whatever*dir alpha;
-       y4=y1-2interline;
+       y4=y1-2staff_space;
        rest_crook (z4,cw);
        fet_endchar;
 
 fet_beginchar("64th rest","6","sixtyfourthrest");
 %      draw_staff (-2, 2, 0.0);
        save yshift, ballcorrection;
-       ballcorrection = 0.005 interline;
+       ballcorrection = 0.005 staff_space;
 
-       yshift# := -3 interline#;
+       yshift# := -3 staff_space#;
        define_pixels(yshift);
 
        save alpha,cw,h,w;
        alpha=78;
-       cw#=7/6interline#;
-       h#=5/3interline#+3interline#+7/4stafflinethickness#;
-       w#=cw#+(h#-3/2interline#)/tand(alpha);
+       cw#=7/6staff_space#;
+       h#=5/3staff_space#+3staff_space#+7/4stafflinethickness#;
+       w#=cw#+(h#-3/2staff_space#)/tand(alpha);
        set_char_box(0,w#,-yshift# ,yshift# + h#);
 
        define_pixels(cw);
        save x,y;
        x1=w-stem/6;
 
-       y1 = yshift + 4.5 interline + flare/4 + ballcorrection;
+       y1 = yshift + 4.5 staff_space + flare/4 + ballcorrection;
 
        z2-z1=whatever*dir alpha;
        y2=stem/2 + yshift;
        brush (z1,2/3stem,z2,stem);
        rest_crook (z1,cw);
        z3-z1=whatever*dir alpha;
-       y3=y1-interline;
+       y3=y1-staff_space;
        rest_crook (z3,cw);
        z4-z1=whatever*dir alpha;
-       y4=y1-2interline;
+       y4=y1-2staff_space;
        rest_crook (z4,cw);
        z5-z1=whatever*dir alpha;
-       y5=y1-3interline;
+       y5=y1-3staff_space;
        rest_crook (z5,cw);
 
        fet_endchar;
@@ -309,36 +309,36 @@ fet_beginchar("64th rest","6","sixtyfourthrest");
 fet_beginchar("128th rest","7","hundredtwentyeighthrest"); 
 %      draw_staff (-2, 2, 0.0);
        save yshift, ballcorrection;
-       ballcorrection = 0.005 interline;
+       ballcorrection = 0.005 staff_space;
 
-       yshift# := -3 interline#;
+       yshift# := -3 staff_space#;
        define_pixels(yshift);
        save alpha,cw,h,w;
        alpha=78;
-       cw#=7/6interline#;
-       h#=5/3interline#+4interline#+7/4stafflinethickness#;
-       w#=cw#+(h#-3/2interline#)/tand(alpha);
+       cw#=7/6staff_space#;
+       h#=5/3staff_space#+4staff_space#+7/4stafflinethickness#;
+       w#=cw#+(h#-3/2staff_space#)/tand(alpha);
        set_char_box(0,w#, -yshift#,yshift#  + h#);
        define_pixels(cw);
        save x,y;
        x1=w-stem/6;
-       y1 = yshift + 5.5 interline + flare/4 + ballcorrection;
+       y1 = yshift + 5.5 staff_space + flare/4 + ballcorrection;
 
        z2-z1=whatever*dir alpha;
        y2=stem/2 + yshift;
        brush (z1,2/3stem,z2,stem);
        rest_crook (z1,cw);
        z3-z1=whatever*dir alpha;
-       y3=y1-interline;
+       y3=y1-staff_space;
        rest_crook (z3,cw);
        z4-z1=whatever*dir alpha;
-       y4=y1-2interline;
+       y4=y1-2staff_space;
        rest_crook (z4,cw);
        z5-z1=whatever*dir alpha;
-       y5=y1-3interline;
+       y5=y1-3staff_space;
        rest_crook (z5,cw);
        z6-z1=whatever*dir alpha;
-       y6=y1-4interline;
+       y6=y1-4staff_space;
        rest_crook (z6,cw);
        
        fet_endchar;
@@ -347,7 +347,7 @@ endgroup;
 
 % Rest symbols for mensural notation:
 
-mensrestsize# = .8interline#;
+mensrestsize# = .8staff_space#;
 
 fet_beginchar("Mensural 4th rest","2mensural","minimarest")
        set_char_box(0,mensrestsize#,0,mensrestsize#);
@@ -376,7 +376,7 @@ fet_beginchar("Mensural 8th rest","3mensural","fusarest")
 fet_endchar
 
 fet_beginchar("Mensural 16th rest","4mensural","semifusarest")
-       set_char_box(0,mensrestsize#,0,interline#);
+       set_char_box(0,mensrestsize#,0,staff_space#);
         pickup pencircle scaled 2 stafflinethickness;
        rt x1 = w;
        bot y1 = 0;
index 76bd6bd4c70ae21be9d1eff1c88372d3cb52bc91..72a48313e9b88506383ba86bb8a7ff6104edac16 100644 (file)
@@ -15,7 +15,7 @@ def draw_bracket( expr height_sharp, width_sharp) =
  
        define_pixels (height, width);
        thin = 2 stafflinethickness;
-       thick = .5 interline;
+       thick = .5 staff_space;
        
        pickup pencircle scaled thin;
        lft x1 = 0;
@@ -30,7 +30,7 @@ def draw_bracket( expr height_sharp, width_sharp) =
        bot y4 = y1 - thick + thin/2;
 
        alpha = 50;
-       z5 = z1 + (width, 3/4interline);
+       z5 = z1 + (width, 3/4staff_space);
 
        % need silly z6?
        % strange turning path when invoked via MakeTeXTFM...?
@@ -69,6 +69,6 @@ enddef;
 
 % for h :=  staffsize# step 1 pt# until (1.1 * staffsize#):
 for h :=  staffsize# step 1 pt# until (7 * staffsize#):
-       draw_bracket(h, 2interline# );
+       draw_bracket(h, 2staff_space# );
 endfor
 
index 9ec3c74e8b3a0cbdc823e2b52bfea59e2713f817..3bd3971f456585cbbfe7d93a052ec9534c875801 100644 (file)
@@ -11,7 +11,7 @@
 fet_begingroup("clefs");
 
 %
-% [Ross] says that clefs take 1 interline space on the left and right
+% [Ross] says that clefs take 1 staff_space space on the left and right
 %
 def set_horizontal_spacing =
        save left_space ,right_space;
@@ -24,7 +24,7 @@ enddef;
 % "arrow"
 def draw_c_clef (expr reduction) = 
        save hair, norm, reduced_il, right_edge;
-       reduced_il#=interline#*reduction;
+       reduced_il#=staff_space#*reduction;
        norm#:=2/3reduced_il#;
        hair#:=1/6norm#;
 
@@ -101,7 +101,7 @@ fet_endchar;
 
 def draw_bass_clef(expr exact_center, reduction) = 
        save reduced_il, left_tilt, left_thick, ball_to_right;
-       reduced_il# = interline# * reduction;
+       reduced_il# = staff_space# * reduction;
        
        set_horizontal_spacing;
        ball_to_right# = 2.1 reduced_il#;
@@ -125,7 +125,7 @@ def draw_bass_clef(expr exact_center, reduction) =
        x3l - x1l =  ball_to_right;
        x2 = .5 [x1,x3];
        x3l - x3r = .48 reduced_il;
-       y3l = -0.05 interline;
+       y3l = -0.05 staff_space;
        x4 = x1l - stafflinethickness;
        y4 = -2.2  reduced_il;
        z5 = (x3l +  1/3 reduced_il, .5 reduced_il);
@@ -146,7 +146,7 @@ def draw_bass_clef(expr exact_center, reduction) =
        penlabels(1,2,3,4);
 
        save dot_diam;
-       2 dot_diam = reduction* (interline - stafflinethickness);
+       2 dot_diam = reduction* (staff_space - stafflinethickness);
        pickup pencircle scaled dot_diam;
        draw z5;
        draw z5 yscaled -1;
@@ -158,10 +158,10 @@ fet_beginchar("F clef ", "F", "bassclef")
        if test = 1:
                draw_staff(-3,1);
        fi;
-       draw_bass_clef((.5 interline#, 0), 1.0);
+       draw_bass_clef((.5 staff_space#, 0), 1.0);
 fet_endchar;
 fet_beginchar("F clef (reduced)", "F_change", "cbassclef")
-       draw_bass_clef((.4 interline#, 0),0.8);
+       draw_bass_clef((.4 staff_space#, 0),0.8);
 fet_endchar;
 
 
@@ -189,7 +189,7 @@ def draw_gclef (expr exact_center, reduction)=
        save reduced_il, downstroke_dir, downstroke_angle, hair, center;
        save breapth_factor, inner_thick_end, thinness, thickness, thinnib;
        save inner_start_angle, thinness, thinpen;
-       reduced_il# = interline# * reduction;
+       reduced_il# = staff_space# * reduction;
        define_pixels(reduced_il);
        pair downstroke_dir, center;
 
@@ -302,10 +302,10 @@ fet_beginchar("G clef", "G", "trebleclef")
        if test = 1:
                draw_staff(-1,3);
        fi;
-       draw_gclef((1.7 interline#,0), 1.0);
+       draw_gclef((1.7 staff_space#,0), 1.0);
 fet_endchar;
 fet_beginchar("G clef", "G_change", "ctrebleclef")
-       draw_gclef((1.3 interline#,0), .8);
+       draw_gclef((1.3 staff_space#,0), .8);
 fet_endchar;
 
 fet_endgroup("clefs");
index e0b10ca4479455eaff7a4cde80d1994933d190eb..47e415c70da45a5b36dfeb607bd5b35305389a80 100644 (file)
@@ -20,7 +20,7 @@ enddef;
 def draw_staff(expr first, last, offset)=
        pickup pencircle scaled stafflinethickness;
        for i:= first step 1 until last:
-               draw (- interline, (i + offset) * interline) .. (4 interline,( i+ offset)* interline);
+               draw (- staff_space, (i + offset) * staff_space) .. (4 staff_space,( i+ offset)* staff_space);
        endfor
        enddef;
 
index 6c1ea69a099ab0b845e5d4dbd8766ebefc6d2a68..21b365958f6df4ed5ee2c29d1104e92de9bb18cc 100644 (file)
@@ -1,22 +1,22 @@
 
 stafflines = 5;
 
-interline#:=staffsize#/(stafflines-1);
+staff_space#:=staffsize#/(stafflines-1);
 
 % URG!
-font_x_height  interline# ;
+font_x_height  staff_space# ;
 
 %
 %  [D.K.Roush & J.S.Gourlay] say this should be 0.072
 % We know better
 % generally, the "blackness" of most chars depends on this.
 %
-stafflinethickness#:=0.1 interline#;
+stafflinethickness#:=0.1 staff_space#;
 
 stemthickness# := stafflinethickness#;
 ledgerlinethickness# := 2 stafflinethickness#;
 
-define_pixels(interline, stemthickness);
+define_pixels(staff_space, stemthickness);
 define_pixels(stafflinethickness,ledgerlinethickness);
 
 %
index 70812b44a6df28885f66903ecefa3c851ae9efea..62a10760135f5b1f96bde20a491c465aecd4e91b 100644 (file)
@@ -1,7 +1,7 @@
 fet_begingroup("dots");
 
 save dot_diam;
-2 dot_diam# = interline# - stafflinethickness#;
+2 dot_diam# = staff_space# - stafflinethickness#;
 define_pixels(dot_diam);
 
 fet_beginchar("duration dot","dot", "dot")
@@ -12,9 +12,9 @@ fet_endchar;
 
 fet_beginchar("repeat dots", "repeatcolon", "repeatcolon")
        pickup pencircle scaled dot_diam;
-       draw (dot_diam/2, interline/2);
+       draw (dot_diam/2, staff_space/2);
        addto currentpicture also currentpicture yscaled -1;
-       set_char_box(0, dot_diam#, interline#/2, interline#/2);
+       set_char_box(0, dot_diam#, staff_space#/2, staff_space#/2);
 fet_endchar;
 
 
index 6f5a6c967f92ce52fb3d6edc966211e47f79b7d5..c3fdc46c0d0197c4fab67ca5b166ca59d5eed5ca 100644 (file)
@@ -19,7 +19,7 @@ def draw_fermata =
        % suggest ca 80 degrees iso half-circle
   alpha := 10;
 
-  radius# = 1.25 interline#;
+  radius# = 1.25 staff_space#;
   crook_thinness# = 1.5stafflinethickness#;
   crook_fatness# = 4 stafflinethickness#;
 
@@ -67,7 +67,7 @@ fet_endchar;
 fet_beginchar("Thumb", "thumb", "thumb")
         save thin, height, width, thick;
         height# = 5/4 width#;
-        height# = interline#;
+        height# = staff_space#;
         thin = 1.2 stafflinethickness;
         thick =  2 thin;
         set_char_box(width#/2, width#/2, height#/2, height#/2);
@@ -92,7 +92,7 @@ fet_endchar;
 %
 % `\accent' is TeX reserved.
 fet_beginchar("> accent", "sforzato", "sforzatoaccent")
-       set_char_box(.9 interline#, .9 interline#, .5 interline#, .5 interline#);
+       set_char_box(.9 staff_space#, .9 staff_space#, .5 staff_space#, .5 staff_space#);
        save thickness, diminish;
 
        thickness = 3/2 stafflinethickness;
@@ -135,7 +135,7 @@ fet_endchar;
 
 def draw_staccatissimo =
        save radius, height;
-       height# = .8 interline#;
+       height# = .8 staff_space#;
        radius# = 2 stafflinethickness#;
        define_pixels(radius, height);
 
@@ -161,7 +161,7 @@ fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
        thick# = 1.4 stafflinethickness#;
        define_pixels(thick);
 
-       set_char_box(.6 interline#, .6 interline#, thick#/2,thick#/2);
+       set_char_box(.6 staff_space#, .6 staff_space#, thick#/2,thick#/2);
        pickup pencircle scaled thick;
        lft x1 = -b;
        rt x2 = w;
@@ -172,7 +172,7 @@ fet_endchar;
 
 def draw_marcato = 
        save fat_factor, thinness;
-       set_char_box(interline#/2, interline#/2, 0, 1.1 interline#);
+       set_char_box(staff_space#/2, staff_space#/2, 0, 1.1 staff_space#);
 
        fat_factor = .3;
        thinness =  stafflinethickness;
@@ -215,7 +215,7 @@ fet_endchar;
 fet_beginchar("open (unstopped)", "open", "ouvert")
        save thin, height, width, thick;
        height# = 5/4 width#;
-       height# = interline#;
+       height# = staff_space#;
        thin = 1.2 stafflinethickness;
        thick =  1.4 thin;
        set_char_box(width#/2, width#/2, height#/2, height#/2);
@@ -234,7 +234,7 @@ fet_endchar;
 fet_beginchar("plus (stopped)", "stopped", "plusstop")
        save thick, size;
        thick = 2 stafflinethickness;
-       size# = 1.1 interline#;
+       size# = 1.1 staff_space#;
 
        set_char_box(size#/2, size#/2, size#/2, size#/2);
        pickup pencircle scaled thick;
@@ -254,7 +254,7 @@ fet_beginchar("Upbow", "upbow", "upbow")
        save ht, wd, thick;
 
        thick = 1.4 stafflinethickness;
-       wd# = 1.3 interline#;
+       wd# = 1.3 staff_space#;
        ht# = 1.6 wd#; 
 
        
@@ -276,10 +276,10 @@ fet_beginchar("Downbow", "downbow", "downbow")
        save wd;
        define_pixels(wd)
 
-       wd# = 1.5 interline#;
+       wd# = 1.5 staff_space#;
        stemthick = 1.2 stafflinethickness;
 
-       set_char_box(wd#/2, wd#/2, 0, 4/3 interline#);
+       set_char_box(wd#/2, wd#/2, 0, 4/3 staff_space#);
 
        beamheight = 4/10 h;
 
@@ -317,8 +317,8 @@ def draw_turn =
        save turndir;
        pair turndir;
 
-       wd# = 35/16 interline#;
-       ht# = 18/17 interline#;
+       wd# = 35/16 staff_space#;
+       ht# = 18/17 staff_space#;
        darkness = 1.20 stafflinethickness;
 
        set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);       
@@ -399,7 +399,7 @@ fet_beginchar("Trill (`tr')","trill","trill")
 
        ascender_extra# = 1/2 ex#;
        ascender# = ascender_extra# + ex#;
-       ex# = 1.5 interline#;
+       ex# = 1.5 staff_space#;
        kerning# = .75 ex#;
        start_nib_angle = 20;
        bulb_size = 0.47;
@@ -415,7 +415,7 @@ fet_beginchar("Trill (`tr')","trill","trill")
        slant = .2;
 
        local_copy(transform)(currenttransform);
-       currenttransform := currenttransform slanted slant shifted (- interline, 0)  ;
+       currenttransform := currenttransform slanted slant shifted (- staff_space, 0)  ;
 
        y1 = ascender;
        x1l = 0;
@@ -481,7 +481,7 @@ fet_beginchar("Trill (`tr')","trill","trill")
                --- z9r{up} 
                ..  z8r{left} ..  z7r{z5-z7} -- cycle;
        fill r_p;
-       set_char_box(interline# , interline#, 0,ascender#);
+       set_char_box(staff_space# , staff_space#, 0,ascender#);
 
 
        penpos11(1/4 r_fatness, -20);
@@ -500,10 +500,10 @@ fet_endchar;
 def draw_heel =
        save radius, thickness, wall;
 
-       radius# := .5 interline#;
+       radius# := .5 staff_space#;
 
        define_pixels(radius);
-       set_char_box(radius#, radius#, radius#, 2/3 interline#);
+       set_char_box(radius#, radius#, radius#, 2/3 staff_space#);
 
        thickness := 1.5 stafflinethickness;    
        pickup pencircle scaled thickness;
@@ -536,7 +536,7 @@ def draw_toe =
        save ht,wd;
 
        thickness := 1.5 stafflinethickness;
-       ht# := 1.5 interline#;
+       ht# := 1.5 staff_space#;
        wd# := 1/3 ht#;
        define_pixels(ht,wd);
 
@@ -587,10 +587,10 @@ fet_beginchar("Flageolet", "flageolet", "flageolet")
 fet_endchar;
 
 fet_beginchar("Repeatsign", "repeatsign", "repeatsign")
-       set_char_box(interline#, interline#, interline#, interline#);
+       set_char_box(staff_space#, staff_space#, staff_space#, staff_space#);
 
        save dot_diam;
-       2 dot_diam# = interline# - stafflinethickness#;
+       2 dot_diam# = staff_space# - stafflinethickness#;
        define_pixels(dot_diam);
 
        penpos1(dot_diam,0);
@@ -601,8 +601,8 @@ fet_beginchar("Repeatsign", "repeatsign", "repeatsign")
         penlabels (1,2);
 
        pickup pencircle scaled dot_diam;
-        draw (-interline/2, interline/2);
-        draw (interline/2, -interline/2);
+        draw (-staff_space/2, staff_space/2);
+        draw (staff_space/2, -staff_space/2);
 fet_endchar;
 
 fet_beginchar("Segno", "segno", "segno")
@@ -611,8 +611,8 @@ fet_beginchar("Segno", "segno", "segno")
        save turndir;
        pair turndir;
 
-       ht# = 3 interline#;
-       wd# = 2 interline#;
+       ht# = 3 staff_space#;
+       wd# = 2 staff_space#;
        darkness = 1.20 stafflinethickness;
 
        set_char_box(wd#/2, wd#/2, ht#/2, ht#/2);       
@@ -669,8 +669,8 @@ fet_beginchar("Coda", "coda", "coda")
        save thin, thick, codawidth, codaheight;
        thin# = 1.2 stafflinethickness#;
        thick# = 3.5 stafflinethickness#;
-       codawidth# = 2/3 interline#;
-       codaheight# = 1 interline#;
+       codawidth# = 2/3 staff_space#;
+       codaheight# = 1 staff_space#;
        define_pixels(thin, thick, codawidth, codaheight);
 
        set_char_box(codawidth#+thick#, codawidth#+thick#,
index 413ecf5b9e3d3d7e90cd2fc5c13b448565a8320f..47ec9438ab9c175d812fef893daa262879f4fb83 100644 (file)
 % this file is included by feta-scripts.mf
 
 tfat := 1/2;
-%twidth# := 0.5interline#;
-%theight# := 0.55interline#;
+%twidth# := 0.5staff_space#;
+%theight# := 0.55staff_space#;
 % tthin# := stafflinethickness#;
 tthin# := 1.6stafflinethickness#;
 
-twidth# := 2/3interline#;
-theight# := 1/2interline#;
+twidth# := 2/3staff_space#;
+theight# := 1/2staff_space#;
 
 % uhg/ uhuh?
 % toverlap# := tfat*twidth#+tthin#;
index 6d98d4dfc78be5b6170e8937346b608b53c16681..40a4e84885850a8657ad7b7d2978e0200688bec0 100644 (file)
@@ -11,8 +11,8 @@
 % mode_setup;
 
 %% staffsize#=16pt#;
-% interline#:=staffsize#/4;
-% stafflinethickness#:=0.1interline#;
+% staff_space#:=staffsize#/4;
+% stafflinethickness#:=0.1staff_space#;
 
 pi:=3.14159;
 
@@ -25,7 +25,7 @@ sleur_pen#:=stafflinethickness#;
 slurheightlimit#:=staffsize#/2;
 slurthick#:=1.8stafflinethickness#;
 
-define_pixels(staffsize,interline,stafflinethickness);
+define_pixels(staffsize,staff_space,stafflinethickness);
 define_pixels(sleur_pen,slurheightlimit,slurthick);
 
 sluralpha:=2slurheightlimit#/pi;
index 4cdf404b329938dddd01760018c8bd55a4522bc8..488e8ea732f021a7630bd418cc9690c31ac27db5 100644 (file)
@@ -10,8 +10,8 @@ fet_begingroup("timesig");
 
 def set_C_width =
        save left_width, right_width;
-       left_width# := 0.9 interline#;
-       right_width# := .7 interline#;
+       left_width# := 0.9 staff_space#;
+       right_width# := .7 staff_space#;
        define_pixels(left_width,right_width);
 enddef;
 
@@ -20,20 +20,20 @@ def draw_C =
 
   
        hair# := stafflinethickness#;
-       bulb_rad# := 0.4 interline#;
+       bulb_rad# := 0.4 staff_space#;
        define_pixels(hair, bulb_rad);
        left_fatness = 0.55;
        
        x1r = x5r;
-       y1r = .45 interline;
-       z2 = (0, interline);
+       y1r = .45 staff_space;
+       z2 = (0, staff_space);
        z3r = (-left_width, 0);
-       z4 = (0, -interline);
-       z5r = (right_width - stafflinethickness, -0.4 interline);
+       z4 = (0, -staff_space);
+       z5r = (right_width - stafflinethickness, -0.4 staff_space);
        
        penpos1(hair, 0);
        penpos2(stafflinethickness, 90);
-       penpos3(left_fatness * interline, 180);
+       penpos3(left_fatness * staff_space, 180);
        penpos4(stafflinethickness, -90);
        penpos5(hair, -5);
        
@@ -49,16 +49,16 @@ enddef;
 
 fet_beginchar ("4/4 meter", "C4/4", "fourfourmeter")
        set_C_width;
-       set_char_box(left_width# + interline#, right_width# + interline#, 
-               interline#, interline#);
+       set_char_box(left_width# + staff_space#, right_width# + staff_space#, 
+               staff_space#, staff_space#);
        
        draw_C;
 fet_endchar;
 
 fet_beginchar ("2/2 meter", "C2/2", "allabreve")
        set_C_width;
-       set_char_box(left_width# + interline#, right_width# + interline#, 
-               1.4 interline#, 1.4 interline#);
+       set_char_box(left_width# + staff_space#, right_width# + staff_space#, 
+               1.4 staff_space#, 1.4 staff_space#);
        
        draw_C;
        save excentricity;
@@ -72,13 +72,13 @@ path threequartercircle;
 threequartercircle = halfcircle & quartercircle rotated 180;
 
 save Cdiameter,Cthickness;
-Cdiameter# := 3/2 interline#;
+Cdiameter# := 3/2 staff_space#;
 Cthickness# := 2 stafflinethickness#;
 define_pixels(Cdiameter,Cthickness);
 
 %% tempus imperfectum cum prolatione imperfecta
 fet_beginchar ("Mensural 4/4 meter", "old4/4", "oldfourfourmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
                .5 Cdiameter#, .5 Cdiameter#);
        
        pickup pencircle scaled Cthickness;
@@ -87,8 +87,8 @@ fet_endchar;
 
 %% tempus imperfectum cum prolatione imperfecta proportio dupla
 fet_beginchar ("Mensural 2/2 meter", "old2/2", "oldallabreve")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
-               interline#, interline#);
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
+               staff_space#, staff_space#);
        
        pickup pencircle scaled Cthickness;
        draw threequartercircle rotated 45 scaled Cdiameter;
@@ -97,7 +97,7 @@ fet_endchar;
 
 %% tempus perfectum cum prolatione imperfecta
 fet_beginchar ("Mensural 3/2 meter", "old3/2", "oldthreetwometer")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
                .5 Cdiameter#, .5 Cdiameter#);
        
        pickup pencircle scaled Cthickness;
@@ -106,7 +106,7 @@ fet_endchar;
 
 %% tempus imperfectum cum prolatione perfecta
 fet_beginchar ("Mensural 6/4 meter", "old6/4", "oldsixfourmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
                .5 Cdiameter#, .5 Cdiameter#);
        
        pickup pencircle scaled Cthickness;
@@ -117,7 +117,7 @@ fet_endchar;
 
 %% tempus perfectum cum prolatione perfecta
 fet_beginchar ("Mensural 9/4 meter", "old9/4", "oldninefourmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
                .5 Cdiameter#, .5 Cdiameter#);
        
        pickup pencircle scaled Cthickness;
@@ -128,8 +128,8 @@ fet_endchar;
 
 %% tempus perfectum cum prolatione imperfecta proportio dupla
 fet_beginchar ("Mensural 3/4 meter", "old3/4", "oldthreefourmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
-               interline#, interline#);
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
+               staff_space#, staff_space#);
        
        pickup pencircle scaled Cthickness;
        draw fullcircle scaled Cdiameter;
@@ -138,8 +138,8 @@ fet_endchar;
 
 %% tempus imperfectum cum prolatione perfecta proportio dupla
 fet_beginchar ("Mensural 6/8 meter", "old6/8", "oldsixeightmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
-                interline#, interline#);
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
+                staff_space#, staff_space#);
        
        pickup pencircle scaled Cthickness;
        draw threequartercircle rotated 45 scaled Cdiameter;
@@ -150,8 +150,8 @@ fet_endchar;
 
 %% tempus perfectum cum prolatione perfecta proportio dupla
 fet_beginchar ("Mensural 9/8 meter", "old9/8", "oldnineeight")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
-               interline#, interline#);
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
+               staff_space#, staff_space#);
        
        pickup pencircle scaled Cthickness;
        draw fullcircle scaled Cdiameter;
@@ -162,7 +162,7 @@ fet_endchar;
 
 %% tempus imperfectum cum prolatione imperfecta diminutio simplex
 fet_beginchar ("Mensural 4/8 meter", "old4/8", "oldfoureightmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
        .5 Cdiameter#, .5 Cdiameter#);
        
        pickup pencircle scaled Cthickness;
@@ -171,7 +171,7 @@ fet_endchar;
 
 %% tempus imperfectum cum prolatione perfecta diminutio simplex
 fet_beginchar ("Mensural 6/8 meter", "old6/8alt", "oldsixeightmeteralt")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
                .5 Cdiameter#, .5 Cdiameter#);
        
        pickup pencircle scaled Cthickness;
@@ -182,8 +182,8 @@ fet_endchar;
 
 %% tempus imperfectum cum prolatione imperfecta diminutio duplex
 fet_beginchar ("Mensural 2/4 meter", "old2/4", "oldtwofourmeter")
-       set_char_box(.5 Cdiameter# + interline#, .5 Cdiameter# + interline#, 
-               interline#, interline#);
+       set_char_box(.5 Cdiameter# + staff_space#, .5 Cdiameter# + staff_space#, 
+               staff_space#, staff_space#);
        
        pickup pencircle scaled Cthickness;
        draw threequartercircle rotated 225 scaled Cdiameter;
index d4f94c536281dca98ce7e7cf4d43f1c8d0a43249..a5d6325621b3fb3df2383ce3f1e2297939a396ab 100644 (file)
@@ -27,13 +27,13 @@ fet_begingroup("accidentals");
 % this fact
 %
 fet_beginchar("Sharp" , "1", "sharp");
-       set_char_box(0, 1.1 interline#, 1.5 interline#, 
-               1.5 interline#);
+       set_char_box(0, 1.1 staff_space#, 1.5 staff_space#, 
+               1.5 staff_space#);
 
        save interbeam, interstem, beamheight, beamwidth, 
                stemwidth;
 
-       interbeam := 1.05 interline;
+       interbeam := 1.05 staff_space;
        interstem := 7/16 ;
        beamheight := 4 stafflinethickness;
        beamwidth := w;
@@ -70,8 +70,8 @@ fet_beginchar("Sharp" , "1", "sharp");
 
        pickup pencircle scaled stemwidth;
        x3 = x4 = xpart center;
-       bot y3 = -1.5 interline + ypart center;
-       top y4 = 1.5 interline + ypart center;
+       bot y3 = -1.5 staff_space + ypart center;
+       top y4 = 1.5 staff_space + ypart center;
 
        path stem;
        stem := z3 .. z4;
@@ -83,7 +83,7 @@ fet_beginchar("Sharp" , "1", "sharp");
        fet_endchar;
 
 fet_beginchar( "Natural", "0", "natural")
-       set_char_box(0, 8/12 interline#, 1.5 interline#, 1.5 interline#);
+       set_char_box(0, 8/12 staff_space#, 1.5 staff_space#, 1.5 staff_space#);
 
        save interbeam, interstem, beamheight, beamwidth, 
                stemwidth;
@@ -98,7 +98,7 @@ fet_beginchar( "Natural", "0", "natural")
 
 
        pickup penrazor scaled beamheight rotated 90;
-       top y2 = interline - 3/2 stafflinethickness ;
+       top y2 = staff_space - 3/2 stafflinethickness ;
        slope =  stafflinethickness / interstem;
        
        draw z1 .. z2;
@@ -108,7 +108,7 @@ fet_beginchar( "Natural", "0", "natural")
        pickup pencircle scaled stemwidth;
        xpart z3 = xpart z1;
        xpart z4 = xpart z2;
-       top y3 = 1.5 interline;
+       top y3 = 1.5 staff_space;
        top y4 = beamtop;
 
        draw (xpart z1, -y4) .. z3;
@@ -139,8 +139,8 @@ def draw_meta_flat(expr xcenter, w, crook_fatness) =
        bottom_stem_thick = 1.2 stafflinethickness;
 
 
-       z1 = (0, 2 interline) + center;
-       z2 = (0, - 1/2 interline)+  center;
+       z1 = (0, 2 staff_space) + center;
+       z2 = (0, - 1/2 staff_space)+  center;
 
        penpos1(top_stem_thick, 0);
        penpos2(bottom_stem_thick, 0); 
@@ -148,22 +148,22 @@ def draw_meta_flat(expr xcenter, w, crook_fatness) =
        fill simple_serif(z1r, z1l, 30) -- z2l -- z2r -- cycle;
 
 
-       y3l = (interline - stafflinethickness)/2 + ypart center;
+       y3l = (staff_space - stafflinethickness)/2 + ypart center;
        z3l = whatever [z2r,z1r];
 
        z3r = .26 [z2r, z1r];
 
 
-       z4 = (3/8 interline, interline/2) + center;
+       z4 = (3/8 staff_space, staff_space/2) + center;
        penpos4(whatever, 53);
        y4l - y4r = 2 crook_thinness ;
 %      y4l - y4r = 6/20[crook_thinness, crook_fatness] ;
 
-       y5r = 1/4 interline + ypart center;
+       y5r = 1/4 staff_space + ypart center;
        x5l = w + xpart center;
        penpos5(crook_fatness, -175);
 
-       z8 = (0, - interline/2 - stafflinethickness/2) + center;
+       z8 = (0, - staff_space/2 - stafflinethickness/2) + center;
 
        z9 = (x5,0);
 
@@ -183,7 +183,7 @@ def draw_meta_flat(expr xcenter, w, crook_fatness) =
        x8r =  xpart center - bottom_stem_thick/2;
        penlabels(range 0 thru 10);
 
-       z10 = (bottom_stem_thick/2, -1/5 interline) + center;
+       z10 = (bottom_stem_thick/2, -1/5 staff_space) + center;
 
        unfill z3r{up} .. z4r{right} .. tension .9 
                .. z6r ---
@@ -204,8 +204,8 @@ enddef;
 % unfortunately, 600dpi is not enough to show the brush of the stem.
 %
 fet_beginchar("Flat", "-1", "flat")
-       set_char_box(1.2 stafflinethickness#, .8 interline#, .5 interline#, 2 interline#);
-       draw_meta_flat(0, w, 1/3 interline);
+       set_char_box(1.2 stafflinethickness#, .8 staff_space#, .5 staff_space#, 2 staff_space#);
+       draw_meta_flat(0, w, 1/3 staff_space);
        fet_endchar;
 
 
@@ -214,18 +214,18 @@ fet_beginchar("Double flat", "-2", "flatflat")
        left_wid = .7;
        right_wid = .8;
        overlap = .05;
-       set_char_box(1.2 stafflinethickness#, (left_wid + right_wid -overlap) *interline#, .5 interline#, 2 interline#);
-       draw_meta_flat(0, left_wid*  interline, 1/3 interline);
-       draw_meta_flat((left_wid - overlap) *interline,  
-               right_wid *interline, 1/3 interline);
+       set_char_box(1.2 stafflinethickness#, (left_wid + right_wid -overlap) *staff_space#, .5 staff_space#, 2 staff_space#);
+       draw_meta_flat(0, left_wid*  staff_space, 1/3 staff_space);
+       draw_meta_flat((left_wid - overlap) *staff_space,  
+               right_wid *staff_space, 1/3 staff_space);
        fet_endchar;
 
 fet_beginchar("Double sharp", "2", "sharpsharp")
-       set_char_box(0, interline#, .5 interline#, .5 interline#);
+       set_char_box(0, staff_space#, .5 staff_space#, .5 staff_space#);
        save klaverblad, klaversteel;
 
-       klaversteel = 1/15 interline;
-       klaverblad = .35 interline;
+       klaversteel = 1/15 staff_space;
+       klaverblad = .35 staff_space;
 
        z1 = (klaversteel, 0);
        z2 = (w/2 - klaverblad / 10, h - klaverblad);
@@ -234,7 +234,7 @@ fet_beginchar("Double sharp", "2", "sharpsharp")
        z5 = z1 reflectedabout((0,0), (1,1));
 
        labels(1,2,3,4,5);
-       pickup pencircle scaled 1/20 interline;
+       pickup pencircle scaled 1/20 staff_space;
        filldraw  
                z1{dir 45} .. {right}z2 -- z3 -- 
                z4{down} .. {dir 225}z5 .. cycle;
@@ -253,10 +253,10 @@ fet_endchar;
 
 def draw_paren =
        save leftindent;
-       leftindent# := .2 interline#;
+       leftindent# := .2 staff_space#;
        define_pixels(leftindent);
-       set_char_box(0, .5 interline#+stafflinethickness#,
-         interline#, interline#);
+       set_char_box(0, .5 staff_space#+stafflinethickness#,
+         staff_space#, staff_space#);
        z1 = (leftindent,h);
        z2 = (w-stafflinethickness,0);
        z3 = (leftindent,-d);
index ac46fd7a608e18a5d4cc185a1712e6b2bfdc1406..5dfec5c2626d5fc9a2e5df3ebf30f36ea749dff6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include <assert.h>
index abb467d1c1fad5dea73d44e73117c570ee2f28a1..c5028e6259d70095824ea8ada113d02d70d79624 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include <assert.h>
index b2a5f84643dd36cdec33b1b4675dc40cf597afd6..0ef7270d06df9494a1dbf5158af00d0b10dea4dd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
            Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 
index 980c62a6f5e8ffd05bfe810b32529c8c56f9388c..0b750a171600e20761c584de9200285f2103d405 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 5dd9c4a6012cea86b4aff3b2563acb8cf0114e52..bb9dac6f0c53c3f9866717fe07d702b203ef8285 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998--1999 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998--2000 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
   
  */
 
index 28580b63af32f93c5a0a56211c89a3b107700dbb..f43bf2ecb53ff823448a32183ee5b51ec9e168e0 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the LilyPond music typesetter
 
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
@@ -12,7 +12,7 @@
 #ifndef DURATION_HH
 #define DURATION_HH
 
-#include "fproto.hh"
+#include "flower-proto.hh"
 #include "rational.hh"
 #include "plet.hh"
 
index 42ef83b435d86cbbd9ac82d5a0894a14202134a0..e538b99a3c24675834c639f743a7f7ec50a6c992 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 260379e376f779c1c672a1a1daf2029b58e92161..6a683a03e4d74f1dd7e6000765754c331f7dc914 100644 (file)
@@ -57,7 +57,7 @@ version ()
     "midi2ly");
   cout << endl;
 
-  cout << _f ("Copyright (c) %s by", "1996--1999");
+  cout << _f ("Copyright (c) %s by", "1996--2000");
   cout << "Han-Wen Nienhuys <hanwen@cs.uu.nl>\n"
        << "Jan Nieuwenhuizen <janneke@gnu.org>\n";
 }
index e567515b7ed1c43366f95fa1ef688ab5ffda815a..8ffdf5d763d5580129cfb2a397e97d578aae4d4f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "plet.hh"
index dffd167186718ad57b80f1a89c7bd9b3e2859439..1aa64ac334ab70a499f0b5696b731f3d0be764fb 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -604,7 +604,7 @@ msgstr "Moet veertje zetten tussen verschillende kolommen"
 #: paper-def.cc:95
 #, c-format
 msgid "unknown paper variable: `%s'"
-msgstr "onbekende papier varanderlijke: `%s'"
+msgstr "onbekende papier veranderlijke: `%s'"
 
 #: paper-def.cc:99
 msgid "not a real variable"
index 5c33765f146618d017d3c8a95cb265c08e68284a..533c663b89936ac989759c0a1f0b8fd9bd128958 100644 (file)
@@ -65,7 +65,7 @@
        )
   )    
 
-(define staff-symbol-properties
+(define generic-staff-symbol-properties
   (cons "Staff_symbol" (list
                        (list 'numberOfStaffLines number? 'line-count)
                        (list 'staffSpace number? 'staff-space)
    generic-timesig-properties
    generic-clef-properties
    generic-collision-properties
+   generic-staff-symbol-properties
    generic-All-properties      
    )
   )
index 3ab025c5fd32a83b7998f12b4b3796bdcdccdeb5..d18cdbf12f6287ee7f000abd281afeaec4a66746 100644 (file)
@@ -61,7 +61,7 @@
   (control->string c)
   (string-append
    (string-append (number->string (car c)) " ")
-   (string-append (number->string (cadr c)) " ")))
+   (string-append (number->string (cdr c)) " ")))
 
 
 (define (font i)
@@ -89,6 +89,7 @@
 ;; Score_span_bars are only visible at start of line
 ;; i.e. if break_dir == RIGHT == 1
 (define Span_bar_engraver-visibility non-postbreak-visibility)
+(define Base_span_bar_engraver-visibility non-postbreak-visibility)
 (define mark-visibility non-prebreak-visibility)
 (define Span_score_bar_engraver-visibility postbreak-only-visibility)
 (define Piano_bar_engraver-visibility postbreak-only-visibility)