]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.73pre release/0.0.73pre
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 6 Jul 1997 23:25:08 +0000 (01:25 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 6 Jul 1997 23:25:08 +0000 (01:25 +0200)
114 files changed:
.dstreamrc
.version
AUTHORS.text
BUGS [new file with mode: 0644]
Documentation/INSTALL.pod
Documentation/Makefile
Documentation/index.pod
Documentation/lilyliterature.pod
Documentation/other-packages.pod
INSTALL.text
NEWS
TODO
bin/conflily [changed mode: 0644->0755]
init/engraver.ini
init/paper.ini [deleted file]
init/paper16.ini
init/symbol.ini
init/table16.ini
input/kortjakje.ly
input/multi.ly
input/scsii-menuetto.ly
input/standchen.ly
lily/.version
lily/bar-grav.cc
lily/bar.cc
lily/beam.cc
lily/clef-grav.cc
lily/collision-grav.cc
lily/dynamic-grav.cc
lily/engraver-group.cc
lily/engraver.cc
lily/global-gravs.cc
lily/head-grav.cc
lily/identifier.cc
lily/include/acceptor.hh
lily/include/bar-grav.hh
lily/include/bar.hh
lily/include/clef-grav.hh
lily/include/collision-grav.hh
lily/include/dynamic-grav.hh
lily/include/engraver-group.hh
lily/include/engraver.hh
lily/include/global-translator.hh
lily/include/head-grav.hh
lily/include/input-engraver.hh
lily/include/interpreter.hh [deleted file]
lily/include/key-grav.hh
lily/include/lily-proto.hh
lily/include/local-key-grav.hh
lily/include/lookup.hh
lily/include/lyric-engraver.hh
lily/include/meter-grav.hh
lily/include/music-iterator.hh
lily/include/note-column-grav.hh
lily/include/paper-def.hh
lily/include/rest-collision-grav.hh
lily/include/score-align-grav.hh
lily/include/score-elem-info.hh
lily/include/score-elem.hh
lily/include/score-halign-grav.hh
lily/include/scoreline.hh
lily/include/script-grav.hh
lily/include/slur-grav.hh
lily/include/span-bar-grav.hh [new file with mode: 0644]
lily/include/span-bar.hh [new file with mode: 0644]
lily/include/staff-info.hh
lily/include/staff-sym-grav.hh
lily/include/stem-beam-grav.hh
lily/include/swallow-grav.hh
lily/include/text-grav.hh
lily/include/tie-grav.hh
lily/include/translator.hh
lily/include/vertical-align-elem.hh
lily/include/vertical-align-grav.hh [new file with mode: 0644]
lily/include/vertical-align-spanner.hh [new file with mode: 0644]
lily/include/voice-gravs.hh [deleted file]
lily/input-engraver.cc
lily/key-grav.cc
lily/lexer.l
lily/local-key-grav.cc
lily/lookup.cc
lily/lyric-engraver.cc
lily/meter-grav.cc
lily/music-iterator.cc
lily/note-column-grav.cc
lily/paper-def.cc
lily/parser.y
lily/rest-collision-grav.cc
lily/score-align-grav.cc
lily/score-elem.cc
lily/score-grav.cc
lily/score-halign-grav.cc
lily/score.cc
lily/scoreline.cc
lily/script-grav.cc
lily/slur-grav.cc
lily/span-bar-grav.cc [new file with mode: 0644]
lily/span-bar.cc [new file with mode: 0644]
lily/staff-gravs.cc
lily/staff-sym-grav.cc
lily/stem-beam-grav.cc
lily/swallow-grav.cc
lily/template6.cc
lily/text-grav.cc
lily/tie-grav.cc
lily/translator.cc
lily/vertical-align-elem.cc
lily/vertical-align-grav.cc [new file with mode: 0644]
lily/vertical-align-spanner.cc [new file with mode: 0644]
lily/voice-gravs.cc [deleted file]
lily/voice-group-gravs.cc
make/lilypond.lsm
make/lilypond.spec
tex/lilyponddefs.tex

index 0d6086e1ea192e0ad5a06b542ab0920b5f812ccc..321a61888aca5312c08531b26b459bc58ebdeaf9 100644 (file)
@@ -13,8 +13,8 @@ PScore                        0
 Idealspacing           0
 
 # yydebug
-InitParser             1
-Parser                 1
+InitParser             0
+Parser                 0
 InitDeclarations       0
 Declarations           1
 # FlexLexer debug
index 7be2ab2ceced61505f244bf5ba6d1e94680d19e6..a3dacf472d17d8f9ad9a66babc13c5e4a9c93596 100644 (file)
--- 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
 
index 52c105b36ca387cf476d3403023e593f5846fc7e..c1d175bcefef7ed1a52ac0fcb1525d2fbe5cd514 100644 (file)
@@ -61,6 +61,6 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNT\bT\bT\bTR\bR\bR\bRI\bI\bI\bIB\bB\bB\bBU\bU\bU\bUT\bT\bT\bTO\bO\bO\bOR\bR\bR\bRS\bS
 
 
 
-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 (file)
index 0000000..2806cba
--- /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
index 2fc99a09335dc9a82eb898b70e9fabb9b0569084..e2697cffa969871e83e33a14a6ee04a3702b5206 100644 (file)
@@ -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
 
index d703adfd1adcd3ae6dd7f6a927a8e1eaacf45a62..e62a4c544103f26a9ae87c3d739be9d3a0e9d224 100644 (file)
@@ -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
index ebaae8553f17a33c66b4b46ebee17550e9db91d3..30ba133a2b5023446d1b03a19d9eebb47269e27e 100644 (file)
@@ -19,6 +19,8 @@ examples of what LilyPond can do: MIDI, PS, .gif and input.
 
 =head1 DOCUMENTATION
 
+=over 4
+
 
 =item *
 <a href=INSTALL.html
index bb56b4a911fa7ed3019243e2a1c426389893a74f..5200873a164258e4947cec568eef293dd6dc53d2 100644 (file)
@@ -1,6 +1,6 @@
 =head1 NAME 
 
-Lily literature -- reading on music engraving/typesetting/etc.
+Lily Literature -- reading on music engraving/typesetting/etc.
 
 =head1 DESCRIPTION
 
@@ -10,7 +10,7 @@ note that don't have access to most material.
 [What I do know, I've commented inside brackets. They are just
 my personal comments, not to be taken too seriously]
 
-=head2 References
+=head2 Music engraving
 
 Wanske, Helene.  ``Musiknotation --- Von der Syntax des Notenstichs
 zum EDV-gesteuerten Notensatz'', Schott-Verlag, Mainz 1988.  ISBN
@@ -26,11 +26,6 @@ Maxwell Weaner and Walter Boelke, Standard Music Notation Practice,
 revised edition by Arnold Broido and Daniel Dorff. Music Publisher's
 Association of the United States Inc., 1993.
 
-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]
-
 Ross, Ted. ``Teach yourself the art of music engraving and
 processing'' (3rd edition). Hansen House, Miami Beach, FL.
 
@@ -40,7 +35,7 @@ processing'' (3rd edition). Hansen House, Miami Beach, FL.
        (305) 532-5461
 
 [This is about I<engraving> 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<H.-D.> 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
index c52c1dbb00015f115bd9c695e39c07a89ddce368..0e1f58d35ab027d288d67a1a61b4cd682d8d3716 100644 (file)
@@ -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/
 
index 3710c04ef9e4d2321823fccb06802e284fc2b3e5..c27731e2764f1aa59fb4913cb5aabb26aeeedd87 100644 (file)
@@ -61,7 +61,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-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 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
 
 
-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)
 
        +\bo    TeX
 
-       +\bo    The MusixTeX fonts. (I use those found in MusixTeX
-            T.59). Beware, the clef symbol has changed position
-            in the Egler version, aka. OpusTeX)
+       +\bo    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 @@ R\bR\bR\bRE\bE\bE\bED\bD\bD\bDH\bH\bH\bHA\bA\bA\bAT\bT\bT\bT L\bL\bL\bLI\bI\bI\bIN\bN\bN\bNU\bU\bU\bUX\bX\bX\bX
 
 
 
-3/Jul/97                 LilyPond 0.0.72                        4
+7/Jul/97                 LilyPond 0.0.73                        4
 
 
 
@@ -325,6 +325,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-3/Jul/97                 LilyPond 0.0.72                        5
+7/Jul/97                 LilyPond 0.0.73                        5
 
 
diff --git a/NEWS b/NEWS
index 71128cd93f37af0a5554114d6ecddf0c4df07f79..b9d083dda759dff8eb7c180d125917229305f325 100644 (file)
--- 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 cd3a973460654442f83055d715cd8f8244c9a2b3..b322e39d18bd1c1cc42aeb91b80bca92868f2229 100644 (file)
--- 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
old mode 100644 (file)
new mode 100755 (executable)
index 086e378ae1404089b70e692d271608b7f5a0807d..d0a6f457bc0639efd2b88f651f4c5697d91533ca 100644 (file)
@@ -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 (file)
index 1c15975..0000000
+++ /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 }
-}
index 7854e3850a7cccb1ee7dabb72aeb8cd79dc538b1..369d7f435b9048ed77eea41d5c68fb951e4ff82d 100644 (file)
@@ -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"
 }
index bb067af6b2ce2d3d233239cca3f26f5c8a7a6d6d..2c26af1cc53aba18ccd875b79ac377b68a8a46e8 100644 (file)
@@ -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
 
index 62abd29e37565c0aff787e654858f8b01bb541e9..6d202aa4200422517b19924f7910fcff5a4aec48 100644 (file)
@@ -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
 
      }
 
index 16099a6ec939034dc735e588ac673005cd9565c7..617dac78e93db6b9416d4a661df732fa499e5b5b 100644 (file)
@@ -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
index 275db4110255ff060b657b5b4ba1545ac294c30f..02b1dcfaf604b04f3c8177d4af17d963b196dd63 100644 (file)
@@ -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 
 
                }
index 8f4b5daa77d816bb1026fcfa67a31d4b5a4d94ba..9bc9fcf38fcf8bcfae4b9ac50534930bd7e4a716 100644 (file)
@@ -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{ 
index 516a503309f1184d94fa747194497e00a3dd8110..d1c5ec81d9a32a21a120160a2931a7dfbeec05a9 100644 (file)
@@ -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;
index 01a36845dced467e4b52f155a6e6d7380b77c519..aa80b10d8e6266ea965d15d06f1680524e7f2b09 100644 (file)
@@ -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
 
index 4282803b05aa9a0b9b08c73b288428e18ace05a6..61cf61147450d8e9170802ad6329c29e46dde571 100644 (file)
@@ -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);
 
 
index cf8d15bef287151dea74c8974f0f3e698b3243e3..6d50fa0fc91d14771654b77947a3d28bbc3f072b 100644 (file)
@@ -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;
 }
index 9e9f30eaff4d2c7f0400510fec553bb88ce54de1..d4f741d78893dd82a1451ed98d0e6b8b811de791 100644 (file)
@@ -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]
   
 */
 
index ab5177674ab1ee3a159a33b0152878ba7d6703d7..5f7ad85a8cc466bb0159a6f2259433fb756682f9 100644 (file)
@@ -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);
index 428924d891c22261ac039ff2d691812700e87bb7..1cb0295a8bba4b5ec5dd3f50ce2b6dd70780c6dc 100644 (file)
@@ -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);
index 716abae463feed5a0b51f675c829641d45bf3c92..fea92a8b6a420062db922b1f1938e6efba436eb2 100644 (file)
@@ -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()
index bcfa32a034cf5942b57c4420d5309513648c3828..c91921cefc4a2365a8c2f8ec09ba8450da028b88 100644 (file)
@@ -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();
+}
index 78fa6ca6235ce2e307aa74d82b35b9e5bc2121fd..29027f4deace92fe15b9053b28d4fd3db93c886a 100644 (file)
@@ -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
 {
 }
 
index 6dcc07b7913b925358e9363bf31e40eff2fcae92..18050122695d3ebd453e333b9fb6f00e8b03f68e 100644 (file)
 #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<Request_engraver_table_entry> *grav_table=0;
+static Array<Engraver_table_entry> *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<Request_engraver_table_entry>;
+       grav_table = new Array<Engraver_table_entry>;
     
-    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++) {
index bc7056312602dfe4875d4acf888854542602b61e..f3bca5172139e5aebde907a1c58f0a3044cca798 100644 (file)
@@ -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);
index 60831cef1344bf243c146d91dc6987d7bc8a9e7c..072cd4def41ccbba6f36c9ad7f9bd43bb7c51953 100644 (file)
@@ -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);
index aabbcf53373dd04b69db773f05459226a3d23209..872f374aee2478554c9491d4837f3759d8b8a04b 100644 (file)
@@ -9,6 +9,7 @@
 
 #ifndef ACCEPTOR_HH
 #define ACCEPTOR_HH
+#error
 
 #include "string.hh"
 #include "lily-proto.hh"
index 173d15e20197d6cd7fd706cadfdce52d81c8ab45..d65c26930bd59bb242296846510f6634b1effcd9 100644 (file)
@@ -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:
index 9513fc153310682aa5c75cd51100f5e3115a84cd..ccef49e2bf47bda6321b913924c394cca355d4c1 100644 (file)
@@ -13,6 +13,7 @@
 class Bar:public Item {
 public:
     String type_str_;
+    int spanned_i_;
     
     NAME_MEMBERS();
     SCORE_ELEM_CLONE(Bar);
index 5346c0b6e3e6b58a82e840f44dd19a93c042548d..ec35bf0b5a9e790458bb2f8ec73a9702fd557eac 100644 (file)
@@ -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();
index 0b46db58c35728e5a2c371896b788efc33ce6df0..4500a726179a7b20b84d619a66bd231e4a3179ec 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "engraver.hh"
 
-class Collision_engraver : public Request_engraver {
+class Collision_engraver : public Engraver {
     Collision* col_p_;
 
 protected:
index 791b2f129e29c1a3b91a530a87cbfca3183ef09b..5c1a585ca54823b50bd53c02dcb35e2c1289db22 100644 (file)
@@ -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_;
index fc76fd7bd5e55b0f8b4c3cb1fc4ad87523f132ca..d65375e49276615bffd7da938a5cf7c3d2d52c0d 100644 (file)
   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<Request_engraver*> grav_list_;
+    Pointer_list<Engraver*> grav_list_;
     Link_array<Engraver_group_engraver> group_l_arr_;
-    Link_array<Request_engraver> nongroup_l_arr_;
+    Link_array<Engraver> nongroup_l_arr_;
     
     Array<Score_elem_info> 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();
index 320bdd3256af6874829e9e0da76a6d8dfd0f9e35..9752fd75fc0568327228d8c22caf76644fb5f401 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  engraver.hh -- declare Request_engraver
+  engraver.hh -- declare Engraver
 
   source file of the GNU LilyPond music typesetter
 
   
   */
 
-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
 
index ce34cfb52751b7d655fd4366b06c254fe8816624..877020b10d462a0b5c7b7cb187338222e96ccd24 100644 (file)
@@ -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);
 };
index 07f7210925f31e47b8187989a42c7214c069bdf9..c7522c5005de836ccf7773a25ef59b9b8becc93a 100644 (file)
@@ -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_;
     
index 5894a1db64229b13f619e1ff8adcd91bc2e282c8..b9514a69cddae59081ad4994ef943ccac4dc6a77 100644 (file)
 #include "string.hh"
 #include "varray.hh"
 
+struct Input_engraver_list : public Pointer_list<Input_engraver*> 
+{
+    Input_engraver_list(Input_engraver_list const &);
+    Input_engraver_list(){}
+};
+
 struct Input_engraver : Input { 
-    Pointer_list<Input_engraver*> contains_igrav_p_list_;
+    Input_engraver_list contains_igrav_p_list_;
     Array<String> consists_str_arr_;
     Array<String> 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 (file)
index 6645ab0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-  interpretor.hh -- declare Interpreter
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef INTERPRETER_HH
-#define INTERPRETER_HH
-
-#include "lily-proto.hh"
-
-#endif // INTERPRETER_HH
index 8f9b9ecdf18e43584c03733c46da19ce9a38dd26..d62345ab1b8df0978d60b59a11fb0654c226c479 100644 (file)
@@ -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_;
index 321ea3382c26584f397aaaabd1f0a80ef366bb6a..468a656abb8a47d1214bf29befa2dee6e6d487c4 100644 (file)
@@ -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;
index 6ed5d78ac5a0375d6a5475235f99e42ff3d7d074..cc52ed5f8f05b965158bbdba5a5a417c852632f2 100644 (file)
@@ -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<Note_req* > mel_l_arr_;
index aff20862d72c14d90637a24f0bb69497ef4c2d73..d5e0d07fd4eeb65e770b451c2376274ea7e8ab85 100644 (file)
@@ -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;
index 8771d4b3cdb326975182ccbf650562bdaccb1046..9c50d5c0682e36bb5d4c1223e0e60a534beaba8a 100644 (file)
@@ -14,7 +14,7 @@
 
 #include "lily-proto.hh"
 
-class Lyric_engraver : public Request_engraver {
+class Lyric_engraver : public Engraver {
     Array<Lyric_req*> lreq_arr_;
     virtual bool do_try_request(Request*);
     virtual void do_process_requests();
index 38fe040450a7634d16c76723473744a7b75a2eff..d2f25ec2cdb575792ec947b60faece26376c913e 100644 (file)
@@ -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_;
index c4fc80655c1a61da0a801fae1db3c264686e6386..661d380d6c27a1570014d215d30c5ce32119f039 100644 (file)
@@ -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;
 };
index 141fe4b93fc8d4dffd09d013edfc34e7e80eb051..800550bd59a24e50d9e657e7b8b184d6aab85c40 100644 (file)
@@ -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();
     
index 98c9e11acdd4f4b42f8ad2a2252740dd56e201de..d93246dfaffe2d39ba28cd5af413afbc61a6bada 100644 (file)
@@ -37,6 +37,7 @@ class Paper_def {
     Lookup *lookup_p_;
     Assoc<String, Real> *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
index 2d67a1bde0029851c86252d458bab456b60e2730..8685aa5d7dc3b281200f96bab541a06c21ab07e0 100644 (file)
@@ -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:
index 72777e2dae4490402f583efa159101ae7bcb74a2..fb40310ccb3be9627418da0e566b48d0ba2192a1 100644 (file)
@@ -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:
index 871634214f7ff19115496b3549daa7ffc2c160cb..6b97718562df71e813599de2df13ed2ac605e693 100644 (file)
@@ -19,7 +19,7 @@ struct Score_elem_info {
     Score_elem * elem_l_;
     Request*req_l_;
     Voice const * voice_l_;
-    Array<Request_engraver*> origin_grav_l_arr_;
+    Array<Engraver*> origin_grav_l_arr_;
 
     /* *** */
     Score_elem_info(Score_elem*, Request*);
index 867a3da602593e6361d2d408d403f676f0a56ff1..4189057f54618bff45fafedf78ffc10953ba8a13 100644 (file)
@@ -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();
index fef509157ad5b38b388e312893f82cf4e2bf891d..cba48928b80333d69f2eed6c822b19f345512861 100644 (file)
@@ -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:
index 5cc5c9aa4f62b980f77fc7796371359915d19ab7..2f440318515d5805c406632c35142922c66ab653 100644 (file)
@@ -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<PCol> 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<Line_of_score> get_lines()const;
     void set_breaking(Array<Col_hpositions> 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);
index fc8f02980d8aa7f593f7955a66036ce5307a77ff..bf79f8e47a339378fb2142d202c175ae85de9056 100644 (file)
@@ -11,7 +11,7 @@
 #include "engraver.hh"
 
 
-class Script_engraver : public Request_engraver {
+class Script_engraver : public Engraver {
     Array<Script *> script_p_arr_;
     Array<Script_req *> script_req_l_arr_;
 
index 34ac3fa18e5163ea74bf4e89260b2117f375fff0..063e59cfb354b4fb511d3e34fdd7962451322140 100644 (file)
@@ -10,7 +10,7 @@
 
 #include "engraver.hh"
 
-class Slur_engraver :public Request_engraver {
+class Slur_engraver :public Engraver {
     Array<Slur_req*> requests_arr_;
     Array<Slur_req*> new_slur_req_l_arr_;
     Array<Slur *> slur_l_stack_;
diff --git a/lily/include/span-bar-grav.hh b/lily/include/span-bar-grav.hh
new file mode 100644 (file)
index 0000000..e93c3af
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+  span-bar-grav.hh -- declare Span_bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef SPAN_BAR_GRAV_HH
+#define SPAN_BAR_GRAV_HH
+
+#include "engraver.hh"
+
+class Span_bar_engraver : public Engraver
+{
+    Span_bar * spanbar_p_;
+    Array<Bar*> bar_l_arr_;
+    Vertical_align_element * valign_l_;
+public:
+    NAME_MEMBERS();
+    virtual void acknowledge_element(Score_elem_info);
+    virtual void do_pre_move_processing();
+    Span_bar_engraver();
+
+};
+
+#endif // SPAN_BAR_GRAV_HH
diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh
new file mode 100644 (file)
index 0000000..177ada6
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+  span-bar.hh -- declare Span_bar
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef SPAN_BAR_HH
+#define SPAN_BAR_HH
+
+#include "bar.hh"
+
+class Span_bar : public Bar
+{
+    Link_array<Bar> spanning_l_arr_;
+
+public:
+    NAME_MEMBERS();
+    SCORE_ELEM_CLONE(Span_bar);
+    void add(Bar* );
+    void set( Vertical_align_element *);
+    void do_pre_processing();
+    void do_substitute_dependency(Score_elem*,Score_elem*);
+    Molecule * brew_molecule_p()const;
+};
+#endif // SPAN_BAR_HH
index 5afe06186042159cea6043727cf64b9198b040fe..5cceb59bdb0f65b0574ea3794ace91195df2e5ac 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "lily-proto.hh"
 
-/// struct to pass staff info along a Request_engraver hierarchy.
+/// struct to pass staff info along a Engraver hierarchy.
 struct Staff_info {
     int *c0_position_i_l_;
     Staff_symbol*staff_sym_l_;
index 382a6f6f5df831e60c2c3280c87db1894edb8fcf..3e0043ed31a002cdb57c4df5d5decd4b6ef6941b 100644 (file)
@@ -15,7 +15,7 @@
 /**
   Manage the staff symbol.
  */
-class Staff_sym_engraver : public Request_engraver { 
+class Staff_sym_engraver : public Engraver { 
     Staff_symbol *span_p_;
 public:
     Staff_sym_engraver();
index 37565d8bd40878a126bbd0cfd92f4132fe392016..a0b3062016a5fc5052116bc674d595dbffad54d3 100644 (file)
@@ -14,7 +14,7 @@
   override default_grouping if setting a n-plet
   
  */
-class Stem_beam_engraver : public Request_engraver {
+class Stem_beam_engraver : public Engraver {
     Stem * stem_p_;
     Beam * beam_p_;
     Beam_req * beam_req_l_;
index 4376402edfc10ecd51bbb3dc318dee5770e45bc4..db8bd9cb0f1a5a965eab2f47ffb867ddfdfa9d71 100644 (file)
@@ -16,7 +16,7 @@
   This engraver swallows everything given to it silently. The purpose of
   this is to prevent spurious "request junked" warnings.
  */
-class Swallow_engraver : public Request_engraver {
+class Swallow_engraver : public Engraver {
 protected:
     bool acceptable_request_b(Request*) const;
     bool do_try_request(Request*) ;
index de5843dfd21cec6f42ead5032253edd6a6d6055c..ef6d3a2855fada1ba4e8681272701375ab42d505 100644 (file)
@@ -9,7 +9,7 @@
 #define TEXTGRAV_HH
 #include "engraver.hh"
 
-class Text_engraver : public Request_engraver{
+class Text_engraver : public Engraver{
     Text_item * text_p_;
     Text_req * text_req_l_;
     int dir_i_;
index fc5a5196d92572f4704a671e2d412f1a87ce61fa..1b2b735e9d4c7b0f26165d5ecdfa2f9f07e0dbc1 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "engraver.hh"
 
-class Tie_engraver : public Request_engraver {
+class Tie_engraver : public Engraver {
     Tie * end_tie_p_;
     Tie * tie_p_;
     Moment end_mom_;
index 0dc7047f181799d8f1cf80926f05f04bb9c34cdb..65219628f030476b1af73056874ba6c7dff782b4 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  acceptor.hh -- declare Translator
+  translator.hh -- declare Translator
 
   source file of the GNU LilyPond music typesetter
 
@@ -7,12 +7,11 @@
 */
 
 
-#ifndef ACCEPTOR_HH
-#define ACCEPTOR_HH
+#ifndef TRANSLATOR_HH
+#define TRANSLATOR_HH
 
 #include "string.hh"
 #include "lily-proto.hh"
-#include "interpreter.hh"
 #include "virtual-methods.hh"
 
 class Translator {
@@ -21,10 +20,12 @@ public:
     
     int iterator_count_;
     
-    virtual Interpreter * interpreter_l() { return 0; }
+    virtual Global_translator *global_l() { return 0; }
 
     /// Score_register = 0, Staff_registers = 1, etc)
     virtual int depth_i()const=0;
+    virtual bool is_bottom_engraver_b() const { return false; }
+    virtual bool try_request(Request*);
     virtual Translator *find_get_translator_l(String name, String id)=0;
     virtual Translator *ancestor_l(int l=1)=0;
     virtual ~Translator(){}
@@ -33,8 +34,4 @@ public:
     virtual Translator *get_default_interpreter()=0;
 };
 
-class Interpreter : public virtual Translator {
-public:
-    virtual bool interpret_request_b(Request*) { return false;}
-};
-#endif // ACCEPTOR_HH
+#endif // TRANSLATOR_HH
index 0f17b97fbfd51df27b6ffbea8a62006f395c6634..cf20de93cc36e019e5151cbe69e07c5a0cf41a00 100644 (file)
 /**
   Order elements top to bottom.
  */
-class Vertical_align_elem : virtual public Score_elem {
+class Vertical_align_element : virtual public Score_elem {
     Link_array<Score_elem> elem_l_arr_;
 public:
     void add(Score_elem*);
     bool contains_b(Score_elem const*)const;
+    Vertical_align_element();
     NAME_MEMBERS();
 protected:
     virtual void do_substitute_dependency(Score_elem*,Score_elem*);
diff --git a/lily/include/vertical-align-grav.hh b/lily/include/vertical-align-grav.hh
new file mode 100644 (file)
index 0000000..3727882
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+  vertical-align-grav.hh -- declare Vertical_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef VERTICAL_ALIGN_GRAV_HH
+#define VERTICAL_ALIGN_GRAV_HH
+
+#include "engraver.hh"
+
+class Vertical_align_engraver : public Engraver {
+    Vertical_align_spanner * valign_p_;
+    
+public:
+    NAME_MEMBERS();
+    Vertical_align_engraver();
+protected:
+   virtual void acknowledge_element(Score_elem_info);
+   virtual void do_creation_processing();
+   virtual void do_removal_processing();
+};
+
+#endif // VERTICAL_ALIGN_GRAV_HH
diff --git a/lily/include/vertical-align-spanner.hh b/lily/include/vertical-align-spanner.hh
new file mode 100644 (file)
index 0000000..ccf2224
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+  vertical-align-spanner.hh -- declare Vertical_align_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef VERTICAL_ALIGN_SPANNER_HH
+#define VERTICAL_ALIGN_SPANNER_HH
+
+#include "spanner.hh"
+#include "vertical-align-elem.hh"
+
+class Vertical_align_spanner : public Vertical_align_element, public Spanner
+{
+public:
+    NAME_MEMBERS();
+    SCORE_ELEM_CLONE(Vertical_align_spanner);
+    virtual void do_print() const { Vertical_align_element::do_print() ; }
+    
+};
+#endif // VERTICAL_ALIGN_SPANNER_HH
diff --git a/lily/include/voice-gravs.hh b/lily/include/voice-gravs.hh
deleted file mode 100644 (file)
index 8bda699..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  voice-gravs.hh -- declare Voice_engravers
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef VOICEGRAVS_HH
-#define VOICEGRAVS_HH
-
-#include "engraver-group.hh"
-#include "interpreter.hh"
-
-class Voice_engravers : public Interpreter, public Engraver_group_engraver {
-public:
-    NAME_MEMBERS();
-
-protected:
-    virtual bool interpret_request_b(Request*);
-    virtual Interpreter* interpreter_l() { return this; }
-};
-
-
-#endif // VOICEGRAVS_HH
index 9e6b12b4a94cbf49343c3a8c8899d95111968b25..938e5b7ad71b8bb08aaa84095bf832b4175fc2b4 100644 (file)
 bool
 Input_engraver::is_name_b(String n)
 {
-    bool b = (n == name_str_);
-    for (int i=0; !b && i < alias_str_arr_.size(); i++)
-       b = b || (alias_str_arr_[i] == n);
-    return b;
+    for (int i=0; i < alias_str_arr_.size(); i++)
+       if (alias_str_arr_[i] == n)
+           return true;
+    return false;
 }
 
 void
 Input_engraver::print() const
 {
 #ifndef NPRINT
-    mtor << "name " << name_str_;
+    mtor << "type " << type_str_;
     mtor << "Consists of ";
     for (int i=0; i< consists_str_arr_.size(); i++)
        mtor << consists_str_arr_[i] << ',';
@@ -36,27 +36,6 @@ Input_engraver::print() const
 #endif 
 }
 
-/*
-  UGH. Global.
- */
-Link_array<Input_engraver> igravs_p_arr;
-
-void
-add_global_input_engraver(Input_engraver *grav_p)
-{
-    igravs_p_arr.push(grav_p);
-}
-
-Input_engraver *
-lookup_grav(String nm)
-{
-    for (int i=0; i < igravs_p_arr.size(); i++)
-       if (igravs_p_arr[i]->is_name_b(nm))
-           return igravs_p_arr[i];
-
-    error("can't find reg `" + nm + "'");
-}
-
 
 
 Input_engraver *
@@ -66,11 +45,15 @@ Input_engraver::recursive_find(String nm)
        return this;
 
     Input_engraver * r =0;
-    for (iter(contains_igrav_p_list_.top(), i); !r &&i.ok(); i++)
-       r = i->recursive_find(nm);
+    iter(contains_igrav_p_list_.top(), i);
+    for (; !r &&i.ok(); i++) {
+       if (i->recursive_find(nm))
+           r = i.ptr();
+    }
 
     return r;
 }
+
 Input_engraver *
 Input_engraver::find_igrav_l(String nm)
 {
@@ -86,10 +69,8 @@ Engraver_group_engraver *
 Input_engraver::get_group_engraver_p()
 {
     Engraver_group_engraver * grav_p = (Engraver_group_engraver*)
-       get_engraver_p(name_str_);
+       get_engraver_p(type_str_);
 
-    
-     
     for (int i=0; i < consists_str_arr_.size(); i++) {
        grav_p->add( get_engraver_p( consists_str_arr_[i]) );
     }
@@ -113,5 +94,18 @@ Input_engraver::add(Input_engraver *ip)
 Input_engraver*
 Input_engraver::get_default_igrav_l()
 {
-    return contains_igrav_p_list_.top();
+    if ( contains_igrav_p_list_.size() )
+       return contains_igrav_p_list_.top();
+    else
+       return 0;
+}
+
+
+Input_engraver_list::Input_engraver_list(Input_engraver_list const &s)
+{
+    for (PCursor<Input_engraver*> pc(s); pc.ok(); pc++) {
+       Input_engraver *q = pc;
+       Input_engraver *p=new Input_engraver(*q) ; 
+       bottom().add(p);
+    }
 }
index 802b34a47042624806b15d2e540bed2179646363..ba07441885f6c58b429ae5fc448f56de6b896a8a 100644 (file)
@@ -112,5 +112,5 @@ Key_engraver::do_post_move_processing()
 }
 
 IMPLEMENT_STATIC_NAME(Key_engraver);
-IMPLEMENT_IS_TYPE_B1(Key_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Key_engraver,Engraver);
 ADD_THIS_ENGRAVER(Key_engraver);
index f942a19cc307be87b18cad50658192aebc9082ce..51ea87a08dd3a5fcde94cd98740d7524f5fd02f6 100644 (file)
@@ -114,8 +114,7 @@ LYRICS              ({AA}|{NATIONAL})[^0-9 \t\n\f]*
          yyterminate(); // can't move this, since it actually rets a YY_NULL
        }
 }
-<notes,INITIAL,lyrics>
-\\include           {
+<notes,INITIAL,lyrics>\\include           {
        yy_push_state(incl);
 }
 <incl>\"[^"]*\"   { /* got the include file name */
index 5128f9a97e528d199d1a165a41418062b1231bd7..682e79b917f0eecdb6a5c92e350ced9b4037233c 100644 (file)
@@ -103,5 +103,5 @@ Local_key_engraver::do_process_requests()
 }
 
 IMPLEMENT_STATIC_NAME(Local_key_engraver);
-IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Engraver);
 ADD_THIS_ENGRAVER(Local_key_engraver);
index dd33fa3df68296836333cdd4d6a969048252d268..e4a92693db53492c47d81ff48c5e70fe820e1564 100644 (file)
@@ -101,9 +101,14 @@ Lookup::accidental(int j) const
 
 
 Symbol
-Lookup::bar(String s) const
+Lookup::bar(String s, Real h) const
 {
-    return (*symtables_)("bars")->lookup(s);
+    Array<String> a;
+    a.push(print_dimen( h));
+    Symbol ret=(*symtables_)("bars")->lookup(s);;
+    ret.tex = substitute_args(ret.tex, a);
+    ret.dim.y = Interval( 0, h);
+    return ret;
 }
 
 Symbol
index 515bc7abe5a10afe673cc5f9c6d2206dde3a6bc3..28d1086e0283a7745eb99d31678e213b30f97866 100644 (file)
@@ -50,5 +50,5 @@ Lyric_engraver::do_post_move_processing()
 
 
 IMPLEMENT_STATIC_NAME(Lyric_engraver);
-IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Engraver);
 ADD_THIS_ENGRAVER(Lyric_engraver);
index 326f74e3512439c6c4920a07c29701298862ff13..28397bb198a764fccce5c89a6af3811f499a8336 100644 (file)
@@ -123,4 +123,4 @@ Meter_engraver::do_post_move_processing()
 
 IMPLEMENT_STATIC_NAME(Meter_engraver);
 ADD_THIS_ENGRAVER(Meter_engraver);
-IMPLEMENT_IS_TYPE_B1(Meter_engraver,Request_engraver); 
+IMPLEMENT_IS_TYPE_B1(Meter_engraver,Engraver); 
index d07e7bde63e6eadb4056c679770b5450ea2d875d..c7d6509b97b2a2c7897b541f176a5ef6098eeb19 100644 (file)
@@ -10,7 +10,6 @@
 #include "music-iterator.hh"
 #include "translator.hh"
 #include "request.hh"
-#include "interpreter.hh"
 #include "debug.hh"
 
 IMPLEMENT_STATIC_NAME(Music_iterator);
@@ -38,7 +37,7 @@ Translator*
 Music_iterator::get_req_translator_l()
 {
     assert(report_to_l_);
-    if (report_to_l_->interpreter_l() )
+    if (report_to_l_->is_bottom_engraver_b() )
        return report_to_l_;
 
     set_translator( report_to_l_->get_default_interpreter() );
@@ -78,7 +77,7 @@ Music_iterator::next_moment()const
 }
 
 void
-Music_iterator::next(Moment)
+Music_iterator::process_and_next(Moment)
 {
     first_b_ = false;
 }
@@ -170,18 +169,18 @@ Chord_iterator::do_print() const
 }
 
 void
-Chord_iterator::next(Moment until)
+Chord_iterator::process_and_next(Moment until)
 {
     for (iter(children_p_list_.top(), i); i.ok(); ) {
        if  (i->next_moment() == until) {
-           i->next(until);
+           i->process_and_next(until);
        }
        if (!i->ok()) 
            delete i.remove_p();
        else
            i++;
     }
-    Music_iterator::next(until);
+    Music_iterator::process_and_next(until);
 
 //    assert(!ok() || next_moment() > until);
 }
@@ -252,7 +251,7 @@ IMPLEMENT_STATIC_NAME(Voice_iterator);
 IMPLEMENT_IS_TYPE_B1(Voice_iterator,Music_iterator);
 
 void
-Voice_iterator::next(Moment until)
+Voice_iterator::process_and_next(Moment until)
 {
     while (ok()) {
        Moment local_until = until - here_mom_;
@@ -260,14 +259,14 @@ Voice_iterator::next(Moment until)
            Moment here = iter_p_->next_moment();
            if (here != local_until)
                return;
-           iter_p_->next(local_until);
+           iter_p_->process_and_next(local_until);
        }
        if (!iter_p_)
            iter_p_ = Music_iterator::get_iterator_p( ptr() );
        else if (!iter_p_->ok() )
            next_element();
     }
-    Music_iterator::next(until);
+    Music_iterator::process_and_next(until);
     assert(!ok() || next_moment() > until);
 }
 
@@ -284,11 +283,13 @@ Voice_iterator::ok()const
 }
 
 /* ***************** */
+
 void
 Request_iterator::do_print()const
 {
     mtor << req_l_->name() ;
 }
+
 Request_iterator::Request_iterator(Request const*c)
 {
     req_l_ = (Request*)c;
@@ -296,11 +297,10 @@ Request_iterator::Request_iterator(Request const*c)
 }
 
 void
-Request_iterator::next(Moment m)
+Request_iterator::process_and_next(Moment m)
 {
-    if ( first_b_) {
-       bool gotcha = daddy_iter_l_->report_to_l_->
-           interpreter_l()->interpret_request_b(req_l_);
+    if ( first_b_ ) {
+       bool gotcha = daddy_iter_l_->report_to_l_->try_request(req_l_);
        if (!gotcha)
            req_l_->warning("Junking request: " + String(req_l_->name()));
        first_b_ = false;
@@ -325,6 +325,7 @@ Request_iterator::ok()const
 {
     return (req_l_->duration() && !last_b_) || first_b_; // ugh
 }
+
 IMPLEMENT_STATIC_NAME(Request_iterator);
 IMPLEMENT_IS_TYPE_B1(Request_iterator, Music_iterator);
 
@@ -342,7 +343,7 @@ IMPLEMENT_IS_TYPE_B1(Change_iterator,Music_iterator);
   TODO: pop/pushgroup
  */
 void
-Change_iterator::next(Moment mom)
+Change_iterator::process_and_next(Moment mom)
 {
 #if 0
     Engraver_group_engraver *group_l =
@@ -352,7 +353,7 @@ Change_iterator::next(Moment mom)
     report_to_l_->daddy_grav_l_->remove_engraver_p(report_to_l_);
     group_l->add(report_to_l_);
 #endif
-    Music_iterator::next(mom);
+    Music_iterator::process_and_next(mom);
 }
 
 
@@ -366,16 +367,6 @@ void
 Voice_element_iterator::construct_children()
 {
     get_req_translator_l();
-/*
-    if ( daddy_iter_l_ 
-        && daddy_iter_l_->is_type_b(Voice_iterator::static_name() )) {
-       set_translator(daddy_iter_l_-> get_req_translator_l());
-    } else if (daddy_iter_l_
-              && daddy_iter_l_-> is_type_b( Chord_iterator::static_name() )) {
-
-       get_req_translator_l();
-    }
-    */
     Chord_iterator::construct_children();
 }
 
index 2a95a72724cbb116e88886eda942114bab10c65b..6c0d668ad10b232c8bb83339fa88a2c02c237c3e 100644 (file)
@@ -121,5 +121,5 @@ Note_column_engraver::Note_column_engraver()
     do_post_move_processing();
 }
 IMPLEMENT_STATIC_NAME(Note_column_engraver);
-IMPLEMENT_IS_TYPE_B1(Note_column_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Note_column_engraver,Engraver);
 ADD_THIS_ENGRAVER(Note_column_engraver);
index 6a7dd244175da9188fcc10e7127610207b58dd78..65bf8eac9b092977f5657dda8496cbf4dda080ea 100644 (file)
@@ -14,7 +14,9 @@
 #include "debug.hh"
 #include "lookup.hh"
 #include "dimen.hh"
-
+#include "input-engraver.hh"
+#include "engraver-group.hh"
+#include "assoc-iter.hh"
 
 void
 Paper_def::set_var(String s, Real r)
@@ -48,6 +50,7 @@ Paper_def::duration_to_dist(Moment d)
 
 Paper_def::Paper_def()
 {
+    igrav_p_ = 0;
     lookup_p_ = 0;
     real_vars_p_ = new Assoc<String,Real>;
     outfile_str_ = "lelie.tex";
@@ -55,18 +58,27 @@ Paper_def::Paper_def()
 
 Paper_def::~Paper_def()
 {
+    delete igrav_p_;
     delete real_vars_p_;
     delete lookup_p_;
 }
 
 Paper_def::Paper_def(Paper_def const&s)
 {
+    igrav_p_ = s.igrav_p_ ? new Input_engraver( *s.igrav_p_):0;
     lookup_p_ = s.lookup_p_? new Lookup(*s.lookup_p_) : 0;
     lookup_p_->paper_l_ = this;
     real_vars_p_ = new Assoc<String,Real> (*s.real_vars_p_);
     outfile_str_ = s.outfile_str_;
 }
 
+void
+Paper_def::set(Input_engraver * igrav_p)
+{
+    delete igrav_p_;
+    igrav_p_  = igrav_p;
+}
+
 void
 Paper_def::set(Lookup*l)
 {
@@ -113,12 +125,22 @@ Paper_def::print() const
     mtor << "Paper {";
     mtor << "out: " <<outfile_str_;
     lookup_p_->print();
+    for (Assoc_iter<String,Real> i(*real_vars_p_); i.ok(); i++) {
+       mtor << i.key() << "= " << i.val() << "\n";
+    }
     mtor << "}\n";
 #endif
 }
+
 Lookup const *
 Paper_def::lookup_l()
 {
     assert( lookup_p_ );
     return lookup_p_;
 }
+
+Global_translator*
+Paper_def::get_global_translator_p() const
+{
+    return  igrav_p_->get_group_engraver_p()->global_l();
+}
index 0c31d45fe8ed0347204bcd5c648b5666672b179a..a19e4780b01965f658432f41d8d1fbe80465c05a 100644 (file)
@@ -217,7 +217,6 @@ mudela:     /* empty */
        | mudela error
        | mudela check_version { } 
        | mudela add_notenames { }
-       | mudela input_engraver_spec { add_global_input_engraver($2); }
        ;
 
 check_version:
@@ -305,7 +304,10 @@ declaration:
                $$ = new Real_id(*$1, new Real($3), REAL_IDENTIFIER);
                delete $1;
        }
-       
+       | declarable_identifier '=' int {
+               $$ = new Int_id(*$1, new int($3), INT_IDENTIFIER);
+               delete $1;
+       }
        | declarable_identifier '=' post_request {
                $$ = new Request_id(*$1, $3, POST_REQUEST_IDENTIFIER);
                delete $1;
@@ -326,7 +328,8 @@ input_engraver_spec:
 input_engraver_spec_body:
        STRING  { 
                $$ = new Input_engraver; 
-               $$->name_str_ =*$1;
+               $$->type_str_ =*$1;
+               $$->set_spot ( THIS->here_input() );
                delete $1;
        }
        | input_engraver_spec_body ALIAS STRING ';' {
@@ -408,6 +411,9 @@ paper_body:
        | paper_body STRING '=' REAL ';' {
                $$->set_var(*$2, $4);
        }
+       | paper_body input_engraver_spec        {
+               $$->set( $2 );
+       }
        | paper_body error {
 
        }
index df04beb912cc49e3b3c91a49959257c62c1e144e..d5e42658e7b29178945001e6a7c174f0db6eea8d 100644 (file)
@@ -14,7 +14,7 @@
 #include "note-column.hh"
 
 IMPLEMENT_STATIC_NAME(Rest_collision_engraver);
-IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
 ADD_THIS_ENGRAVER(Rest_collision_engraver);
 
 Rest_collision_engraver::Rest_collision_engraver()
index 79ab3ca962e560b50f6efe3a35ea8ff5167aebc9..b56e6777c20c04907c7d339e6c3246b66120cda2 100644 (file)
@@ -30,7 +30,7 @@ Score_align_engraver::do_pre_move_processing()
 void
 Score_align_engraver::acknowledge_element(Score_elem_info inf)
 {
-    if (inf.elem_l_->name() == type_ch_C_ ) {
+    if (inf.elem_l_->is_type_b(type_ch_C_ )) {
        
        if (! align_p_ ) {
            align_p_ = new Horizontal_group_item;
@@ -42,4 +42,4 @@ Score_align_engraver::acknowledge_element(Score_elem_info inf)
 }
 
 IMPLEMENT_STATIC_NAME(Score_align_engraver)
-IMPLEMENT_IS_TYPE_B1(Score_align_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Score_align_engraver,Engraver);
index f22a67d004043663468c030f2e19df8d4d614407..9a554a46efb0f4cc6d3845d002704f97a295c517 100644 (file)
@@ -331,6 +331,9 @@ void
 Score_elem::do_substitute_dependency(Score_elem*,Score_elem*)
 {
 }
+void
+Score_elem::do_substitute_dependent(Score_elem*,Score_elem*)
+{}
 
 
 IMPLEMENT_STATIC_NAME(Score_elem);
@@ -362,6 +365,7 @@ void
 Score_elem::remove_dependency(Score_elem*e)
 {
     remove_edge_out(e);
+    e->do_substitute_dependent(this, 0);
     do_substitute_dependency(e, 0);
 }
 
@@ -387,6 +391,7 @@ Score_elem::handle_broken_dependencies()
                Spanner * sp = elt->spanner();
                Spanner * broken = sp->find_broken_piece(line);
                do_substitute_dependency(sp, broken);
+
                add_dependency(broken);
            } else if (elt->item() && elt->item()->pcol_l_->breakpoint_b()
                       && elt->item()->break_status_i() == 0) {
index 5db578293c96e79b4cd69a00412736dc05e9254d..ee3b325a00b77fa2278e0591e06db7957fddf4a4 100644 (file)
@@ -96,11 +96,8 @@ Score_engraver::announce_element(Score_elem_info info)
     info.origin_grav_l_arr_.push(this);
     if (info.elem_l_->name() == Bar::static_name()) {
        get_staff_info().command_pcol_l()->set_breakable();
-    } else if ( info.elem_l_->is_type_b( Line_of_staff::static_name() ) &&
-               !scoreline_l_->contains_b( info.elem_l_) )
-       
-       scoreline_l_->add(info.elem_l_);
-    
+    } 
+        
     announce_info_arr_.push(info);
 }
 void
@@ -152,7 +149,7 @@ Score_engraver::typeset_all()
 
     for  (int i =0; i < nobreak_item_p_arr_.size(); i++) {
        ps_l->typeset_item(nobreak_item_p_arr_[i], c, 0);
-       scoreline_l_->add(nobreak_item_p_arr_[i]);
+       scoreline_l_->add_dependency(nobreak_item_p_arr_[i]);
     }
     nobreak_item_p_arr_.set_size(0);
     
@@ -204,7 +201,7 @@ bool
 Score_engraver::do_try_request(Request*r)
 {
     bool gotcha = false;  
-    for (int i =0; !gotcha && i < nongroup_l_arr_.size() ; i++)
+    for ( int i =0; !gotcha && i < nongroup_l_arr_.size() ; i++)
        gotcha = nongroup_l_arr_[i]->try_request(r);
   
     return gotcha;
index 24116b2233349179bc2afa7a3b44f14174324aa0..15d266599a9e2ff3846f1640eb892778ee34ad8b 100644 (file)
@@ -29,7 +29,7 @@ Score_horizontal_align_engraver::do_pre_move_processing()
 void
 Score_horizontal_align_engraver::acknowledge_element(Score_elem_info i)
 {
-    Request_engraver* reg = i.origin_grav_l_arr_[0];
+    Engraver* reg = i.origin_grav_l_arr_[0];
     if (reg->is_type_b( 
        Score_align_engraver::static_name()) )
     {
@@ -46,5 +46,5 @@ Score_horizontal_align_engraver::acknowledge_element(Score_elem_info i)
     }
 }
 IMPLEMENT_STATIC_NAME(Score_horizontal_align_engraver);
-IMPLEMENT_IS_TYPE_B1(Score_horizontal_align_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Score_horizontal_align_engraver,Engraver);
 ADD_THIS_ENGRAVER(Score_horizontal_align_engraver);
index 86c10934b6f2f337e09ee235aff2cb7e5f80ba81..fd23b08522d8d1f82fcacc1eb38ddb51004002e5 100644 (file)
@@ -5,6 +5,7 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
+
 #include "tex-stream.hh"
 #include "score.hh"
 #include "score-column.hh"
 #include "midi-output.hh"
 #include "midi-def.hh"
 #include "p-col.hh"
-#include "score-grav.hh"
 #include "music-iterator.hh"
 #include "music.hh"
-#include "music-list.hh"
-#include "input-engraver.hh"
+#include "global-translator.hh"
 
 extern String default_out_fn;
 
@@ -34,26 +33,26 @@ Score::Score(Score const &s)
 }
 
 void
-Score::run_translator(Global_translator * acc_l)
+Score::run_translator(Global_translator * trans_l)
 {
-    acc_l->set_score (this);
+    trans_l->set_score (this);
     Music_iterator * iter = Music_iterator::static_get_iterator_p(music_p_, 
-                                                                 acc_l);
+                                                                 trans_l);
     iter->construct_children();
 
-    while ( iter->ok() || acc_l->moments_left_i() ) {
+    while ( iter->ok() || trans_l->moments_left_i() ) {
        Moment w = INFTY;
        if (iter->ok() ) {
            w = iter->next_moment();
            iter->print();
        }
-       acc_l->modify_next( w );
-       acc_l->prepare(w);
-       iter->next( w );
-       acc_l->process();
+       trans_l->modify_next( w );
+       trans_l->prepare(w);
+       iter->process_and_next( w );
+       trans_l->process();
     }
     delete iter;
-    acc_l->finish();
+    trans_l->finish();
 }
 
 
@@ -72,10 +71,9 @@ Score::paper()
     *mlog << "\nCreating elements ..." << flush;
     pscore_p_ = new PScore(paper_p_);
     
-    Score_engraver * score_grav=  
-       (Score_engraver*)lookup_grav("Score_engraver")->get_group_engraver_p();
-    run_translator( score_grav );
-    delete score_grav;
+    Global_translator * score_trans=  paper_p_->get_global_translator_p();
+    run_translator( score_trans );
+    delete score_trans;
     
     if( errorlevel_i_){
        // should we? hampers debugging. 
index 5449b32b1ceba063acdc6fd5cc199028b8fdf22a..a9961f05920f080a96149a92a1fef63bc1d95826 100644 (file)
@@ -70,18 +70,12 @@ Line_of_score::Line_of_score()
 
 
 IMPLEMENT_STATIC_NAME(Line_of_score);
-IMPLEMENT_IS_TYPE_B2(Line_of_score,Spanner,Vertical_align_elem);
+IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
 
 void
 Line_of_score::add(Score_elem*e)
 {
-    if (e->is_type_b( Line_of_staff::static_name()) 
-           && ! Vertical_align_elem::contains_b( e) ) 
-           
-       Vertical_align_elem::add(e);
-    else { 
-       add_dependency(e);
-    }
+    add_dependency(e);
 }
 
 bool
@@ -157,10 +151,3 @@ Line_of_score::do_width()const
 { 
     return Spanner::do_width();
 }
-
-void
-Line_of_score::do_substitute_dependency(Score_elem*o,Score_elem*n)
-{
-    Spanner::do_substitute_dependency(o,n);
-    Vertical_align_elem::do_substitute_dependency(o,n);
-}
index 27c281e0e9bd23a7ffdc21e3baa809a6a2e0dccd..0c8f1e0590afa2b190db166716817722bde7585f 100644 (file)
@@ -85,5 +85,5 @@ Script_engraver::do_post_move_processing()
 }
 
 IMPLEMENT_STATIC_NAME(Script_engraver);
-IMPLEMENT_IS_TYPE_B1(Script_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver);
 ADD_THIS_ENGRAVER(Script_engraver);
index cabb4b194d2a15d2cba12653f8448eae00f7b2e0..655d7aad234f3bf3cf2eb76969065a0ac49baab2 100644 (file)
@@ -100,5 +100,5 @@ Slur_engraver::~Slur_engraver()
     }
 }
 IMPLEMENT_STATIC_NAME(Slur_engraver);
-IMPLEMENT_IS_TYPE_B1(Slur_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver);
 ADD_THIS_ENGRAVER(Slur_engraver);
diff --git a/lily/span-bar-grav.cc b/lily/span-bar-grav.cc
new file mode 100644 (file)
index 0000000..8a8482f
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+  span-bar-grav.cc -- implement Span_bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "span-bar.hh"
+#include "span-bar-grav.hh"
+#include "vertical-align-spanner.hh"
+
+Span_bar_engraver::Span_bar_engraver()
+{
+    spanbar_p_ =0;
+    valign_l_ =0;
+}
+
+void
+Span_bar_engraver::acknowledge_element(Score_elem_info i)
+{
+    if ( i.elem_l_->is_type_b( Bar::static_name() ) ) {
+       bar_l_arr_.push( (Bar*)i.elem_l_->item() );
+       
+       if (bar_l_arr_.size() >= 2 && !spanbar_p_) {
+           spanbar_p_ = new Span_bar;
+           announce_element( Score_elem_info(spanbar_p_,0) );
+       }
+    } else if  (i.elem_l_->is_type_b( Vertical_align_spanner::static_name() ) 
+               && i.origin_grav_l_arr_.size() <= 2) {
+       valign_l_ = (Vertical_align_spanner*)i.elem_l_->spanner();
+    }
+}
+
+void
+Span_bar_engraver::do_pre_move_processing()
+{
+    if (spanbar_p_) {
+       for (int i=0; i < bar_l_arr_.size() ; i++)
+           spanbar_p_->add(bar_l_arr_[i]);
+       spanbar_p_->set( valign_l_ );
+       typeset_breakable_item(spanbar_p_);
+       spanbar_p_ =0;
+    }
+    bar_l_arr_.set_size( 0);
+       
+}
+
+IMPLEMENT_STATIC_NAME(Span_bar_engraver);
+IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver);
+ADD_THIS_ENGRAVER(Span_bar_engraver);
diff --git a/lily/span-bar.cc b/lily/span-bar.cc
new file mode 100644 (file)
index 0000000..eed9237
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+  span-bar.cc -- implement Span_bar
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#include "span-bar.hh"
+#include "lookup.hh"
+#include "symbol.hh"
+#include "paper-def.hh"
+#include "molecule.hh"
+#include "vertical-align-elem.hh"
+
+void
+Span_bar::add(Bar*b)
+{
+    b->spanned_i_ ++;
+    spanning_l_arr_.push(b);
+    add_dependency( b );
+}
+
+
+
+void
+Span_bar::do_substitute_dependency(Score_elem*o, Score_elem*n)
+{
+    Bar * bold = 0;
+    if  (o->is_type_b(Bar::static_name() )) 
+       bold = (Bar*)o->item();
+    else
+       return;
+
+    bold->spanned_i_ --;
+    Bar * b =0;
+    if (n && n->is_type_b(Bar::static_name() )) {
+       b = (Bar*)n->item();
+       b->spanned_i_ ++;
+    }
+    
+    spanning_l_arr_.substitute( bold , b);
+
+}
+
+void
+Span_bar::set(Vertical_align_element *a)
+{
+    add_dependency( a );
+}
+    
+
+void
+Span_bar::do_pre_processing()
+{
+    if ( spanning_l_arr_.size () < 1) {
+       transparent_b_ = true;
+       empty_b_ =true;
+    } else {
+       type_str_ = spanning_l_arr_[0]->type_str_;
+       if (type_str_ =="") {
+           transparent_b_=true;
+           empty_b_ = true;
+       }
+    }
+}
+
+Molecule*
+Span_bar::brew_molecule_p()const
+{
+    Interval y;
+    for (int i=0; i < spanning_l_arr_.size(); i++)
+       y.unite( spanning_l_arr_[i]->height() );
+    Symbol s = paper()->lookup_l()->bar(type_str_, y.length());
+        Molecule*output = new Molecule(Atom(s));
+    output->translate_y (  y[-1] );
+
+    return output;
+}
+
+IMPLEMENT_STATIC_NAME(Span_bar);
+IMPLEMENT_IS_TYPE_B1(Span_bar,Bar);
index de19475f588a5970912f935932fbd7f05a056001..d91156997e19c1ae5f3d6272fac01322542015a9 100644 (file)
@@ -7,14 +7,10 @@
 */
 
 #include "staff-sym.hh"
-#include "voice-group-gravs.hh"
-#include "voice-gravs.hh"
 #include "staff-gravs.hh"
 #include "command-request.hh"
 #include "bar.hh"
 #include "debug.hh"
-#include "input-engraver.hh"
-#include "meter-grav.hh"
 #include "staffline.hh"
 
 
@@ -60,7 +56,7 @@ Staff_engravers::do_removal_processing()
     group_staff_elems();
 
     staffline_p_->right_col_l_ = get_staff_info().command_pcol_l();
-    Request_engraver::typeset_element(staffline_p_);
+    Engraver::typeset_element(staffline_p_);
     staffline_p_ = 0;
 }
 
@@ -71,7 +67,7 @@ Staff_engravers::do_creation_processing()
     staffline_p_->left_col_l_ = get_staff_info().command_pcol_l();
 
     // don't broadcast to self.
-    Request_engraver::announce_element(Score_elem_info(staffline_p_,0));
+    Engraver::announce_element(Score_elem_info(staffline_p_,0));
     Engraver_group_engraver::do_creation_processing();
 }
 
index fc93241ef6ebc227fe808fc1af20ca1489f3c83d..2e093b0c71bc13b7d06d6a4097806f1f363e3ba7 100644 (file)
@@ -46,5 +46,5 @@ Staff_sym_engraver::do_process_requests()
 
 
 IMPLEMENT_STATIC_NAME(Staff_sym_engraver);
-IMPLEMENT_IS_TYPE_B1(Staff_sym_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Staff_sym_engraver,Engraver);
 ADD_THIS_ENGRAVER(Staff_sym_engraver);
index bf479bca555540ab039cb6af6b1689677a853ec5..b476406a3c7614b919a9662a9d06bb22e5f0ec3e 100644 (file)
@@ -171,5 +171,5 @@ Stem_beam_engraver::set_feature(Feature i)
 }
 
 IMPLEMENT_STATIC_NAME(Stem_beam_engraver);
-IMPLEMENT_IS_TYPE_B1(Stem_beam_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Stem_beam_engraver,Engraver);
 ADD_THIS_ENGRAVER(Stem_beam_engraver);
index 39e842617bdb0883b0b3da617b90cf0e19ec1fa1..9f596cba76ffad37696264d71f9f73d7599225c1 100644 (file)
@@ -8,7 +8,7 @@
 #include "swallow-grav.hh"
 
 IMPLEMENT_STATIC_NAME(Swallow_engraver);
-IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver);
 ADD_THIS_ENGRAVER(Swallow_engraver);
 
 
index b0612eb0b8b972722781a657d67fb7fc70738641..2fbc12167998bf931c3c5aedb2fc4cc38e649753 100644 (file)
@@ -2,4 +2,4 @@
 #include "plist.tcc"
 #include "engraver.hh"
 
-IPL_instantiate(Request_engraver);
+IPL_instantiate(Engraver);
index 5d6e0d993c8d4ab2f5f796f1f4704027663146a6..d685a47a126a110947541afd4668c0009a0df01a 100644 (file)
@@ -71,5 +71,5 @@ Text_engraver::do_post_move_processing()
     text_req_l_ = 0;
 }
 IMPLEMENT_STATIC_NAME(Text_engraver);
-IMPLEMENT_IS_TYPE_B1(Text_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Text_engraver,Engraver);
 ADD_THIS_ENGRAVER(Text_engraver);
index 43a0221792d14c320acfa95d9b16608dfb6a5364..981e3f12c729eb939eae9e082874a487c83b42db 100644 (file)
@@ -120,5 +120,5 @@ Tie_engraver::set_feature(Feature f)
 }
 
 IMPLEMENT_STATIC_NAME(Tie_engraver);
-IMPLEMENT_IS_TYPE_B1(Tie_engraver,Request_engraver);
+IMPLEMENT_IS_TYPE_B1(Tie_engraver,Engraver);
 ADD_THIS_ENGRAVER(Tie_engraver);
index 148b8331af1801180f749cf0275a30257ff160dc..66ac05c5d8846e4f87a192fcc8573f88a0663cfd 100644 (file)
@@ -14,3 +14,9 @@ Translator::Translator()
 
 IMPLEMENT_STATIC_NAME(Translator);
 IMPLEMENT_IS_TYPE_B(Translator);
+
+bool
+Translator::try_request(Request*)
+{
+    return false;
+}
index 2aecf5d3fc295c4684d42998d44d09c75f3871b5..506bce550cde24aaa061b6802b639af748e304bc 100644 (file)
@@ -10,7 +10,7 @@
 #include "interval.hh"
 
 void
-Vertical_align_elem::add(Score_elem*el_l)
+Vertical_align_element::add(Score_elem*el_l)
 {
     assert( ! contains_b(el_l));
     elem_l_arr_.push(el_l);
@@ -18,7 +18,7 @@ Vertical_align_elem::add(Score_elem*el_l)
 }
 
 void
-Vertical_align_elem::do_substitute_dependency(Score_elem*o,Score_elem*n)
+Vertical_align_element::do_substitute_dependency(Score_elem*o,Score_elem*n)
 {
     int i;
     while((i = elem_l_arr_.find_i(o))>=0) 
@@ -28,7 +28,7 @@ Vertical_align_elem::do_substitute_dependency(Score_elem*o,Score_elem*n)
            elem_l_arr_.del(i);
 }
 void
-Vertical_align_elem::do_post_processing()
+Vertical_align_element::do_post_processing()
 {
     Array<Interval> dims;
     for (int i=0; i < elem_l_arr_.size(); i++ ) {
@@ -47,17 +47,17 @@ Vertical_align_elem::do_post_processing()
 }
 
 bool
-Vertical_align_elem::contains_b(Score_elem const *e)const
+Vertical_align_element::contains_b(Score_elem const *e)const
 {
     return elem_l_arr_.find_l(e);
 }
 
-Vertical_align_elem::Vertical_align_elem()
+Vertical_align_element::Vertical_align_element()
 {
     transparent_b_ = true;
     empty_b_ =true;
 }
 
-IMPLEMENT_STATIC_NAME(Vertical_align_elem);
-IMPLEMENT_IS_TYPE_B1(Vertical_align_elem, Score_elem);
+IMPLEMENT_STATIC_NAME(Vertical_align_element);
+IMPLEMENT_IS_TYPE_B1(Vertical_align_element, Score_elem);
 
diff --git a/lily/vertical-align-grav.cc b/lily/vertical-align-grav.cc
new file mode 100644 (file)
index 0000000..86665f3
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+  vertical-align-grav.cc -- implement Vertical_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#include "vertical-align-grav.hh"
+#include "vertical-align-spanner.hh"
+
+Vertical_align_engraver::Vertical_align_engraver()
+{
+    valign_p_ =0;
+}
+
+void
+Vertical_align_engraver::do_creation_processing()
+{
+    valign_p_ =new Vertical_align_spanner;
+    valign_p_->left_col_l_ = get_staff_info().command_pcol_l() ;
+    announce_element( Score_elem_info( valign_p_ , 0 ));
+}
+
+void
+Vertical_align_engraver::do_removal_processing()
+{
+    valign_p_->right_col_l_ = get_staff_info().command_pcol_l();
+    typeset_element( valign_p_);
+    valign_p_ =0;
+}
+
+void
+Vertical_align_engraver::acknowledge_element(Score_elem_info i)
+{
+    if ( i.origin_grav_l_arr_.size() == 2 && 
+        i.elem_l_->is_type_b(Vertical_group::static_name()) &&
+        !i.elem_l_->y_group_element_i_  && 
+        !valign_p_->contains_b(  i.elem_l_) ) {
+
+       valign_p_->add ( i.elem_l_ );
+    }
+}
+
+IMPLEMENT_STATIC_NAME(Vertical_align_engraver);
+IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
+ADD_THIS_ENGRAVER(Vertical_align_engraver);
diff --git a/lily/vertical-align-spanner.cc b/lily/vertical-align-spanner.cc
new file mode 100644 (file)
index 0000000..461f6bd
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+  vertical-align-spanner.cc -- implement Vertical_align_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "vertical-align-spanner.hh"
+
+IMPLEMENT_STATIC_NAME(Vertical_align_spanner);
+IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Vertical_align_element, Spanner);
diff --git a/lily/voice-gravs.cc b/lily/voice-gravs.cc
deleted file mode 100644 (file)
index ff63b59..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  voice-gravs.cc -- implement Voice_engravers
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "proto.hh"
-#include "plist.hh"
-#include "command-request.hh"
-#include "musical-request.hh"
-#include "voice-gravs.hh"
-#include "engraver.hh"
-#include "debug.hh"
-
-
-ADD_THIS_ENGRAVER(Voice_engravers);
-IMPLEMENT_IS_TYPE_B1(Voice_engravers, Engraver_group_engraver);
-IMPLEMENT_STATIC_NAME(Voice_engravers);
-
-bool
-Voice_engravers::interpret_request_b(Request*r)
-{
-    return try_request(r);
-}
-
index 222ae42415252b3fb625fdbba7da0d9c24d816f1..5021a294407897c6750dca903d0f775fe5f856fe 100644 (file)
@@ -5,17 +5,13 @@
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
-#include "music-list.hh"
 #include "proto.hh"
 #include "plist.hh"
 #include "musical-request.hh"
-#include "voice-gravs.hh"
 #include "voice-group-gravs.hh"
 #include "engraver.hh"
 #include "command-request.hh"
 #include "debug.hh"
-#include "input-engraver.hh"
-#include "time-description.hh"
 
 
 Voice_group_engravers::Voice_group_engravers()
index e716833aadc7a38dfd95ea3075a1ffdd1cf2fea6..5f3c765ef1a8a5e7d9c868e51381b3eade430d71 100644 (file)
@@ -2,7 +2,7 @@
 
 Begin3
 Title: LilyPond
-Version: 0.0.72pre
+Version: 0.0.73pre
 Entered-date: 07/03/97
 Description: LilyPond is a program which converts a music-script (mudela) into
 TeX output, or MIDI to produce multi-staff scores. Features include multiple
@@ -13,7 +13,7 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: pcnov095.win.tue.nl /pub/lilypond/  
-       300k lilypond-0.0.72pre.tar.gz
+       300k lilypond-0.0.73pre.tar.gz
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
index 3e118e3cedcd14adaa740339fae75cd076df809d..4939bf97e40d3af749bed4046dc712321be94cb8 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.0.72pre
+Version: 0.0.73pre
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.72pre.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.73pre.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
index 299ff2edd8550a40fede8932c938e75cd5d4e246..9607702de18f0153a971fe674e9c69f65381fc04 100644 (file)
 
 \def\emptybar{}
 
-\def\thinbar{\vrule height\balkheight width 1.6\staffrulethickness} % TODO parametric.
-\def\thickbar{\vrule height\balkheight width 2\smallspace}
-\def\maatstreep{\thinbar}
-
+\def\thinbar#1{\vrule height #1 width 1.6\staffrulethickness} % TODO parametric.
+\def\thickbar#1{\vrule height #1 width 2\smallspace}
+\def\maatstreep#1{\thinbar{#1}}
+\def\defaultthinbar{\thinbar{\balkheight}}
+\def\defaultthickbar{\thickbar{\balkheight}}
 %? what-s wrong with rightalign?
-\def\finishbar{\rightalign{\thinbar\kern\smallspace\thickbar}}
+\def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}}
 
-\def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}}
-\def\repeatstartbar{\hbox{\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}}
-\def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar\kern\smallspace\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}}
-\def\doublebar{\hbox{\thinbar\hskip\smallspace\thinbar}}
+\def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\defaultthinbar\hskip\smallspace\defaultthickbar}}
+\def\repeatstartbar{\hbox{\defaultthickbar\kern\smallspace\defaultthinbar\kern2\smallspace\repeatcolon}}
+\def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\defaultthinbar\kern\smallspace\defaultthickbar\kern\smallspace\defaultthickbar\kern\smallspace\defaultthinbar\kern2\smallspace\repeatcolon}}
+\def\doublebar#1{\hbox{\thinbar{#1}\hskip\smallspace\thinbar{#1}}}
 
 %compatibility
 \def\repeatbar{\repeatstopbar}