From d3190e49a8f73d44b2e11034323b8f3592f288d6 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 7 Jul 1997 01:25:08 +0200 Subject: [PATCH] release: 0.0.73pre --- .dstreamrc | 4 +- .version | 2 +- AUTHORS.text | 2 +- BUGS | 16 +++++ Documentation/INSTALL.pod | 5 +- Documentation/Makefile | 5 +- Documentation/index.pod | 2 + Documentation/lilyliterature.pod | 68 +++++++++++++++------ Documentation/other-packages.pod | 43 ++++++------- INSTALL.text | 16 ++--- NEWS | 13 +++- TODO | 11 ++-- bin/conflily | 0 init/engraver.ini | 9 +-- init/paper.ini | 23 ------- init/paper16.ini | 6 +- init/symbol.ini | 7 ++- init/table16.ini | 12 ++-- input/kortjakje.ly | 2 +- input/multi.ly | 2 +- input/scsii-menuetto.ly | 2 +- input/standchen.ly | 5 +- lily/.version | 2 +- lily/bar-grav.cc | 2 +- lily/bar.cc | 5 +- lily/beam.cc | 3 +- lily/clef-grav.cc | 2 +- lily/collision-grav.cc | 2 +- lily/dynamic-grav.cc | 2 +- lily/engraver-group.cc | 49 +++++++++------ lily/engraver.cc | 38 ++++++------ lily/global-gravs.cc | 16 ++--- lily/head-grav.cc | 2 +- lily/identifier.cc | 13 +++- lily/include/acceptor.hh | 1 + lily/include/bar-grav.hh | 2 +- lily/include/bar.hh | 1 + lily/include/clef-grav.hh | 2 +- lily/include/collision-grav.hh | 2 +- lily/include/dynamic-grav.hh | 2 +- lily/include/engraver-group.hh | 23 ++++--- lily/include/engraver.hh | 23 +++---- lily/include/global-translator.hh | 9 +-- lily/include/head-grav.hh | 2 +- lily/include/input-engraver.hh | 14 +++-- lily/include/interpreter.hh | 15 ----- lily/include/key-grav.hh | 2 +- lily/include/lily-proto.hh | 6 +- lily/include/local-key-grav.hh | 2 +- lily/include/lookup.hh | 3 +- lily/include/lyric-engraver.hh | 2 +- lily/include/meter-grav.hh | 2 +- lily/include/music-iterator.hh | 11 ++-- lily/include/note-column-grav.hh | 2 +- lily/include/paper-def.hh | 3 + lily/include/rest-collision-grav.hh | 2 +- lily/include/score-align-grav.hh | 2 +- lily/include/score-elem-info.hh | 2 +- lily/include/score-elem.hh | 1 + lily/include/score-halign-grav.hh | 2 +- lily/include/scoreline.hh | 7 +-- lily/include/script-grav.hh | 2 +- lily/include/slur-grav.hh | 2 +- lily/include/span-bar-grav.hh | 28 +++++++++ lily/include/span-bar.hh | 28 +++++++++ lily/include/staff-info.hh | 2 +- lily/include/staff-sym-grav.hh | 2 +- lily/include/stem-beam-grav.hh | 2 +- lily/include/swallow-grav.hh | 2 +- lily/include/text-grav.hh | 2 +- lily/include/tie-grav.hh | 2 +- lily/include/translator.hh | 17 +++--- lily/include/vertical-align-elem.hh | 3 +- lily/include/vertical-align-grav.hh | 27 +++++++++ lily/include/vertical-align-spanner.hh | 24 ++++++++ lily/include/voice-gravs.hh | 26 -------- lily/input-engraver.cc | 58 ++++++++---------- lily/key-grav.cc | 2 +- lily/lexer.l | 3 +- lily/local-key-grav.cc | 2 +- lily/lookup.cc | 9 ++- lily/lyric-engraver.cc | 2 +- lily/meter-grav.cc | 2 +- lily/music-iterator.cc | 41 +++++-------- lily/note-column-grav.cc | 2 +- lily/paper-def.cc | 24 +++++++- lily/parser.y | 12 +++- lily/rest-collision-grav.cc | 2 +- lily/score-align-grav.cc | 4 +- lily/score-elem.cc | 5 ++ lily/score-grav.cc | 11 ++-- lily/score-halign-grav.cc | 4 +- lily/score.cc | 30 +++++----- lily/scoreline.cc | 17 +----- lily/script-grav.cc | 2 +- lily/slur-grav.cc | 2 +- lily/span-bar-grav.cc | 51 ++++++++++++++++ lily/span-bar.cc | 83 ++++++++++++++++++++++++++ lily/staff-gravs.cc | 8 +-- lily/staff-sym-grav.cc | 2 +- lily/stem-beam-grav.cc | 2 +- lily/swallow-grav.cc | 2 +- lily/template6.cc | 2 +- lily/text-grav.cc | 2 +- lily/tie-grav.cc | 2 +- lily/translator.cc | 6 ++ lily/vertical-align-elem.cc | 14 ++--- lily/vertical-align-grav.cc | 48 +++++++++++++++ lily/vertical-align-spanner.cc | 12 ++++ lily/voice-gravs.cc | 27 --------- lily/voice-group-gravs.cc | 4 -- make/lilypond.lsm | 4 +- make/lilypond.spec | 4 +- tex/lilyponddefs.tex | 19 +++--- 114 files changed, 771 insertions(+), 460 deletions(-) create mode 100644 BUGS mode change 100644 => 100755 bin/conflily delete mode 100644 init/paper.ini delete mode 100644 lily/include/interpreter.hh create mode 100644 lily/include/span-bar-grav.hh create mode 100644 lily/include/span-bar.hh create mode 100644 lily/include/vertical-align-grav.hh create mode 100644 lily/include/vertical-align-spanner.hh delete mode 100644 lily/include/voice-gravs.hh create mode 100644 lily/span-bar-grav.cc create mode 100644 lily/span-bar.cc create mode 100644 lily/vertical-align-grav.cc create mode 100644 lily/vertical-align-spanner.cc delete mode 100644 lily/voice-gravs.cc diff --git a/.dstreamrc b/.dstreamrc index 0d6086e1ea..321a61888a 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -13,8 +13,8 @@ PScore 0 Idealspacing 0 # yydebug -InitParser 1 -Parser 1 +InitParser 0 +Parser 0 InitDeclarations 0 Declarations 1 # FlexLexer debug diff --git a/.version b/.version index 7be2ab2cec..a3dacf472d 100644 --- a/.version +++ b/.version @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 0 -TOPLEVEL_PATCH_LEVEL = 72 +TOPLEVEL_PATCH_LEVEL = 73 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/AUTHORS.text b/AUTHORS.text index 52c105b36c..c1d175bcef 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -30/Jun/97 LilyPond 0.0.72 1 +30/Jun/97 LilyPond 0.0.73 1 diff --git a/BUGS b/BUGS new file mode 100644 index 0000000000..2806cbad4d --- /dev/null +++ b/BUGS @@ -0,0 +1,16 @@ +This file documents bugs which were "re-introduced" in various pl's + +pl 70 + * r^"simile" + + * hairpin pos. + +pl69 + * slurs.ly + +pl68: + * opening rests wohltemperirt + + * lyrics broken, + + * midi broken diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index 2fc99a0933..e2697cffa9 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -208,8 +208,9 @@ TeX =item * -The MusixTeX fonts. (I use those found in MusixTeX T.59). Beware, the -clef symbol has changed position in the Egler version, aka. OpusTeX) +The MusixTeX fonts (I included those found in MusixTeX T.73). Beware, +the clef symbol has changed position in the Egler version, +a.k.a. OpusTeX) =back diff --git a/Documentation/Makefile b/Documentation/Makefile index d703adfd1a..e62a4c5441 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -33,6 +33,7 @@ EXTRA_DISTFILES = lelie_icon.gif lelie_logo.gif default: do-doc true + do-doc: $(TEXTFILES) html: $(HTMLFILES) @@ -54,10 +55,6 @@ localclean: MAN1FILES = lilypond convert-mudela mi2mu MAN1GROFF = $(addprefix $(outdir)/, $(addsuffix .1,$(MAN1FILES))) -bla: - echo $(MANGROFF) - echo $(MANFILES) - localinstall: $(outdir)/lilypond.1 $(outdir)/mudela.5 $(INSTALL) -d $(mandir)/man5 $(INSTALL) -d $(mandir)/man1 diff --git a/Documentation/index.pod b/Documentation/index.pod index ebaae8553f..30ba133a2b 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -19,6 +19,8 @@ examples of what LilyPond can do: MIDI, PS, .gif and input. =head1 DOCUMENTATION +=over 4 + =item * i.e. professional music typesetting, and -includes some good spacing tables] +includes some good spacing tables MB] Read, Gardner. ``Modern Rhythmic Notation.'' Indiana University Press, 1978. @@ -48,10 +43,39 @@ Read, Gardner. ``Music Notation'' (2nd edition). Taplinger Publishing, New York. [This is as close to the ``standard'' reference work for music notation issues -as one is likely to get.] +as one is likely to get. MB] =head2 Related papers + +Byrd, Donald. ``Music Notation by Computer''. Diss. Indiana Univ., +1985. + +Byrd, Donaldn. ``A System for Music Printing by Computer.'' +Computers and the Humanities, 8 (1974), 161-72. + +Smith, Leland. ``Editing and Printing Music by Computer.'' Journal +of Music Theory, 17 (1973), 292-309. + +[If I remember correctly, this was concerned more with an input +language than with the typography. SP.] + +Gomberg, David A. ``A Computer-Oriented System for Music Printing.'' Diss. +Washington Univ. 1975. + +Hewlett, Walter B. and Eleanor Selfridge-Field. Directory of Computer +Assisted Research in Musicology. Menlo Park, CA: Center for Computer +Assisted Research in the Humanities. + +[Annual editions since 1985, many containing surveys of music +typesetting technology. SP] + + +W.A. Hegazy and J. S. Gourlay. Optimal line breaking in music. In +``Document Manipulation and Typography'', J.C. van Vliet (ed) 1988. + +[This generalizes TeX's breaking algorithm to music] + David A. Gomberg; A Computer-oriented System for Music Printing. Computers and the Humanities, Vol.11, pp 63-80. @@ -90,9 +114,9 @@ the ACM''. Vol. 29(5), 388--401, 1986. [This paper describes a vapourware music setting system and an input language to go with it. ] -D. Blostein and L. Haken, The Lime Music Editor: A Diagram Editor +D. Blostein and L. Haken, The Lime Music Editor: A Diagram Editor Involving Complex Translations, Software Practice and Experience, -Vol. 24, No. 3, March 1994, pp. 289-306. +Vol. 24, No. 3, March 1994, pp. 289-306. [A description of various conversions, decisions and issues relating to this interactive editor] @@ -124,6 +148,12 @@ Gary M. Rader, ``Creating Printed Music Automatically''. Computer Vol "constraints" (which go unexplained) to automatically position various elements.] +Stephen Dowland Page. ``Computer Tools for Music Information +Retrieval''. Dissertation Univ of Oxford, 1988. + +[Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, +or to the British Library, instead.] + =head2 Further reading Chlapik, Herbert. ``Die Praxis des Notengraphikers''. Doblinger, 1987. @@ -139,13 +169,10 @@ More on GNU Music: http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp Tablature: http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html - -(of varying usefulness): - Donato, Anthony. Preparing Music Manuscript. Englewood Cliffs: Prentice-Hall, 1963. -Donemus. "Uitgeven van muziek". Donemus Amsterdam, 1900 +Donemus. ``Uitgeven van muziek''. Donemus Amsterdam, 1900 Heussenstamm, George. The Norton Manual of Music Notation. New York: Norton, 1987. @@ -170,10 +197,6 @@ Stone, Kurt. Music Notation in the Twentieth Century. New York: Norton, 1980. =head2 other stuff -Andreas Mahling, J. Herczeg, M. Herczeg and S B\"ocker, Beyond -visualization: knowing and understanding. In P.~Gorny, M.~J. Tauber -(eds.), Visualization in Human-Computer Interaction, Lecture -Notes in Computer Science, 439, 16--26, Springer-Verlag, 1990. Peter S. Langston, Unix music tools at Bellcore. Software --- Practice and Experience, Vol. 20(S1), S1/47--S1/61, 1990. @@ -206,3 +229,10 @@ System. LIACC, Universidade do Porto, 1996; submitted. Miguel Filgueiras, Some Music Typesetting Algorithms. LIACC, Universidade do Porto, forthcoming. + +=head1 AUTHORS + +Refs contributed by Han-Wen Nienhuys, Miguel Filgueiras, Mark +Basinski, Dorothea Blostein, Stephen Page, Jan Nieuwenhuizen. + +This should really be redone in BibTeX diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod index c52c1dbb00..0e1f58d35a 100644 --- a/Documentation/other-packages.pod +++ b/Documentation/other-packages.pod @@ -9,28 +9,29 @@ packages. Feel free to add info (and mail it to me). =head2 Free packages (with source) -G Sharp, http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp +=item G Sharp, http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp An alpha version notation editor for X. Source available on request. -Rosegarden, http://www.math.bath.ac.uk/~masjpf/rose.html +=item Rosegarden, http://www.math.bath.ac.uk/~masjpf/rose.html A Notation editor/Sequencer for X (win95 port underway). Outputs musictex. -Common Notation, http://www-ccrma.stanford.edu/ccrma/Software/cmn/cmn.html +=item Common Notation, http://www-ccrma.stanford.edu/ccrma/Software/cmn/cmn.html -A versatile lisp package. Part of the Common Music system. Input is in Lisp. +A versatile lisp package. Part of the Common Music system. Input is in +Lisp. It needs Adobe fonts -Vivace, http://www.calband.berkeley.edu/~gmeeker/vivace +=item Vivace, http://www.calband.berkeley.edu/~gmeeker/vivace A amateurish notation program for TclTk and X. -MPP, http://www.stack.nl/~hanwen/mpp-english.html +=item MPP, http://www.stack.nl/~hanwen/mpp-english.html A preprocessor to MusixTeX by Jan Nieuwenhuizen and Han-Wen Nienhuys. It is outdated by its successor, LilyPond. -Music, http://www.cs.nott.ac.uk/Departement/Staff/ef/printing.html +=item Music, http://www.cs.nott.ac.uk/Departement/Staff/ef/printing.html A TROFF preprocessor by Eric Foxley @@ -39,32 +40,32 @@ MusE A-R Music Engraving, by A-R Editions, Inc. Professional engraving on Sun boxen. -Mup, http://www.arkkra.com/ +=item Mup, http://www.arkkra.com/ A program which creates PS from a script input. Although it comes with C source code, it is Shareware. -PMX, http://www.gmd.de/Misc/Music/ +=item PMX, http://www.gmd.de/Misc/Music/ A Preprocessor for MusiXTeX by Don Simons -Musi*TeX, http://www.gmd.de/Misc/Music/ +=item Musi*TeX, http://www.gmd.de/Misc/Music/ MusixTeX is a macro package for TeX to typeset polyphonic or instrumental music by Daniel Taupin, Ross Mitchell and Andreas Egler. It includes a font set with lots symbols -ABC2MTeX, http://www.gmd.de/Misc/Music/ +=item ABC2MTeX, http://www.gmd.de/Misc/Music/ A preprocessor to MusixTeX by Chris Walshaw for way of transcribing folk and traditional music. -SceX http://www.ncc.up.pt/~mig/SceX.html +=item SceX http://www.ncc.up.pt/~mig/SceX.html A preprocessor to MusixTeX by Miguel Filgueiras. Source in prolog available on request. (?) -MUTEX, http://www.gmd.de/Misc/Music/ +=item MUTEX, http://www.gmd.de/Misc/Music/ A TeX macro package for typesetting single-staff music by Angelika Schofer & Andrea Steinbach. With some fonts @@ -72,19 +73,19 @@ Schofer & Andrea Steinbach. With some fonts =head2 Free (zero cents) -Calliope, http://www.cl.cam.ac.uk/users/wfc/ +=item Calliope, http://www.cl.cam.ac.uk/users/wfc/ -A NeXT package by William F Clocksin. Requires Adobe fonts. +A NeXT package by William F. Clocksin. Requires Adobe fonts. =head2 Proprietary -MusicEase, http://mesa.colorado.edu/~grader/musicez.html +=item MusicEase, http://mesa.colorado.edu/~grader/musicez.html Described in Computer vol 29(6). Shareware -LIME, http://datura.cerl.uiuc.edu/ +=item LIME, http://datura.cerl.uiuc.edu/ -Sibelius, http://www.acorn.co.uk/developers/sibelius +=item Sibelius, http://www.acorn.co.uk/developers/sibelius Finale @@ -92,7 +93,9 @@ Score Personal Composer -Mozart, http://www.mozart.co.uk/ + + +=item Mozart, http://www.mozart.co.uk/ A shareware windows package @@ -104,5 +107,5 @@ Musicator =head2 Unknown -Berlioz, http://www.bsi.fr/~montel/ +=item Berlioz, http://www.bsi.fr/~montel/ diff --git a/INSTALL.text b/INSTALL.text index 3710c04ef9..c27731e276 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -3/Jul/97 LilyPond 0.0.72 1 +7/Jul/97 LilyPond 0.0.73 1 @@ -127,7 +127,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -3/Jul/97 LilyPond 0.0.72 2 +7/Jul/97 LilyPond 0.0.73 2 @@ -193,7 +193,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -3/Jul/97 LilyPond 0.0.72 3 +7/Jul/97 LilyPond 0.0.73 3 @@ -211,9 +211,9 @@ INSTALL(1) LilyPond documentation INSTALL(1) +o TeX - +o The MusixTeX fonts. (I use those found in MusixTeX - T.59). Beware, the clef symbol has changed position - in the Egler version, aka. OpusTeX) + +o The MusixTeX fonts (I included those found in + MusixTeX T.73). Beware, the clef symbol has changed + position in the Egler version, a.k.a. OpusTeX) At this time, GNU LilyPond output looks nice, but is not of production quality. If you're not discouraged; this is @@ -259,7 +259,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX -3/Jul/97 LilyPond 0.0.72 4 +7/Jul/97 LilyPond 0.0.73 4 @@ -325,6 +325,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -3/Jul/97 LilyPond 0.0.72 5 +7/Jul/97 LilyPond 0.0.73 5 diff --git a/NEWS b/NEWS index 71128cd93f..b9d083dda7 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,17 @@ +pl 73pre + - some refs doco. + - move Input_engraver into Paper_def + - junk Interpreter + - naming: Request_engraver -> Engraver, + - Music_iterator::next() -> process_and_next() + - junk Voice_engravers + - Span_bar, Span_bar_engraver + - Vertical_align_engraver + +******* july 2 pl 72pre - - paper{} syntax: var = 1.0\pt;, with an Assoc array + - \paper{} syntax: var = 1.0\pt;, with an Assoc array - sketch of MIDI Performer classes. - bf: memleak in parser - naming: Acceptor -> Translator diff --git a/TODO b/TODO index cd3a973460..b322e39d18 100644 --- a/TODO +++ b/TODO @@ -6,6 +6,12 @@ done, or is an idea that I want to think about Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr + * pushgroup/popgroup + + * strict separation between visual and auditive processing. + + * fix depcy/dept stuff in eg. Beam. + * whole head on ledger line * piano staff @@ -114,9 +120,6 @@ HKN buglist: tekst staat erg ver van notenbalken af -Onduidelijk wanneer wel en geen \ voor een woord. Maak liever -verplichte regels - BUGS * spurious Weird stem size warnings @@ -127,8 +130,6 @@ BUGS * lilypond - -> crash - * scales.ly - * standchen triool beam up/down * (where are the) gcc compile warnings on linux diff --git a/bin/conflily b/bin/conflily old mode 100644 new mode 100755 diff --git a/init/engraver.ini b/init/engraver.ini index 086e378ae1..d0a6f457bc 100644 --- a/init/engraver.ini +++ b/init/engraver.ini @@ -3,14 +3,15 @@ % \requestengraver { - "Score_engraver" + "Score_engraver" \alias "Score"; -% \consists "Score_bar_engraver"; \consists "Bar_align_engraver"; \consists "Clef_align_engraver"; \consists "Key_align_engraver"; \consists "Meter_align_engraver"; \consists "Score_horizontal_align_engraver"; + \consists "Vertical_align_engraver"; + \consists "Span_bar_engraver"; \contains\requestengraver { "Staff_engravers" @@ -32,7 +33,7 @@ \consists "Note_column_engraver"; \consists "Slur_engraver"; \contains \requestengraver { - "Voice_engravers" + "Engraver_group_engraver" \alias "Voice"; \consists "Note_head_engraver" ; \consists "Tie_engraver"; @@ -47,7 +48,7 @@ "Voice_group_engravers" \alias "Voice_group"; \contains\requestengraver{ - "Voice_engravers" + "Engraver_group_engraver" \consists "Lyric_engraver"; \consists "Swallow_engraver"; } diff --git a/init/paper.ini b/init/paper.ini deleted file mode 100644 index 1c15975a9e..0000000000 --- a/init/paper.ini +++ /dev/null @@ -1,23 +0,0 @@ - - [todo] - * runtime - -%{ "french" style: interbeam = intenote; - "german" style: interbeam = 2/3 * interline -%} - as lily's style is currently german, we'll hardcode german style - */ - // it seems that "interline" means _between_ lines -// return ball(4).dim.y.length() * 2 / 3; - return ball(4).dim.y.length() * 2 / 3 + 0.4; //ugh -} -\include "table_sixteen.ini" - -default_paper = paper { - linewidth = 15 \cm; - rule_thickness = 0.4\pt; - interline = 4\pt; - notewidth = 4\pt; - interbeam = 7\pt; - \symboltables { \table_sixteen } -} diff --git a/init/paper16.ini b/init/paper16.ini index 7854e3850a..369d7f435b 100644 --- a/init/paper16.ini +++ b/init/paper16.ini @@ -4,13 +4,15 @@ default_paper = \paper { linewidth = 15.0 \cm; rule_thickness = 0.4\pt; + bar_size = 16.0 \pt; interline = 4.\pt; - notewidth = 4.0\pt; - wholewidth = 5.\pt; + notewidth = 5.0\pt; + wholewidth = 4.8\pt; unitspace = 30.\pt; % interbeam = 2.667\pt; geometric = 1.414; \symboltables { \table_sixteen } + \include "engraver.ini" } diff --git a/init/symbol.ini b/init/symbol.ini index bb067af6b2..2c26af1cc5 100644 --- a/init/symbol.ini +++ b/init/symbol.ini @@ -1,9 +1,12 @@ \version "0.0.61"; -\include "engraver.ini" \include "dynamic.ini" -\include "dutch.ini" % do not include init/ path +\include "dutch.ini" \include "script.ini" \include "paper16.ini" +left = -1 +right = 1 +up = 1 +down = -1 diff --git a/init/table16.ini b/init/table16.ini index 62abd29e37..6d202aa420 100644 --- a/init/table16.ini +++ b/init/table16.ini @@ -97,12 +97,12 @@ table_sixteen= "bars" = \table { "empty" "\emptybar" - "|" "\maatstreep" 0.0\pt 0.64\pt -8.0\pt 8.0\pt - "||" "\doublebar" 0.0\pt 4.0\pt -8.0\pt 8.0\pt - "|." "\finishbar" -4.0\pt 0.0\pt -8.0\pt 8.0\pt - ":|" "\repeatbar" -4.0\pt 0.0\pt -8.0\pt 8.0\pt - "|:" "\startrepeat" 0.0\pt 4.0\pt -8.0\pt 8.0\pt - ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt -8.0\pt 8.0\pt + "|" "\maatstreep{%}" 0.0\pt 0.64\pt .0\pt 16.0\pt + "||" "\doublebar{%}" 0.0\pt 4.0\pt .0\pt 16.0\pt + "|." "\finishbar{%}" -4.0\pt 0.0\pt .0\pt 16.0\pt + ":|" "\repeatbar" -4.0\pt 0.0\pt .0\pt 16.0\pt + "|:" "\startrepeat" 0.0\pt 4.0\pt 0.0\pt 16.0\pt + ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt } diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 16099a6ec9..617dac78e9 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -19,7 +19,7 @@ EndMudelaHeader % declare melody (which will be in *one* staff ) for the lead voice melodie = \melodic { % switch Lilypond in note-mode - \clef\violin; + \clef"violin"; \meter 2/4 ; \octave c'; % set the default octave % the default note duratino is 4 diff --git a/input/multi.ly b/input/multi.ly index 275db41102..02b1dcfaf6 100644 --- a/input/multi.ly +++ b/input/multi.ly @@ -19,7 +19,7 @@ EndMudelaHeader { \octave c'; c4 c4 < \multi 1; { c2 c2 } { c'2 c'2 } > < \multi 2; { \stem -1; c2 c2 } { \stem 1; c'2 c'2 } > - < \multi 3; { \clef "bass"; c2 c2 } { \bar "||"; \key cis ; c'2 c'2 } > + < \multi 3; { \clef "bass"; c2 c2 } { \meter 2/4;\bar "||"; \key fis cis gis; c'2 c'2 } > c2 c1 } diff --git a/input/scsii-menuetto.ly b/input/scsii-menuetto.ly index 8f4b5daa77..9bc9fcf38f 100644 --- a/input/scsii-menuetto.ly +++ b/input/scsii-menuetto.ly @@ -103,9 +103,9 @@ IImenuetto = \melodic{ \score{ \melodic { \IImenuetto } \paper{ - width= 195.0\mm; unitspace= 9.0\mm ;% to get lily to use only three lines geometric= 1.40; + linewidth= 195.0\mm; \output "scsii-menuetto.out"; } \midi{ diff --git a/input/standchen.ly b/input/standchen.ly index 516a503309..d1c5ec81d9 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -470,11 +470,10 @@ tekstII = \lyric{ { \id "Lyric" "2"; \tekstII } \melodic < \melodie \commands > - \melodic <\begeleiding \commands > - + \melodic < \begeleiding \commands > > \paper{ - width= 195.\mm; + linewidth= 195.\mm; % on two pages... unitspace= 9.\mm; diff --git a/lily/.version b/lily/.version index 01a36845dc..aa80b10d8e 100644 --- a/lily/.version +++ b/lily/.version @@ -1,6 +1,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 0 -PATCH_LEVEL = 72 +PATCH_LEVEL = 73 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc index 4282803b05..61cf611474 100644 --- a/lily/bar-grav.cc +++ b/lily/bar-grav.cc @@ -64,7 +64,7 @@ Bar_engraver::do_post_move_processing() } IMPLEMENT_STATIC_NAME(Bar_engraver); -IMPLEMENT_IS_TYPE_B1(Bar_engraver,Request_engraver); +IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver); ADD_THIS_ENGRAVER(Bar_engraver); diff --git a/lily/bar.cc b/lily/bar.cc index cf8d15bef2..6d50fa0fc9 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -16,6 +16,7 @@ Bar::Bar() { type_str_ = "|"; + spanned_i_ = 0; } @@ -31,7 +32,9 @@ Bar::do_print()const Molecule* Bar::brew_molecule_p()const { - Symbol s = paper()->lookup_l()->bar(type_str_); + Paper_def *p = paper(); + Symbol s = p->lookup_l()->bar( type_str_, + p->get_var("bar_size") ); Molecule*output = new Molecule(Atom(s)); return output; } diff --git a/lily/beam.cc b/lily/beam.cc index 9e9f30eaff..d4f741d788 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -7,8 +7,7 @@ TODO - Less hairy code. Better slope calculations. - knee: ([\stem 1; c8 \stem -1; c8] + Less hairy code. knee: ([\stem 1; c8 \stem -1; c8] */ diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc index ab5177674a..5f7ad85a8c 100644 --- a/lily/clef-grav.cc +++ b/lily/clef-grav.cc @@ -124,5 +124,5 @@ Clef_engraver::do_removal_processing() } IMPLEMENT_STATIC_NAME(Clef_engraver); -IMPLEMENT_IS_TYPE_B1(Clef_engraver,Request_engraver); +IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver); ADD_THIS_ENGRAVER(Clef_engraver); diff --git a/lily/collision-grav.cc b/lily/collision-grav.cc index 428924d891..1cb0295a8b 100644 --- a/lily/collision-grav.cc +++ b/lily/collision-grav.cc @@ -36,5 +36,5 @@ Collision_engraver::Collision_engraver() } IMPLEMENT_STATIC_NAME(Collision_engraver); -IMPLEMENT_IS_TYPE_B1(Collision_engraver,Request_engraver); +IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver); ADD_THIS_ENGRAVER(Collision_engraver); diff --git a/lily/dynamic-grav.cc b/lily/dynamic-grav.cc index 716abae463..fea92a8b6a 100644 --- a/lily/dynamic-grav.cc +++ b/lily/dynamic-grav.cc @@ -117,7 +117,7 @@ Dynamic_engraver::set_feature(Feature i) } IMPLEMENT_STATIC_NAME(Dynamic_engraver); -IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Request_engraver); +IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Engraver); ADD_THIS_ENGRAVER(Dynamic_engraver); Dynamic_engraver::~Dynamic_engraver() diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index bcfa32a034..c91921cefc 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -50,7 +50,7 @@ Engraver_group_engraver::set_feature(Feature d) iter_top(grav_list_, i); while (i.ok()) { // this construction to ensure clean deletion - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->set_feature(d); } } @@ -61,7 +61,7 @@ Engraver_group_engraver::sync_features() iter_top(grav_list_, i); while (i.ok()) { - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->sync_features(); } } @@ -72,7 +72,7 @@ Engraver_group_engraver::do_pre_move_processing() iter_top(grav_list_, i); while (i.ok()) { - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->pre_move_processing(); } } @@ -83,7 +83,7 @@ Engraver_group_engraver::do_process_requests() iter_top(grav_list_, i); while (i.ok()) { - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->process_requests(); } } @@ -95,16 +95,16 @@ Engraver_group_engraver::do_post_move_processing() iter_top(grav_list_, i); while (i.ok()) { // this construction to ensure clean deletion - Request_engraver *grav_l = i++; + Engraver *grav_l = i++; grav_l->post_move_processing(); } } bool -Engraver_group_engraver::contains_b(Request_engraver* grav_l)const +Engraver_group_engraver::contains_b(Engraver* grav_l)const { - bool parent_b = Request_engraver::contains_b(grav_l); + bool parent_b = Engraver::contains_b(grav_l); if (parent_b) return true; @@ -127,8 +127,14 @@ Engraver_group_engraver::do_try_request(Request*req_l) return hebbes_b ; } +bool +Engraver_group_engraver::try_request(Request* r) +{ + return Engraver::try_request(r); +} + void -Engraver_group_engraver::add(Request_engraver *grav_p) +Engraver_group_engraver::add(Engraver *grav_p) { grav_list_.bottom().add(grav_p); grav_p->daddy_grav_l_ = this; @@ -141,8 +147,8 @@ Engraver_group_engraver::add(Request_engraver *grav_p) } -Request_engraver * -Engraver_group_engraver::remove_engraver_p(Request_engraver*grav_l) +Engraver * +Engraver_group_engraver::remove_engraver_p(Engraver*grav_l) { group_l_arr_.substitute((Engraver_group_engraver*)grav_l,0); nongroup_l_arr_.substitute(grav_l,0); @@ -152,16 +158,16 @@ Engraver_group_engraver::remove_engraver_p(Request_engraver*grav_l) } void -Engraver_group_engraver::terminate_engraver(Request_engraver*r_l) +Engraver_group_engraver::terminate_engraver(Engraver*r_l) { mtor << "Removing " << r_l->name() << " at " << get_staff_info().when() << "\n"; r_l->do_removal_processing(); - Request_engraver * grav_p =remove_engraver_p(r_l); + Engraver * grav_p =remove_engraver_p(r_l); delete grav_p; } -IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Request_engraver, Translator); +IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator); IMPLEMENT_STATIC_NAME(Engraver_group_engraver); ADD_THIS_ENGRAVER(Engraver_group_engraver); @@ -237,7 +243,7 @@ void Engraver_group_engraver::announce_element(Score_elem_info info) { announce_info_arr_.push(info); - Request_engraver::announce_element(info); + Engraver::announce_element(info); } void @@ -254,7 +260,7 @@ Engraver_group_engraver::do_announces() if (!info.req_l_) info.req_l_ = &dummy_req; - for (int i=0; i < nongroup_l_arr_.size(); i++) { + for (int i=0; i < nongroup_l_arr_.size(); i++) { // Is this good enough?6 if (nongroup_l_arr_[i] != info.origin_grav_l_arr_[0]) nongroup_l_arr_[i]->acknowledge_element(info); } @@ -273,7 +279,7 @@ Engraver_group_engraver::do_removal_processing() Staff_info Engraver_group_engraver::get_staff_info()const { - Staff_info inf = Request_engraver::get_staff_info(); + Staff_info inf = Engraver::get_staff_info(); for (int i=0; i < nongroup_l_arr_.size(); i++) nongroup_l_arr_[i]->fill_staff_info(inf); @@ -284,14 +290,21 @@ Engraver_group_engraver::get_staff_info()const Translator* Engraver_group_engraver::get_default_interpreter() { - if ( interpreter_l() ) + // ? + if ( is_bottom_engraver_b() ) return daddy_grav_l_->get_default_interpreter(); Engraver_group_engraver *grav_p= igrav_l_-> get_default_igrav_l()->get_group_engraver_p(); add(grav_p ); - if (grav_p->interpreter_l()) + if (grav_p->is_bottom_engraver_b()) return grav_p; else return grav_p->get_default_interpreter(); } + +bool +Engraver_group_engraver::is_bottom_engraver_b()const +{ + return !igrav_l_->get_default_igrav_l(); +} diff --git a/lily/engraver.cc b/lily/engraver.cc index 78fa6ca623..29027f4dea 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -1,5 +1,5 @@ /* - engraver.cc -- implement Request_engraver + engraver.cc -- implement Engraver Sourcefile of GNU LilyPond musictypesetter @@ -13,7 +13,7 @@ #include "debug.hh" void -Request_engraver::post_move_processing() +Engraver::post_move_processing() { if (status < CREATION_INITED) { @@ -28,7 +28,7 @@ Request_engraver::post_move_processing() } bool -Request_engraver::try_request(Request * r) +Engraver::try_request(Request * r) { if (status < MOVE_INITED) post_move_processing(); @@ -37,7 +37,7 @@ Request_engraver::try_request(Request * r) } void -Request_engraver::process_requests() +Engraver::process_requests() { if (status < PROCESSED_REQS) post_move_processing(); @@ -49,75 +49,75 @@ Request_engraver::process_requests() } void -Request_engraver::pre_move_processing() +Engraver::pre_move_processing() { do_pre_move_processing(); status = CREATION_INITED; } void -Request_engraver::fill_staff_info(Staff_info&) +Engraver::fill_staff_info(Staff_info&) { } Scalar -Request_engraver::get_feature(String t) +Engraver::get_feature(String t) { return daddy_grav_l_->get_feature(t); } bool -Request_engraver::do_try_request(Request*) +Engraver::do_try_request(Request*) { return false; } -Request_engraver::Request_engraver() +Engraver::Engraver() { status = VIRGIN; daddy_grav_l_ = 0; } void -Request_engraver::announce_element(Score_elem_info i) +Engraver::announce_element(Score_elem_info i) { i.origin_grav_l_arr_.push(this); daddy_grav_l_->announce_element(i); } void -Request_engraver::typeset_element(Score_elem*p) +Engraver::typeset_element(Score_elem*p) { daddy_grav_l_->typeset_element(p); } Paper_def* -Request_engraver::paper()const +Engraver::paper()const { return daddy_grav_l_->paper(); } void -Request_engraver::typeset_breakable_item(Item * nobreak_p) +Engraver::typeset_breakable_item(Item * nobreak_p) { daddy_grav_l_->typeset_breakable_item(nobreak_p); } bool -Request_engraver::contains_b(Request_engraver *grav_l)const +Engraver::contains_b(Engraver *grav_l)const { return this == grav_l; } Staff_info -Request_engraver::get_staff_info() const +Engraver::get_staff_info() const { return daddy_grav_l_->get_staff_info(); } void -Request_engraver::print() const +Engraver::print() const { #ifndef NPRINT mtor << "\n" << name() << " {"; @@ -126,11 +126,11 @@ Request_engraver::print() const #endif } -IMPLEMENT_STATIC_NAME(Request_engraver); -IMPLEMENT_IS_TYPE_B(Request_engraver); +IMPLEMENT_STATIC_NAME(Engraver); +IMPLEMENT_IS_TYPE_B(Engraver); void -Request_engraver::do_print()const +Engraver::do_print()const { } diff --git a/lily/global-gravs.cc b/lily/global-gravs.cc index 6dcc07b791..1805012269 100644 --- a/lily/global-gravs.cc +++ b/lily/global-gravs.cc @@ -12,32 +12,32 @@ #include "debug.hh" #include "engraver.hh" -struct Request_engraver_table_entry { +struct Engraver_table_entry { String name_str_; Grav_ctor ctor_l_; - Request_engraver_table_entry(String s, Grav_ctor f) { + Engraver_table_entry(String s, Grav_ctor f) { name_str_ =s; ctor_l_ = f; } - Request_engraver_table_entry() + Engraver_table_entry() { ctor_l_ =0; } }; -static Array *grav_table=0; +static Array *grav_table=0; void -add_request_engraver(String s, Grav_ctor f) +add_Engraver(String s, Grav_ctor f) { if (!grav_table) - grav_table = new Array; + grav_table = new Array; - grav_table->push(Request_engraver_table_entry(s, f)); + grav_table->push(Engraver_table_entry(s, f)); } -Request_engraver* +Engraver* get_engraver_p(String s) { for (int i=0; i < grav_table->size(); i++) { diff --git a/lily/head-grav.cc b/lily/head-grav.cc index bc70563126..f3bca51721 100644 --- a/lily/head-grav.cc +++ b/lily/head-grav.cc @@ -65,5 +65,5 @@ Note_head_engraver::do_post_move_processing() } IMPLEMENT_STATIC_NAME(Note_head_engraver); -IMPLEMENT_IS_TYPE_B1(Note_head_engraver,Request_engraver); +IMPLEMENT_IS_TYPE_B1(Note_head_engraver,Engraver); ADD_THIS_ENGRAVER(Note_head_engraver); diff --git a/lily/identifier.cc b/lily/identifier.cc index 60831cef13..072cd4def4 100644 --- a/lily/identifier.cc +++ b/lily/identifier.cc @@ -59,6 +59,7 @@ Class::do_print() const { \ } \ class Class + DEFAULT_PRINT(Script_id, General_script_def, script); DEFAULT_PRINT(Lookup_id, Lookup, lookup); DEFAULT_PRINT(Symtables_id, Symtables, symtables); @@ -67,13 +68,20 @@ DEFAULT_PRINT(Request_id, Request, request); DEFAULT_PRINT(Score_id, Score, score); DEFAULT_PRINT(Input_gravs_id, Input_engraver, igravs); DEFAULT_PRINT(Paper_def_id,Paper_def, paperdef); + void Real_id::do_print() const { - Identifier::print(); mtor << *((Real_id*)this)->real(false)<< "\n"; } +void +Int_id::do_print() const +{ + mtor << *((Int_id*)this)->intid(false)<< "\n"; +} + + #define default_accessor(Idclass, Class, accessor)\ Class*\ Idclass::accessor(bool copy) {\ @@ -103,6 +111,7 @@ Idclass::Idclass(String s, Class*st, int code):Identifier(s,code) { data = st; } +implement_id_class(Int_id, int, intid); implement_id_class(Real_id, Real, real); implement_id_class(Script_id, General_script_def, script); implement_id_class(Lookup_id, Lookup, lookup); @@ -118,7 +127,7 @@ Identifier::Identifier(Identifier const&) assert(false); } - +default_accessor(Int_id, int, intid); default_accessor(Real_id, Real, real); virtual_accessor(Script_id, General_script_def, script); default_accessor(Lookup_id, Lookup, lookup); diff --git a/lily/include/acceptor.hh b/lily/include/acceptor.hh index aabbcf5337..872f374aee 100644 --- a/lily/include/acceptor.hh +++ b/lily/include/acceptor.hh @@ -9,6 +9,7 @@ #ifndef ACCEPTOR_HH #define ACCEPTOR_HH +#error #include "string.hh" #include "lily-proto.hh" diff --git a/lily/include/bar-grav.hh b/lily/include/bar-grav.hh index 173d15e201..d65c26930b 100644 --- a/lily/include/bar-grav.hh +++ b/lily/include/bar-grav.hh @@ -14,7 +14,7 @@ /** generate bars. Either user ("|:"), or default (new measure) */ -class Bar_engraver : public Request_engraver { +class Bar_engraver : public Engraver { Bar_req * bar_req_l_; Bar * bar_p_; public: diff --git a/lily/include/bar.hh b/lily/include/bar.hh index 9513fc1533..ccef49e2bf 100644 --- a/lily/include/bar.hh +++ b/lily/include/bar.hh @@ -13,6 +13,7 @@ class Bar:public Item { public: String type_str_; + int spanned_i_; NAME_MEMBERS(); SCORE_ELEM_CLONE(Bar); diff --git a/lily/include/clef-grav.hh b/lily/include/clef-grav.hh index 5346c0b6e3..ec35bf0b5a 100644 --- a/lily/include/clef-grav.hh +++ b/lily/include/clef-grav.hh @@ -12,7 +12,7 @@ #include "engraver.hh" /// where is c-0 in the staff? -class Clef_engraver : public Request_engraver { +class Clef_engraver : public Engraver { Clef_item *clef_p_; Clef_change_req * clef_req_l_; void create_clef(); diff --git a/lily/include/collision-grav.hh b/lily/include/collision-grav.hh index 0b46db58c3..4500a72617 100644 --- a/lily/include/collision-grav.hh +++ b/lily/include/collision-grav.hh @@ -12,7 +12,7 @@ #include "engraver.hh" -class Collision_engraver : public Request_engraver { +class Collision_engraver : public Engraver { Collision* col_p_; protected: diff --git a/lily/include/dynamic-grav.hh b/lily/include/dynamic-grav.hh index 791b2f129e..5c1a585ca5 100644 --- a/lily/include/dynamic-grav.hh +++ b/lily/include/dynamic-grav.hh @@ -12,7 +12,7 @@ #include "engraver.hh" -class Dynamic_engraver : public Request_engraver { +class Dynamic_engraver : public Engraver { int dir_i_; Text_item * dynamic_p_; Crescendo * to_end_cresc_p_; diff --git a/lily/include/engraver-group.hh b/lily/include/engraver-group.hh index fc76fd7bd5..d65375e492 100644 --- a/lily/include/engraver-group.hh +++ b/lily/include/engraver-group.hh @@ -21,12 +21,12 @@ Group a number of engravers. Usually delegates everything to its contents. Postfix: group */ -class Engraver_group_engraver : public Request_engraver, public virtual Translator { +class Engraver_group_engraver : public Engraver, public virtual Translator { protected: - Pointer_list grav_list_; + Pointer_list grav_list_; Link_array group_l_arr_; - Link_array nongroup_l_arr_; + Link_array nongroup_l_arr_; Array announce_info_arr_; @@ -40,6 +40,7 @@ public: Engraver_group_engraver(); ~Engraver_group_engraver(); + bool is_bottom_engraver_b() const; /** @@ -47,21 +48,22 @@ public: Pre: #grav_l# is in #grav_list_# */ - virtual void terminate_engraver(Request_engraver * grav_l); + virtual void terminate_engraver(Engraver * grav_l); NAME_MEMBERS(); /** Remove #grav_l# from the list, and return it. */ - virtual Request_engraver * remove_engraver_p(Request_engraver*grav_l); + virtual Engraver * remove_engraver_p(Engraver*grav_l); virtual void set_feature(Feature i); - virtual void sync_features() ; + virtual void sync_features(); + virtual void do_pre_move_processing(); virtual void do_post_move_processing(); - virtual void do_removal_processing(); virtual bool do_try_request(Request*); + virtual bool try_request(Request*); virtual void do_process_requests(); virtual Staff_info get_staff_info()const; @@ -69,11 +71,8 @@ public: virtual Engraver_group_engraver * find_engraver_l(String name,String id); virtual void do_announces(); virtual void announce_element(Score_elem_info); - - - virtual void add(Request_engraver* grav_p); - - virtual bool contains_b(Request_engraver*)const; + virtual void add(Engraver* grav_p); + virtual bool contains_b(Engraver*)const; virtual Translator* find_get_translator_l(String name, String id); virtual Translator * get_default_interpreter(); diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index 320bdd3256..9752fd75fc 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -1,5 +1,5 @@ /* - engraver.hh -- declare Request_engraver + engraver.hh -- declare Engraver source file of the GNU LilyPond music typesetter @@ -25,13 +25,13 @@ */ -class Request_engraver { +class Engraver { friend class Engraver_group_engraver; /** - You cannot copy a Request_engraver + You cannot copy a Engraver */ - Request_engraver(const Request_engraver&){} + Engraver(const Engraver&){} enum { VIRGIN, @@ -99,7 +99,7 @@ protected: virtual void sync_features() {} - virtual bool contains_b(Request_engraver*grav_l)const; + virtual bool contains_b(Engraver*grav_l)const; /** Get information on the staff. Default: ask daddy. */ @@ -126,13 +126,14 @@ public: */ bool try_request(Request*); + bool is_bottom_engraver() const; void post_move_processing(); Engraver_group_engraver * daddy_grav_l_; - Request_engraver(); - virtual ~Request_engraver(){} + Engraver(); + virtual ~Engraver(){} NAME_MEMBERS(); void print() const; }; @@ -142,17 +143,17 @@ public: */ #define ADD_THIS_ENGRAVER(c) \ struct c ## init { \ - static Request_engraver * globalctor (){ \ + static Engraver * globalctor (){ \ return new c; \ } \ c ## init () { \ - add_request_engraver(c::static_name(), globalctor); \ + add_Engraver(c::static_name(), globalctor); \ \ } \ } _ ## c ## init; -typedef Request_engraver*(*Grav_ctor)(void); -void add_request_engraver(String s, Grav_ctor f); +typedef Engraver*(*Grav_ctor)(void); +void add_Engraver(String s, Grav_ctor f); #endif // ENGRAVER_HH diff --git a/lily/include/global-translator.hh b/lily/include/global-translator.hh index ce34cfb527..877020b10d 100644 --- a/lily/include/global-translator.hh +++ b/lily/include/global-translator.hh @@ -1,5 +1,5 @@ /* - global-acceptor.hh -- declare Global_acceptor + global-translator.hh -- declare Global_translator source file of the GNU LilyPond music typesetter @@ -7,10 +7,10 @@ */ -#ifndef GLOBAL_ACCEPTOR_HH -#define GLOBAL_ACCEPTOR_HH +#ifndef GLOBAL_TRANSLATOR_HH +#define GLOBAL_TRANSLATOR_HH -#include "acceptor.hh" +#include "translator.hh" #include "pqueue.hh" class Global_translator : public virtual Translator { @@ -29,6 +29,7 @@ public: virtual void finish() {} protected: + virtual Global_translator *global_l() { return this; } virtual int depth_i() const; virtual Translator *ancestor_l(int); }; diff --git a/lily/include/head-grav.hh b/lily/include/head-grav.hh index 07f7210925..c7522c5005 100644 --- a/lily/include/head-grav.hh +++ b/lily/include/head-grav.hh @@ -9,7 +9,7 @@ #define HEADGRAV_HH #include "engraver.hh" -struct Note_head_engraver : Request_engraver { +struct Note_head_engraver : Engraver { Note_head* note_p_; Rhythmic_req * note_req_l_; diff --git a/lily/include/input-engraver.hh b/lily/include/input-engraver.hh index 5894a1db64..b9514a69cd 100644 --- a/lily/include/input-engraver.hh +++ b/lily/include/input-engraver.hh @@ -17,11 +17,17 @@ #include "string.hh" #include "varray.hh" +struct Input_engraver_list : public Pointer_list +{ + Input_engraver_list(Input_engraver_list const &); + Input_engraver_list(){} +}; + struct Input_engraver : Input { - Pointer_list contains_igrav_p_list_; + Input_engraver_list contains_igrav_p_list_; Array consists_str_arr_; Array alias_str_arr_; - String name_str_; + String type_str_; void add(Input_engraver *); bool is_name_b(String); @@ -35,8 +41,6 @@ struct Input_engraver : Input { }; -void add_global_input_engraver(Input_engraver* igrav_p); -Input_engraver*lookup_grav(String); -Request_engraver*get_engraver_p(String s); +Engraver*get_engraver_p(String s); #endif // INPUT_ENGRAVER_HH diff --git a/lily/include/interpreter.hh b/lily/include/interpreter.hh deleted file mode 100644 index 6645ab0052..0000000000 --- a/lily/include/interpreter.hh +++ /dev/null @@ -1,15 +0,0 @@ -/* - interpretor.hh -- declare Interpreter - - source file of the GNU LilyPond music typesetter - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef INTERPRETER_HH -#define INTERPRETER_HH - -#include "lily-proto.hh" - -#endif // INTERPRETER_HH diff --git a/lily/include/key-grav.hh b/lily/include/key-grav.hh index 8f9b9ecdf1..d62345ab1b 100644 --- a/lily/include/key-grav.hh +++ b/lily/include/key-grav.hh @@ -13,7 +13,7 @@ #include "engraver.hh" #include "key.hh" -struct Key_engraver : Request_engraver { +struct Key_engraver : Engraver { Key key_; Key_change_req * keyreq_l_; Key_item * kit_p_; diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 321ea3382c..468a656abb 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -122,7 +122,7 @@ struct Rational; struct Engraver_group_engraver; struct Request; struct Request_column; -struct Request_engraver; +struct Engraver; struct Rest; struct Rest_collision; struct Rest_collision_engraver; @@ -175,7 +175,9 @@ struct Timing_req; struct Vertical_brace; struct Vertical_spanner; struct Vertical_group; - +struct Vertical_align_spanner; +struct Vertical_align_engraver; +struct Vertical_align_element; struct Voice; struct Voice_element; struct Voice_group_engravers; diff --git a/lily/include/local-key-grav.hh b/lily/include/local-key-grav.hh index 6ed5d78ac5..cc52ed5f8f 100644 --- a/lily/include/local-key-grav.hh +++ b/lily/include/local-key-grav.hh @@ -12,7 +12,7 @@ #include "key.hh" #include "parray.hh" -struct Local_key_engraver : Request_engraver { +struct Local_key_engraver : Engraver { Key local_key_; Key const *key_C_; Array mel_l_arr_; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index aff20862d7..d5e0d07fd4 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -45,7 +45,8 @@ struct Lookup { Symbol flag(int)const; Symbol rest(int, bool outside)const; Symbol clef(String)const; - Symbol bar(String)const; + Symbol bar(String, Real height)const; + Symbol dots(int)const; Symbol slur(int dy, Real &dx, int dir)const; Symbol half_slur(int dy, Real &dx, int dir, int xpart)const; diff --git a/lily/include/lyric-engraver.hh b/lily/include/lyric-engraver.hh index 8771d4b3cd..9c50d5c068 100644 --- a/lily/include/lyric-engraver.hh +++ b/lily/include/lyric-engraver.hh @@ -14,7 +14,7 @@ #include "lily-proto.hh" -class Lyric_engraver : public Request_engraver { +class Lyric_engraver : public Engraver { Array lreq_arr_; virtual bool do_try_request(Request*); virtual void do_process_requests(); diff --git a/lily/include/meter-grav.hh b/lily/include/meter-grav.hh index 38fe040450..d2f25ec2cd 100644 --- a/lily/include/meter-grav.hh +++ b/lily/include/meter-grav.hh @@ -16,7 +16,7 @@ /** generate meters. */ -class Meter_engraver : public Request_engraver { +class Meter_engraver : public Engraver { public: Time_description time_; Rhythmic_grouping default_grouping_; diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index c4fc80655c..661d380d6c 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -28,7 +28,8 @@ public: Music_iterator* get_iterator_p(Music*)const; void set_translator(Translator*); Music_iterator(); - virtual void next(Moment until); + + virtual void process_and_next(Moment until); virtual Moment next_moment()const; virtual bool ok()const; virtual ~Music_iterator(); @@ -49,14 +50,14 @@ protected: virtual Moment next_moment() const; virtual void do_print()const; - virtual void next(Moment); + virtual void process_and_next(Moment); }; class Change_iterator : public Music_iterator { Change_reg * change_l_; public: NAME_MEMBERS(); - virtual void next(Moment); + virtual void process_and_next(Moment); Change_iterator(Change_reg*); }; @@ -70,7 +71,7 @@ public: protected: virtual void do_print()const; virtual void construct_children(); - virtual void next(Moment); + virtual void process_and_next(Moment); virtual Moment next_moment()const; virtual bool ok()const; }; @@ -98,7 +99,7 @@ protected: virtual void do_print()const; virtual void construct_children(); ~Voice_iterator(); - virtual void next(Moment); + virtual void process_and_next(Moment); virtual Moment next_moment()const; virtual bool ok()const; }; diff --git a/lily/include/note-column-grav.hh b/lily/include/note-column-grav.hh index 141fe4b93f..800550bd59 100644 --- a/lily/include/note-column-grav.hh +++ b/lily/include/note-column-grav.hh @@ -12,7 +12,7 @@ #include "engraver.hh" -class Note_column_engraver :public Request_engraver { +class Note_column_engraver :public Engraver { Rest_column * rest_col_l(); Note_column * note_col_l(); diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index 98c9e11acd..d93246dfaf 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -37,6 +37,7 @@ class Paper_def { Lookup *lookup_p_; Assoc *real_vars_p_; + Input_engraver * igrav_p_; public: String outfile_str_; @@ -47,6 +48,8 @@ public: void reinit(); Paper_def(); void set(Lookup*); + void set (Input_engraver * ); + Global_translator * get_global_translator_p()const; ~Paper_def(); Paper_def(Paper_def const&); /// The distance between beams diff --git a/lily/include/rest-collision-grav.hh b/lily/include/rest-collision-grav.hh index 2d67a1bde0..8685aa5d7d 100644 --- a/lily/include/rest-collision-grav.hh +++ b/lily/include/rest-collision-grav.hh @@ -13,7 +13,7 @@ #include "varray.hh" #include "engraver.hh" -class Rest_collision_engraver : public Request_engraver { +class Rest_collision_engraver : public Engraver { Rest_collision* rest_collision_p_; Array< Collision *> collision_l_arr_; protected: diff --git a/lily/include/score-align-grav.hh b/lily/include/score-align-grav.hh index 72777e2dae..fb40310ccb 100644 --- a/lily/include/score-align-grav.hh +++ b/lily/include/score-align-grav.hh @@ -12,7 +12,7 @@ #include "engraver.hh" -class Score_align_engraver: public Request_engraver +class Score_align_engraver: public Engraver { Horizontal_group_item * align_p_; public: diff --git a/lily/include/score-elem-info.hh b/lily/include/score-elem-info.hh index 871634214f..6b97718562 100644 --- a/lily/include/score-elem-info.hh +++ b/lily/include/score-elem-info.hh @@ -19,7 +19,7 @@ struct Score_elem_info { Score_elem * elem_l_; Request*req_l_; Voice const * voice_l_; - Array origin_grav_l_arr_; + Array origin_grav_l_arr_; /* *** */ Score_elem_info(Score_elem*, Request*); diff --git a/lily/include/score-elem.hh b/lily/include/score-elem.hh index 867a3da602..4189057f54 100644 --- a/lily/include/score-elem.hh +++ b/lily/include/score-elem.hh @@ -123,6 +123,7 @@ protected: virtual void do_post_processing(); virtual void do_substitute_dependency(Score_elem * , Score_elem *); + virtual void do_substitute_dependent(Score_elem *, Score_elem *); virtual void do_break_processing(); virtual void handle_broken_dependencies(); virtual void handle_prebroken_dependencies(); diff --git a/lily/include/score-halign-grav.hh b/lily/include/score-halign-grav.hh index fef509157a..cba48928b8 100644 --- a/lily/include/score-halign-grav.hh +++ b/lily/include/score-halign-grav.hh @@ -10,7 +10,7 @@ #ifndef SCORE_HALIGN_GRAV_HH #define SCORE_HALIGN_GRAV_HH #include "engraver.hh" -class Score_horizontal_align_engraver : public Request_engraver { +class Score_horizontal_align_engraver : public Engraver { Break_align_item * halign_p_; public: diff --git a/lily/include/scoreline.hh b/lily/include/scoreline.hh index 5cc5c9aa4f..2f44031851 100644 --- a/lily/include/scoreline.hh +++ b/lily/include/scoreline.hh @@ -9,10 +9,9 @@ #include "colhpos.hh" #include "spanner-elem-group.hh" -#include "vertical-align-elem.hh" /// the columns of a score that form one line. -class Line_of_score : public Spanner, public Vertical_align_elem { +class Line_of_score : public Spanner{ public: Link_array cols; bool error_mark_b_; @@ -26,16 +25,12 @@ public: /// is #c# contained in #*this#? bool contains_b(PCol const *c)const; - bool contains_b(Score_elem const*e) const { - return Vertical_align_elem::contains_b(e); - } Link_array get_lines()const; void set_breaking(Array const&); protected: virtual void break_into_pieces(); - virtual void do_substitute_dependency(Score_elem*,Score_elem*); virtual Interval do_width()const; virtual void do_print() const; SCORE_ELEM_CLONE(Line_of_score); diff --git a/lily/include/script-grav.hh b/lily/include/script-grav.hh index fc8f02980d..bf79f8e47a 100644 --- a/lily/include/script-grav.hh +++ b/lily/include/script-grav.hh @@ -11,7 +11,7 @@ #include "engraver.hh" -class Script_engraver : public Request_engraver { +class Script_engraver : public Engraver { Array