From 9efbad2d9487a05b04423e7e9f062968e8f8eaf4 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 23 Oct 1998 15:51:54 +0200 Subject: [PATCH] release: 1.1.0 --- Documentation/man/GNUmakefile | 4 +- Documentation/topdocs/PATCHES.yo | 8 +- NEWS | 567 ++-------------- NEWS-1.0 | 516 +++++++++++++++ TODO | 7 +- VERSION | 4 +- aclocal.m4 | 52 +- config.make.in | 1 + configure | 394 +++++++++--- configure.in | 14 +- dstreamrc | 4 + flower/dstream.cc | 2 +- flower/include/dictionary.hh | 6 +- init/GNUmakefile | 4 +- init/catalan.ly | 73 +++ init/declarations.ly | 2 + init/paper20.ly | 2 +- init/script.ly | 1 + input/GNUmakefile | 2 +- input/test/thumb.ly | 22 + lily/GNUmakefile | 3 + lily/abbrev.cc | 2 +- lily/abbreviation-beam-engraver.cc | 6 +- lily/atom.cc | 6 +- lily/auto-plet-engraver.cc | 27 +- lily/axis-group-element.cc | 5 +- lily/axis-group-item.cc | 4 +- lily/axis-group-spanner.cc | 14 +- lily/bar-column-engraver.cc | 2 +- lily/bar-column.cc | 2 +- lily/bar-engraver.cc | 6 +- lily/bar-number-engraver.cc | 2 +- lily/beam-engraver.cc | 10 +- lily/beam.cc | 2 +- lily/clef-engraver.cc | 8 +- lily/collision-engraver.cc | 2 +- lily/collision.cc | 4 +- lily/command-request.cc | 10 +- lily/dimensions.cc | 19 + lily/dot-column-engraver.cc | 2 +- lily/dot-column.cc | 4 +- lily/dynamic-engraver.cc | 18 +- lily/engraver-group.cc | 8 +- lily/engraver.cc | 4 +- lily/gourlay-breaking.cc | 2 +- lily/graphical-lisp-element.cc | 0 lily/hara-kiri-line-group-engraver.cc | 2 +- lily/hara-kiri-vertical-group-spanner.cc | 4 +- lily/head-engraver.cc | 7 +- lily/heads-engraver.cc | 6 +- lily/include/atom.hh | 4 +- lily/include/auto-plet-engraver.hh | 4 +- lily/include/dimensions.hh | 2 + lily/include/engraver.hh | 1 + lily/include/lily-guile.hh | 22 + lily/include/lily-proto.hh | 7 +- lily/include/lookup.hh | 40 +- lily/include/main.hh | 2 +- lily/include/paper-def.hh | 10 +- lily/include/paper-outputter.hh | 20 +- lily/include/paper-stream.hh | 5 +- lily/include/ps-lookup.hh | 40 -- lily/include/ps-outputter.hh | 27 - lily/include/ps-stream.hh | 21 - lily/include/score-element-info.hh | 2 + lily/include/score-engraver.hh | 1 + lily/include/tex-lookup.hh | 43 -- lily/include/tex-outputter.hh | 27 - lily/include/tex-stream.hh | 21 - lily/item.cc | 12 +- lily/key-engraver.cc | 10 +- lily/key-performer.cc | 10 +- lily/line-of-score.cc | 2 +- lily/local-key-engraver.cc | 12 +- lily/local-key-item.cc | 4 +- lily/lookup.cc | 249 +++++--- lily/lyric-engraver.cc | 6 +- lily/lyric-performer.cc | 6 +- lily/main.cc | 67 +- lily/mark-engraver.cc | 6 +- lily/midi-item.cc | 12 +- lily/multi-measure-rest-engraver.cc | 4 +- lily/music-list.cc | 8 +- lily/music-output-def.cc | 6 +- lily/musical-request.cc | 12 +- lily/my-lily-lexer.cc | 1 + lily/my-lily-parser.cc | 12 +- lily/note-column.cc | 10 +- lily/note-performer.cc | 14 +- lily/p-score.cc | 14 +- lily/paper-def.cc | 123 +++- lily/paper-outputter.cc | 201 +++++- lily/paper-stream.cc | 4 +- lily/parser.yy | 23 +- lily/performer.cc | 2 +- lily/pitch-squash-engraver.cc | 2 +- lily/plet-engraver.cc | 10 +- lily/plet-spanner.cc | 6 +- lily/plet-swallow-engraver.cc | 4 +- lily/priority-halign-engraver.cc | 2 +- lily/ps-lookup.cc | 285 --------- lily/ps-outputter.cc | 80 --- lily/ps-stream.cc | 55 -- lily/rest-collision-engraver.cc | 2 +- lily/rest-collision.cc | 4 +- lily/rest-engraver.cc | 6 +- lily/rhythmic-column-engraver.cc | 5 +- lily/rhythmic-head.cc | 2 +- lily/score-element-info.cc | 1 + lily/score-element.cc | 16 +- lily/score-engraver.cc | 27 +- lily/score-priority-engraver.cc | 4 +- lily/scores.cc | 11 - lily/script-column.cc | 6 +- lily/script-engraver.cc | 4 +- lily/script.cc | 2 +- lily/separating-group-spanner.cc | 4 +- lily/separating-line-group-engraver.cc | 2 +- lily/single-malt-grouping-item.cc | 4 +- lily/slur-engraver.cc | 8 +- lily/slur.cc | 4 +- lily/span-bar-engraver.cc | 4 +- lily/span-score-bar-engraver.cc | 2 +- lily/spanner.cc | 4 +- lily/staff-margin-engraver.cc | 2 +- lily/stem-engraver.cc | 8 +- lily/stem.cc | 4 +- lily/super-element.cc | 2 +- lily/tex-lookup.cc | 209 ------ lily/tex-outputter.cc | 79 --- lily/tex-stream.cc | 54 -- lily/text-spanner.cc | 2 +- lily/tie.cc | 6 +- lily/ties-engraver.cc | 18 +- lily/time-signature-engraver.cc | 2 +- lily/time-signature-performer.cc | 4 +- lily/timing-translator.cc | 26 +- lily/translator-group.cc | 16 +- make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- make/stepmake.make | 2 +- make/toplevel.make.in | 2 +- mf/GNUmakefile | 41 +- mf/feta-autometric.mf | 2 +- mf/feta-beum.mf | 2 +- mf/feta-bolletjes.mf | 2 +- mf/feta-braces16.mf | 2 +- mf/feta-braces20.mf | 2 +- mf/feta-eindelijk.mf | 10 +- mf/feta-generic.mf | 2 +- mf/feta-klef.mf | 9 +- mf/feta-nummer.mf | 7 +- mf/feta-schrift.mf | 34 +- mf/feta-sleur.mf | 2 +- mf/feta-toevallig.mf | 2 +- mf/mfmp.ini | 4 - mf/mfplain.ini | 3 + mf/out/feta11.afm | 95 +-- mf/out/feta13.afm | 95 +-- mf/out/feta16.afm | 95 +-- mf/out/feta19.afm | 95 +-- mf/out/feta20.afm | 95 +-- mf/out/feta23.afm | 95 +-- mf/out/feta26.afm | 95 +-- ps/GNUmakefile | 4 +- scripts/mudela-book.py | 604 +++++++++++------- stepmake/Documentation/GNUmakefile | 11 +- stepmake/Documentation/out/automake.txt | 173 +++++ stepmake/Documentation/out/layout.txt | 31 + stepmake/Documentation/topdocs/GNUmakefile | 10 +- .../Documentation/topdocs/out/AUTHORS.txt | 26 + stepmake/Documentation/topdocs/out/BLURB | 6 + .../Documentation/topdocs/out/INSTALL.txt | 292 +++++++++ stepmake/NEWS | 17 + stepmake/VERSION | 2 +- stepmake/aclocal.m4 | 50 +- stepmake/bin/GNUmakefile | 7 +- stepmake/bin/package-diff.py | 7 +- stepmake/config.make.in | 1 + stepmake/configure | 107 +++- stepmake/make/GNUmakefile | 5 +- stepmake/make/out/stepmake.lsm | 8 +- stepmake/make/out/stepmake.spec | 4 +- stepmake/make/toplevel.make.in | 27 +- stepmake/stepmake/GNUmakefile | 7 +- stepmake/stepmake/documentation-targets.make | 2 +- stepmake/stepmake/executable-vars.make | 4 + stepmake/stepmake/generic-targets.make | 9 +- stepmake/stepmake/generic-vars.make | 21 +- stepmake/stepmake/install-out-rules.make | 2 + stepmake/stepmake/install-out-targets.make | 41 ++ stepmake/stepmake/install-out-vars.make | 2 + stepmake/stepmake/install-out.sub.make | 5 + stepmake/stepmake/install-outfiles.make | 15 - stepmake/stepmake/install-outfiles.sub.make | 5 - stepmake/stepmake/install-rules.make | 2 + stepmake/stepmake/install-targets.make | 49 ++ stepmake/stepmake/install-vars.make | 2 + stepmake/stepmake/install.sub.make | 5 + stepmake/stepmake/installfiles.make | 15 - stepmake/stepmake/metapost-rules.make | 2 +- stepmake/stepmake/toplevel-targets.make | 7 +- tex/GNUmakefile | 2 +- tex/lilyponddefs.ps | 11 +- 205 files changed, 3581 insertions(+), 2835 deletions(-) create mode 100644 NEWS-1.0 create mode 100644 init/catalan.ly create mode 100644 input/test/thumb.ly create mode 100644 lily/dimensions.cc create mode 100644 lily/graphical-lisp-element.cc delete mode 100644 lily/include/ps-lookup.hh delete mode 100644 lily/include/ps-outputter.hh delete mode 100644 lily/include/ps-stream.hh delete mode 100644 lily/include/tex-lookup.hh delete mode 100644 lily/include/tex-outputter.hh delete mode 100644 lily/include/tex-stream.hh delete mode 100644 lily/ps-lookup.cc delete mode 100644 lily/ps-outputter.cc delete mode 100644 lily/ps-stream.cc delete mode 100644 lily/tex-lookup.cc delete mode 100644 lily/tex-outputter.cc delete mode 100644 lily/tex-stream.cc delete mode 100644 mf/mfmp.ini create mode 100644 mf/mfplain.ini create mode 100644 stepmake/Documentation/out/automake.txt create mode 100644 stepmake/Documentation/out/layout.txt create mode 100644 stepmake/Documentation/topdocs/out/AUTHORS.txt create mode 100644 stepmake/Documentation/topdocs/out/BLURB create mode 100644 stepmake/Documentation/topdocs/out/INSTALL.txt create mode 100644 stepmake/stepmake/install-out-rules.make create mode 100644 stepmake/stepmake/install-out-targets.make create mode 100644 stepmake/stepmake/install-out-vars.make create mode 100644 stepmake/stepmake/install-out.sub.make delete mode 100644 stepmake/stepmake/install-outfiles.make delete mode 100644 stepmake/stepmake/install-outfiles.sub.make create mode 100644 stepmake/stepmake/install-rules.make create mode 100644 stepmake/stepmake/install-targets.make create mode 100644 stepmake/stepmake/install-vars.make create mode 100644 stepmake/stepmake/install.sub.make delete mode 100644 stepmake/stepmake/installfiles.make diff --git a/Documentation/man/GNUmakefile b/Documentation/man/GNUmakefile index 6f2e9d4b4a..5fd71fb083 100644 --- a/Documentation/man/GNUmakefile +++ b/Documentation/man/GNUmakefile @@ -2,7 +2,7 @@ depth = ../.. -STEPMAKE_TEMPLATES=documentation +STEPMAKE_TEMPLATES=documentation install-out SECTION=1 MANTXT = $(addprefix $(outdir)/, $(addsuffix .txt,$(basename $(TEXINFO_FILES) .texinfo))) MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION),$(basename $(YO_FILES) .yo))) @@ -16,8 +16,6 @@ default: $(MANGROFF) INSTALLATION_OUT_FILES=$(MANGROFF) INSTALLATION_OUT_DIR=$(mandir)/man$(SECTION) -include $(stepdir)/install-outfiles.make - local-WWW: $(MANGROFF:.1=.html) $(PYTHON) $(step-bindir)/ls-latex.py --package=$(topdir) --title 'Manual pages for LilyPond' $(YO_FILES) \ | sed "s!$(outdir)/!!g" > $(outdir)/index.html diff --git a/Documentation/topdocs/PATCHES.yo b/Documentation/topdocs/PATCHES.yo index 87a328b11f..1b20b7c37a 100644 --- a/Documentation/topdocs/PATCHES.yo +++ b/Documentation/topdocs/PATCHES.yo @@ -40,10 +40,16 @@ verb( Then, from the top of Lily's source tree, type verb( + make dist make diff ) -which leaves your patch as file(./lilypond-0.1.73.jcn1.diff). +which rolls the tarball file(../releases/lilypond-0.1.73.tar.gz) +and leaves your patch as file(./lilypond-0.1.73.jcn1.diff). +footnote('Make diff' generates a patch between two tarballs. For +more info type 'make diff help=='. We assume that there is a tarball +file(lilypond-0.1.73.tar.gz) in the directory file(../releases). + If you didn't configure Lily using --srcdir, you can do: diff --git a/NEWS b/NEWS index 5cff9ea377..4cf107903c 100644 --- a/NEWS +++ b/NEWS @@ -1,515 +1,60 @@ -pl 17 - - fixed RPM building. +1.1.0 -pl 16.hwn1 - - ridiculous slur dims fixed. - - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old - - use re iso. regex for python stuff. - - bf: mudela-book.py - - updated install directions. Made lilypond-login for csh - - bf: installdirs of MF stuff - - Dictionary implementation using hash tables (LilyPond is 3% faster) - - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster) +pl 18.exp + - use C++ RTTI iso access_Xxx () + - junk Graphical_lisp_element + - catalan.ly -pl 16.uu1 - - debian URLs, make/stepmake.make patch - - further debian fixes. - -pl 14.tca1 - - partitas - - prall{mordent,prall} patch. - -****** -pl 16 - - read property ydirection and tieYDirection for tie direction. - - bf: slur over rest. - - bf: include path - - part of jcn2 - - configure --enable-guile - -pl 15.jcn1 - - autoconf on mf,mfont mp,mpost +pl 17.tca1 + - rewrite of mudela-book -pl 15.am - - Lots of patches from *Adrian* *Mariano*! - -********** - -pl 15 -pl 14.hwn1 - - \lyrics iso \lyric (mudela 1.0.7) - - cleaned up real_expression syntax. - - removed optional_semicolon nonterminal after toplevel assignment - - MInterval Music::time_int () -> Moment Music::duration () - - junked Music_iterator::daddy_iter_l_ - - junked Sequential_music::offset_mom_ - - tempo compression: - * syntax: \times 2/3 Music - * Compressed_music, Compressed_music_iterator - - flower: init rational to 0 - - flower: removed P?Cursor<>::P?Cursor (), using pointer iso ref now. - - don't install into TeX, but into ${datadir}/{mf,tex,ly} (todo: ps) - - -********* -pl 14 - -pl 13.uu1 - - syntax for \translator: (\name "Name") - - bfs for footer - - bf: init/{book,center}-fragment.ly, YODL nofooter stuff. - - bf: redeclaration - - bf: doc fixes - - bfs: egcs 1.1 - -pl 13.mb1 - - bf: Lookup::afm_find, the width was undefined for the feta fonts. - - bf: refman.yo - -pl 13.jcn5 - - bf: init/paper* missing `;' - - lilyponddefs.ps fixes - - crude output name fix, see scores.cc - -pl 13.jcn4 - - some ps output fixes - - lilyponddefs.ps: some sane implemenations - - removed (some) ghostscript internals - -pl 13.jcn3 - - PostScript output version 0.0; do - export GS_LIB=$HOME/usr/src/lilypond/tex - export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out - make -C mf pfa - lilypond -t example-1 # or try: lilypond -t twinkle :-) - gv lelie.ps - - ps: - * lots of output fixes, chars, strings - * tex/lilyponddefs.ps: added rather braindead defs - -pl 13.jcn2 - - tex/lily-ps-defs.ps (./tex?) - - grand output rehack - * dropped {dimen,tex}.{cc,hh} - * {ps,tex} stuf to {Ps,Tex}_lookup - * init/table*.ly: added #parameters - - ps fonts: - * ps-to-pfa.py generates valid type-3 fonts - * do: make -C mf pfa - * set: GS_FONT=GS_FONTPATH=$HOME/usr/src/lilypond/mf/out - -pl 13.jcn1 - - crude postscript type 3 font: - make sure to have mfplain.mem metapost precompiled macros - make -C mf ps - gv out/feta20.sp - -******** - -pl 12.mb1 - - bf: feta-timesig.mf Added horizontal space, minor corrections. - - Changed meaning of Staff.timeSignatureStyle: - C Use C and stroked C for 4/4,2/2 - old Use old style mensuration marks - 1 Use single number - Cn/m Set symbol explicitly, n/m=2/2 or 4/4 - oldn/m Set symbol explicitly, n/m=2/2,3/2,3/4,4/4,6/4 or 9/4. - All other time signatures are typeset with the default two-digit - layout. - - -pl 12.jcn2 - - Lookup abstract base class - - Lookup/Symtable(s): separation of input/output - -pl 12.jcn1 - - preparations for braindead PostScript output - -pl 12.hwn3 - - praeludium-fuga-E to relative mode - - bf: mudela-mode.el - - bf: BIBINPUTS - - more dutch glossary + explanations - - table-to-html fixes -pl 12.hwn2 - - bf: mymycode in .yo - - VERSION to out/ - - add VPATH to mutopia - - access_Identifier (bool): (non)copy arg now explicit. - - bf: lilypond-latex.tex - - - -pl 12.hwn1 - - \remove "Engraver_type"; - - \output "bla" -> output = "bla" (mudela 0.1.6) - - \property defaultclef -> \property defaultClef - - naming of access_{Engraver,Performer,Translator_group} () - - changed syntax for \translator in \paper{} (mudela 0.1.6) - - declared contexts: - - StaffContext = \translator { .. } - \translator { \StaffContext } - - - elt_b -> elem_b - - bf: add Separating_line_group_engraver to RhythmicStaff. - - -pl 12.am1 - - large doc patch, ChoireStaff -> ChoirStaff - -******* -pl 12 - -pl 11.uu2 - - added Transposed_music for mixing transposition and relative - -pl 11.jcn1 - - bf: config.make striproff - - texinfo -pl 11.mb2 - - feta-timesig.mf: Added some flesh on C and C2, - added old-style mensuration marks. - -pl 11.mb1 - - Added feta-timesig.mf, font for C and alla breve. - - -pl 11.uu1 - - new \property: meterSignatureStyle for C and C2 time sigs - - bf: BIBINPUTS - - stepmake 53 - - bf: gif vs. png stuff - -******* -pl 11 - -pl 10.uu2 - - plet-spanner fix. - - large doc patch (thanks Adrian) - -pl 10.jbr1 - - aclocal.m4, stepmake/aclocal.m4: Choose specific python - - stepmake/bin/release.py: Use the same python calling process - - make/lilypond-vars.make: PATH should not use PATHSEP. It is fine - to hard code it to `:' on both Windows NT and UNIX. - - stepmake/bin/package-zip32.sh: Perform configure with a specific - python, ie cygwin32 python on Windows NT - -pl 10.uu1 - - junked \octave - - marginBreakPriority, direction==LEFT - - mf-to-table NT fix (JBR) - - createKeyOnClefChange property - - -pl 10.jcn1 - - mf-to-xpms for Harmonia - -pl 9.jbr1 - - scripts/convert-mudela.py: We must close infile and outfile before - a rename occurs. NT Windows locks open files. - stepmake/bin/package-zip32.sh: renamed all python bins to: - .py in NT Windows distribution. - - -********* -pl 10 - -pl 9.jcn1 - - started gnuisation of website - * filetype and size - * 'no gifs due to patent problems' - - bumped stepmake version nr (again): - please update stepmake/VERSION after making changes to stepmake... - -pl 9.hwn1 - - do default midi,paper by toplevel \paper / \midi (mudela 1.0.4) - - bf: error if no Score context - - notename table now can be declared as well. - - junked \clear - -********* -pl 9 - -pl 8.uu1 - - junked \staff, \multi - - bf Music_list::Music_list (Music_list const&) - - AC_SUBST(PATHSEP,DIRSEP) - - generate Documentation/tex/out/*.bib (AM) - - a4 fixes (AM) - - bf: metafont-*.make - - parser.yy: intlist mods. (mudela 1.0.2) - - \melodic -> \notes (mudela 1.0.3) - - typo: calcalute_dependencies () - -pl 8.jcn3 - - gif -> png - * ps-to-pngs.sh - * stepmake - * website - * yodl-1.31.4 (to be released) - - target 'texinfo' -> 'info' - -pl 8.jcn2 - - more doco in texinfo (with yodl pl3) - - bf's: package-diff - -pl 8.jcn1 - - removed tutorial from texinfo, yodl2texinfo is still rather broken - - bf: setlocale NUMERIC to 'C' - - removed ugly space from print-dimen - -******* -pl 8 - - make website fixes. - -pl 7.jcn1 - - minor stepmake/yodl fixes - -pl 7.uu1 - - - changed separator in vocabulary - - added barAlways and defaultBarType properties. - -pl 7.hwn1 - - changed header format. Use a + for concatenation. - - \header { key = "concat" + "string" } - - (mudela 1.0.2) - - allow computed properties in translator definition - - GrandStaff = \translator { - minVerticalAlign = 1.5\staffheight; - .. - } - - - Music inheritance. Datastructure and parser now follow this grammar - - Music_list: - | Music_list Music - ; - Simultaneous_music: '<' Music_list '>' - ; - Sequential_music: '{' Music_list '}' - ; - - - bf: Item::do_unlink () don't iterate on attached_span_l_arr_, -because it is changed by Spanner::set_bounds () (thanks Thomas) - - bf: URL Documentation/index (thanks EP) - - bf: twinkle.ly (thanks EP) - - bf: mi2mu (thanks Murray) - - bf: mudela-book --dependencies - - split LaTeX and TeX stuff - -pl 7.tca1 - - more Partita's - -pl 7.jbr1 - - aclocal.m4,make/lilypond-vars.make: added PATHSEP as AC_SUBST to - help support Windows NT doco build. - Documentation/ntweb/index.yo: minor spelling changes - - -************* -pl 7 - - refman updates by Adriano Moriano. - - -pl 6.jbr2 - - scripts/ly2dvi32.py: Fixed bug with lily input including multiple - files. Also, we now stream out lilypond log one line at a time - for better feedback. - -pl 6.jbr1 - - scripts/ly2dvi32.py: Added some doco, add postscript option, set - MFINPUTS along with TEXINPUTS, modified initialization sequence. - Made some Python style changes per Han-Wen suggestions. - - Documentation/man/ly2dvi32.yo: Added a manpage for ly2dvi32. - - stepmake/bin/package-zip32.sh: Added doco distribution. Removed - the installation directory after zip operation. - - Documentation/ntweb/index.yo: LILYPOND -> LILYPONDPREFIX and - comments about MiKTeX-1.11. - -pl 6.tca1 - - First movement of Partita II (BWV 826) in - mutopia/J.S.Bach/Cembalo-Partitas. Lilypond output was so - beautiful that I'll have to write the rest of the partita. - -pl 6.uu2 - - mudela-book.py --dependencies - - more doc fixes (AM) - - warn if declaring a keyword. - - \grouping 4 2*3; now accepted. - - patches to standchen.ly - -pl 6.uu1 - - - mudela-book handles \input now - - vocabulary fixes by Adrian Moriano - -******** -pl 6 - - largish rehack: - * Super_element is now an `abstract' class, - * Paper_score directly contains one Line_of_score. The - breaking/postprocessing/deletion is mixed with the output phase. - * Hopefully this will save memory for large scores. (benchmarks, anyone?) - * bf: Horizontal_vertical_group_item::do_unlink () should call - - Axis_group_item::do_unlink () - - - changed LILYPOND to LILYPONDPREFIX - - added tfm and dvi target for mf/ - - reincluded english.ly - - doc fixes (thanks, Adrian Moriano) - - doc fixes. - - mf: ex height added. - -pl 5.mb1 - - Mudela 1.0.1: Changed \accidentals -> \keysignature - - Identifiers can be used in textual scripts: - - - tempoString="Allegro molto assai"; - - [...] - - c^\tempoString - - - -pl 5.jbr2 - - aclocal.m4,config.h.in,flower/file-path.cc: Added PATHSEP and - DIRSEP to configuration to support windows style path and pathlists. - - stepmake/bin/package-zip32.sh,stepmake/stepmake/package.make: - zip target now calls package-zip32.sh which creates winnt - binary distribution zip file. xzip target continues to use - package-zip.sh for Jan's cross-compiled version. - - lily/main.cc: Added a search for LILYPOND environment variable to - better facilitate binary distributions. - - Documentation/README-W32.yo: Updated information on running lilypond - on winnt. - - - -pl 5.jcn1 - - (step)make fixes from yodl - - minor doco fixes - - bf: patch in website after 'make release' - -pl 5.jbr1 - - Documentation/ntweb/Makefile: Used absolute url for LilyPond Homepage - - Documentation/ntweb/index.yo: Minor mods per Jan's suggestions - - - - -************* -pl 5 - -pl 4.jcn1 - - texinfo docs, lots of yodl TODO - - junked some makefiles - - ntweb: use BLURB - - bf: pletvisibility - - adaptions for yodl-1.31.2's automatic texinfo conversion - - reinclude of 1.jcn2: - - renamed -alto -> viola - - bf: avant-gardish six preludes - - bf: ly2dvi warnings - -pl 4.jbr1 - - stepmake/stepmake/install-outfiles.sub.make: fixed typo - - scripts/GNUmakefile: add ly2dvi32 to installation list and fixed - included executable-targets.make to facilate installation of scripts - - Documentation/ntweb: Fixes to nt web page and added topdoc like - automation. - -********* -pl 4 -pl 3.mb2 - - Changed text script alignment: center -> left - - TeX commands counts as one character when calculating - the length of a Text_def - -pl 3.jbr2 - - Documentation/topdocs/index.yo: Added link to NT dist page - - Documentation/ntweb/: Added Makefile and index.yo to build the - NT dist page - -pl 3.hwn1 - - stepmake hacking - -pl 3.uu1 - - stepmake MAKEFILES -> STEPMAKE_TEMPLATES - - count \texcommands in tex string - - -pl 3.jcn1 - - bf: website: empty toplevel readme's - - bf: xs4all (again?) - - can't administer ftp site now: put patch into website - - -pl 3.jbr1 - - stepmake/stepmake/Executable_targets: UNIX cross-compile doesn't - work with $(DOTEXE) on source of install command. - - stepmake/Generic_targets: creating multiple dirs with mkdir - requires -p option - - scripts/ly2dvi32.py: General and Winnt specific fixes - - -********* -pl 3 - -pl 2.uu1 - - solaris 2.6 compile/make website fixes. - - rm'd WWW.make - - stepmake .43 - - pcnov095.win.tue.nl -> ftp.cs.uu.nl - -pl 2.hwn1 - - mi2mu naming of track output - - bf: do key restore sign only once - - ly2dvi32 preliminary version (JBR) - - bf index.html link - - bf mudela-book.py - - -********** -pl 2 - - scalar compile stuff - - bf install directory - - YODL note - - GUI faq update - - bf ly2dvi - - stepmake split: Po.make - - make check target - - dist AFMs and manpages - - split up mudela.yo in glossary.yo, tutorial.yo and refman.yo - -pl 1.jcn1 - - www.digicash.com www.xs4all.nl - - fake msgfmt - - make uninstall fixes - -pl 1.jbr2 - aclocal.m4,stepmake/aclocal.m4,stepmake/stepmake/Variables.make: - Support install target for unix, unix cross compile, and - Windows NT - -pl 1.jbr1 - stepmake/stepmake/Executable.make: DOTEXE was missplaced - - scripts/convert-mudela.py: program_id should write to stderr - -************** -pl 1 - - mi2mu fix: \key "D" - - \hoffset - - started new NEWS file - - lots of stepmake hacking - - aclocal.m4 copied from stepmake - - ly2dvi 0.12 - - build the doco from the source tree. - - include website in RPM +pl 17.ms1 + - added \thumb (used very often in cello music) in + mf/feta-schrift.mf. + - added /input/test/thumb.ly (example) + +pl 16.jcn1 + - dashed-slur through scheme + +pl 15.jcn4 + - more scheme hacks + +pl 15.jcn3 + - try at scheme in Atom + +pl 15.jcn2 # rest of + - graphical-lisp-element + silly half hook-up with autuplet + +pl 17.jcn5 + - stepmake pl59: templatised install (see mf/) + - reasonably ps/tex success (with guile-1.2): + * input/kortjakje.ly + - lots more scm stuff + - bf: mf/mfplain.ini + - stepmake pl58: guile 1.3 configure fix + - working font-switch: + guile-1.2 and -lreadline -ldl from 1.3 configure... + +pl 17.jcn4 + - installable stepmake pl57 + - urg, FIXME guile-1.3: + * don't install shared libs! configure can't handle + * manually add: EXTRA_LIBS = -lguile -lreadline -ldl + * lily's truely broken, downgrade do 1.2 + +pl 17.jcn3 + - lots of stuff still broken, notably font selection, just try + a()b + or so + - tex output support + - all output through scheme + - option: f, output-format=X + - geile placebox + - mf/mfplain.ini + +pl 17.jcn2 + - all paper output through scheme, about half way + +pl 17.jcn1 + - 16.jcn1 diff --git a/NEWS-1.0 b/NEWS-1.0 new file mode 100644 index 0000000000..c50fbdf8a7 --- /dev/null +++ b/NEWS-1.0 @@ -0,0 +1,516 @@ + +pl 17 + - fixed RPM building. + +pl 16.hwn1 + - ridiculous slur dims fixed. + - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old + - use re iso. regex for python stuff. + - bf: mudela-book.py + - updated install directions. Made lilypond-login for csh + - bf: installdirs of MF stuff + - Dictionary implementation using hash tables (LilyPond is 3% faster) + - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster) + +pl 16.uu1 + - debian URLs, make/stepmake.make patch + - further debian fixes. + +pl 14.tca1 + - partitas + - prall{mordent,prall} patch. + +****** +pl 16 + - read property ydirection and tieYDirection for tie direction. + - bf: slur over rest. + - bf: include path + - part of jcn2 + - configure --enable-guile + +pl 15.jcn1 + - autoconf on mf,mfont mp,mpost + +pl 15.am + - Lots of patches from *Adrian* *Mariano*! + +********** + +pl 15 +pl 14.hwn1 + - \lyrics iso \lyric (mudela 1.0.7) + - cleaned up real_expression syntax. + - removed optional_semicolon nonterminal after toplevel assignment + - MInterval Music::time_int () -> Moment Music::duration () + - junked Music_iterator::daddy_iter_l_ + - junked Sequential_music::offset_mom_ + - tempo compression: + * syntax: \times 2/3 Music + * Compressed_music, Compressed_music_iterator + - flower: init rational to 0 + - flower: removed P?Cursor<>::P?Cursor (), using pointer iso ref now. + - don't install into TeX, but into ${datadir}/{mf,tex,ly} (todo: ps) + + +********* +pl 14 + +pl 13.uu1 + - syntax for \translator: (\name "Name") + - bfs for footer + - bf: init/{book,center}-fragment.ly, YODL nofooter stuff. + - bf: redeclaration + - bf: doc fixes + - bfs: egcs 1.1 + +pl 13.mb1 + - bf: Lookup::afm_find, the width was undefined for the feta fonts. + - bf: refman.yo + +pl 13.jcn5 + - bf: init/paper* missing `;' + - lilyponddefs.ps fixes + - crude output name fix, see scores.cc + +pl 13.jcn4 + - some ps output fixes + - lilyponddefs.ps: some sane implemenations + - removed (some) ghostscript internals + +pl 13.jcn3 + - PostScript output version 0.0; do + export GS_LIB=$HOME/usr/src/lilypond/tex + export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out + make -C mf pfa + lilypond -t example-1 # or try: lilypond -t twinkle :-) + gv lelie.ps + - ps: + * lots of output fixes, chars, strings + * tex/lilyponddefs.ps: added rather braindead defs + +pl 13.jcn2 + - tex/lily-ps-defs.ps (./tex?) + - grand output rehack + * dropped {dimen,tex}.{cc,hh} + * {ps,tex} stuf to {Ps,Tex}_lookup + * init/table*.ly: added #parameters + - ps fonts: + * ps-to-pfa.py generates valid type-3 fonts + * do: make -C mf pfa + * set: GS_FONT=GS_FONTPATH=$HOME/usr/src/lilypond/mf/out + +pl 13.jcn1 + - crude postscript type 3 font: + make sure to have mfplain.mem metapost precompiled macros + make -C mf ps + gv out/feta20.sp + +******** + +pl 12.mb1 + - bf: feta-timesig.mf Added horizontal space, minor corrections. + - Changed meaning of Staff.timeSignatureStyle: + C Use C and stroked C for 4/4,2/2 + old Use old style mensuration marks + 1 Use single number + Cn/m Set symbol explicitly, n/m=2/2 or 4/4 + oldn/m Set symbol explicitly, n/m=2/2,3/2,3/4,4/4,6/4 or 9/4. + All other time signatures are typeset with the default two-digit + layout. + + +pl 12.jcn2 + - Lookup abstract base class + - Lookup/Symtable(s): separation of input/output + +pl 12.jcn1 + - preparations for braindead PostScript output + +pl 12.hwn3 + - praeludium-fuga-E to relative mode + - bf: mudela-mode.el + - bf: BIBINPUTS + - more dutch glossary + explanations + - table-to-html fixes +pl 12.hwn2 + - bf: mymycode in .yo + - VERSION to out/ + - add VPATH to mutopia + - access_Identifier (bool): (non)copy arg now explicit. + - bf: lilypond-latex.tex + + + +pl 12.hwn1 + - \remove "Engraver_type"; + - \output "bla" -> output = "bla" (mudela 0.1.6) + - \property defaultclef -> \property defaultClef + - naming of access_{Engraver,Performer,Translator_group} () + - changed syntax for \translator in \paper{} (mudela 0.1.6) + - declared contexts: + + StaffContext = \translator { .. } + \translator { \StaffContext } + + - elt_b -> elem_b + - bf: add Separating_line_group_engraver to RhythmicStaff. + + +pl 12.am1 + - large doc patch, ChoireStaff -> ChoirStaff + +******* +pl 12 + +pl 11.uu2 + - added Transposed_music for mixing transposition and relative + +pl 11.jcn1 + - bf: config.make striproff + - texinfo +pl 11.mb2 + - feta-timesig.mf: Added some flesh on C and C2, + added old-style mensuration marks. + +pl 11.mb1 + - Added feta-timesig.mf, font for C and alla breve. + + +pl 11.uu1 + - new \property: meterSignatureStyle for C and C2 time sigs + - bf: BIBINPUTS + - stepmake 53 + - bf: gif vs. png stuff + +******* +pl 11 + +pl 10.uu2 + - plet-spanner fix. + - large doc patch (thanks Adrian) + +pl 10.jbr1 + - aclocal.m4, stepmake/aclocal.m4: Choose specific python + - stepmake/bin/release.py: Use the same python calling process + - make/lilypond-vars.make: PATH should not use PATHSEP. It is fine + to hard code it to `:' on both Windows NT and UNIX. + - stepmake/bin/package-zip32.sh: Perform configure with a specific + python, ie cygwin32 python on Windows NT + +pl 10.uu1 + - junked \octave + - marginBreakPriority, direction==LEFT + - mf-to-table NT fix (JBR) + - createKeyOnClefChange property + + +pl 10.jcn1 + - mf-to-xpms for Harmonia + +pl 9.jbr1 + - scripts/convert-mudela.py: We must close infile and outfile before + a rename occurs. NT Windows locks open files. + stepmake/bin/package-zip32.sh: renamed all python bins to: + .py in NT Windows distribution. + + +********* +pl 10 + +pl 9.jcn1 + - started gnuisation of website + * filetype and size + * 'no gifs due to patent problems' + - bumped stepmake version nr (again): + please update stepmake/VERSION after making changes to stepmake... + +pl 9.hwn1 + - do default midi,paper by toplevel \paper / \midi (mudela 1.0.4) + - bf: error if no Score context + - notename table now can be declared as well. + - junked \clear + +********* +pl 9 + +pl 8.uu1 + - junked \staff, \multi + - bf Music_list::Music_list (Music_list const&) + - AC_SUBST(PATHSEP,DIRSEP) + - generate Documentation/tex/out/*.bib (AM) + - a4 fixes (AM) + - bf: metafont-*.make + - parser.yy: intlist mods. (mudela 1.0.2) + - \melodic -> \notes (mudela 1.0.3) + - typo: calcalute_dependencies () + +pl 8.jcn3 + - gif -> png + * ps-to-pngs.sh + * stepmake + * website + * yodl-1.31.4 (to be released) + - target 'texinfo' -> 'info' + +pl 8.jcn2 + - more doco in texinfo (with yodl pl3) + - bf's: package-diff + +pl 8.jcn1 + - removed tutorial from texinfo, yodl2texinfo is still rather broken + - bf: setlocale NUMERIC to 'C' + - removed ugly space from print-dimen + +******* +pl 8 + - make website fixes. + +pl 7.jcn1 + - minor stepmake/yodl fixes + +pl 7.uu1 + + - changed separator in vocabulary + - added barAlways and defaultBarType properties. + +pl 7.hwn1 + - changed header format. Use a + for concatenation. + + \header { key = "concat" + "string" } + + (mudela 1.0.2) + - allow computed properties in translator definition + + GrandStaff = \translator { + minVerticalAlign = 1.5\staffheight; + .. + } + + - Music inheritance. Datastructure and parser now follow this grammar + + Music_list: + | Music_list Music + ; + Simultaneous_music: '<' Music_list '>' + ; + Sequential_music: '{' Music_list '}' + ; + + - bf: Item::do_unlink () don't iterate on attached_span_l_arr_, +because it is changed by Spanner::set_bounds () (thanks Thomas) + - bf: URL Documentation/index (thanks EP) + - bf: twinkle.ly (thanks EP) + - bf: mi2mu (thanks Murray) + - bf: mudela-book --dependencies + - split LaTeX and TeX stuff + +pl 7.tca1 + - more Partita's + +pl 7.jbr1 + - aclocal.m4,make/lilypond-vars.make: added PATHSEP as AC_SUBST to + help support Windows NT doco build. + Documentation/ntweb/index.yo: minor spelling changes + + +************* +pl 7 + - refman updates by Adriano Moriano. + + +pl 6.jbr2 + - scripts/ly2dvi32.py: Fixed bug with lily input including multiple + files. Also, we now stream out lilypond log one line at a time + for better feedback. + +pl 6.jbr1 + - scripts/ly2dvi32.py: Added some doco, add postscript option, set + MFINPUTS along with TEXINPUTS, modified initialization sequence. + Made some Python style changes per Han-Wen suggestions. + - Documentation/man/ly2dvi32.yo: Added a manpage for ly2dvi32. + - stepmake/bin/package-zip32.sh: Added doco distribution. Removed + the installation directory after zip operation. + - Documentation/ntweb/index.yo: LILYPOND -> LILYPONDPREFIX and + comments about MiKTeX-1.11. + +pl 6.tca1 + - First movement of Partita II (BWV 826) in + mutopia/J.S.Bach/Cembalo-Partitas. Lilypond output was so + beautiful that I'll have to write the rest of the partita. + +pl 6.uu2 + - mudela-book.py --dependencies + - more doc fixes (AM) + - warn if declaring a keyword. + - \grouping 4 2*3; now accepted. + - patches to standchen.ly + +pl 6.uu1 + + - mudela-book handles \input now + - vocabulary fixes by Adrian Moriano + +******** +pl 6 + - largish rehack: + * Super_element is now an `abstract' class, + * Paper_score directly contains one Line_of_score. The + breaking/postprocessing/deletion is mixed with the output phase. + * Hopefully this will save memory for large scores. (benchmarks, anyone?) + * bf: Horizontal_vertical_group_item::do_unlink () should call + + Axis_group_item::do_unlink () + + - changed LILYPOND to LILYPONDPREFIX + - added tfm and dvi target for mf/ + - reincluded english.ly + - doc fixes (thanks, Adrian Moriano) + - doc fixes. + - mf: ex height added. + +pl 5.mb1 + - Mudela 1.0.1: Changed \accidentals -> \keysignature + - Identifiers can be used in textual scripts: + + + tempoString="Allegro molto assai"; + + [...] + + c^\tempoString + + + +pl 5.jbr2 + - aclocal.m4,config.h.in,flower/file-path.cc: Added PATHSEP and + DIRSEP to configuration to support windows style path and pathlists. + - stepmake/bin/package-zip32.sh,stepmake/stepmake/package.make: + zip target now calls package-zip32.sh which creates winnt + binary distribution zip file. xzip target continues to use + package-zip.sh for Jan's cross-compiled version. + - lily/main.cc: Added a search for LILYPOND environment variable to + better facilitate binary distributions. + - Documentation/README-W32.yo: Updated information on running lilypond + on winnt. + + + +pl 5.jcn1 + - (step)make fixes from yodl + - minor doco fixes + - bf: patch in website after 'make release' + +pl 5.jbr1 + - Documentation/ntweb/Makefile: Used absolute url for LilyPond Homepage + - Documentation/ntweb/index.yo: Minor mods per Jan's suggestions + + + + +************* +pl 5 + +pl 4.jcn1 + - texinfo docs, lots of yodl TODO + - junked some makefiles + - ntweb: use BLURB + - bf: pletvisibility + - adaptions for yodl-1.31.2's automatic texinfo conversion + - reinclude of 1.jcn2: + - renamed -alto -> viola + - bf: avant-gardish six preludes + - bf: ly2dvi warnings + +pl 4.jbr1 + - stepmake/stepmake/install-outfiles.sub.make: fixed typo + - scripts/GNUmakefile: add ly2dvi32 to installation list and fixed + included executable-targets.make to facilate installation of scripts + - Documentation/ntweb: Fixes to nt web page and added topdoc like + automation. + +********* +pl 4 +pl 3.mb2 + - Changed text script alignment: center -> left + - TeX commands counts as one character when calculating + the length of a Text_def + +pl 3.jbr2 + - Documentation/topdocs/index.yo: Added link to NT dist page + - Documentation/ntweb/: Added Makefile and index.yo to build the + NT dist page + +pl 3.hwn1 + - stepmake hacking + +pl 3.uu1 + - stepmake MAKEFILES -> STEPMAKE_TEMPLATES + - count \texcommands in tex string + + +pl 3.jcn1 + - bf: website: empty toplevel readme's + - bf: xs4all (again?) + - can't administer ftp site now: put patch into website + + +pl 3.jbr1 + - stepmake/stepmake/Executable_targets: UNIX cross-compile doesn't + work with $(DOTEXE) on source of install command. + - stepmake/Generic_targets: creating multiple dirs with mkdir + requires -p option + - scripts/ly2dvi32.py: General and Winnt specific fixes + + +********* +pl 3 + +pl 2.uu1 + - solaris 2.6 compile/make website fixes. + - rm'd WWW.make + - stepmake .43 + - pcnov095.win.tue.nl -> ftp.cs.uu.nl + +pl 2.hwn1 + - mi2mu naming of track output + - bf: do key restore sign only once + - ly2dvi32 preliminary version (JBR) + - bf index.html link + - bf mudela-book.py + + +********** +pl 2 + - scalar compile stuff + - bf install directory + - YODL note + - GUI faq update + - bf ly2dvi + - stepmake split: Po.make + - make check target + - dist AFMs and manpages + - split up mudela.yo in glossary.yo, tutorial.yo and refman.yo + +pl 1.jcn1 + - www.digicash.com www.xs4all.nl + - fake msgfmt + - make uninstall fixes + +pl 1.jbr2 - aclocal.m4,stepmake/aclocal.m4,stepmake/stepmake/Variables.make: + Support install target for unix, unix cross compile, and + Windows NT + +pl 1.jbr1 - stepmake/stepmake/Executable.make: DOTEXE was missplaced + - scripts/convert-mudela.py: program_id should write to stderr + +************** +pl 1 + - mi2mu fix: \key "D" + - \hoffset + - started new NEWS file + - lots of stepmake hacking + - aclocal.m4 copied from stepmake + - ly2dvi 0.12 + - build the doco from the source tree. + - include website in RPM + diff --git a/TODO b/TODO index 6c18aa1a12..e22c3f60e8 100644 --- a/TODO +++ b/TODO @@ -10,14 +10,11 @@ grep for TODO and ugh/ugr/urg BUGS: - * document new TeX/mf layout - - * egcs-1.1 -O2 -finline-functions causes crash + + * add new glyphs to font.ly * formatting of input stuff. - * use real RTTI iso access_Stuff. - * \notes{ a \< b \cr } vs \notes{ a \< b \! } * if possible, it might be nice for a warning to appear if someone does diff --git a/VERSION b/VERSION index 951bd357fd..ef23e353b8 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 -MINOR_VERSION=0 -PATCH_LEVEL=17 +MINOR_VERSION=1 +PATCH_LEVEL=0 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/aclocal.m4 b/aclocal.m4 index 5844b69dcf..1671ff15ef 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,5 +1,5 @@ dnl WARNING WARNING WARNING WARNING -dnl do not edit! this is aclocal.m4, generated from stepmake/stepmake/../aclocal.m4 +dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4 dnl aclocal.m4 -*-shell-script-*- dnl StepMake subroutines for configure.in @@ -155,6 +155,16 @@ AC_DEFUN(AC_STEPMAKE_GXX, [ fi ]) +AC_DEFUN(AC_STEPMAKE_GUILE, [ + # urg, must check for different functions in libguile + # to force new check iso reading from cache + AC_CHECK_LIB(guile, scm_shell, \ + LIBS="-lguile $LIBS" AC_DEFINE(HAVE_LIBGUILE), \ + AC_CHECK_LIB(readline, readline) \ + AC_CHECK_LIB(dl, dlopen) \ + AC_CHECK_LIB(guile, scm_boot_guile)) +]) + AC_DEFUN(AC_STEPMAKE_INIT, [ . $srcdir/VERSION @@ -169,16 +179,44 @@ AC_DEFUN(AC_STEPMAKE_INIT, [ package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'` changequote([, ])dnl + # No versioning on directory names of sub-packages + # urg, urg + stepmake=${datadir}/stepmake + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"` + if test "x$PACKAGE" = "xSTEPMAKE"; then echo Stepmake package! (cd stepmake; rm -f stepmake; ln -s ../stepmake .) (cd stepmake; rm -f bin; ln -s ../bin .) AC_CONFIG_AUX_DIR(bin) + stepmake=stepmake else echo Package: $PACKAGE - AC_CONFIG_AUX_DIR(stepmake/bin) + # Check for installed stepmake + if test -d $stepmake; then + echo Using installed stepmake: $stepmake + else + stepmake='$(depth)'/stepmake + echo Using local stepmake: $datadir/stepmake not found + fi + AC_CONFIG_AUX_DIR(\ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + ) fi + AC_SUBST(stepmake) AC_SUBST(package) AC_SUBST(PACKAGE) AC_SUBST(PACKAGE_NAME) @@ -193,10 +231,6 @@ AC_DEFUN(AC_STEPMAKE_INIT, [ absolute_builddir="`pwd`" AC_SUBST(absolute_builddir) - # No versioning on directory names of sub-packages - stepmake=stepmake - AC_SUBST(stepmake) - STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null` if test "x$STATE_VECTOR" != "x"; then STATE_VECTOR="\$(depth)/$STATE_VECTOR" @@ -251,14 +285,14 @@ dnl fi DOTEXE=.exe DIRSEP='\\' PATHSEP=';' - INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" else DIRSEP='/' PATHSEP=':' LN=ln LN_S='ln -s' ZIP="zip -r -9" - INSTALL="\$(stepdir)/../bin/install-sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c" fi AC_SUBST(DOTEXE) AC_SUBST(ZIP) @@ -463,11 +497,13 @@ AC_DEFUN(AC_STEPMAKE_YODL, [ AC_CHECK_PROGS(YODL2MSLESS, yodl2msless, -echo no yodl) AC_CHECK_PROGS(YODL2TEXINFO, yodl2texinfo, -echo no yodl) AC_CHECK_PROGS(YODL2TXT, yodl2txt, -echo no yodl) + YODL2LESS_DIR='$(bindir)/' else AC_SUBST(STRIPROFF) AC_SUBST(YODL) AC_SUBST(YODL2HTML) AC_SUBST(YODL2LATEX) + AC_SUBST(YODL2LESS_DIR) AC_SUBST(YODL2MAN) AC_SUBST(YODL2MSLESS) AC_SUBST(YODL2TEXINFO) diff --git a/config.make.in b/config.make.in index 292783aab0..a2a43b481f 100644 --- a/config.make.in +++ b/config.make.in @@ -59,6 +59,7 @@ TROFF = @TROFF@ YODL= @YODL@ YODL2HTML= @YODL2HTML@ YODL2LATEX= @YODL2LATEX@ +YODL2LESS_DIR= @YODL2LESS_DIR@ YODL2MAN= @YODL2MAN@ YODL2MSLESS= @YODL2MSLESS@ YODL2TEXINFO= @YODL2TEXINFO@ diff --git a/configure b/configure index 9588ac798a..942a6f482c 100755 --- a/configure +++ b/configure @@ -79,8 +79,6 @@ ac_help="$ac_help enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)" ac_help="$ac_help enable-printing turn on debug printing. Default: off" -ac_help="$ac_help - enable-guile link in GUILE. Default: off" ac_help="$ac_help with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale " ac_help="$ac_help @@ -607,6 +605,15 @@ fi PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'` package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'` + # No versioning on directory names of sub-packages + # urg, urg + stepmake=${datadir}/stepmake + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"` + if test "x$PACKAGE" = "xSTEPMAKE"; then echo Stepmake package! (cd stepmake; rm -f stepmake; ln -s ../stepmake .) @@ -630,10 +637,38 @@ ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + stepmake=stepmake else echo Package: $PACKAGE + # Check for installed stepmake + if test -d $stepmake; then + echo Using installed stepmake: $stepmake + else + stepmake='$(depth)'/stepmake + echo Using local stepmake: $datadir/stepmake not found + fi ac_aux_dir= -for ac_dir in stepmake/bin $srcdir/stepmake/bin; do +for ac_dir in \ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + $srcdir/\ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + ; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" @@ -645,7 +680,27 @@ for ac_dir in stepmake/bin $srcdir/stepmake/bin; do fi done if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in stepmake/bin $srcdir/stepmake/bin" 1>&2; exit 1; } + { echo "configure: error: can not find install-sh or install.sh in \ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + $srcdir/\ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + " 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub @@ -656,6 +711,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + cat >> confdefs.h </dev/null` if test "x$STATE_VECTOR" != "x"; then STATE_VECTOR="\$(depth)/$STATE_VECTOR" @@ -705,7 +757,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:709: checking host system type" >&5 +echo "configure:761: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -730,7 +782,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:734: checking for $ac_word" >&5 +echo "configure:786: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -764,7 +816,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:768: checking for $ac_word" >&5 +echo "configure:820: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -801,7 +853,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:805: checking for $ac_word" >&5 +echo "configure:857: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -835,7 +887,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:839: checking for $ac_word" >&5 +echo "configure:891: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -868,7 +920,7 @@ test -n "$BASH" || BASH="/bin/sh" # Extract the first word of "${PYTHON:-python}", so it can be a program name with args. set dummy ${PYTHON:-python}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:872: checking for $ac_word" >&5 +echo "configure:924: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -937,14 +989,14 @@ fi DOTEXE=.exe DIRSEP='\\' PATHSEP=';' - INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" else DIRSEP='/' PATHSEP=':' LN=ln LN_S='ln -s' ZIP="zip -r -9" - INSTALL="\$(stepdir)/../bin/install-sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c" fi @@ -1084,7 +1136,7 @@ EOF # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1088: checking for $ac_word" >&5 +echo "configure:1140: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1113,7 +1165,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1117: checking for $ac_word" >&5 +echo "configure:1169: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1161,7 +1213,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1165: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1217: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1171,11 +1223,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1195,12 +1247,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1199: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1251: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1204: checking whether we are using GNU C" >&5 +echo "configure:1256: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1209,7 +1261,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1213: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1224,7 +1276,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1228: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1280: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1265,20 +1317,12 @@ fi # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) printing_b=no -guile_b=no # Check whether --enable-printing or --disable-printing was given. if test "${enable_printing+set}" = set; then enableval="$enable_printing" printing_b=$enableval fi -# Check whether --enable-guile or --disable-guile was given. -if test "${enable_guile+set}" = set; then - enableval="$enable_guile" - guile_b=$enableval -fi - - if test "$optimise_b" = yes; then DEFINES="$DEFINES -DSTRING_UTILS_INLINED" @@ -1289,7 +1333,7 @@ EOF fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1293: checking how to run the C++ preprocessor" >&5 +echo "configure:1337: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1302,12 +1346,12 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1338,7 +1382,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1342: checking for $ac_word" >&5 +echo "configure:1386: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1369,7 +1413,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1373: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1417: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1379,11 +1423,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1403,12 +1447,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1407: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1451: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1412: checking whether we are using GNU C++" >&5 +echo "configure:1456: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1417,7 +1461,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -1432,7 +1476,7 @@ if test $ac_cv_prog_gxx = yes; then ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1436: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1480: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1462,17 +1506,17 @@ fi ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1466: checking for FlexLexer.h" >&5 +echo "configure:1510: checking for FlexLexer.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1476: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1522,12 +1566,12 @@ fi echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 -echo "configure:1526: checking whether explicit instantiation is needed" >&5 +echo "configure:1570: checking whether explicit instantiation is needed" >&5 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < struct foo { static int baz; }; @@ -1537,7 +1581,7 @@ int main() { return foo::baz; ; return 0; } EOF -if { (eval echo configure:1541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* lily_cv_need_explicit_instantiation=no else @@ -1564,7 +1608,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1568: checking for $ac_word" >&5 +echo "configure:1612: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1606,7 +1650,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1610: checking for $ac_word" >&5 +echo "configure:1654: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1640,7 +1684,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1644: checking for $ac_word" >&5 +echo "configure:1688: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1707,7 +1751,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1711: checking for $ac_word" >&5 +echo "configure:1755: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1739,7 +1783,7 @@ test -n "$AR" || AR="error" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1743: checking for $ac_word" >&5 +echo "configure:1787: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1794,7 +1838,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:1798: checking language" >&5 +echo "configure:1842: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -1830,7 +1874,7 @@ EOF echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:1834: checking for gettext in -lintl" >&5 +echo "configure:1878: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1838,7 +1882,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1882,12 +1926,12 @@ fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1886: checking for $ac_func" >&5 +echo "configure:1930: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1945,7 +1989,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1949: checking for $ac_word" >&5 +echo "configure:1993: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1975,7 +2019,7 @@ done test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh " echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6 -echo "configure:1979: checking whether msgfmt accepts -o" >&5 +echo "configure:2023: checking whether msgfmt accepts -o" >&5 msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" if test "$msgfmt_output" = ""; then echo "$ac_t""yes" 1>&6 @@ -2002,7 +2046,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2006: checking for $ac_word" >&5 +echo "configure:2050: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2037,7 +2081,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2041: checking for $ac_word" >&5 +echo "configure:2085: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2074,7 +2118,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2078: checking for $ac_word" >&5 +echo "configure:2122: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2109,7 +2153,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2113: checking for $ac_word" >&5 +echo "configure:2157: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2152,7 +2196,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2156: checking for $ac_word" >&5 +echo "configure:2200: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2186,7 +2230,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2190: checking for $ac_word" >&5 +echo "configure:2234: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2220,7 +2264,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2224: checking for $ac_word" >&5 +echo "configure:2268: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2254,7 +2298,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2258: checking for $ac_word" >&5 +echo "configure:2302: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2287,7 +2331,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2291: checking for $ac_word" >&5 +echo "configure:2335: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2321,7 +2365,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2325: checking for $ac_word" >&5 +echo "configure:2369: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2355,7 +2399,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2359: checking for $ac_word" >&5 +echo "configure:2403: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2389,7 +2433,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2393: checking for $ac_word" >&5 +echo "configure:2437: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2418,6 +2462,7 @@ test -n "$YODL2TXT" && break done test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" + YODL2LESS_DIR='$(bindir)/' else @@ -2427,6 +2472,7 @@ test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" + export STRIPROFF YODL YODL2HTML YODL2LATEX YODL2MAN YODL2MSLESS YODL2TEXINFO YODL2TXT fi if test "x$YODL" = "-echo no yodl"; then @@ -2437,12 +2483,10 @@ test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" fi - - -case $guile_b in - yes) + # urg, must check for different functions in libguile + # to force new check iso reading from cache echo $ac_n "checking for scm_shell in -lguile""... $ac_c" 1>&6 -echo "configure:2446: checking for scm_shell in -lguile" >&5 +echo "configure:2490: checking for scm_shell in -lguile" >&5 ac_lib_var=`echo guile'_'scm_shell | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2450,7 +2494,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lguile $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + \ + LIBS="-lguile $LIBS" cat >> confdefs.h <<\EOF +#define HAVE_LIBGUILE 1 +EOF + +else + echo "$ac_t""no" 1>&6 +\ + echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6 +echo "configure:2536: checking for readline in -lreadline" >&5 +ac_lib_var=`echo readline'_'readline | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lreadline $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo readline | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + \ + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "configure:2586: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2479,7 +2619,57 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo guile | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + ac_tr_lib=HAVE_LIB`echo dl | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + \ + echo $ac_n "checking for scm_boot_guile in -lguile""... $ac_c" 1>&6 +echo "configure:2636: checking for scm_boot_guile in -lguile" >&5 +ac_lib_var=`echo guile'_'scm_boot_guile | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lguile $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo guile | sed -e 's/^a-zA-Z0-9_/_/g' \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` cat >> confdefs.h <&6 fi +fi + + + - ;; -esac - echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:2500: checking for 8-bit clean memcmp" >&5 +echo "configure:2691: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2504,7 +2695,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -2535,12 +2726,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:2539: checking for vprintf" >&5 +echo "configure:2730: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -2590,12 +2781,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:2594: checking for _doprnt" >&5 +echo "configure:2785: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -2648,12 +2839,12 @@ fi for ac_func in memmem snprintf vsnprintf gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2652: checking for $ac_func" >&5 +echo "configure:2843: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2718,7 +2909,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2722: checking for $ac_word" >&5 +echo "configure:2913: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2888,13 +3079,13 @@ s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g +s%@stepmake@%$stepmake%g s%@package@%$package%g s%@PACKAGE@%$PACKAGE%g s%@PACKAGE_NAME@%$PACKAGE_NAME%g s%@package_depth@%$package_depth%g s%@AUTOGENERATE@%$AUTOGENERATE%g s%@absolute_builddir@%$absolute_builddir%g -s%@stepmake@%$stepmake%g s%@STATE_VECTOR@%$STATE_VECTOR%g s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g s%@host@%$host%g @@ -2944,6 +3135,7 @@ s%@YODL2MAN@%$YODL2MAN%g s%@YODL2MSLESS@%$YODL2MSLESS%g s%@YODL2TEXINFO@%$YODL2TEXINFO%g s%@YODL2TXT@%$YODL2TXT%g +s%@YODL2LESS_DIR@%$YODL2LESS_DIR%g s%@LIBOBJS@%$LIBOBJS%g s%@MAKEINFO@%$MAKEINFO%g diff --git a/configure.in b/configure.in index 69f8966897..b0277039b6 100644 --- a/configure.in +++ b/configure.in @@ -16,14 +16,9 @@ AC_STEPMAKE_COMPILE # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) printing_b=no -guile_b=no AC_ARG_ENABLE(printing, [ enable-printing turn on debug printing. Default: off], [printing_b=$enableval]) -AC_ARG_ENABLE(guile, - [ enable-guile link in GUILE. Default: off], - [guile_b=$enableval]) - if test "$optimise_b" = yes; then DEFINES="$DEFINES -DSTRING_UTILS_INLINED" @@ -42,19 +37,12 @@ AC_STEPMAKE_MSGFMT AC_STEPMAKE_TEXMF # AC_STEPMAKE_TEXMF_DIRS AC_STEPMAKE_YODL - +AC_STEPMAKE_GUILE dnl should check out -print dnl huh? dnl AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir) -case $guile_b in - yes) - AC_CHECK_LIB(guile, scm_shell) - - ;; -esac - AC_FUNC_MEMCMP AC_FUNC_VPRINTF AC_CHECK_FUNCS(memmem snprintf vsnprintf gettext) diff --git a/dstreamrc b/dstreamrc index d8e7b6a65b..2d4ef5938b 100644 --- a/dstreamrc +++ b/dstreamrc @@ -34,6 +34,7 @@ Beam 0 Bow 1 Bezier_bow 1 Change_iterator 1 +Change_translator 1 Chord 1 Chord_iterator 1 Clef_item 1 @@ -50,8 +51,10 @@ Engraver_group_engraver 0 General_script_def 1 Graphical_element 1 Group_change_req 1 +Guile 1 Head_column 0 Horizontal_align_item 1 +Horizontal_group_item 1 Idealspacing 1 Identifier 1 Ineq_constrained_qp 1 @@ -113,6 +116,7 @@ Symtable 1 Symtables 1 Text_def 1 +Text_item 1 Text_req 1 Time_description 1 Translation_property 0 diff --git a/flower/dstream.cc b/flower/dstream.cc index 784bf36fbe..10542ee06a 100644 --- a/flower/dstream.cc +++ b/flower/dstream.cc @@ -16,7 +16,7 @@ #include "rational.hh" /// indent of each level -const INDTAB = 2; +const int INDTAB = 2; /* should use Regexp library. diff --git a/flower/include/dictionary.hh b/flower/include/dictionary.hh index 55f0e4fedd..d3c9a7afb3 100644 --- a/flower/include/dictionary.hh +++ b/flower/include/dictionary.hh @@ -100,7 +100,6 @@ public: nexti = (nexti + j*j)%sz; } - finish: return retval; } }; @@ -181,7 +180,10 @@ public: V operator [] (String k) const { - return elem (k); + V retval; + if (!elem_b (k)) + return retval ; + retval ((Dictionary *) this)->elem (k); } V remove (String s) diff --git a/init/GNUmakefile b/init/GNUmakefile index a9a23da2da..7b213816c7 100644 --- a/init/GNUmakefile +++ b/init/GNUmakefile @@ -8,10 +8,8 @@ INI_FILES = $(FLY_FILES) $(LY_FILES) INSTALLATION_DIR=$(datadir)/ly/ INSTALLATION_FILES=$(INI_FILES) +STEPMAKE_TEMPLATES=install LOCALSTEPMAKE_TEMPLATES=mutopia include $(depth)/make/stepmake.make - -include $(stepdir)/installfiles.make - diff --git a/init/catalan.ly b/init/catalan.ly new file mode 100644 index 0000000000..99ae0dc723 --- /dev/null +++ b/init/catalan.ly @@ -0,0 +1,73 @@ +%{ + + Common catalan names for notes. "b" means flat (bemoll), "d" means sharp (diesi). + Also "s" is included for sharp (sostingut). Both "diesi" and "sostingut" are approved + by "Diccionari de la Llengua Catalana" from "Institut d'Estudis Catalans". + + Adapted from italiano.ly. + + English: a b c d e f g + Catalan: la si do re mi fa sol + + For spanish naming just use the sharp sign "s" (sostenido) instead of "s" +(sostenido) . +%} + +% contributed by Jaume Obrador + +\notenames { + dobb = \musicalpitch { -1 0 -2 } + dob = \musicalpitch { -1 0 -1 } + do = \musicalpitch { -1 0 0 } + dod = \musicalpitch { -1 0 1 } + dodd = \musicalpitch { -1 0 2 } + rebb = \musicalpitch { -1 1 -2 } + reb = \musicalpitch { -1 1 -1 } + re = \musicalpitch { -1 1 0 } + red = \musicalpitch { -1 1 1 } + redd = \musicalpitch { -1 1 2 } + mibb = \musicalpitch { -1 2 -2 } + mib = \musicalpitch { -1 2 -1 } + mi = \musicalpitch { -1 2 0 } + mid = \musicalpitch { -1 2 1 } + midd = \musicalpitch { -1 2 2 } + fabb = \musicalpitch { -1 3 -2 } + fab = \musicalpitch { -1 3 -1 } + fa = \musicalpitch { -1 3 0 } + fad = \musicalpitch { -1 3 1 } + fadd = \musicalpitch { -1 3 2 } + solbb = \musicalpitch { -1 4 -2 } + solb = \musicalpitch { -1 4 -1 } + sol = \musicalpitch { -1 4 0 } + sold = \musicalpitch { -1 4 1 } + soldd = \musicalpitch { -1 4 2 } + labb = \musicalpitch { -1 5 -2 } + lab = \musicalpitch { -1 5 -1 } + la = \musicalpitch { -1 5 0 } + lad = \musicalpitch { -1 5 1 } + ladd = \musicalpitch { -1 5 2 } + sibb = \musicalpitch { -1 6 -2 } + sib = \musicalpitch { -1 6 -1 } + si = \musicalpitch { -1 6 0 } + sid = \musicalpitch { -1 6 1 } + sidd = \musicalpitch { -1 6 2 } + +% For using "sostingut" notation, which is also correct + + dos = \musicalpitch { -1 0 1 } + doss = \musicalpitch { -1 0 2 } + res = \musicalpitch { -1 1 1 } + ress = \musicalpitch { -1 1 2 } + mis = \musicalpitch { -1 2 1 } + miss = \musicalpitch { -1 2 2 } + fas = \musicalpitch { -1 3 1 } + fass = \musicalpitch { -1 3 2 } + sols = \musicalpitch { -1 4 1 } + solss = \musicalpitch { -1 4 2 } + las = \musicalpitch { -1 5 1 } + lass = \musicalpitch { -1 5 2 } + sis = \musicalpitch { -1 6 1 } + siss = \musicalpitch { -1 6 2 } +} + + diff --git a/init/declarations.ly b/init/declarations.ly index d28a53c62f..c1bc0fd333 100644 --- a/init/declarations.ly +++ b/init/declarations.ly @@ -35,5 +35,7 @@ nobreak = { \penalty = -10000; } \include "property.ly" +\include "scm.ly" + % music = "\melodic\relative c" diff --git a/init/paper20.ly b/init/paper20.ly index a67683b655..cf6e0dbe95 100644 --- a/init/paper20.ly +++ b/init/paper20.ly @@ -23,7 +23,7 @@ paper_twenty = \paper { -2 = \symboltables { \table_thirteen } -1 = \symboltables { \table_sixteen } 0 = \symboltables { \table_twenty } - + \include "params.ly"; } diff --git a/init/script.ly b/init/script.ly index 2a7cd50bcc..7c96a45122 100644 --- a/init/script.ly +++ b/init/script.ly @@ -3,6 +3,7 @@ % indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted priority } % +thumb = \script { "thumb" 0 0 1 0 0 } accent = \script { "sforzato" 0 -1 0 0 0 } marcato = \script { "marcato" 0 -1 0 1 0 } staccatissimo = \script { "staccatissimo" 0 -1 0 1 0 } diff --git a/input/GNUmakefile b/input/GNUmakefile index ad59365a5b..16b785ec2d 100644 --- a/input/GNUmakefile +++ b/input/GNUmakefile @@ -5,7 +5,7 @@ depth = .. SUBDIRS=test bugs examples=example-3 twinkle-pop praeludium-fuga-E twinkle -flexamples=example-1 example-2 +flexamples=example-1 example-2 LOCALSTEPMAKE_TEMPLATES=mutopia diff --git a/input/test/thumb.ly b/input/test/thumb.ly new file mode 100644 index 0000000000..7b4a3a3807 --- /dev/null +++ b/input/test/thumb.ly @@ -0,0 +1,22 @@ +\header{ + title="CELLO-THUMBS"; + enteredby="Maarten Storm"; +} + + +% the thumb-script is used in cello music to indicate a note that should +% be played with your thumb. + +\version "1.0.7"; + +\score { \notes \relative c'' { + <[ a8_\thumb a'8-3(> <)b_\thumb b'-3> + <)d_\thumb d'-3]> + } + \paper{ + linewidth = 80.\mm; + castingalgorithm = \Wordwrap; + } +} + + diff --git a/lily/GNUmakefile b/lily/GNUmakefile index cf4db4c84a..e8691e9ac2 100644 --- a/lily/GNUmakefile +++ b/lily/GNUmakefile @@ -8,6 +8,9 @@ SUBDIRS = include MODULE_LIBS=$(depth)/lib $(depth)/flower +EXTRA_LIBES=-lguile #ugh +BLA_LIBES=-lguile #ugh + STEPMAKE_TEMPLATES= c++ executable include $(depth)/make/stepmake.make diff --git a/lily/abbrev.cc b/lily/abbrev.cc index 4af78938bc..eb87945cd7 100644 --- a/lily/abbrev.cc +++ b/lily/abbrev.cc @@ -129,7 +129,7 @@ void Abbreviation::do_substitute_dependent (Score_element*o, Score_element*n) { if (stem_l_ == o) - stem_l_ = n ? (Stem*)n->access_Item () : 0; + stem_l_ = n ? dynamic_cast (n) : 0; } diff --git a/lily/abbreviation-beam-engraver.cc b/lily/abbreviation-beam-engraver.cc index 67c09cb7fc..be29437462 100644 --- a/lily/abbreviation-beam-engraver.cc +++ b/lily/abbreviation-beam-engraver.cc @@ -27,11 +27,11 @@ Abbreviation_beam_engraver::Abbreviation_beam_engraver () bool Abbreviation_beam_engraver::do_try_request (Request*r) { - Musical_req* mus_l = r->access_Musical_req (); + Musical_req* mus_l = dynamic_cast (r); if (!mus_l) return false; - Abbreviation_beam_req * b = mus_l->access_Abbreviation_beam_req (); + Abbreviation_beam_req * b = dynamic_cast (mus_l); if (!b) return false; @@ -85,7 +85,7 @@ Abbreviation_beam_engraver::acknowledge_element (Score_element_info i) if (!abeam_p_ || !i.elem_l_->is_type_b (Stem::static_name ())) return; - Stem* s = (Stem*)i.elem_l_->access_Item (); + Stem* s = (Stem*)dynamic_cast (i.elem_l_); int type_i = span_reqs_drul_[LEFT]->type_i_; s->flag_i_ = intlog2 (type_i) - 2; diff --git a/lily/atom.cc b/lily/atom.cc index 76b59197d3..2d8f11e78e 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -29,7 +29,7 @@ Atom::check_infinity_b ()const if (abs (off_[ax]) >= 100 CM) { warning (_f ("ridiculous dimension: %s, %s", axis_name_str (ax), - global_lookup_l->print_dimen (off_[ax]))); + print_dimen (off_[ax]))); if (experimental_features_global_b) assert (false); @@ -76,12 +76,14 @@ Atom::Atom () But Atom is used as a simple type *everywhere*, and we don't have virtual contructors. */ - str_ = global_lookup_l->unknown_str (); + lambda_ = 0; + str_ = "unknown\n"; } Atom::Atom (String s, Box b) : dim_ (b) { + lambda_ = 0; str_ = s; } diff --git a/lily/auto-plet-engraver.cc b/lily/auto-plet-engraver.cc index 8812f6245c..254f029f59 100644 --- a/lily/auto-plet-engraver.cc +++ b/lily/auto-plet-engraver.cc @@ -9,30 +9,29 @@ #include "auto-plet-engraver.hh" #include "command-request.hh" -#include "slur.hh" +#include "plet-spanner.hh" #include "note-column.hh" bool Tuplet_engraver::do_try_request (Request *r) { - Command_req * c = r->access_Command_req (); + Command_req * c = dynamic_cast (r); if (!(c && - c->access_Bracket_req ())) + dynamic_cast (c))) { return false; } - Bracket_req * b = c->access_Bracket_req (); + Bracket_req * b = dynamic_cast (c); bracket_req_arr_.push (b); return true; } - void Tuplet_engraver::do_process_requests () { int stopcount =0; - Link_array start_arr; + Link_array start_arr; for (int i=0; i < bracket_req_arr_.size (); i++) { @@ -40,16 +39,17 @@ Tuplet_engraver::do_process_requests () stopcount++; if (bracket_req_arr_[i]->spantype == Span_req::START) { - Slur *sp =new Slur; - start_arr.push (sp); - announce_element (Score_element_info (sp, bracket_req_arr_[i])); + Plet_spanner* glep = new Plet_spanner (); + start_arr.push (glep); +// lots of stuff does info->elem_l_->is_type () +// announce_element (Score_element_info (glep, bracket_req_arr_[i])); } } for (; stopcount--; ) { - Slur *sp = started_span_p_arr_.pop (); - stop_now_span_p_arr_.push (sp); + Plet_spanner* glep = started_span_p_arr_.pop (); + stop_now_span_p_arr_.push (glep); } for (int i=0; i < start_arr.size (); i++) @@ -61,9 +61,10 @@ Tuplet_engraver::acknowledge_element (Score_element_info i) { if (i.elem_l_->is_type_b (Note_column::static_name ())) { - Note_column *nc = (Note_column*)i.elem_l_->access_Item (); + Note_column *nc = (Note_column*)dynamic_cast (i.elem_l_); for (int j =0; j add_column (nc); + // started_span_p_arr_[j]->add_column (nc); + ; } } diff --git a/lily/axis-group-element.cc b/lily/axis-group-element.cc index 8aa8263668..928f64de0c 100644 --- a/lily/axis-group-element.cc +++ b/lily/axis-group-element.cc @@ -36,7 +36,8 @@ Axis_group_element::elem_l_arr () const */ Link_array r; for (int i=0; i < elem_l_arr_.size (); i++) - r.push (elem_l_arr_[i]->access_Score_element()); + r.push (dynamic_cast(elem_l_arr_[i])); + return r; } @@ -49,7 +50,7 @@ Axis_group_element::get_children () { Score_element* e = elems[i]; childs.push (e) ; - Axis_group_element * axis_group= e->access_Axis_group_element (); + Axis_group_element * axis_group= dynamic_cast (e); if (axis_group) childs.concat (axis_group->get_children ()); } diff --git a/lily/axis-group-item.cc b/lily/axis-group-item.cc index 33dfdceba9..273116d1ea 100644 --- a/lily/axis-group-item.cc +++ b/lily/axis-group-item.cc @@ -16,7 +16,7 @@ Axis_group_item::OK() const Link_array elems = elem_l_arr (); for (int i=0; i < elems.size(); i++) { - Item * it_l = elems[i]->access_Item (); + Item * it_l = dynamic_cast (elems[i]); assert (it_l); } } @@ -34,7 +34,7 @@ Axis_group_item::do_breakable_col_processing() Link_array elems = elem_l_arr (); for (int i=0; i < elems.size(); i++) { - Item* it_l = elems[i]->access_Item (); + Item* it_l = dynamic_cast (elems[i]); Direction j=LEFT; do { diff --git a/lily/axis-group-spanner.cc b/lily/axis-group-spanner.cc index 64a28da895..70c70c297f 100644 --- a/lily/axis-group-spanner.cc +++ b/lily/axis-group-spanner.cc @@ -24,7 +24,7 @@ Axis_group_spanner::do_break_processing_if_unbroken() { if (!elems[i]->line_l()) { - Item * item_l = elems[i]->access_Item (); + Item * item_l = dynamic_cast (elems[i]); if (item_l && item_l->breakable_b_ && item_l->break_status_dir() == 0) @@ -65,9 +65,9 @@ Axis_group_spanner::do_break_processing() /* this piece doesn't know where it belongs. Find out if it was broken, and use the broken remains */ - if (elt->access_Spanner ()) + if (dynamic_cast (elt)) { - Spanner * sp = elt->access_Spanner (); + Spanner * sp = dynamic_cast (elt); for (int j =0; j < broken_into_l_arr_.size(); j++) { @@ -83,15 +83,15 @@ Axis_group_spanner::do_break_processing() } } - else if (elt->access_Item () - && elt->access_Item ()->breakable_b_ - && elt->access_Item ()->break_status_dir () == 0) + else if (dynamic_cast (elt) + && dynamic_cast (elt)->breakable_b_ + && dynamic_cast (elt)->break_status_dir () == 0) { // broken items Direction j=LEFT; do { - Item * my_item = elt->access_Item ()->broken_to_drul_[j]; + Item * my_item = dynamic_cast (elt)->broken_to_drul_[j]; Line_of_score * item_line_l = my_item->line_l() ; if (! item_line_l) continue; diff --git a/lily/bar-column-engraver.cc b/lily/bar-column-engraver.cc index 2f1d760fa5..0832448a2a 100644 --- a/lily/bar-column-engraver.cc +++ b/lily/bar-column-engraver.cc @@ -52,7 +52,7 @@ Bar_column_engraver::create_column () void Bar_column_engraver::acknowledge_element (Score_element_info info) { - Item * it = info.elem_l_->access_Item (); + Item * it = dynamic_cast (info.elem_l_); if (!it) return; diff --git a/lily/bar-column.cc b/lily/bar-column.cc index e61c398900..74ce5386af 100644 --- a/lily/bar-column.cc +++ b/lily/bar-column.cc @@ -28,7 +28,7 @@ Bar_column::do_substitute_dependency (Score_element*o,Score_element*n) Script_column::do_substitute_dependency (o,n); if (o == bar_l_) { - bar_l_ = n ? (Bar*)n->access_Item () : 0; + bar_l_ = n ? (Bar*)dynamic_cast (n) : 0; } } diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index 78721871b1..7a2a515cdc 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -23,10 +23,10 @@ Bar_engraver::Bar_engraver() bool Bar_engraver::do_try_request (Request*r_l) { - Command_req* c_l = r_l->access_Command_req (); - if (!c_l|| !c_l->access_Bar_req ()) + Command_req* c_l = dynamic_cast (r_l); + if (!c_l|| !dynamic_cast (c_l)) return false; - Bar_req * b= c_l->access_Bar_req (); + Bar_req * b= dynamic_cast (c_l); if (bar_req_l_ && bar_req_l_->equal_b (b)) return false; diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 76163d5b3f..380cb65145 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -26,7 +26,7 @@ void Bar_number_engraver::acknowledge_element (Score_element_info i) { - Item *it=i.elem_l_->access_Item (); + Item *it=dynamic_cast (i.elem_l_); if (script_p_ || !it || !it->is_type_b (Bar::static_name())) return; diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 6ef0ba09fc..4ef398b499 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -25,11 +25,11 @@ Beam_engraver::Beam_engraver() bool Beam_engraver::do_try_request(Request*r) { - Musical_req* mus_l = r->access_Musical_req (); + Musical_req* mus_l = dynamic_cast (r); if (!mus_l) return false; - Beam_req* b = mus_l->access_Beam_req (); + Beam_req* b = dynamic_cast (mus_l); if (!b) return false; @@ -100,14 +100,14 @@ Beam_engraver::acknowledge_element (Score_element_info i) if (!beam_p_ || !i.elem_l_->is_type_b (Stem::static_name ())) return; - Stem* s = (Stem*)i.elem_l_->access_Item (); - if (!i.req_l_ || !i.req_l_->access_Musical_req () || !i.req_l_->access_Musical_req ()->access_Rhythmic_req ()) + Stem* s = (Stem*)dynamic_cast (i.elem_l_); + if (!dynamic_cast (i.req_l_)) { ::warning ( _("Stem must have Rhythmic structure.")); return; } - Rhythmic_req *rhythmic_req = i.req_l_->access_Musical_req ()->access_Rhythmic_req (); + Rhythmic_req *rhythmic_req = dynamic_cast (i.req_l_); if (rhythmic_req->duration_.durlog_i_<= 2) { rhythmic_req->warning (_ ("stem doesn't fit in beam")); diff --git a/lily/beam.cc b/lily/beam.cc index 075f08df2d..a9dd24bda3 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -126,7 +126,7 @@ void Beam::do_substitute_dependent (Score_element*o,Score_element*n) { if (o->is_type_b (Stem::static_name ())) - stems_.substitute ((Stem*)o->access_Item (), n? (Stem*) n->access_Item ():0); + stems_.substitute ((Stem*)dynamic_cast (o), n? (Stem*) dynamic_cast (n):0); } Interval diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 8195fbd9bf..462a9c1402 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -157,7 +157,7 @@ Clef_engraver::acknowledge_element (Score_element_info info) } /* ugh; should make Clef_referenced baseclass */ - Item * it_l =info.elem_l_->access_Item (); + Item * it_l =dynamic_cast (info.elem_l_); if (it_l) { if (it_l->is_type_b (Note_head::static_name ())) @@ -195,11 +195,11 @@ Clef_engraver::do_creation_processing() bool Clef_engraver::do_try_request (Request * r_l) { - Command_req* creq_l= r_l->access_Command_req (); - if (!creq_l || !creq_l->access_Clef_change_req ()) + Command_req* creq_l= dynamic_cast (r_l); + if (!creq_l || !dynamic_cast (creq_l)) return false; - clef_req_l_ = creq_l->access_Clef_change_req (); + clef_req_l_ = dynamic_cast (creq_l); read_req (clef_req_l_); return true; } diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc index be5ab22866..d7c6a102ab 100644 --- a/lily/collision-engraver.cc +++ b/lily/collision-engraver.cc @@ -30,7 +30,7 @@ Collision_engraver::acknowledge_element (Score_element_info i) { if (i.elem_l_->is_type_b (Note_column::static_name ())) { - Note_column * c = (Note_column*) i.elem_l_->access_Item (); + Note_column * c = (Note_column*) dynamic_cast (i.elem_l_); if (c->rest_b ()) return ; diff --git a/lily/collision.cc b/lily/collision.cc index c63c71747c..3a07ce18e1 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -165,6 +165,6 @@ IMPLEMENT_IS_TYPE_B1(Collision, Item); void Collision::do_substitute_dependency (Score_element*o_l,Score_element*n_l) { - clash_l_arr_.substitute ((Note_column*)o_l->access_Item (), - (Note_column*)(n_l?n_l->access_Item ():0)); + clash_l_arr_.substitute ((Note_column*)dynamic_cast (o_l), + (Note_column*)(n_l?dynamic_cast (n_l):0)); } diff --git a/lily/command-request.cc b/lily/command-request.cc index b32dc96ff4..e407f30661 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -32,7 +32,7 @@ Cadenza_req::do_print() const bool Cadenza_req::do_equal_b (Request*r) const { - Cadenza_req*cad = r->access_Command_req ()->access_Timing_req ()->access_Cadenza_req (); + Cadenza_req*cad = dynamic_cast (r); return cad->on_b_ == on_b_; } @@ -47,7 +47,7 @@ Cadenza_req::Cadenza_req (bool b) bool Bar_req::do_equal_b (Request*r) const { - Bar_req * b = r->access_Command_req ()->access_Bar_req (); + Bar_req * b = dynamic_cast (r); return type_str_ == b->type_str_; } @@ -81,7 +81,7 @@ Partial_measure_req::Partial_measure_req (Moment m) bool Partial_measure_req::do_equal_b (Request* r) const { - Partial_measure_req *p = r->access_Command_req ()->access_Timing_req ()->access_Partial_measure_req (); + Partial_measure_req *p = dynamic_cast (r); return p->duration_ == duration_; } @@ -150,7 +150,7 @@ Time_signature_change_req::do_print() const bool Time_signature_change_req::do_equal_b (Request * r) const { - Time_signature_change_req * m = r->access_Command_req ()->access_Timing_req ()->access_Time_signature_change_req (); + Time_signature_change_req * m = dynamic_cast (r); return m->beats_i_ == beats_i_ && one_beat_i_ == m->one_beat_i_; @@ -179,7 +179,7 @@ IMPLEMENT_IS_TYPE_B1(Tempo_req, Timing_req); bool Tempo_req::do_equal_b (Request *r) const { - Tempo_req *t = r->access_Command_req ()->access_Timing_req ()->access_Tempo_req (); + Tempo_req *t = dynamic_cast (r); return t->dur_.length()== dur_.length () && metronome_i_ == t->metronome_i_; } diff --git a/lily/dimensions.cc b/lily/dimensions.cc new file mode 100644 index 0000000000..1023450ee4 --- /dev/null +++ b/lily/dimensions.cc @@ -0,0 +1,19 @@ +// dimensions.cc + +#include "dimensions.hh" +#include "debug.hh" +#include "string.hh" + +String +print_dimen (Real r) +{ + String s = to_str (r, "%.3f"); + if (s.index_i ("NaN") != -1) + { + warning (_ ("NaN")); + s = "0.0"; + } + s += "pt"; + return s; +} + diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc index 04ae0bfba4..ae6259ac4c 100644 --- a/lily/dot-column-engraver.cc +++ b/lily/dot-column-engraver.cc @@ -30,7 +30,7 @@ Dot_column_engraver::do_pre_move_processing () void Dot_column_engraver::acknowledge_element (Score_element_info info) { - Item * i=info.elem_l_->access_Item (); + Item * i=dynamic_cast (info.elem_l_); if (! (i && i->is_type_b (Rhythmic_head::static_name ()))) return; diff --git a/lily/dot-column.cc b/lily/dot-column.cc index bb1885ca88..cee8a3edec 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -32,8 +32,8 @@ Dot_column::add_head (Rhythmic_head *r) void Dot_column::do_substitute_dependency (Score_element*o,Score_element*n) { - Item *oi =o->access_Item (); - Item *ni = n?n->access_Item ():0; + Item *oi =dynamic_cast (o); + Item *ni = n?dynamic_cast (n):0; if (oi&&oi->is_type_b (Rhythmic_head::static_name ())) head_l_arr_.substitute ((Rhythmic_head*)oi, (Rhythmic_head*)ni); diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 1b7107f80d..2b38c4c08e 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -34,23 +34,23 @@ Dynamic_engraver::do_post_move_processing() bool Dynamic_engraver::do_try_request (Request * r) { - Musical_req * m = r->access_Musical_req (); + Musical_req * m = dynamic_cast (r); if (!m) return false; - Dynamic_req * d = m->access_Dynamic_req (); + Dynamic_req * d = dynamic_cast (m); if (!d) return false; #if 0 - if (cresc_p_ && d->access_Span_dynamic_req () - && d->access_Span_dynamic_req ()->spantype == Span_req::START) + if (cresc_p_ && dynamic_cast (d) + && dynamic_cast (d)->spantype == Span_req::START) return false; #endif for (int i=0; i < dynamic_req_l_arr_.size (); i++) if (d->equal_b (dynamic_req_l_arr_[i])) return true; - dynamic_req_l_arr_.push (m->access_Dynamic_req ()); + dynamic_req_l_arr_.push (dynamic_cast (m)); return true; } void @@ -60,7 +60,7 @@ Dynamic_engraver::do_process_requests() for (int i=0; i < dynamic_req_l_arr_.size(); i++) { Dynamic_req *dreq_l = dynamic_req_l_arr_[i]; - if (dreq_l->access_Absolute_dynamic_req ()) + if (dynamic_cast (dreq_l)) { if (dynamic_p_) @@ -71,7 +71,7 @@ Dynamic_engraver::do_process_requests() Text_def * td_p = new Text_def; td_p->align_dir_ = CENTER; - String loud = dreq_l->access_Absolute_dynamic_req ()->loudness_str (); + String loud = dynamic_cast (dreq_l)->loudness_str (); td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_; td_p->style_str_ = "dynamic"; @@ -80,9 +80,9 @@ Dynamic_engraver::do_process_requests() dynamic_p_ = new Text_item (td_p); announce_element (Score_element_info (dynamic_p_, dreq_l)); } - else if (dreq_l->access_Span_dynamic_req ()) + else if (dynamic_cast (dreq_l)) { - Span_dynamic_req* span_l = dreq_l->access_Span_dynamic_req (); + Span_dynamic_req* span_l = dynamic_cast (dreq_l); if (span_l->spantype == Span_req::STOP) { if (!cresc_p_) diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index 2dc0b4131b..2c1b3d2d86 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -30,7 +30,7 @@ Engraver_group_engraver::do_announces() Link_array groups = group_l_arr (); for (int i=0; i < groups.size(); i++) { - Engraver * eng = groups[i]->access_Engraver (); + Engraver * eng = dynamic_cast (groups[i]); if (eng) { Engraver_group_engraver * group = @@ -52,7 +52,7 @@ Engraver_group_engraver::do_announces() info.req_l_ = &dummy_req; for (int i=0; i < nongroups.size(); i++) { // Is this good enough? - Engraver * eng = nongroups[i]->access_Engraver (); + Engraver * eng = dynamic_cast (nongroups[i]); if (eng && eng!= info.origin_grav_l_arr_[0]) eng->acknowledge_element (info); } @@ -60,7 +60,7 @@ Engraver_group_engraver::do_announces() announce_info_arr_.clear (); for (int i=0; i < nongroups.size(); i++) { - Engraver * eng = nongroups[i]->access_Engraver (); + Engraver * eng = dynamic_cast (nongroups[i]); if (eng) eng->process_acknowledged (); } @@ -77,7 +77,7 @@ Engraver_group_engraver::get_staff_info() const Link_array simple_translators = nongroup_l_arr (); for (int i=0; i < simple_translators.size(); i++) { - Engraver * eng = simple_translators[i]->access_Engraver (); + Engraver * eng = dynamic_cast (simple_translators[i]); if (eng) eng->fill_staff_info (inf); } diff --git a/lily/engraver.cc b/lily/engraver.cc index ecad055870..8a79b60346 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -26,13 +26,13 @@ Engraver::announce_element (Score_element_info i) daddy_grav_l()->announce_element (i); } - void Engraver::typeset_element (Score_element*p) { daddy_grav_l()->typeset_element (p); } + Paper_def* Engraver::paper() const { @@ -57,6 +57,6 @@ Engraver_group_engraver* Engraver::daddy_grav_l () const { return (daddy_trans_l_ ) - ? (Engraver_group_engraver*) daddy_trans_l_->access_Engraver () + ? (Engraver_group_engraver*) dynamic_cast (daddy_trans_l_) : 0; } diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc index d8fda8415c..8fd59f00d3 100644 --- a/lily/gourlay-breaking.cc +++ b/lily/gourlay-breaking.cc @@ -14,7 +14,7 @@ #include "p-score.hh" #include "paper-def.hh" -const HAPPY_DOTS_I = 3; +const int HAPPY_DOTS_I = 3; /** Helper to trace back an optimal path diff --git a/lily/graphical-lisp-element.cc b/lily/graphical-lisp-element.cc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lily/hara-kiri-line-group-engraver.cc b/lily/hara-kiri-line-group-engraver.cc index ab12bf8780..d85437a921 100644 --- a/lily/hara-kiri-line-group-engraver.cc +++ b/lily/hara-kiri-line-group-engraver.cc @@ -26,7 +26,7 @@ Hara_kiri_line_group_engraver::typeset_element(Score_element * e) { if (e->is_type_b (Note_head::static_name ())) ((Hara_kiri_vertical_group_spanner*)staffline_p_)->add_note - ((Note_head*)e->access_Item ()); + ((Note_head*)dynamic_cast (e)); Line_group_engraver_group::typeset_element (e); } diff --git a/lily/hara-kiri-vertical-group-spanner.cc b/lily/hara-kiri-vertical-group-spanner.cc index 849a2552fa..38468cf91c 100644 --- a/lily/hara-kiri-vertical-group-spanner.cc +++ b/lily/hara-kiri-vertical-group-spanner.cc @@ -44,8 +44,8 @@ void Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n) { if (o->is_type_b (Note_head::static_name ())) - head_l_arr_.substitute ((Note_head*)o->access_Item (), - (n)? (Note_head*)n->access_Item () : 0); + head_l_arr_.substitute ((Note_head*)dynamic_cast (o), + (n)? (Note_head*)dynamic_cast (n) : 0); } diff --git a/lily/head-engraver.cc b/lily/head-engraver.cc index c8c5e79248..ce4e5dcdf3 100644 --- a/lily/head-engraver.cc +++ b/lily/head-engraver.cc @@ -23,11 +23,10 @@ Note_head_engraver::do_try_request (Request *req_l) if (note_req_l_) return false; - if (!(req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Note_req ())) - + if (!(dynamic_cast (req_l))) return false; - note_req_l_=req_l->access_Musical_req ()->access_Rhythmic_req (); + note_req_l_=dynamic_cast (req_l); return true; } @@ -47,7 +46,7 @@ Note_head_engraver::do_process_requests() announce_element (Score_element_info (dot_p_,0)); } - note_p_->position_i_ = note_req_l_->access_Note_req ()->pitch_.steps (); + note_p_->position_i_ = dynamic_cast (note_req_l_)->pitch_.steps (); Score_element_info itinf (note_p_,note_req_l_); diff --git a/lily/heads-engraver.cc b/lily/heads-engraver.cc index 63e192ea06..a8e0aaa46b 100644 --- a/lily/heads-engraver.cc +++ b/lily/heads-engraver.cc @@ -18,10 +18,10 @@ Note_heads_engraver::Note_heads_engraver() bool Note_heads_engraver::do_try_request (Request *req_l) { - if (!req_l->access_Musical_req ()) + if (!dynamic_cast (req_l)) return false; - Note_req * n =req_l->access_Musical_req ()->access_Note_req (); + Note_req * n =dynamic_cast (req_l); if (!n) return false; @@ -49,7 +49,7 @@ Note_heads_engraver::do_process_requests() dot_p_arr_.push (d); } - note_p->position_i_ = note_req_l->access_Note_req ()->pitch_.steps (); + note_p->position_i_ = dynamic_cast (note_req_l)->pitch_.steps (); Score_element_info itinf (note_p,note_req_l); diff --git a/lily/include/atom.hh b/lily/include/atom.hh index 0d88e7ce31..f9621382bc 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -9,17 +9,19 @@ #ifndef ATOM_HH #define ATOM_HH +#include "lily-guile.hh" #include "string.hh" #include "box.hh" #include "lily-proto.hh" - /// a symbol which can be translated, and freely copied class Atom { Offset off_; public: + // urg, only used as a temp buffer String str_; String font_; + SCM lambda_; Box dim_; Offset offset () const; diff --git a/lily/include/auto-plet-engraver.hh b/lily/include/auto-plet-engraver.hh index a8cafb9c7c..b17e166415 100644 --- a/lily/include/auto-plet-engraver.hh +++ b/lily/include/auto-plet-engraver.hh @@ -23,8 +23,8 @@ public: protected: Link_array bracket_req_arr_; - Link_array started_span_p_arr_; - Link_array stop_now_span_p_arr_; + Link_array started_span_p_arr_; + Link_array stop_now_span_p_arr_; virtual void do_removal_processing (); virtual void acknowledge_element (Score_element_info); diff --git a/lily/include/dimensions.hh b/lily/include/dimensions.hh index 777d80e89c..65629f03d5 100644 --- a/lily/include/dimensions.hh +++ b/lily/include/dimensions.hh @@ -14,5 +14,7 @@ const Real PT_TO_PT =1.0; #define CM *CM_TO_PT #define INCH *INCH_TO_PT +String print_dimen (Real); + #endif // DIMENSIONS_HH diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index a8086af1f5..9dc6594c8e 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -36,6 +36,7 @@ protected: Invoke walker method to typeset element. Default: pass on to daddy. */ virtual void typeset_element (Score_element*elem_p); + /** take note of item/spanner diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 1ea707038e..56ce820c7e 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -11,6 +11,10 @@ #include "config.hh" +#ifdef __cplusplus +extern "C" { +#endif + #ifdef HAVE_LIBGUILE extern "C" { #include @@ -18,4 +22,22 @@ extern "C" { #else typedef long SCM; #endif + +SCM ly_append (SCM a, SCM b); +SCM ly_eval (SCM a); +SCM ly_func_o (char const* name); +SCM ly_lambda_o (); +SCM ly_list1 (SCM a); +SCM ly_list2(SCM a, SCM b); +SCM ly_quote (); + +#ifdef __cplusplus +} +#endif + +#include "array.hh" +#include "scalar.hh" +SCM lambda_scm (String str, Array args_arr); +SCM lambda_scm (String str, Array args_arr); + #endif // LILY_GUILE_HH diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index b7af83ec16..0ac8ebf0cc 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -77,6 +77,7 @@ struct Element_group_item; struct Engraver_group_engraver; struct General_script_def; struct Graphical_element; + struct Graphical_axis_group; struct Mark_req; struct Music_output; @@ -174,9 +175,6 @@ struct Piano_brace; struct Performer; struct Performer_group_performer; struct Property_iterator; -struct Ps_lookup; -struct Ps_outputter; -struct Ps_stream; struct Request; struct Request_column; struct Engraver; @@ -228,9 +226,6 @@ struct Symtables; struct Super_element; struct Translation_property; struct Tempo_req; -struct Tex_lookup; -struct Tex_outputter; -struct Tex_stream; struct Text_def; struct Text_gob; struct Text_item ; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 7efe60bb7e..6b7047651d 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -27,53 +27,33 @@ public: Lookup (); Lookup (Lookup const&); Lookup (Symtables const&); - virtual ~Lookup (); + ~Lookup (); Atom accidental (int) const; void add (String, Symtable*); - virtual Atom afm_find (String s) const = 0; - Atom afm_find (String, String) const; - virtual Atom* atom_p (String, int, Box) const = 0; + Atom afm_find (String) const; Atom ball (int) const; Atom bar (String, Real height) const; - String base_output_str () const; Atom beam (Real,Real, Real) const; - virtual String character_str (int i) const; Atom clef (String) const; - virtual Atom dashed_slur (Array controls, Real thick, Real dash) const = 0; + Atom dashed_slur (Array controls, Real thick, Real dash) const; Atom dots () const; Atom dynamic (String) const; Atom fill (Box b) const; Atom flag (int, Direction) const; - virtual Atom hairpin (Real width, bool decresc, bool continued) const = 0; - virtual Lookup* lookup_p (Lookup const&) const = 0; - virtual Lookup* lookup_p (Symtables const&) const = 0; - virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const = 0; - virtual Paper_stream* paper_stream_p () const = 0; - virtual Atom plet (Real dy, Real dx, Direction dir) const = 0; + Atom hairpin (Real width, bool decresc, bool continued) const; + Atom plet (Real dy, Real dx, Direction dir) const; void print () const; - virtual Atom ps_beam (Real slope, Real width, Real thick) const = 0; - virtual String print_dimen (Real) const; + Atom ps_beam (Real slope, Real width, Real thick) const; Atom rest (int, bool outside) const; Atom rule_symbol (Real height, Real width) const; Atom script (String idx) const; - /** paratime_signature substitution in lookup strings. - this function provides a simple macro mechanism: - - if source == "tex%bla%", then - substitute_args (source, {"X","Y"}) == "texXblaY" - */ - String substitute_args (String source, Array args) const; - /// paratime_signature substitution in lookup strings - String substitute_args (String source, Array args) const; - virtual Atom stem (Real y1_pos, Real y2_pos) const = 0; - Atom stem (Real y1_pos, Real y2_pos, String) const; - virtual Atom slur (Array controls) const = 0; + Atom stem (Real y1_pos, Real y2_pos) const; + Atom slur (Array controls) const; Atom streepje (int type) const; - virtual Atom text (String style, String text) const; - virtual String unknown_str () const = 0; + Atom text (String style, String text) const; Atom vbrace (Real &dy) const; - virtual Atom vbracket (Real &dy) const = 0; + Atom vbracket (Real &dy) const; Atom special_time_signature (String, Array) const; Atom time_signature (Array) const; diff --git a/lily/include/main.hh b/lily/include/main.hh index 072813b2f1..68b1b21363 100644 --- a/lily/include/main.hh +++ b/lily/include/main.hh @@ -24,7 +24,7 @@ extern bool no_timestamps_global_b; extern bool find_quarts_global_b; extern int exit_status_i_; extern bool experimental_features_global_b; -extern Lookup* global_lookup_l; +extern char const* output_global_ch; extern bool dependency_global_b; extern bool version_ignore_global_b; diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index 87bfe54573..0ae3a6981e 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -38,7 +38,6 @@ class Paper_def : public Music_output_def { Assoc *lookup_p_assoc_p_; static int default_count_i_; - bool ps_b_; protected: VIRTUAL_COPY_CONS(Paper_def,Music_output_def); @@ -92,9 +91,12 @@ public: Real arithmetic_constant (Moment minimal_mom) const; Real arithmetic_spacing (Moment mom,Real constant) const; virtual int get_next_default_count () const; - //urg - String tex_output_settings_str () const; - String ps_output_settings_str () const; + + void output_settings (Paper_outputter*) const; + Paper_outputter* paper_outputter_p (Paper_stream*, Scope*, String) const; + Paper_stream* paper_stream_p () const; + String base_output_str () const; + // urg friend int yyparse (void*); }; diff --git a/lily/include/paper-outputter.hh b/lily/include/paper-outputter.hh index 5fa1204b2f..e88e6fa5c6 100644 --- a/lily/include/paper-outputter.hh +++ b/lily/include/paper-outputter.hh @@ -13,6 +13,7 @@ #include "lily-proto.hh" #include "array.hh" #include "string.hh" +#include "lily-guile.hh" /** Abstract interface for a Score_element to output itself. @@ -21,13 +22,18 @@ class Paper_outputter { public: Paper_outputter (Paper_stream *); - virtual ~Paper_outputter (); - - virtual void output_molecule (Molecule const *, Offset, char const *)=0; - void output_molecule (Molecule const *, Offset, char const *, String); - virtual void start_line ()=0; - virtual void stop_line ()=0; - virtual void switch_to_font (String fontname)=0; + ~Paper_outputter (); + + void output_font_def (int i, String str); + void output_font_switch (int i); + void output_header (); + void output_molecule (Molecule const *, Offset, char const *); + void output_comment (String s); + void output_scheme (SCM scm); + void output_string (String s); + void start_line (); + void stop_line (); + void switch_to_font (String fontname); Array font_arr_; String current_font_; diff --git a/lily/include/paper-stream.hh b/lily/include/paper-stream.hh index dc5b08541e..e5429511f6 100644 --- a/lily/include/paper-stream.hh +++ b/lily/include/paper-stream.hh @@ -21,13 +21,12 @@ public: /// open a file for writing Paper_stream (String filename); - virtual void header () = 0; /// delegate conversion to scalar class - virtual Paper_stream &operator <<(Scalar); + Paper_stream &operator <<(Scalar); /// close the file - virtual ~Paper_stream(); + ~Paper_stream(); private: Paper_stream (Paper_stream const&); diff --git a/lily/include/ps-lookup.hh b/lily/include/ps-lookup.hh deleted file mode 100644 index 2eb9ed025a..0000000000 --- a/lily/include/ps-lookup.hh +++ /dev/null @@ -1,40 +0,0 @@ -/* - tex-lookup.hh -- declare Tex_lookup - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Jan Nieuwenhuizen -*/ - -#ifndef PS_LOOKUP_HH -#define PS_LOOKUP_HH - -#include "lookup.hh" - -class Ps_lookup : public Lookup -{ -public: - Ps_lookup (); - Ps_lookup (Lookup const& s); - Ps_lookup (Symtables const& s); - virtual ~Ps_lookup (); - - virtual Atom afm_find (String s) const; - virtual Atom* atom_p (String, int, Box) const; - virtual String character_str (int i) const; - virtual Atom dashed_slur (Array controls, Real thick, Real dash) const; - virtual Atom hairpin (Real width, bool decresc, bool continued) const; - virtual Lookup* lookup_p (Lookup const&) const; - virtual Lookup* lookup_p (Symtables const&) const; - virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const; - virtual Paper_stream* paper_stream_p () const; - virtual Atom plet (Real dy , Real dx, Direction dir) const; - virtual Atom ps_beam (Real slope, Real width, Real thick) const; - virtual Atom slur (Array controls) const; - virtual Atom stem (Real y1, Real y2) const; - virtual Atom text (String style, String text) const; - virtual String unknown_str () const; - virtual Atom vbracket (Real &y) const; -}; - -#endif // PS_LOOKUP_HH diff --git a/lily/include/ps-outputter.hh b/lily/include/ps-outputter.hh deleted file mode 100644 index 8cbcf183d9..0000000000 --- a/lily/include/ps-outputter.hh +++ /dev/null @@ -1,27 +0,0 @@ -/* - ps-outputter.hh -- declare Ps_outputter - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#ifndef PS_OUTPUTTER_HH -#define PS_OUTPUTTER_HH - -#include "paper-outputter.hh" - -class Ps_outputter : public Paper_outputter -{ -public: - Ps_outputter (Paper_stream *); - virtual ~Ps_outputter (); - - void switch_to_font (String); - virtual void output_molecule (Molecule const*, Offset, char const*); - virtual void start_line (); - virtual void stop_line (); -}; - -#endif // PS_OUTPUTTER_HH diff --git a/lily/include/ps-stream.hh b/lily/include/ps-stream.hh deleted file mode 100644 index a61be0ad5b..0000000000 --- a/lily/include/ps-stream.hh +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef PS_STREAM_HH -#define PS_STREAM_HH - -#include "paper-stream.hh" - -/** PS output. - Use this class for writing to a PS file. - It counts braces to prevent nesting errors, and - it will add a comment sign before each newline. - */ -class Ps_stream : public Paper_stream -{ -public: - Ps_stream (String filename); - virtual ~Ps_stream(); - - virtual void header(); - virtual Paper_stream &operator <<(Scalar); -}; - -#endif // PS_STREAM_HH diff --git a/lily/include/score-element-info.hh b/lily/include/score-element-info.hh index 95d69a0d48..9870cecb15 100644 --- a/lily/include/score-element-info.hh +++ b/lily/include/score-element-info.hh @@ -19,10 +19,12 @@ */ struct Score_element_info { Score_element * elem_l_; + Request*req_l_; Array origin_grav_l_arr_; Score_element_info (Score_element*, Request*); + Score_element_info(); }; diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 5d59fc06f7..fae750a39a 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -53,6 +53,7 @@ protected: virtual void announce_element (Score_element_info); virtual void do_announces(); virtual void typeset_element (Score_element*elem_p); + virtual void do_pre_move_processing(); virtual void do_add_processing (); }; diff --git a/lily/include/tex-lookup.hh b/lily/include/tex-lookup.hh deleted file mode 100644 index cdb9839fcc..0000000000 --- a/lily/include/tex-lookup.hh +++ /dev/null @@ -1,43 +0,0 @@ -/* - tex-lookup.hh -- declare Tex_lookup - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen -*/ - -#ifndef TEX_LOOKUP_HH -#define TEX_LOOKUP_HH - -#include "ps-lookup.hh" - -class Tex_lookup : public Ps_lookup -{ -public: - Tex_lookup (); - Tex_lookup (Lookup const& s); - Tex_lookup (Symtables const& s); - virtual ~Tex_lookup(); - - virtual Atom afm_find (String s) const; - virtual String character_str (int i) const; - virtual Atom dashed_slur (Array controls, Real thick, Real dash) const; - virtual Atom* atom_p (String, int, Box) const; - Atom embed (Atom a) const; - virtual Atom hairpin (Real width, bool decresc, bool continued) const; - virtual Lookup* lookup_p (Lookup const&) const; - virtual Lookup* lookup_p (Symtables const&) const; - virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const; - virtual Paper_stream* paper_stream_p () const; - virtual Atom plet (Real dy , Real dx, Direction dir) const; - virtual String print_dimen (Real) const; - virtual Atom ps_beam (Real slope, Real width, Real thick) const; - virtual Atom slur (Array controls) const; - virtual Atom stem (Real y1, Real y2) const; - virtual Atom text (String style, String text) const; - virtual String unknown_str () const; - virtual Atom vbracket (Real &y) const; -}; - -#endif // TEX_LOOKUP_HH diff --git a/lily/include/tex-outputter.hh b/lily/include/tex-outputter.hh deleted file mode 100644 index d4461c2bac..0000000000 --- a/lily/include/tex-outputter.hh +++ /dev/null @@ -1,27 +0,0 @@ -/* - tex-outputter.hh -- declare Tex_outputter - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#ifndef TEX_OUTPUTTER_HH -#define TEX_OUTPUTTER_HH - -#include "paper-outputter.hh" - -class Tex_outputter : public Paper_outputter -{ -public: - Tex_outputter (Paper_stream *); - virtual ~Tex_outputter (); - - void switch_to_font (String); - virtual void output_molecule (Molecule const*, Offset, char const*); - virtual void start_line (); - virtual void stop_line (); -}; - -#endif // TEX_OUTPUTTER_HH diff --git a/lily/include/tex-stream.hh b/lily/include/tex-stream.hh deleted file mode 100644 index 7f94aec2b1..0000000000 --- a/lily/include/tex-stream.hh +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef TEX_STREAM_HH -#define TEX_STREAM_HH - -#include "paper-stream.hh" - -/** TeX output. - Use this class for writing to a TeX file. - It counts braces to prevent nesting errors, and - it will add a comment sign before each newline. - */ -class Tex_stream : public Paper_stream -{ -public: - Tex_stream (String filename); - virtual ~Tex_stream(); - - virtual void header(); - virtual Paper_stream &operator <<(Scalar); -}; - -#endif // TEX_STREAM_HH diff --git a/lily/item.cc b/lily/item.cc index 78db9884e9..e48d576cfd 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -48,8 +48,8 @@ Item::line_l() const if (!ga) return 0; - assert (ga->access_Score_element()); - return ga->access_Score_element ()-> line_l (); + assert (dynamic_cast (ga)); + return dynamic_cast (ga)-> line_l (); } Direction @@ -67,7 +67,7 @@ Item::copy_breakable_items() Direction i=LEFT; do { - Item * item_p = clone()->access_Item (); + Item * item_p = dynamic_cast(clone()); item_p->break_status_dir_ = i; pscore_l_->typeset_element (item_p); @@ -130,9 +130,9 @@ int Item::left_right_compare(Item const *l, Item const *r) { while (!l->is_type_b (Paper_column::static_name ())) - l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item (); + l = dynamic_cast (l->axis_group_l_a_[X_AXIS]); while (!r->is_type_b (Paper_column::static_name ())) - r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item (); + r = dynamic_cast (r->axis_group_l_a_[X_AXIS]); Paper_column *p1 = (Paper_column*)l; Paper_column* p2 = (Paper_column*)r; @@ -176,7 +176,7 @@ Item::do_unlink() Paper_column * Item::column_l () const { - return axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ()->column_l (); + return dynamic_cast (axis_group_l_a_[X_AXIS]) ->column_l (); } Item::Item (Item const &s) diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 83fd6ec6db..bb66802d86 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -36,13 +36,13 @@ Key_engraver::create_key () bool Key_engraver::do_try_request (Request * req_l) { - Command_req* creq_l= req_l->access_Command_req (); - if (!creq_l|| !creq_l->access_Key_change_req ()) + Command_req* creq_l= dynamic_cast (req_l); + if (!creq_l|| !dynamic_cast (creq_l)) return false; if (keyreq_l_) return false; // TODO - keyreq_l_ = creq_l->access_Key_change_req (); + keyreq_l_ = dynamic_cast (creq_l); read_req (keyreq_l_); return true; } @@ -50,9 +50,9 @@ Key_engraver::do_try_request (Request * req_l) void Key_engraver::acknowledge_element (Score_element_info info) { - Command_req * r_l = info.req_l_->access_Command_req () ; + Command_req * r_l = dynamic_cast (info.req_l_) ; - if (r_l && r_l->access_Clef_change_req ()) + if (r_l && dynamic_cast (r_l)) { int i= get_property ("createKeyOnClefChange").length_i (); if (i) diff --git a/lily/key-performer.cc b/lily/key-performer.cc index 02e80fca28..3ccac03e21 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -47,11 +47,11 @@ Key_performer::do_try_request (Request* req_l) if (key_req_l_) return false; - if (req_l->access_Command_req ()) - key_req_l_ = req_l->access_Command_req ()->access_Key_change_req (); - - if (key_req_l_) - return true; + if (dynamic_cast (req_l)) + { + key_req_l_ = dynamic_cast (req_l); + return true; + } return false; } diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc index 7933239518..9e2e7edb03 100644 --- a/lily/line-of-score.cc +++ b/lily/line-of-score.cc @@ -50,7 +50,7 @@ Line_of_score::set_breaking (Array const &breaking, int j) c if (breaking.size() >1) { - line_l = (Line_of_score*)clone()->access_Spanner (); + line_l = dynamic_cast (clone()); } else line_l = (Line_of_score*) this; diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index c6a3a07189..54df397c45 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -40,7 +40,7 @@ Local_key_engraver::do_creation_processing () } else { - key_C_ = &((Key_engraver*)result->access_Engraver ())->key_; + key_C_ = &((Key_engraver*)dynamic_cast (result))->key_; local_key_ = *key_C_; } } @@ -97,24 +97,22 @@ void Local_key_engraver::acknowledge_element (Score_element_info info) { Score_element * elem_l = info.elem_l_; - Item * item_l = elem_l->access_Item(); + Item * item_l = dynamic_cast (elem_l); - Note_req * note_l = (info.req_l_->access_Musical_req ()) - ? info.req_l_->access_Musical_req ()->access_Note_req () : 0; + Note_req * note_l = dynamic_cast (info.req_l_); if (note_l && item_l && item_l->is_type_b (Note_head::static_name ())) { mel_l_arr_.push (note_l); support_l_arr_.push (item_l); } - else if (info.req_l_->access_Command_req () - && info.req_l_->access_Command_req ()->access_Key_change_req () && key_C_) + else if (dynamic_cast (info.req_l_)) { local_key_ = *key_C_; } else if (elem_l->is_type_b (Tie::static_name ())) { - Tie * tie_l = (Tie*)elem_l->access_Spanner (); + Tie * tie_l = (Tie*)dynamic_cast (elem_l); if (tie_l->same_pitch_b_) tied_l_arr_.push (tie_l-> head_l_drul_[RIGHT]); } diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 2b2d0dd5db..a0dc2907a6 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -116,8 +116,8 @@ IMPLEMENT_IS_TYPE_B1(Local_key_item,Item); void Local_key_item::do_substitute_dependency (Score_element*o,Score_element*n) { - Item* o_l = o->access_Item (); - Item* n_l = n?n->access_Item ():0; + Item* o_l = dynamic_cast (o); + Item* n_l = n?dynamic_cast (n):0; support_items_.substitute (o_l, n_l); } diff --git a/lily/lookup.cc b/lily/lookup.cc index 8ba88483f5..9d85d63ba9 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -20,6 +20,7 @@ #include "paper-def.hh" #include "string-convert.hh" #include "main.hh" +#include "lily-guile.hh" Lookup::Lookup () { @@ -65,7 +66,7 @@ Lookup::add (String s, Symtable*p) } Atom -Lookup::afm_find (String s, String str) const +Lookup::afm_find (String s) const { if (!afm_p_) { @@ -83,7 +84,9 @@ Lookup::afm_find (String s, String str) const a.dim_ = m.B_; a.dim_[X_AXIS] *= 1 / 1000.0; a.dim_[Y_AXIS] *= 1 / 1000.0; - a.str_ = String_convert::form_str (str.ch_C (), m.code ()); + Array arr; + arr.push (m.code ()); + a.lambda_ = lambda_scm ("char", arr); a.font_ = font_; return a; } @@ -100,29 +103,13 @@ Lookup::ball (int j) const Atom Lookup::bar (String str, Real h) const { - Array a; - a.push (print_dimen (h)); - Atom s = (*symtables_p_) ("bars")->lookup (str); - s.str_ = substitute_args (s.str_, a); - s.dim_.y () = Interval (-h/2, h/2); - s.font_ = font_; - return s; -} - -String -Lookup::base_output_str () const -{ - assert (paper_l_); - String str = paper_l_->get_default_output (); - - if (str.empty_b ()) - { - str = default_outname_base_global; - int def = paper_l_->get_next_default_count (); - if (def) - str += "-" + to_str (def); - } - return str; + Array arr; + arr.push (h); + Atom a = (*symtables_p_) ("bars")->lookup (str); + a.lambda_ = lambda_scm (a.str_, arr); + a.dim_.y () = Interval (-h/2, h/2); + a.font_ = font_; + return a; } Atom @@ -138,16 +125,38 @@ Lookup::beam (Real slope, Real width, Real thick) const return a; } -String -Lookup::character_str (int i) const +Atom +Lookup::clef (String st) const { - return to_str (i); + return afm_find (String ("clefs") + String ("-") + st); } Atom -Lookup::clef (String st) const +Lookup::dashed_slur (Array controls, Real thick, Real dash) const { - return afm_find (String ("clefs") + String ("-") + st); + assert (controls.size () == 8); + + Real dx = controls[3].x () - controls[0].x (); + Real dy = controls[3].y () - controls[0].y (); + + Atom a; + a.font_ = font_; + a.dim_[X_AXIS] = Interval (0, dx); + a.dim_[Y_AXIS] = Interval (0 ? dy); + + // (lambda (o) (dashed-slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2)))) + a.lambda_ = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("dashed-slur"), + gh_cons (gh_double2scm (thick), gh_cons (gh_double2scm (dash), + ly_list1 (ly_list2 (ly_quote (), + gh_cons (ly_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())), + SCM_EOL))))))))))); + + return a; } Atom @@ -187,18 +196,6 @@ Lookup::print () const #endif } -String -Lookup::print_dimen (Real r) const -{ - String s = to_str (r, "%.3f"); - if (s.index_i ("NaN") != -1) - { - warning (_ ("NaN")); - s = "0.0"; - } - return s; -} - Atom Lookup::rest (int j, bool o) const { @@ -210,10 +207,10 @@ Atom Lookup::rule_symbol (Real height, Real width) const { Atom bs= (*symtables_p_) ("param")->lookup ("rule"); - Array args; - args.push (print_dimen (height)); - args.push (print_dimen (width)); - bs.str_ = substitute_args (bs.str_, args); + Array args; + args.push (height); + args.push (width); + bs.lambda_ = lambda_scm (bs.str_, args); bs.dim_.x () = Interval (0, width); bs.dim_.y () = Interval (0, height); return bs; @@ -228,8 +225,9 @@ Lookup::script (String str) const Atom Lookup::special_time_signature (String s, Array arr) const { +#if 0 String symbolname = "timesig-"+s+"%/%"; - Atom a (afm_find (substitute_args (symbolname, arr))); + Atom a (afm_find (lambda_scm (symbolname, arr))); if (!a.empty ()) return a; // Try if the full name was given @@ -237,39 +235,12 @@ Lookup::special_time_signature (String s, Array arr) const if (!a.empty ()) return a; // Resort to default layout with numbers +#endif return time_signature (arr); } -static void -substitute_arg (String& r, String arg) -{ - int p = r.index_i ('%'); - if (p < 0) - return ; - - r = r.left_str (p) + arg + r.right_str (r.length_i () - p - 1); -} - -String -Lookup::substitute_args (String source, Array args) const -{ - String str (source); - for (int i = 0 ; i < args.size (); i++) - substitute_arg (str, args[i]); - return str; -} - -String -Lookup::substitute_args (String source, Array args) const -{ - Array sv; - for (int i = 0 ; i < args.size (); i++) - sv.push (args[i]); - return substitute_args (source, sv); -} - Atom -Lookup::stem (Real y1, Real y2, String str) const +Lookup::stem (Real y1, Real y2) const { if (y1 > y2) { @@ -282,15 +253,15 @@ Lookup::stem (Real y1, Real y2, String str) const s.dim_.x () = Interval (0,0); s.dim_.y () = Interval (y1,y2); - Array a; + Array a; Real stem_width = paper_l_->get_var ("stemthickness"); - a.push (print_dimen (-stem_width /2)); - a.push (print_dimen (stem_width)); - a.push (print_dimen (y2)); - a.push (print_dimen (-y1)); + a.push (-stem_width /2); + a.push (stem_width); + a.push (y2); + a.push (-y1); - s.str_ = substitute_args (str, a); + s.lambda_ = lambda_scm ("stem", a); s.font_ = font_; return s; } @@ -307,11 +278,11 @@ Lookup::streepje (int type) const Atom Lookup::text (String style, String text) const { - Array a; + Array a; a.push (text); Atom s = (*symtables_p_) ("style")->lookup (style); - s.str_ = substitute_args (s.str_,a); + s.lambda_ = lambda_scm (s.str_, a); s.font_ = font_; return s; @@ -321,7 +292,7 @@ Atom Lookup::time_signature (Array a) const { Atom s ((*symtables_p_) ("param")->lookup ("time_signature")); - s.str_ = substitute_args (s.str_, a); + s.lambda_ = lambda_scm (s.str_, a); return s; } @@ -354,16 +325,112 @@ Lookup::vbrace (Real &y) const int idx = int (rint ( (y- min_y)/step)) + 1; - { - Array a; - a.push (character_str (idx)); - brace.str_ = substitute_args (brace.str_,a); - brace.dim_[Y_AXIS] = Interval (-y/2,y/2); - } + Array a; + a.push (idx); + brace.lambda_ = lambda_scm (brace.str_, a); + brace.dim_[Y_AXIS] = Interval (-y/2,y/2); brace.font_ = font_; return brace; } +Atom +Lookup::hairpin (Real width, bool decresc, bool continued) const +{ + Atom a; + Real height = paper_l_->staffheight_f () / 6; + String ps; + ps += to_str (width) + " " + + to_str (height) + " " + + to_str (continued ? height/2 : 0) + + + " draw_" + String (decresc ? "de" : "") + "cresc\n"; + a.str_ = ps; + + + a.dim_.x () = Interval (0, width); + a.dim_.y () = Interval (-2*height, 2*height); + a.font_ = font_; + return a; +} + +Atom +Lookup::plet (Real dy , Real dx, Direction dir) const +{ + String ps; + + + ps += String_convert::double_str (dx) + " " + + String_convert::double_str (dy) + " " + + String_convert::int_str ( (int)dir) + + " draw_plet "; + + Atom s; + s.str_ = ps; + return s; +} + +Atom +Lookup::ps_beam (Real slope, Real width, Real thick) const +{ + String ps; + ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick) + + " draw_beam "; + + Atom s; + s.str_ = ps; + return s; +} + +Atom +Lookup::slur (Array controls) const +{ + assert (controls.size () == 8); + + String ps; + + Real dx = controls[3].x () - controls[0].x (); + Real dy = controls[3].y () - controls[0].y (); + Atom a; + + // (lambda (o) (slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2) .. ))) + a.lambda_ = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("slur"), + ly_list1 (ly_list2 (ly_quote (), + gh_cons (ly_list2 (gh_double2scm (controls[5].x ()), gh_double2scm (controls[5].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[6].x ()), gh_double2scm (controls[6].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[7].x ()), gh_double2scm (controls[7].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[4].x ()), gh_double2scm (controls[4].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())), + gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())), + SCM_EOL))))))))))))); + + a.dim_[X_AXIS] = Interval (0, dx); + a.dim_[Y_AXIS] = Interval (0 ? dy); + a.font_ = font_; + return a; +} + +Atom +Lookup::vbracket (Real &y) const +{ + Atom a; + Real min_y = paper_l_->staffheight_f (); + if (y < min_y) + { + warning (_ ("bracket") + + " " + _ ("too small") + " (" + print_dimen (y) + ")"); +// y = min_y; + } + Array arr; + arr.push (y); + a.lambda_ = lambda_scm ("bracket", arr); + a.dim_[Y_AXIS] = Interval (-y/2,y/2); + a.dim_[X_AXIS] = Interval (0,4 PT); + return a; +} + diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index ceba7c467e..da7102b1f7 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -23,10 +23,10 @@ Lyric_engraver::Lyric_engraver() bool Lyric_engraver::do_try_request (Request*r) { - Musical_req * m =r->access_Musical_req (); - if (!m || ! m->access_Lyric_req ()) + Musical_req * m =dynamic_cast (r); + if (!m || ! dynamic_cast (m)) return false; - lreq_l_ = m->access_Lyric_req (); + lreq_l_ = dynamic_cast (m); return true; } diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc index bcbbc9d501..43fe0f2634 100644 --- a/lily/lyric-performer.cc +++ b/lily/lyric-performer.cc @@ -44,10 +44,10 @@ Lyric_performer::do_process_requests() bool Lyric_performer::do_try_request (Request* req_l) { - Musical_req* m_l = req_l->access_Musical_req (); - if (!m_l || ! m_l->access_Lyric_req ()) + Musical_req* m_l = dynamic_cast (req_l); + if (!m_l || ! dynamic_cast (m_l)) return false; - lreq_arr_.push (m_l->access_Lyric_req ()); + lreq_arr_.push (dynamic_cast (m_l)); return true; } diff --git a/lily/main.cc b/lily/main.cc index 5b541eb29f..d9a7a0afc0 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -10,6 +10,8 @@ #include #include #include +#include "lily-guile.hh" + #include "proto.hh" #include "dimensions.hh" #include "plist.hh" @@ -21,8 +23,6 @@ #include "config.hh" #include "file-results.hh" #include "debug.hh" -#include "ps-lookup.hh" -#include "tex-lookup.hh" #include "lily-guile.hh" #if HAVE_GETTEXT @@ -34,14 +34,15 @@ bool version_ignore_global_b = false; bool no_paper_global_b = false; bool no_timestamps_global_b = false; bool find_quarts_global_b = false; + +char const* output_global_ch = "tex"; +// temporarily default to ps, because tex is even more broken +//char const* output_global_ch = "ps"; + String default_outname_base_global = "lelie"; int default_count_global; File_path global_path; -Ps_lookup ps_lookup; -Tex_lookup tex_lookup; -Lookup* global_lookup_l = &tex_lookup; - bool experimental_features_global_b = false; bool dependency_global_b = false; @@ -63,6 +64,7 @@ Long_option_init theopts[] = { {0, "no-timestamps", 'T'}, {0, "find-fourths", 'Q'}, {0, "ignore-version", 'V'}, + {1, "output-format", 'f'}, {0,0,0} }; @@ -85,13 +87,16 @@ usage () " -d, --dependencies write Makefile dependencies for every input file\n" ); cout << _ ( - " -I, --include=DIR add DIR to search path\n" + " -h, --help this help\n" ); cout << _ ( - " -i, --init=FILE use FILE as init file\n" + " -f, --output-format=X use output format X\n" ); cout << _ ( - " -h, --help this help\n" + " -I, --include=DIR add DIR to search path\n" + ); + cout << _ ( + " -i, --init=FILE use FILE as init file\n" ); cout << _ ( " -M, --no-paper produce midi output only\n" @@ -186,15 +191,6 @@ identify () *mlog << get_version_str () << endl; } -void -guile_init () -{ -#ifdef HAVE_LIBGUILE - gh_eval_str ("(define (add-column p) (display \"adding column (in guile): \") (display p) (newline))"); -#endif -} - - void setup_paths () { @@ -237,11 +233,9 @@ setup_paths () } - -int +void main_prog (int argc, char **argv) { - guile_init (); identify (); call_constructors (); debug_init (); // should be first @@ -258,7 +252,7 @@ main_prog (int argc, char **argv) { case 't': experimental_features_global_b = true; - global_lookup_l = &ps_lookup; + *mlog << "*** enabling experimental features, you're on your own now ***\n"; break; case 'o': outname_str = oparser.optional_argument_ch_C_; @@ -267,6 +261,9 @@ main_prog (int argc, char **argv) notice (); exit (0); break; + case 'f': + output_global_ch = oparser.optional_argument_ch_C_; + break; case 'Q': find_quarts_global_b = true; break; @@ -344,8 +341,18 @@ main_prog (int argc, char **argv) default_outname_base_global = outname_str; do_one_file (i, default_outname_base_global); } +} +int +main (int argc, char **argv) +{ +#ifdef HAVE_LIBGUILE + gh_enter (argc, argv, (void(*)())main_prog); return exit_status_i_; +#else + main_prog (argc, argv); + return exit_status_i_; +#endif } /* @@ -385,19 +392,3 @@ distill_inname_str (String name_str, String& ext_r) return str; } - -#ifdef HAVE_LIBGUILE -int -main (int argc, char **argv) -{ - gh_enter (argc, argv, (void(*)())main_prog); - return exit_status_i_; -} - -#else -int main (int argc, char **argv) -{ - return main_prog (argc, argv); -} - -#endif diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 35c803e688..71119e4eb6 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -26,11 +26,11 @@ Mark_engraver::Mark_engraver () bool Mark_engraver::do_try_request (Request* r_l) { - Command_req* c_l = r_l->access_Command_req (); - if (!c_l || !c_l->access_Mark_req () || mark_req_l_) + Command_req* c_l = dynamic_cast (r_l); + if (!c_l || !dynamic_cast (c_l) || mark_req_l_) return false; - mark_req_l_ = c_l->access_Mark_req (); + mark_req_l_ = dynamic_cast (c_l); return true; } diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 53f36d6a1e..362508ee64 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -354,7 +354,7 @@ Midi_key::Midi_key (Audio_item* audio_item_l) String Midi_key::str () const { - Key_change_req* k = audio_item_l_->req_l_->access_Command_req ()->access_Key_change_req (); + Key_change_req* k = dynamic_cast (audio_item_l_->req_l_); int sharps_i = k->sharps_i (); int flats_i = k->flats_i (); @@ -383,7 +383,7 @@ Midi_time_signature::Midi_time_signature (Audio_item* audio_item_l) String Midi_time_signature::str () const { - Time_signature_change_req* m = audio_item_l_->req_l_->access_Command_req ()->access_Time_signature_change_req (); + Time_signature_change_req* m = dynamic_cast (audio_item_l_->req_l_); int num_i = m->beats_i_; int den_i = m->one_beat_i_; @@ -404,7 +404,7 @@ Midi_note::Midi_note (Audio_item* audio_item_l) Moment Midi_note::duration () const { - Moment m = audio_item_l_->req_l_->access_Musical_req ()->access_Rhythmic_req ()->duration (); + Moment m = dynamic_cast (audio_item_l_->req_l_)->duration (); if (m < Moment (1, 1000)) { warning (_ ("silly duration")); @@ -416,8 +416,7 @@ Midi_note::duration () const int Midi_note::pitch_i () const { - int p = audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req - ()->pitch_.semitone_pitch () + int p = dynamic_cast (audio_item_l_->req_l_)->pitch_.semitone_pitch () + ((Audio_note*)audio_item_l_)->transposing_i_; if (p == INT_MAX) { @@ -452,8 +451,7 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l) int Midi_note_off::pitch_i () const { - return audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req - ()->pitch_.semitone_pitch () + return dynamic_cast (audio_item_l_->req_l_)->pitch_.semitone_pitch () + ((Audio_note*)audio_item_l_)->transposing_i_; } diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index e8b23b67b3..03578a5815 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -26,7 +26,7 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver () bool Multi_measure_rest_engraver::do_try_request (Request* req_l) { - if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Multi_measure_rest_req ()) + if (!dynamic_cast (req_l)) return false; if (multi_measure_req_l_) @@ -34,7 +34,7 @@ Multi_measure_rest_engraver::do_try_request (Request* req_l) || req_start_mom_ != now_moment ()) return false; - multi_measure_req_l_ = req_l->access_Musical_req ()->access_Multi_measure_rest_req (); + multi_measure_req_l_ = dynamic_cast (req_l); req_start_mom_ = now_moment (); rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length (); diff --git a/lily/music-list.cc b/lily/music-list.cc index 8f29446699..7c47ded027 100644 --- a/lily/music-list.cc +++ b/lily/music-list.cc @@ -118,10 +118,10 @@ Request_chord::to_relative_octave (Musical_pitch last) { for (iter (music_p_list_p_->top(),i); i.ok (); i++) { - Musical_req *m =((Request*)i.ptr ())->access_Musical_req (); - if (m && m->access_Melodic_req ()) - { - Musical_pitch &pit = m->access_Melodic_req ()->pitch_; + Musical_req *m = dynamic_cast (i.ptr ()); + if (m && dynamic_cast (m)) + { + Musical_pitch &pit = dynamic_cast (m)->pitch_; pit.to_relative_octave (last); return pit; } diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc index 86a20a731e..8e28cdf4bb 100644 --- a/lily/music-output-def.cc +++ b/lily/music-output-def.cc @@ -60,7 +60,7 @@ Translator* Music_output_def::find_translator_l (String name) const { if (translator_p_dict_p_->elem_b (name)) - return (*translator_p_dict_p_)[name]->access_Translator (); + return (*translator_p_dict_p_)[name]->access_Translator (); if (global_translator_dict_p->elem_b (name)) return (*global_translator_dict_p)[name]; @@ -76,7 +76,7 @@ Music_output_def::get_global_translator_p () if (!t) error (_("Can't find Score context")); t = t->clone (); - Global_translator *g = t->access_Translator_group ()->global_l (); + Global_translator *g = dynamic_cast (t)->global_l (); t->add_processing (); return g; @@ -98,6 +98,6 @@ Music_output_def::get_default_output () const return ""; Identifier * id = (*scope_p_) ["output"]; - String *p = id->access_String (); + String *p = dynamic_cast (id); return p ? *p : String (""); } diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 3ee6004add..6c72cb538a 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -104,7 +104,7 @@ IMPLEMENT_IS_TYPE_B1 (Melodic_req,Musical_req); bool Melodic_req::do_equal_b (Request*r) const { - Melodic_req* m= r->access_Musical_req ()->access_Melodic_req (); + Melodic_req* m= dynamic_cast (r); return !compare (*m, *this); } @@ -129,7 +129,7 @@ Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2) bool Rhythmic_req::do_equal_b (Request*r) const { - Rhythmic_req* rh = r->access_Musical_req ()->access_Rhythmic_req (); + Rhythmic_req* rh = dynamic_cast (r); return !compare (*this, *rh); } @@ -269,7 +269,7 @@ Plet_req::do_print () const bool Span_req:: do_equal_b (Request*r) const { - Span_req * s = r->access_Span_req (); + Span_req * s = dynamic_cast (r); return spantype == s->spantype; } @@ -292,7 +292,7 @@ Script_req::Script_req (Script_req const&s) bool Script_req::do_equal_b (Request*r) const { - Script_req * s = r->access_Script_req (); + Script_req * s = dynamic_cast (r); return scriptdef_p_->equal_b (*s->scriptdef_p_); } @@ -400,7 +400,7 @@ Absolute_dynamic_req::do_print () const bool Absolute_dynamic_req::do_equal_b (Request *r) const { - Absolute_dynamic_req *a = r->access_Musical_req ()->access_Dynamic_req ()->access_Absolute_dynamic_req (); + Absolute_dynamic_req *a = dynamic_cast (r); return loudness_ == a->loudness_; } @@ -449,7 +449,7 @@ Absolute_dynamic_req::Absolute_dynamic_req () bool Span_dynamic_req::do_equal_b (Request *req) const { - Span_dynamic_req * s = req->access_Musical_req ()->access_Span_dynamic_req (); + Span_dynamic_req * s = dynamic_cast (req); return Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_; } diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 82948a3067..4c7d05a9a2 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -55,6 +55,7 @@ static Keyword_ent the_key_tab[]={ {"pt", PT_T}, {"relative", RELATIVE}, {"remove", REMOVE}, + {"scm", SCHEME}, {"score", SCORE}, {"script", SCRIPT}, {"shape", SHAPE}, diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 9f7e8c7fb3..f3cdf87aba 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -240,22 +240,22 @@ My_lily_parser::get_parens_request (int t) switch (t) { case BEAMPLET: - reqs.top ()->access_Span_req ()->spantype = Span_req::START; + dynamic_cast (reqs.top ())->spantype = Span_req::START; /* fall through */ case '<': case '>': case '(': case '[': case PLET: - reqs[0]->access_Span_req ()->spantype = Span_req::START; + dynamic_cast (reqs.top ())->spantype = Span_req::START; break; case MAEBTELP: - reqs.top ()->access_Span_req ()->spantype = Span_req::STOP; + dynamic_cast (reqs.top ())->spantype = Span_req::STOP; /* fall through */ case '!': case ')': case ']': - reqs[0]->access_Span_req ()->spantype = Span_req::STOP; + dynamic_cast (reqs[0])->spantype = Span_req::STOP; break; default: @@ -263,9 +263,9 @@ My_lily_parser::get_parens_request (int t) } for (int i = 0; i < reqs.size (); i++) - if (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ()) + if (dynamic_cast (reqs[i])) { - Span_dynamic_req* s_l= reqs[i]->access_Musical_req ()->access_Span_dynamic_req (); + Span_dynamic_req* s_l= dynamic_cast (reqs[i]); s_l->dynamic_dir_ = (t == '<') ? UP:DOWN; } diff --git a/lily/note-column.cc b/lily/note-column.cc index 8f700129e5..b00cb5ea0a 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -102,18 +102,18 @@ Note_column::do_substitute_dependency (Score_element*o, Score_element*n) { if (stem_l_ == o) { - stem_l_ = n ? (Stem*)n->access_Item ():0; + stem_l_ = n ? (Stem*)dynamic_cast (n):0; } if (o->is_type_b (Note_head::static_name ())) { - head_l_arr_.substitute ((Note_head*)o->access_Item (), - (n)? (Note_head*)n->access_Item () : 0); + head_l_arr_.substitute ((Note_head*)dynamic_cast (o), + (n)? (Note_head*)dynamic_cast (n) : 0); } Script_column::do_substitute_dependency (o,n); if (o->is_type_b (Rest::static_name ())) { - rest_l_arr_.substitute ((Rest*)o->access_Item (), - (n)? (Rest*)n->access_Item () : 0); + rest_l_arr_.substitute ((Rest*)dynamic_cast (o), + (n)? (Rest*)dynamic_cast (n) : 0); } } diff --git a/lily/note-performer.cc b/lily/note-performer.cc index 12c8601da3..5f8923c284 100644 --- a/lily/note-performer.cc +++ b/lily/note-performer.cc @@ -32,7 +32,7 @@ void Note_performer::do_process_requests () { // this is _really_ braindead, but it generates some output - if (!note_req_l_ || !note_req_l_->access_Melodic_req () || !note_req_l_->access_Rhythmic_req ()) + if (!note_req_l_ || !dynamic_cast (note_req_l_) || !dynamic_cast (note_req_l_)) return; int transposing_i = 0; @@ -53,10 +53,10 @@ Note_performer::do_try_request (Request* req_l) if (note_req_l_) return false; - if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Note_req ()) - return false; - - note_req_l_ = req_l->access_Musical_req ()->access_Melodic_req (); - - return true; + if (Note_req *nr = dynamic_cast (req_l)) + { + note_req_l_ = nr; + return true; + } + return false; } diff --git a/lily/p-score.cc b/lily/p-score.cc index 2dbc75925b..be107cd929 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -21,11 +21,7 @@ #include "word-wrap.hh" #include "gourlay-breaking.hh" #include "paper-stream.hh" -#include "ps-stream.hh" -#include "tex-stream.hh" #include "paper-outputter.hh" -#include "ps-outputter.hh" -#include "tex-outputter.hh" #include "file-results.hh" #include "misc.hh" @@ -151,7 +147,7 @@ Paper_score::set_breaking (Array const &breaking) } for (iter (elem_p_list_.top (),i); i.ok () ;) { - Item *i_l =i->access_Item (); + Item *i_l =dynamic_cast (i); if (i_l && !i_l->line_l ()) { i_l->unlink (); @@ -210,8 +206,8 @@ Paper_score::process () Array breaking = calc_breaking (); - Paper_stream* paper_stream_p = global_lookup_l->paper_stream_p (); - outputter_l_ = global_lookup_l->paper_outputter_p (paper_stream_p, paper_l_, header_l_, origin_str_); + Paper_stream* paper_stream_p = paper_l_->paper_stream_p (); + outputter_l_ = paper_l_->paper_outputter_p (paper_stream_p, header_l_, origin_str_); Link_array lines; for (int i=0; i < breaking.size (); i++) @@ -324,10 +320,10 @@ Paper_score::broken_col_range (Item const*l_item_l, Item const*r_item_l) const Item const*r=r_item_l; while (! l->is_type_b(Paper_column::static_name ())) - l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item (); + l = dynamic_cast (l->axis_group_l_a_[X_AXIS]); while (! r->is_type_b(Paper_column::static_name ())) - r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item (); + r = dynamic_cast(r->axis_group_l_a_[X_AXIS]); PCursor start (l ? find_col ((Paper_column*)l)+1 : col_p_list_.top ()); PCursor stop (r ? find_col ((Paper_column*)r) : col_p_list_.bottom ()); diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 8593add910..5ce8b04cd9 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -13,8 +13,6 @@ #include "paper-def.hh" #include "debug.hh" #include "lookup.hh" -#include "ps-lookup.hh" -#include "tex-lookup.hh" #include "assoc-iter.hh" #include "score-engraver.hh" #include "p-score.hh" @@ -22,6 +20,9 @@ #include "main.hh" #include "scope.hh" #include "dictionary-iter.hh" +#include "file-results.hh" // urg? header_global_p +#include "paper-outputter.hh" +#include "paper-stream.hh" Paper_def::Paper_def () { @@ -45,7 +46,7 @@ Paper_def::Paper_def (Paper_def const&s) lookup_p_assoc_p_ = new Assoc; for (Assoc_iter ai(*s.lookup_p_assoc_p_); ai.ok (); ai++) { - Lookup * l = global_lookup_l->lookup_p (*ai.val ()); + Lookup * l = new Lookup (*ai.val ()); l->paper_l_ = this; set_lookup (ai.key(), l); } @@ -209,35 +210,113 @@ Paper_def::lookup_l (int i) const IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def); -String -Paper_def::ps_output_settings_str () const +int Paper_def::default_count_i_ = 0; + +int +Paper_def::get_next_default_count () const { - String s ("\n "); - for (Dictionary_iter i (*scope_p_); i.ok (); i++) - s += String ("/mudelapaper") + i.key () - + "{" + i.val ()->str () + "} bind def\n"; - s += *scope_p_->elem ("pssetting")->access_String (); - return s; + return default_count_i_ ++; } -String -Paper_def::tex_output_settings_str () const +//urg +extern char const* lily_version_number_sz (); + +void +output_def (Paper_outputter* p, String key, String val) +{ + SCM args_scm = + gh_cons (gh_str02scm (key.ch_l ()), gh_cons (gh_str02scm (val.ch_l ()), SCM_EOL)); + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("lily-def"), args_scm))); + p->output_scheme (scm); +} + +void +output_header (Paper_outputter* p, Scope *head) +{ + if (!head) + return; + + String id_str = "Lily was here"; + if (no_timestamps_global_b) + id_str += "."; + else + id_str += String (", ") + lily_version_number_sz (); + output_def (p, "lily_id_string", id_str); + + for (Dictionary_iter i (*head); i.ok (); i++) + { + if (!i.val ()->access_String_identifier ()) + continue; + + String val = *i.val()->access_String_identifier ()->data_p_; + output_def (p, i.key (), val); + } +} + +void +Paper_def::output_settings (Paper_outputter* p) const { - String s ("\n "); for (Dictionary_iter i (*scope_p_); i.ok (); i++) - s += String ("\\def\\mudelapaper") + i.key () - + "{" + i.val ()->str () + "}\n"; - s += *scope_p_->elem ("texsetting")->access_String (); - return s; + output_def (p, String ("mudelapaper") + i.key (), i.val ()->str ()); + p->output_string (*scope_p_->elem (String (output_global_ch) + "setting")->access_String ()); } -int Paper_def::default_count_i_ = 0; +Paper_outputter* +Paper_def::paper_outputter_p (Paper_stream* os_p, Header* header_l, String origin_str) const +{ + Paper_outputter* p = new Paper_outputter (os_p); -int -Paper_def::get_next_default_count () const + output_header (p, header_global_p); + p->output_comment (_ ("outputting Score, defined at: ")); + p->output_comment (origin_str); + + output_header (p, header_l); + + output_settings (p); + + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("experimental-on"), SCM_EOL))); + + p->output_scheme (scm); + + scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("header-end"), SCM_EOL))); + + p->output_scheme (scm); + + return p; +} + +Paper_stream* +Paper_def::paper_stream_p () const { - return default_count_i_ ++; + String outname = base_output_str (); + + if (outname != "-") + outname += String (".") + output_global_ch; + *mlog << _f ("Paper output to %s...", + outname == "-" ? String ("") : outname ) << endl; + target_str_global_array.push (outname); + return new Paper_stream (outname); } +String +Paper_def::base_output_str () const +{ + String str = get_default_output (); + + if (str.empty_b ()) + { + str = default_outname_base_global; + int def = get_next_default_count (); + if (def) + str += "-" + to_str (def); + } + return str; +} diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index 1e8d450c7b..9e2b0978a6 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -7,6 +7,7 @@ Jan Nieuwenhuizen */ +#include #include "paper-outputter.hh" #include "paper-stream.hh" #include "molecule.hh" @@ -20,14 +21,58 @@ Paper_outputter::Paper_outputter (Paper_stream *s) { outstream_l_ = s; + output_header (); } Paper_outputter::~Paper_outputter () { + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("end-output"), SCM_EOL))); + + output_scheme (scm); } void -Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm, String s) +Paper_outputter::output_header () +{ + String creator; + if (no_timestamps_global_b) + creator = "GNU LilyPond\n"; + else + creator = get_version_str (); + String generate; + if (no_timestamps_global_b) + generate = "."; + else + { + generate = _ (", at "); + time_t t (time (0)); + generate += ctime (&t); + //urg + } + + SCM args_scm = + gh_cons (gh_str02scm (creator.ch_l ()), + gh_cons (gh_str02scm (generate.ch_l ()), SCM_EOL)); + +#ifndef NPRINT + DOUT << "output_header\n"; + if (check_debug && !monitor->silent_b ("Guile")) + { + gh_display (args_scm); gh_newline (); + } +#endif + + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("header"), args_scm))); + + output_scheme (scm); +} + +void +Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm) { if (check_debug) *outstream_l_ << String ("\n%start: ") << nm << "\n"; @@ -37,15 +82,153 @@ Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm, St Offset a_off = i->offset (); a_off += o; + if (!i->lambda_) + { + // urg + i->lambda_ = + ly_append (ly_lambda_o (), + ly_list1 (ly_func_o ("empty"))); + } + switch_to_font (i->font_); - Array a; - String r; - - a.push (global_lookup_l->print_dimen (a_off.y())); - a.push (global_lookup_l->print_dimen (a_off.x())); - a.push (i->str_); - r += global_lookup_l->substitute_args (s, a); - *outstream_l_ << r; +#ifndef NPRINT + if (check_debug && !monitor->silent_b ("Guile")) + { + gh_display (i->lambda_); gh_newline (); + } +#endif + + SCM args_scm = + gh_cons (gh_double2scm (a_off.x ()), + gh_cons (gh_double2scm (a_off.y ()), + gh_cons (i->lambda_, SCM_EOL))); + +#ifndef NPRINT + if (check_debug && !monitor->silent_b ("Guile")) + { + gh_display (args_scm); gh_newline (); + } +#endif + + SCM box_scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("placebox"), args_scm))); + + output_scheme (box_scm); + } +} + +void +Paper_outputter::output_comment (String str) +{ + // urg + *outstream_l_ << "% " << str << "\n"; +} + + +void +Paper_outputter::output_scheme (SCM scm) +{ + String o = String ("\'") + output_global_ch; +#ifndef NPRINT + if (check_debug && !monitor->silent_b ("Guile")) + { + gh_display (scm); gh_newline (); } +#endif + SCM str_scm = gh_call1 (ly_eval (scm), gh_eval_str (o.ch_l ())); + char* c = gh_scm2newstr (str_scm, NULL); +#ifndef NPRINT + if (check_debug && !monitor->silent_b ("Guile")) + { + gh_display (str_scm); gh_newline (); + } +#endif + *outstream_l_ << c; + free (c); +} + +void +Paper_outputter::output_string (String str) +{ + // urg + *outstream_l_ << str; +} + +void +Paper_outputter::switch_to_font (String fontname) +{ + if (fontname.length_i () && (fontname != current_font_)) + { + current_font_ = fontname; + int i=0; + bool new_b = false; + for (; i< font_arr_.size (); i++) + if (font_arr_[i] == fontname) + { + new_b = true; + break; + } + + if (new_b) + { + font_arr_.push (fontname); + output_font_def (i, fontname); + } + output_font_switch (i); + } + return; +} + +void +Paper_outputter::start_line () +{ + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("start-line"), SCM_EOL))); + + output_scheme (scm); +} + +/* + 26 fonts ought to be enough for anyone. +*/ +void +Paper_outputter::output_font_def (int i, String str) +{ + //urg, broken with guile-1.3 + //return; + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("font-def"), + gh_cons (gh_int2scm (i), gh_cons (gh_str02scm (str.ch_l ()), SCM_EOL))))); + + output_scheme (scm); +} + +void +Paper_outputter::output_font_switch (int i) +{ + //urg, broken with guile-1.2, 1.3 + //return; + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("font-switch"), + gh_cons (gh_int2scm (i), SCM_EOL)))); + + output_scheme (scm); +} + +void +Paper_outputter::stop_line () +{ + SCM scm = + ly_append (ly_lambda_o (), + ly_list1 (ly_append (ly_func_o ("stop-line"), SCM_EOL))); + + output_scheme (scm); + + current_font_ = ""; + font_arr_.clear (); } diff --git a/lily/paper-stream.cc b/lily/paper-stream.cc index 72d14a69b5..91ff01041c 100644 --- a/lily/paper-stream.cc +++ b/lily/paper-stream.cc @@ -7,7 +7,6 @@ */ #include -#include #include "main.hh" #include "paper-stream.hh" @@ -27,7 +26,6 @@ Paper_stream::Paper_stream (String filename) nest_level = 0; line_len_i_ = 0; outputting_comment=false; - // header (); } Paper_stream::~Paper_stream () @@ -99,6 +97,8 @@ Paper_stream::operator << (Scalar s) break; } } + //urg, for debugging only!! + *os << flush; return *this; } diff --git a/lily/parser.yy b/lily/parser.yy index bf82af8ec4..ccca7e4942 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -10,14 +10,13 @@ */ #include +#include "lily-guile.hh" #include "notename-table.hh" #include "scalar.hh" #include "translation-property.hh" #include "script-def.hh" #include "symtable.hh" #include "lookup.hh" -#include "ps-lookup.hh" -#include "tex-lookup.hh" #include "misc.hh" #include "my-lily-lexer.hh" #include "paper-def.hh" @@ -96,7 +95,6 @@ Paper_def* current_paper = 0; #define yyerror THIS->parser_error #define ARRAY_SIZE(a,s) if (a.size () != s) THIS->parser_error (_f("expecting %d arguments", s)) - %} @@ -195,6 +193,7 @@ yylex (YYSTYPE *s, void * v_l) %token PT_T %token RELATIVE %token REMOVE +%token SCHEME /* token vs typedef; can't be named SCM */ %token SCORE %token SCRIPT %token SHAPE @@ -321,8 +320,18 @@ toplevel_expression: Midi_def_identifier ($1, MIDI_IDENTIFIER); THIS->lexer_p_->set_identifier ("$defaultmidi", id) } + | embedded_scm { + } ; +embedded_scm: + SCHEME STRING ';' { + #ifdef HAVE_LIBGUILE + gh_eval_str ($2->ch_l ()); + #endif + delete $2; + }; + check_version: VERSION STRING ';' { Mudela_version ver (*$2); @@ -589,7 +598,7 @@ paper_def_body: $$ = p; } | paper_def_body int '=' symtables { // ugh, what a syntax - Lookup * l = global_lookup_l->lookup_p (*$4); + Lookup * l = new Lookup (*$4); $$->set_lookup ($2, l); } | paper_def_body assignment ';' { @@ -1450,13 +1459,15 @@ symtable_body: symboldef: STRING unsigned box { - $$ = global_lookup_l->atom_p (*$1, $2, *$3); + // ignore #args + $$ = new Atom (*$1, *$3); delete $1; delete $3; } | STRING unsigned { Box b (Interval (0,0), Interval (0,0)); - $$ = global_lookup_l->atom_p (*$1, $2, b); + // ignore #args + $$ = new Atom (*$1, b); delete $1; } ; diff --git a/lily/performer.cc b/lily/performer.cc index 7fdbdc001a..7c5e541f82 100644 --- a/lily/performer.cc +++ b/lily/performer.cc @@ -30,6 +30,6 @@ Performer_group_performer* Performer::daddy_perf_l () const { return (daddy_trans_l_) - ?(Performer_group_performer*) daddy_trans_l_->access_Performer () + ?(Performer_group_performer*) dynamic_cast (daddy_trans_l_) : 0; } diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc index 026027ed04..4851cee02c 100644 --- a/lily/pitch-squash-engraver.cc +++ b/lily/pitch-squash-engraver.cc @@ -15,7 +15,7 @@ Pitch_squash_engraver::acknowledge_element (Score_element_info i) { if (i.elem_l_->is_type_b (Note_head::static_name ())) { - Note_head * nl = (Note_head*)i.elem_l_->access_Item (); + Note_head * nl = (Note_head*)dynamic_cast (i.elem_l_); nl->position_i_ =0; } } diff --git a/lily/plet-engraver.cc b/lily/plet-engraver.cc index 8da468ec92..ed85c58bfd 100644 --- a/lily/plet-engraver.cc +++ b/lily/plet-engraver.cc @@ -35,16 +35,16 @@ Plet_engraver::acknowledge_element (Score_element_info i) return; if (!plet_spanner_p_->stem_l_drul_[LEFT]) - plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->access_Item ()); + plet_spanner_p_->set_stem (LEFT, (Stem*)dynamic_cast (i.elem_l_)); else if (span_reqs_drul_[RIGHT] && !plet_spanner_p_->stem_l_drul_[RIGHT]) - plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->access_Item ()); + plet_spanner_p_->set_stem (RIGHT, (Stem*)dynamic_cast (i.elem_l_)); } bool Plet_engraver::do_try_request (Request* req_l) { - Musical_req* mus_l = req_l->access_Musical_req (); + Musical_req* mus_l = dynamic_cast (req_l); if (!mus_l) return false; @@ -52,7 +52,7 @@ Plet_engraver::do_try_request (Request* req_l) UGH! This is incorrect! Beam_req might not reach the Plet_engraver if ordering is wrong! */ - Beam_req* b = mus_l->access_Beam_req (); + Beam_req* b = dynamic_cast (mus_l); if (b) { if (b->spantype) @@ -63,7 +63,7 @@ Plet_engraver::do_try_request (Request* req_l) return false; } - Plet_req* p = mus_l->access_Plet_req (); + Plet_req* p = dynamic_cast (mus_l); if (!p) return false; diff --git a/lily/plet-spanner.cc b/lily/plet-spanner.cc index 5b7637f12e..4a032ffc72 100644 --- a/lily/plet-spanner.cc +++ b/lily/plet-spanner.cc @@ -130,10 +130,10 @@ Plet_spanner::do_post_processing () void Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n) { - Stem* new_l = n ? (Stem*)n->access_Item () : 0; - if (o->access_Item () == stem_l_drul_[LEFT]) + Stem* new_l = n ? (Stem*)dynamic_cast (n) : 0; + if (dynamic_cast (o) == stem_l_drul_[LEFT]) stem_l_drul_[LEFT] = new_l; - else if (o->access_Item () == stem_l_drul_[RIGHT]) + else if (dynamic_cast (o) == stem_l_drul_[RIGHT]) stem_l_drul_[RIGHT] = new_l; } diff --git a/lily/plet-swallow-engraver.cc b/lily/plet-swallow-engraver.cc index 0e98605b6c..47da034354 100644 --- a/lily/plet-swallow-engraver.cc +++ b/lily/plet-swallow-engraver.cc @@ -15,7 +15,5 @@ ADD_THIS_TRANSLATOR(Plet_swallow_engraver); bool Plet_swallow_engraver::do_try_request (Request* req_l) { - if (req_l && req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Plet_req ()) - return true; - return false; + return dynamic_cast (req_l); } diff --git a/lily/priority-halign-engraver.cc b/lily/priority-halign-engraver.cc index 60300b18a1..2aa56cb7cf 100644 --- a/lily/priority-halign-engraver.cc +++ b/lily/priority-halign-engraver.cc @@ -38,7 +38,7 @@ Priority_horizontal_align_engraver::acknowledge_element (Score_element_info i) halign_p_->breakable_b_ = true; announce_element (Score_element_info (halign_p_,0)); } - Item * it = i.elem_l_->access_Item (); + Item * it = dynamic_cast (i.elem_l_); if (it->break_priority_i_ == 0) halign_p_->center_l_ = it; diff --git a/lily/ps-lookup.cc b/lily/ps-lookup.cc deleted file mode 100644 index 8d160b1f88..0000000000 --- a/lily/ps-lookup.cc +++ /dev/null @@ -1,285 +0,0 @@ -/* - ps-lookup.cc -- implement Ps_lookup - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Jan Nieuwenhuizen -*/ - -#include "ps-lookup.hh" -#include "debug.hh" -#include "dimensions.hh" -#include "symtable.hh" -#include "scalar.hh" -#include "paper-def.hh" -#include "string-convert.hh" -#include "main.hh" -#include "file-results.hh" -#include "scope.hh" -#include "paper-stream.hh" -#include "ps-stream.hh" -#include "ps-outputter.hh" -#include "scope.hh" -#include "dictionary-iter.hh" -#include "identifier.hh" - -Ps_lookup::Ps_lookup () - : Lookup () -{ -} - -Ps_lookup::Ps_lookup (Lookup const& s) - : Lookup (s) -{ -} - -Ps_lookup::Ps_lookup (Symtables const& s) - : Lookup (s) -{ -} - -Ps_lookup::~Ps_lookup () -{ -} - -Atom -Ps_lookup::afm_find (String s) const -{ - return Lookup::afm_find (s, String ("(\\%03o) show ")); -} - -Atom* -Ps_lookup::atom_p (String s, int n, Box b) const -{ - for (int i = 0; i < n; i++) - s.prepend ("% "); - return new Atom (s, b); -} - -String -Ps_lookup::character_str (int i) const -{ - return to_str (i, "(\\%03o)"); -} - -Atom -Ps_lookup::dashed_slur (Array controls, Real thick, Real dash) const -{ - assert (controls.size () == 8); - - String ps; - - Real dx = controls[3].x () - controls[0].x (); - Real dy = controls[3].y () - controls[0].y (); - - for (int i = 1; i < 4; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; - - ps += String_convert::double_str (controls[0].x ()) + " " - + String_convert::double_str (controls[0].y ()) + " "; - - ps += String_convert::double_str (thick) + " "; - Real on = dash > 1? thick * dash - thick : 0; - Real off = 2 * thick; - ps += "[" + String_convert::double_str (on) + " "; - ps += String_convert::double_str (off) + "] "; - ps += String_convert::int_str (0) + " "; - ps += "draw_dashed_slur "; - - Atom a; - a.str_ = ps; - - a.dim_[X_AXIS] = Interval (0, dx); - a.dim_[Y_AXIS] = Interval (0 ? dy); - a.font_ = font_; - return a; -} - -Atom -Ps_lookup::hairpin (Real width, bool decresc, bool continued) const -{ - Atom a; - Real height = paper_l_->staffheight_f () / 6; - String ps; - ps += to_str (width) + " " - + to_str (height) + " " - + to_str (continued ? height/2 : 0) + - + " draw_" + String (decresc ? "de" : "") + "cresc\n"; - a.str_ = ps; - - - a.dim_.x () = Interval (0, width); - a.dim_.y () = Interval (-2*height, 2*height); - a.font_ = font_; - return a; -} - -Lookup* -Ps_lookup::lookup_p (Lookup const& l) const -{ - return new Ps_lookup (l); -} - -Lookup* -Ps_lookup::lookup_p (Symtables const& s) const -{ - return new Ps_lookup (s); -} -extern char const *lily_version_number_sz (); - -String -header_to_ps_string (Scope *head) -{ - String s; - String lily_id_str = "Lily was here, " + - String (lily_version_number_sz ()); - - s+= "/lily_id_string\n{" + lily_id_str + "} bind def\n"; - - for (Dictionary_iter i (*head); i.ok (); i++) - { - if (!i.val ()->access_String_identifier ()) - continue; - - String val = *i.val()->access_String_identifier ()->data_p_; - - s += "/mudela" + i.key () + "{" + val + "} bind def\n"; - } - - return s; -} - -Paper_outputter* -Ps_lookup::paper_outputter_p (Paper_stream* os_p, Paper_def* paper_l, Header* header_l, String origin_str) const -{ - if (header_global_p) - *os_p << header_to_ps_string (header_global_p); - - *os_p << _ ("\n% outputting Score, defined at: ") << origin_str << '\n'; - - if (header_l) - { - *os_p << header_to_ps_string (header_l); - } - - *os_p << paper_l->ps_output_settings_str (); - - if (experimental_features_global_b) - *os_p << "turnOnExperimentalFeatures\n"; - - return new Ps_outputter (os_p); -} - -Paper_stream* -Ps_lookup::paper_stream_p () const -{ - String outname = base_output_str (); - - if (outname != "-") - outname += ".ps"; - *mlog << _f ("PostScript output to %s...", - outname == "-" ? String ("") : outname ) << endl; - target_str_global_array.push (outname); - return new Ps_stream (outname); -} - -Atom -Ps_lookup::plet (Real dy , Real dx, Direction dir) const -{ - String ps; - - ps += String_convert::double_str (dx) + " " - + String_convert::double_str (dy) + " " - + String_convert::int_str ( (int)dir) + - " draw_plet "; - - Atom s; - s.str_ = ps; - return s; -} - -Atom -Ps_lookup::ps_beam (Real slope, Real width, Real thick) const -{ - String ps; - ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick) - + " draw_beam "; - - Atom s; - s.str_ = ps; - return s; -} - -Atom -Ps_lookup::slur (Array controls) const -{ - assert (controls.size () == 8); - - String ps; - - Real dx = controls[3].x () - controls[0].x (); - Real dy = controls[3].y () - controls[0].y (); - - for (int i = 5; i < 8; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; - - ps += String_convert::double_str (controls[4].x ()) + " " - + String_convert::double_str (controls[4].y ()) + " "; - - for (int i = 1; i < 4; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; - - ps += String_convert::double_str (controls[0].x ()) + " " - + String_convert::double_str (controls[0].y ()) + " "; - - ps += " draw_slur "; - - Atom s; - s.str_ = ps; - - s.dim_[X_AXIS] = Interval (0, dx); - s.dim_[Y_AXIS] = Interval (0 ? dy); - s.font_ = font_; - return s; -} - -Atom -Ps_lookup::stem (Real y1, Real y2) const -{ - return Lookup::stem (y1, y2, "\n% % % % draw_stem "); -} - -Atom -Ps_lookup::text (String style, String text) const -{ - return Lookup::text (style, "(" + text + ")"); -} - -String -Ps_lookup::unknown_str () const -{ - return "unknown "; -} - -Atom -Ps_lookup::vbracket (Real &y) const -{ - Atom psbracket; - Real min_y = paper_l_->staffheight_f (); - if (y < min_y) - { - warning (_ ("bracket") - + " " + _ ("too small") + " (" + print_dimen (y) + ")"); -// y = min_y; - } - psbracket.str_ = to_str (y) + " draw_bracket "; - psbracket.dim_[Y_AXIS] = Interval (-y/2,y/2); - psbracket.dim_[X_AXIS] = Interval (0,4 PT); - return psbracket; -} - - - diff --git a/lily/ps-outputter.cc b/lily/ps-outputter.cc deleted file mode 100644 index d0ad70ef39..0000000000 --- a/lily/ps-outputter.cc +++ /dev/null @@ -1,80 +0,0 @@ -/* - ps-outputter.cc -- implement Ps_outputter - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen -*/ - -#include "ps-outputter.hh" -#include "ps-stream.hh" -#include "molecule.hh" -#include "atom.hh" -#include "array.hh" -#include "string-convert.hh" -#include "debug.hh" - -Ps_outputter::Ps_outputter (Paper_stream *s) - :Paper_outputter (s) -{ -} - -Ps_outputter::~Ps_outputter () -{ -} - -/* - 26 fonts ought to be enough for anyone. -*/ -static String -ps_font_command(int i) -{ -// urg -// return "%\\font" + String_convert::form_str ("%c", 'A' + i) + "\n"; - return "\n/feta20 findfont 12 scalefont setfont "; -} - -void -Ps_outputter::switch_to_font (String fontname) -{ - if (!fontname.length_i () || fontname == current_font_) - return; - - current_font_ = fontname; - int i=0; - for (; i< font_arr_.size (); i++) - if (font_arr_[i] == fontname) - { - *outstream_l_ < - Jan Nieuwenhuizen -*/ - -#include -#include - -#include "main.hh" -#include "ps-stream.hh" -#include "debug.hh" - -Ps_stream::Ps_stream (String filename) - : Paper_stream (filename) -{ - header (); -} - -Ps_stream::~Ps_stream () -{ - *os << "\nshowpage\n"; -} - -void -Ps_stream::header () -{ - *os << _ ("%!PS-Adobe-3.0\n"); - // urg, merge with Tex - *os << _ ("%%Creator: "); - if (no_timestamps_global_b) - *os << "GNU LilyPond\n"; - else - *os << get_version_str () << '\n'; - *os << _ ("%%Automatically generated"); - if (no_timestamps_global_b) - *os << ".\n"; - else - { - *os << _ (", at "); - time_t t (time (0)); - *os << ctime (&t) << "%\n"; - } -} - -// print string. don't forget indent. -Paper_stream& -Ps_stream::operator << (Scalar s) -{ - return Paper_stream::operator << (s); -} - diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index d139313be2..2c52168807 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -37,7 +37,7 @@ void Rest_collision_engraver::acknowledge_element (Score_element_info i) { if (i.elem_l_->is_type_b (Note_column::static_name())) - note_column_l_arr_.push ((Note_column*)i.elem_l_->access_Item ()); + note_column_l_arr_.push ((Note_column*)dynamic_cast (i.elem_l_)); } void diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index 38d393f160..54cfe814c1 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -133,12 +133,12 @@ Rest_collision::do_print() const void Rest_collision::do_substitute_dependency (Score_element*o,Score_element*n) { - Item*o_l = o->access_Item (); + Item*o_l = dynamic_cast (o); if (o_l&&o_l->is_type_b (Note_column::static_name ())) { - Note_column *n_l = n?(Note_column*)n->access_Item ():0; + Note_column *n_l = n?(Note_column*)dynamic_cast (n):0; rest_l_arr_.substitute ((Note_column*)o_l, n_l); ncol_l_arr_.substitute ((Note_column*)o_l, n_l); } diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc index 96c40d75c2..f4f2e6efbe 100644 --- a/lily/rest-engraver.cc +++ b/lily/rest-engraver.cc @@ -62,11 +62,11 @@ Rest_engraver::do_process_requests () bool Rest_engraver::do_try_request (Request *r) { - Musical_req *m = r->access_Musical_req (); - if (!m || !m->access_Rest_req ()) + Musical_req *m = dynamic_cast (r); + if (!m || !dynamic_cast (m)) return false; - rest_req_l_ = m->access_Rest_req (); // ugh + rest_req_l_ = dynamic_cast (m); // ugh return true; } diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index 6d7fc6927b..8c1cacfdf5 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -12,6 +12,7 @@ #include "note-column.hh" #include "script.hh" #include "dot-column.hh" +#include "musical-request.hh" Rhythmic_column_engraver::Rhythmic_column_engraver() { @@ -66,12 +67,12 @@ Rhythmic_column_engraver::process_acknowledged () void Rhythmic_column_engraver::acknowledge_element (Score_element_info i) { - Item * item = i.elem_l_->access_Item (); + Item * item = dynamic_cast (i.elem_l_); if (!item) return; if (item->is_type_b (Script::static_name ()) && i.req_l_ - && i.req_l_->access_Musical_req ()) + && dynamic_cast (i.req_l_)) { script_l_arr_.push ((Script*)item); } diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc index ab9e7396dc..d4625e7c2b 100644 --- a/lily/rhythmic-head.cc +++ b/lily/rhythmic-head.cc @@ -52,7 +52,7 @@ void Rhythmic_head::do_substitute_dependent (Score_element*o,Score_element*n) { if (o == dots_l_) - dots_l_ = n ? (Dots*)n->access_Item () :0; + dots_l_ = n ? (Dots*)dynamic_cast (n) :0; } IMPLEMENT_IS_TYPE_B1(Rhythmic_head, Item); diff --git a/lily/score-element-info.cc b/lily/score-element-info.cc index a0c6f68e85..81aa07fdbf 100644 --- a/lily/score-element-info.cc +++ b/lily/score-element-info.cc @@ -15,6 +15,7 @@ Score_element_info::Score_element_info (Score_element*s_l, Request*r_l) req_l_ = r_l; } + Score_element_info::Score_element_info() { elem_l_ = 0; diff --git a/lily/score-element.cc b/lily/score-element.cc index b92945e285..cbaadfc4f4 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -9,7 +9,6 @@ #include -#include "tex-outputter.hh" #include "p-score.hh" #include "paper-def.hh" #include "lookup.hh" @@ -22,6 +21,7 @@ #include "p-col.hh" #include "molecule.hh" #include "misc.hh" +#include "paper-outputter.hh" #define PARANOID @@ -291,17 +291,17 @@ Score_element::handle_broken_dependencies() Score_element * elt = dependency (i); if (elt->line_l() != line) { - if (elt->access_Spanner ()) + if (dynamic_cast (elt)) { - Spanner * sp = elt->access_Spanner (); + Spanner * sp = dynamic_cast (elt); Spanner * broken = sp->find_broken_piece (line); substitute_dependency (sp, broken); add_dependency (broken); } - else if (elt->access_Item ()) + else if (dynamic_cast (elt)) { - Item * my_item = elt->access_Item ()->find_prebroken_piece (line); + Item * my_item = dynamic_cast (elt)->find_prebroken_piece (line); substitute_dependency (elt, my_item); if (my_item) @@ -338,11 +338,11 @@ Score_element::handle_prebroken_dependencies() for (int i=0; i < dependency_size(); i++) { Score_element * elt = dependency (i); - Item *it_l = elt->access_Item (); + Item *it_l = dynamic_cast (elt); if (it_l && it_l->breakable_b_) - if (access_Item ()) + if (Item *me = dynamic_cast (this) ) { - Score_element *new_l = it_l->find_prebroken_piece (access_Item ()->break_status_dir_); + Score_element *new_l = it_l->find_prebroken_piece (me->break_status_dir_); if (new_l != elt) { new_arr.push (new_l); diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 1b30731fd7..30a38f5360 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -18,6 +18,7 @@ #include "paper-def.hh" + Score_engraver::Score_engraver() { break_penalty_i_ = 0; @@ -103,8 +104,8 @@ Score_engraver::do_announces() */ if (announce_info_arr_[i].req_l_) { - Musical_req *m = announce_info_arr_[i].req_l_->access_Musical_req (); - if (m && m->access_Rhythmic_req ()) + Musical_req *m =dynamic_cast ( announce_info_arr_[i].req_l_); + if (m && dynamic_cast (m)) { musical_column_l_->add_duration (m->duration()); } @@ -117,23 +118,22 @@ Score_engraver::do_announces() void Score_engraver::typeset_element (Score_element *elem_p) { - elem_p_arr_.push(elem_p); + elem_p_arr_.push (elem_p); } + void Score_engraver::typeset_all() { for (int i =0; i < elem_p_arr_.size(); i++) { Score_element * elem_p = elem_p_arr_[i]; - if (elem_p->access_Spanner ()) + if (dynamic_cast (elem_p)) { - Spanner *s = elem_p->access_Spanner (); + Spanner *s = dynamic_cast (elem_p); pscore_p_->typeset_unbroken_spanner (s); - - - /* + /* do something sensible if spanner not spanned on 2 items. */ @@ -148,7 +148,7 @@ Score_engraver::typeset_all() } else { - Item *item_p = elem_p->access_Item (); + Item *item_p = dynamic_cast (elem_p); pscore_p_->typeset_element (item_p); if (!item_p->axis_group_l_a_[X_AXIS]) { if (item_p->breakable_b_) @@ -228,7 +228,6 @@ Score_engraver::get_staff_info() const } - Music_output* Score_engraver::get_output_p () { @@ -242,13 +241,13 @@ Score_engraver::do_try_request (Request*r) { bool gotcha = Engraver_group_engraver::do_try_request (r); - if (gotcha || !r->access_Command_req ()) + if (gotcha || !dynamic_cast (r)) return gotcha; - Command_req * c = r->access_Command_req (); - if (c->access_Break_req ()) + Command_req * c = dynamic_cast (r); + if (dynamic_cast (c)) { - Break_req* b = (Break_req*)c->access_Break_req (); + Break_req* b = (Break_req*)dynamic_cast (c); if (b->penalty_i_ <= Break_req::DISALLOW) break_penalty_i_ = b->penalty_i_; else if (b->penalty_i_ >= Break_req::FORCE) diff --git a/lily/score-priority-engraver.cc b/lily/score-priority-engraver.cc index 310e44e101..3de5ea9f00 100644 --- a/lily/score-priority-engraver.cc +++ b/lily/score-priority-engraver.cc @@ -35,7 +35,7 @@ Score_priority_engraver::do_pre_move_processing() void Score_priority_engraver::acknowledge_element (Score_element_info inf) { - Item * item_l = inf.elem_l_->access_Item (); + Item * item_l = dynamic_cast (inf.elem_l_); if (item_l && item_l->breakable_b_ && !item_l->empty_b ()) { /* @@ -68,7 +68,7 @@ Score_priority_engraver::acknowledge_element (Score_element_info inf) */ if (unbound_elem->axis_group_l_a_[X_AXIS] == hg) return; - unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS]->access_Score_element (); + unbound_elem = dynamic_cast (unbound_elem->axis_group_l_a_[X_AXIS]); } hg->add_element (unbound_elem); diff --git a/lily/scores.cc b/lily/scores.cc index f41666b0ad..5ac2645737 100644 --- a/lily/scores.cc +++ b/lily/scores.cc @@ -17,7 +17,6 @@ #include "file-results.hh" #include "my-lily-parser.hh" #include "source.hh" -#include "lookup.hh" Sources* source_global_l = 0; Array inclusion_global_array; @@ -125,16 +124,6 @@ do_one_file (String init_str, String file_str) parser.set_version_check (version_ignore_global_b); parser.parse_file (init_str, file_str); - /* - urg - when calling {Ps,Tex}_lookup::paper_stream_p (), - it *appears* (aaargh, latest gdb on ppc is gdb 4.16.97) - that (global_lookup_l's) - paper_l_ is invalid but not NULL - (deleted without being reset maybe?) - */ - global_lookup_l->paper_l_ = parser.default_paper_p (); - if (parser.error_level_i_) { exit_status_i_ = 1; diff --git a/lily/script-column.cc b/lily/script-column.cc index f67907c869..d85e1a6e0b 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -105,9 +105,9 @@ Script_column::add_support (Item*i_l) void Script_column::do_substitute_dependency (Score_element*o,Score_element*n) { - if (o->access_Item ()) + if (dynamic_cast (o)) { - script_l_arr_.substitute ((Script*)o->access_Item (),(Script*) (n?n->access_Item ():0)); - support_l_arr_.substitute (o->access_Item (), (n?n->access_Item ():0)); + script_l_arr_.substitute ((Script*)dynamic_cast (o),(Script*) (n?dynamic_cast (n):0)); + support_l_arr_.substitute (dynamic_cast (o), (n?dynamic_cast (n):0)); } } diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 671ca17e38..f27577e44b 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -21,7 +21,7 @@ Script_engraver::Script_engraver() bool Script_engraver::do_try_request (Request *r_l) { - if (!r_l->access_Musical_req () || ! r_l->access_Musical_req ()->access_Musical_script_req ()) + if (!dynamic_cast (r_l)) return false ; for (int i=0; i < script_req_l_arr_.size(); i++) @@ -29,7 +29,7 @@ Script_engraver::do_try_request (Request *r_l) if (r_l->equal_b (script_req_l_arr_[i])) return true; } - script_req_l_arr_.push (r_l->access_Script_req ()); + script_req_l_arr_.push (dynamic_cast (r_l)); return true; } diff --git a/lily/script.cc b/lily/script.cc index 76c9cbc02a..ee525907ae 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -27,7 +27,7 @@ Script::do_substitute_dependency (Score_element*o,Score_element*n) Staff_side::do_substitute_dependency (o,n); if (o == stem_l_) { - stem_l_ = n ? (Stem*)n->access_Item () : 0; + stem_l_ = n ? (Stem*)dynamic_cast (n) : 0; } } diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index cffc4ee276..059afad994 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -65,8 +65,8 @@ Separating_group_spanner::do_substitute_dependency (Score_element*o, Score_eleme if (o->is_type_b (Single_malt_grouping_item::static_name ())) { Single_malt_grouping_item*ns = n ? - (Single_malt_grouping_item*)n->access_Item () : 0; - spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)o->access_Item (), ns); + (Single_malt_grouping_item*)dynamic_cast (n) : 0; + spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)dynamic_cast (o), ns); } } diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index 878bb1f1dc..f43b99a3c3 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -38,7 +38,7 @@ Separating_line_group_engraver::do_removal_processing () void Separating_line_group_engraver::acknowledge_element (Score_element_info i) { - Item * it = i.elem_l_->access_Item (); + Item * it = dynamic_cast (i.elem_l_); if (it && !it->axis_group_l_a_[X_AXIS]) { Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ? diff --git a/lily/single-malt-grouping-item.cc b/lily/single-malt-grouping-item.cc index 284a494d7e..56541540f1 100644 --- a/lily/single-malt-grouping-item.cc +++ b/lily/single-malt-grouping-item.cc @@ -46,9 +46,9 @@ IMPLEMENT_IS_TYPE_B1(Single_malt_grouping_item, Item); void Single_malt_grouping_item::do_substitute_dependency (Score_element*o, Score_element*n) { - if (o->access_Item ()) + if (dynamic_cast (o)) { - item_l_arr_.unordered_substitute (o->access_Item (), n ? n->access_Item () : 0); + item_l_arr_.unordered_substitute (dynamic_cast (o), n ? dynamic_cast (n) : 0); } } diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 8c43bfddfb..e7447b7432 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -15,11 +15,11 @@ bool Slur_engraver::do_try_request (Request *req_l) { - Musical_req *mus_l = req_l->access_Musical_req (); - if (!mus_l || !mus_l->access_Slur_req ()) + Musical_req *mus_l = dynamic_cast (req_l); + if (!mus_l || !dynamic_cast (mus_l)) return false; - new_slur_req_l_arr_.push (mus_l->access_Slur_req ()); + new_slur_req_l_arr_.push (dynamic_cast (mus_l)); return true; } @@ -28,7 +28,7 @@ Slur_engraver::acknowledge_element (Score_element_info info) { if (info.elem_l_->is_type_b (Note_column::static_name ())) { - Note_column *col_l =(Note_column*) info.elem_l_->access_Item() ;// ugh + Note_column *col_l =(Note_column*) dynamic_cast (info.elem_l_) ;// ugh for (int i = 0; i < slur_l_stack_.size(); i++) slur_l_stack_[i]->add_column (col_l); for (int i = 0; i < end_slur_l_arr_.size(); i++) diff --git a/lily/slur.cc b/lily/slur.cc index 28bd21fa6e..41769d8e0c 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -76,10 +76,10 @@ void Slur::do_substitute_dependency (Score_element*o, Score_element*n) { int i; - while ((i = encompass_arr_.find_i ((Note_column*)o->access_Item ())) >=0) + while ((i = encompass_arr_.find_i ((Note_column*)dynamic_cast (o))) >=0) { if (n) - encompass_arr_[i] = (Note_column*)n->access_Item (); + encompass_arr_[i] = (Note_column*)dynamic_cast (n); else encompass_arr_.del (i); } diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc index 61898273c0..4d3dc1f6f4 100644 --- a/lily/span-bar-engraver.cc +++ b/lily/span-bar-engraver.cc @@ -40,7 +40,7 @@ Span_bar_engraver::acknowledge_element (Score_element_info i) if (depth > 1 && i.elem_l_->is_type_b (Bar::static_name())) { - bar_l_arr_.push ((Bar*)i.elem_l_->access_Item ()); + bar_l_arr_.push ((Bar*)dynamic_cast (i.elem_l_)); if (bar_l_arr_.size() >= 2 && !spanbar_p_) /* @@ -65,7 +65,7 @@ Span_bar_engraver::acknowledge_element (Score_element_info i) 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_->access_Spanner (); + valign_l_ = (Vertical_align_spanner*)dynamic_cast (i.elem_l_); } } diff --git a/lily/span-score-bar-engraver.cc b/lily/span-score-bar-engraver.cc index 524d5b20ad..d3cff445e5 100644 --- a/lily/span-score-bar-engraver.cc +++ b/lily/span-score-bar-engraver.cc @@ -50,7 +50,7 @@ Staff_group_bar_engraver::acknowledge_element (Score_element_info i) Span_bar_engraver::acknowledge_element (i); if (i.elem_l_->is_type_b (Piano_brace::static_name ())) { - Span_bar* b = i.elem_l_->access_Span_bar (); + Span_bar* b = dynamic_cast (i.elem_l_); Piano_brace * piano_l = (Piano_brace*) b; piano_l->extra_move_left_f_ = paper ()->interline_f (); // ugh } diff --git a/lily/spanner.cc b/lily/spanner.cc index 0a1a74e5bd..83ad5f2091 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -10,8 +10,8 @@ #include "spanner.hh" #include "p-col.hh" #include "p-score.hh" -#include "tex-outputter.hh" #include "molecule.hh" +#include "paper-outputter.hh" IMPLEMENT_IS_TYPE_B1(Spanner,Score_element); @@ -53,7 +53,7 @@ Spanner::break_into_pieces () for (int i=1; i < break_cols.size(); i++) { - Spanner* span_p = clone()->access_Spanner (); + Spanner* span_p = dynamic_cast (clone()); Item *left = break_cols[i-1]; Item *right = break_cols[i]; if (!right->line_l()) diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index 26150a6ba0..a80d36bd0a 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -40,7 +40,7 @@ Staff_margin_engraver::Staff_margin_engraver () void Staff_margin_engraver::acknowledge_element (Score_element_info i) { - Item * it = i.elem_l_->access_Item (); + Item * it = dynamic_cast (i.elem_l_); if (!it || script_p_ diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index 8fa6d56761..e21c8c9012 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -38,10 +38,10 @@ Stem_engraver::acknowledge_element(Score_element_info i) { if (i.elem_l_->is_type_b (Rhythmic_head::static_name())) { - Rhythmic_head *h = (Rhythmic_head*) i.elem_l_->access_Item (); + Rhythmic_head *h = (Rhythmic_head*) dynamic_cast (i.elem_l_); if (!stem_p_) { - Rhythmic_req * r = i.req_l_->access_Musical_req ()->access_Rhythmic_req (); + Rhythmic_req * r = dynamic_cast (i.req_l_); stem_p_ = new Stem; int durlog_i = r->duration_.durlog_i_; stem_p_->flag_i_ = durlog_i; @@ -103,11 +103,11 @@ Stem_engraver::do_pre_move_processing() bool Stem_engraver::do_try_request (Request* r) { - Musical_req* mus_l = r->access_Musical_req (); + Musical_req* mus_l = dynamic_cast (r); if (!mus_l) return false; - Abbreviation_req* a = mus_l->access_Abbreviation_req (); + Abbreviation_req* a = dynamic_cast (mus_l); if (!a) return false; diff --git a/lily/stem.cc b/lily/stem.cc index b9e7e59b8a..423b40b397 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -347,8 +347,8 @@ Stem::hpos_f () const void Stem::do_substitute_dependency (Score_element*o,Score_element*n) { - Item * o_l = o->access_Item (); - Item * n_l = n? n->access_Item () : 0; + Item * o_l = dynamic_cast (o); + Item * n_l = n? dynamic_cast (n) : 0; head_l_arr_.substitute ((Note_head*)o_l, (Note_head*)n_l); rest_l_arr_.substitute ((Rest*)o_l, (Rest*)n_l); } diff --git a/lily/super-element.cc b/lily/super-element.cc index 419618ed4c..89168838b7 100644 --- a/lily/super-element.cc +++ b/lily/super-element.cc @@ -10,7 +10,7 @@ #include "line-of-score.hh" #include "p-score.hh" #include "string.hh" -#include "tex-outputter.hh" +#include "paper-outputter.hh" Super_element::Super_element() diff --git a/lily/tex-lookup.cc b/lily/tex-lookup.cc deleted file mode 100644 index 4f10886e11..0000000000 --- a/lily/tex-lookup.cc +++ /dev/null @@ -1,209 +0,0 @@ -/* - tex-lookup.cc -- implement Tex_lookup - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Jan Nieuwenhuizen - Jan Nieuwenhuizen -*/ - -#include "tex-lookup.hh" -#include "debug.hh" -#include "symtable.hh" -#include "scalar.hh" -#include "paper-def.hh" -#include "string-convert.hh" -#include "main.hh" -#include "file-results.hh" -#include "scope.hh" -#include "paper-stream.hh" -#include "tex-stream.hh" -#include "tex-outputter.hh" -#include "dictionary-iter.hh" -#include "identifier.hh" - -Tex_lookup::Tex_lookup () - : Ps_lookup () -{ -} - -Tex_lookup::Tex_lookup (Lookup const& s) - : Ps_lookup (s) -{ -} - -Tex_lookup::Tex_lookup (Symtables const& s) - : Ps_lookup (s) -{ -} - -Tex_lookup::~Tex_lookup() -{ -} - -Atom -Tex_lookup::afm_find (String s) const -{ - return Lookup::afm_find (s, String ("\\char%d")); -} - -Atom* -Tex_lookup::atom_p (String s, int n, Box b) const -{ - if (s.length_i ()) - s.prepend ("\\"); - for (int i = 0; i < n; i++) - s += "{%}"; - return new Atom (s, b); -} - -String -Tex_lookup::character_str (int i) const -{ - return Lookup::character_str (i); -} - -Atom -Tex_lookup::dashed_slur (Array controls, Real thick, Real dash) const -{ - return embed (Ps_lookup::dashed_slur (controls, thick, dash)); -} - -Atom -Tex_lookup::embed (Atom a) const -{ - a.str_ = "\\embeddedps{\n" + a.str_ + "}"; - return a; -} - -Atom -Tex_lookup::hairpin (Real width, bool decresc, bool continued) const -{ - return embed (Ps_lookup::hairpin (width, decresc, continued)); -} - -Atom -Tex_lookup::plet (Real dy , Real dx, Direction dir) const -{ - return embed (Ps_lookup::plet (dy, dx, dir)); -} - -Lookup* -Tex_lookup::lookup_p (Lookup const& l) const -{ - return new Tex_lookup (l); -} - -Lookup* -Tex_lookup::lookup_p (Symtables const& s) const -{ - return new Tex_lookup (s); -} - -extern char const *lily_version_number_sz (); - -String -header_to_tex_string (Scope *head) -{ - String s; - String lily_id_str = "Lily was here, " + - String (lily_version_number_sz ()); - s+= "\\def\\LilyIdString{" + lily_id_str + "}\n"; - - for (Dictionary_iter i(*head); i.ok (); i++) - { - if (!i.val ()->access_String_identifier ()) - continue; - - String val = *i.val()->access_String_identifier ()->data_p_; - s += "\\def\\mudela" + i.key () + "{" + val + "}\n"; - } - return s; -} - - -Paper_outputter* -Tex_lookup::paper_outputter_p (Paper_stream* os_p, Paper_def* paper_l, Scope* header_l, String origin_str) const -{ - if (header_global_p) - *os_p << header_to_tex_string(header_global_p); - - *os_p << _ ("\n% outputting Score, defined at: ") << origin_str << '\n'; - - if (header_l) - *os_p << header_to_tex_string (header_global_p); - - - *os_p << paper_l->tex_output_settings_str (); - - if (experimental_features_global_b) - *os_p << "\\turnOnExperimentalFeatures%\n"; - - *os_p << "\\turnOnPostScript%\n"; - - return new Tex_outputter (os_p); -} - -Paper_stream * -Tex_lookup::paper_stream_p () const -{ - String outname = base_output_str (); - - Paper_stream* p; - if (outname != "-") - outname += ".tex"; - *mlog << _f ("TeX output to %s...", - outname == "-" ? String ("") : outname ) << endl; - p = new Tex_stream (outname); - target_str_global_array.push (outname); - return p; -} - -String -Tex_lookup::print_dimen (Real r) const -{ - String s = to_str (r, "%.3f"); - if (s.index_i ("NaN") != -1) - { - warning (_ ("NaN")); - s = "0.0"; - } - return Lookup::print_dimen (r) + "pt"; -} - -Atom -Tex_lookup::ps_beam (Real slope, Real width, Real thick) const -{ - return embed (Ps_lookup::ps_beam (slope, width, thick)); -} - -Atom -Tex_lookup::slur (Array controls) const -{ - return embed (Ps_lookup::slur (controls)); -} - -Atom -Tex_lookup::stem (Real y1, Real y2) const -{ - return Lookup::stem (y1, y2, "\\kern %\\vrule width % height % depth %"); -} - -Atom -Tex_lookup::text (String style, String text) const -{ - return Lookup::text (style, text); -} - -String -Tex_lookup::unknown_str () const -{ - return "\\unknown"; -} - -Atom -Tex_lookup::vbracket (Real &y) const -{ - return embed (Ps_lookup::vbracket (y)); -} - diff --git a/lily/tex-outputter.cc b/lily/tex-outputter.cc deleted file mode 100644 index 89ebf31623..0000000000 --- a/lily/tex-outputter.cc +++ /dev/null @@ -1,79 +0,0 @@ -/* - tex-outputter.cc -- implement Tex_outputter - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen -*/ - -#include "tex-outputter.hh" -#include "tex-stream.hh" -#include "molecule.hh" -#include "atom.hh" -#include "array.hh" -#include "string-convert.hh" -#include "debug.hh" - -Tex_outputter::Tex_outputter (Paper_stream *s) - :Paper_outputter (s) -{ -} - -Tex_outputter::~Tex_outputter () -{ -} - -/* - 26 fonts ought to be enough for anyone. -*/ -static String -tex_font_command(int i) -{ - return "\\font" +String_convert::form_str ("%c", 'A' + i) ; -} - -void -Tex_outputter::switch_to_font (String fontname) -{ - if (!fontname.length_i () || fontname == current_font_) - return; - - current_font_ = fontname; - int i=0; - for (; i< font_arr_.size (); i++) - if (font_arr_[i] == fontname) - { - *outstream_l_ < - -*/ - -#include -#include - -#include "main.hh" -#include "tex-stream.hh" -#include "debug.hh" - -Tex_stream::Tex_stream (String filename) - : Paper_stream (filename) -{ - header (); -} - -Tex_stream::~Tex_stream () -{ - *os << "\n\\EndLilyPondOutput"; -} - -void -Tex_stream::header () -{ - // urg, merge with Ps - *os << _ ("% Creator: "); - if (no_timestamps_global_b) - *os << "GNU LilyPond\n"; - else - *os << get_version_str () << '\n'; - *os << _ ("% Automatically generated"); - if (no_timestamps_global_b) - *os << ".\n"; - else - { - *os << _ (", at "); - time_t t (time (0)); - *os << ctime (&t) << "%\n"; - } -} - -// print string. don't forget indent. -Paper_stream& -Tex_stream::operator << (Scalar s) -{ - return Paper_stream::operator << (s); -} - diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc index 2bafc76723..522081cedf 100644 --- a/lily/text-spanner.cc +++ b/lily/text-spanner.cc @@ -81,7 +81,7 @@ void Text_spanner::do_substitute_dependency (Score_element* o, Score_element*n) { if (support_span_l_ == o) - support_span_l_ = (Directional_spanner*) (n?n->access_Spanner ():0); + support_span_l_ = (Directional_spanner*) (n?dynamic_cast (n):0); } diff --git a/lily/tie.cc b/lily/tie.cc index cc36ab22c0..002c5e9694 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -151,10 +151,10 @@ Tie::do_post_processing() void Tie::do_substitute_dependency (Score_element*o, Score_element*n) { - Note_head *new_l =n?(Note_head*)n->access_Item ():0; - if (o->access_Item () == head_l_drul_[LEFT]) + Note_head *new_l =n?(Note_head*)dynamic_cast (n):0; + if (dynamic_cast (o) == head_l_drul_[LEFT]) head_l_drul_[LEFT] = new_l; - else if (o->access_Item () == head_l_drul_[RIGHT]) + else if (dynamic_cast (o) == head_l_drul_[RIGHT]) head_l_drul_[RIGHT] = new_l; } diff --git a/lily/ties-engraver.cc b/lily/ties-engraver.cc index 9ed1ef3b04..f79dab5ac9 100644 --- a/lily/ties-engraver.cc +++ b/lily/ties-engraver.cc @@ -28,15 +28,15 @@ Ties_engraver::do_post_move_processing() bool Ties_engraver::do_try_request (Request*req) { - if (! req->access_Musical_req ()) + if (! dynamic_cast (req)) return false; - Tie_req * r= req->access_Musical_req ()->access_Tie_req (); - if (!r) - return false; - - req_l_ = r; - return true; + if(Tie_req * r= dynamic_cast (req)) + { + req_l_ = r; + return true; + } + return false; } @@ -47,8 +47,8 @@ Ties_engraver::acknowledge_element (Score_element_info i) return; if (i.elem_l_->is_type_b (Note_head::static_name ())) { - Note_head * h = (Note_head*)i.elem_l_->access_Item (); - Melodic_req *m = i.req_l_->access_Musical_req ()->access_Melodic_req (); + Note_head * h = dynamic_cast (i.elem_l_); + Melodic_req *m = dynamic_cast (i.req_l_); head_mel_tuple_arr_.push (Head_melodic_tuple (h, m)); } diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index 1e52ea151e..89e29e61ed 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -30,7 +30,7 @@ Time_signature_engraver::do_process_requests() return ; } - Timing_engraver * timing_grav_l= (Timing_engraver*) result->access_Engraver (); + Timing_engraver * timing_grav_l= (Timing_engraver*) dynamic_cast (result); Time_signature_change_req *req = timing_grav_l->time_signature_req_l(); if (req) diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc index df41bf56b0..6440550170 100644 --- a/lily/time-signature-performer.cc +++ b/lily/time-signature-performer.cc @@ -45,8 +45,8 @@ Time_signature_performer::do_try_request (Request* req_l) if (time_signature_req_l_) return false; - if (req_l->access_Command_req ()) - time_signature_req_l_ = req_l->access_Command_req ()->access_Time_signature_change_req (); + if (dynamic_cast (req_l)) + time_signature_req_l_ = dynamic_cast (req_l); if (time_signature_req_l_) return true; diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 79dd64035c..316f31d523 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -20,8 +20,8 @@ Timing_translator::Timing_translator () bool Timing_translator::do_try_request(Request*r) { - Command_req * c = r->access_Command_req (); - if (!(c && c->access_Timing_req ())) + Command_req * c = dynamic_cast (r); + if (!(c && dynamic_cast (c))) return false; for (int i=0; i < timing_req_l_arr_.size (); i++) { @@ -34,7 +34,7 @@ Timing_translator::do_try_request(Request*r) } } - timing_req_l_arr_.push(c->access_Timing_req ()); + timing_req_l_arr_.push(dynamic_cast (c)); return true; } @@ -44,7 +44,7 @@ Timing_translator::time_signature_req_l() const Time_signature_change_req *m_l=0; for (int i=0; !m_l && i < timing_req_l_arr_.size (); i++) { - m_l=timing_req_l_arr_[i]->access_Time_signature_change_req (); + m_l=dynamic_cast (timing_req_l_arr_[i]); } return m_l; } @@ -55,7 +55,7 @@ Timing_translator::do_process_requests() for (int i=0; i < timing_req_l_arr_.size (); i++) { Timing_req * tr_l = timing_req_l_arr_[i]; - Time_signature_change_req *m_l = tr_l->access_Time_signature_change_req (); + Time_signature_change_req *m_l = dynamic_cast (tr_l); if (m_l) { int b_i= m_l->beats_i_; @@ -69,9 +69,9 @@ Timing_translator::do_process_requests() Rhythmic_grouping (MInterval (0,Moment (b_i, o_i)), b_i); } } - else if (tr_l->access_Partial_measure_req ()) + else if (dynamic_cast (tr_l)) { - Moment m = tr_l->access_Partial_measure_req ()->duration_; + Moment m = dynamic_cast (tr_l)->duration_; String error = time_.try_set_partial_str (m); if (error.length_i ()) { @@ -80,7 +80,7 @@ Timing_translator::do_process_requests() else time_.setpartial (m); } - else if (tr_l->access_Barcheck_req()) + else if (dynamic_cast (tr_l)) { if (time_.whole_in_measure_) { @@ -92,15 +92,15 @@ Timing_translator::do_process_requests() } } - else if (tr_l->access_Cadenza_req ()) + else if (dynamic_cast (tr_l)) { - time_.set_cadenza (tr_l->access_Cadenza_req ()->on_b_); + time_.set_cadenza (dynamic_cast (tr_l)->on_b_); } - else if (tr_l->access_Measure_grouping_req ()) + else if (dynamic_cast (tr_l)) { default_grouping_ = - parse_grouping (tr_l->access_Measure_grouping_req ()->beat_i_arr_, - tr_l->access_Measure_grouping_req ()->elt_length_arr_); + parse_grouping (dynamic_cast (tr_l)->beat_i_arr_, + dynamic_cast (tr_l)->elt_length_arr_); } } diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 77d0f18b6e..5d9a3e31fb 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -88,7 +88,7 @@ Translator_group::removable_b() const { for (PCursor i (trans_p_list_.top ()); i.ok (); i++) { - if (i->access_Translator_group ()) + if (dynamic_cast (i.ptr ())) return false; } @@ -118,9 +118,9 @@ Translator_group::path_to_acceptable_translator (String type) const for (int i=0; i < accepts_str_arr_.size (); i++) { Translator *t = output_def_l ()->find_translator_l (accepts_str_arr_[i]); - if (!t || !t->access_Translator_group ()) + if (!t || !dynamic_cast (t)) continue; - accepted_arr.push (t->access_Translator_group ()); + accepted_arr.push (dynamic_cast (t)); } @@ -166,7 +166,7 @@ Translator_group::find_create_translator_l (String n, String id) // start at 1. The first one (index 0) will be us. for (int i=0; i < path.size (); i++) { - Translator_group * new_group = path[i]->clone ()->access_Translator_group (); + Translator_group * new_group = dynamic_cast(path[i]->clone ()); current->add_translator (new_group); current = new_group; } @@ -221,8 +221,8 @@ Translator_group::group_l_arr () const Link_array groups; for (PCursor i (trans_p_list_.top ()); i.ok (); i++) { - if (i->access_Translator_group ()) - groups.push (i->access_Translator_group ()); + if (dynamic_cast (i.ptr ())) + groups.push (dynamic_cast (i.ptr ())); } return groups; } @@ -233,7 +233,7 @@ Translator_group::nongroup_l_arr () const Link_array groups; for (PCursor i (trans_p_list_.top ()); i.ok (); i++) { - if (!i->access_Translator_group ()) + if (!dynamic_cast (i.ptr ())) groups.push (i.ptr ()); } return groups; @@ -300,7 +300,7 @@ Translator_group::get_default_interpreter() warning (_f ("can't find or create `%s\'", accepts_str_arr_[0])); t = this; } - Translator_group * g= t->clone ()->access_Translator_group (); + Translator_group * g= dynamic_cast (t->clone ()); add_translator (g); if (!g->is_bottom_translator_b ()) diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index a34c05299c..0979341e1a 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,15 +1,15 @@ Begin3 Titel: LilyPond -Versie: 1.0.17 -Inschrijf datum: 19OCT98 +Versie: 1.1.0 +Inschrijf datum: 23OCT98 Beschrijving: @FLAPTEKST@ Trefwoorden: muziek typezetten midi notatie Auteur: hanwen@stack.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 770k lilypond-1.0.17.tar.gz + 770k lilypond-1.1.0.tar.gz Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.0.17.tar.gz + 770k lilypond-1.1.0.tar.gz Copi-eer voorwaarden: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 6f9269827a..2d97b83a71 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 1.0.17 -Entered-date: 19OCT98 +Version: 1.1.0 +Entered-date: 23OCT98 Description: LilyPond is the GNU Project music typesetter. This program can print beautiful sheet music from a music definition file. It can also play @@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 770k lilypond-1.0.17.tar.gz + 770k lilypond-1.1.0.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.0.17.tar.gz + 770k lilypond-1.1.0.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 0464aff56a..34f9660243 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.0.17 +Version: 1.1.0 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.0.17.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.0.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/make/stepmake.make b/make/stepmake.make index 44f7d3e405..07d293704e 100644 --- a/make/stepmake.make +++ b/make/stepmake.make @@ -23,7 +23,7 @@ else outdir=out endif -stepdir = $(depth)/$(stepmake)/stepmake +stepdir = $(stepmake)/stepmake STEPMAKE_TEMPLATES := generic $(STEPMAKE_TEMPLATES) LOCALSTEPMAKE_TEMPLATES:= generic $(LOCALSTEPMAKE_TEMPLATES) diff --git a/make/toplevel.make.in b/make/toplevel.make.in index d41d58a405..628a2a9f78 100644 --- a/make/toplevel.make.in +++ b/make/toplevel.make.in @@ -15,7 +15,7 @@ SUBDIRS = scripts buildscripts flower lib lily mf mi2mu po debian \ SCRIPTS = configure aclocal.m4 README_FILES = BUGS DEDICATION ANNOUNCE-0.1 ANNOUNCEMENT \ - COPYING NEWS-0.1 NEWS-0.0 NEWS TODO + COPYING NEWS-0.1 NEWS-1.0 NEWS-0.0 NEWS TODO README_TXT_FILES = README.txt AUTHORS.txt INSTALL.txt PATCHES.txt IN_FILES := $(wildcard *.in) EXTRA_DIST_FILES = dstreamrc mudela-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES) diff --git a/mf/GNUmakefile b/mf/GNUmakefile index dfc37de8c9..88c89cdeff 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -2,9 +2,9 @@ depth = .. -STEPMAKE_TEMPLATES=metafont metapost +STEPMAKE_TEMPLATES=metafont metapost install install-out -EXTRA_DIST_FILES += TODO README feta.mp mfmp.ini +EXTRA_DIST_FILES += TODO README feta.mp mfplain.ini FET_FILES = $(wildcard feta[0-9]*.mf) @@ -19,34 +19,23 @@ ALL_GEN_FILES=$(LYTABLES) $(TEXTABLES) $(LOG_FILES) $(AFM_FILES) OUT_DIST_FILES += $(AFM_FILES) -include $(depth)/make/stepmake.make - -default: $(ALL_GEN_FILES) - - -$(outdir)/%.afm $(outdir)/%.ly $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log - $(PYTHON) $(buildscripts)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$( +% (c) 1997, 1998 Han-Wen Nienhuys % Jan Nieuwenhuizen % % these macros help create ascii logging output diff --git a/mf/feta-beum.mf b/mf/feta-beum.mf index 7097d68d3c..1288d6f20d 100644 --- a/mf/feta-beum.mf +++ b/mf/feta-beum.mf @@ -3,7 +3,7 @@ % % source file of LilyPond's pretty-but-neat music font % -% (c) 1997 Jan Nieuwenhuizen +% (c) 1997, 1998 Jan Nieuwenhuizen % mode_setup; diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index 8a48d4bfc7..6b3e9890ba 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -3,7 +3,7 @@ % % source file of LilyPond's pretty-but-neat music font % -% (c) 1997 Jan Nieuwenhuizen +% (c) 1997, 1998 Jan Nieuwenhuizen % & Han-Wen Nienhuys % diff --git a/mf/feta-braces16.mf b/mf/feta-braces16.mf index c5748c1aba..60dc071186 100644 --- a/mf/feta-braces16.mf +++ b/mf/feta-braces16.mf @@ -4,7 +4,7 @@ % % source file of the Feta (Font-En-Tja) music font % -% (c) 1997 Han-Wen Nienhuys +% (c) 1997, 1998 Han-Wen Nienhuys % font_identifier:="feta-braces16"; diff --git a/mf/feta-braces20.mf b/mf/feta-braces20.mf index 5ee256430f..9aae3d5379 100644 --- a/mf/feta-braces20.mf +++ b/mf/feta-braces20.mf @@ -3,7 +3,7 @@ % % source file of the Feta (Font-En-Tja) music font % -% (c) 1997 Han-Wen Nienhuys +% (c) 1997, 1998 Han-Wen Nienhuys % font_identifier:="feta-braces20"; diff --git a/mf/feta-eindelijk.mf b/mf/feta-eindelijk.mf index 0670ea351b..f3c26b669b 100644 --- a/mf/feta-eindelijk.mf +++ b/mf/feta-eindelijk.mf @@ -1,6 +1,10 @@ -% eindelijk.mf -% LilyPond's own rest(s) - +% feta-eindelijk.mf -- implement rest symbols +% +% part of LilyPond's pretty-but-neat music font +% +% source file of the Feta (not the Font-En-Tja) music font +% +% (c) 1997, 1998 Jan Nieuwenhuizen fet_begingroup("rests"); diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 6b3bdda090..41729fe324 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -4,7 +4,7 @@ % source file of the Feta (defintively not an abbreviation for Font-En-Tja) % music font % -% (c) 1997 Han-Wen Nienhuys +% (c) 1997, 1998 Han-Wen Nienhuys % diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf index cccaef43fd..2e846acb43 100644 --- a/mf/feta-klef.mf +++ b/mf/feta-klef.mf @@ -1,14 +1,13 @@ -% % feta-klef.mf -- implement Clefs % -% source file of the Feta (Font-En-Tja) music font +% part of LilyPond's pretty-but-neat music font +% +% source file of the Feta (not the Font-En-Tja) music font % -% (c) 1997 Han-Wen Nienhuys , +% (c) 1997, 1998 Han-Wen Nienhuys , % Jan Nieuwenhuizen - - fet_begingroup("clefs"); % diff --git a/mf/feta-nummer.mf b/mf/feta-nummer.mf index c35ee4c2f2..66a4649ac1 100644 --- a/mf/feta-nummer.mf +++ b/mf/feta-nummer.mf @@ -1,5 +1,10 @@ -% feta-nummer.mf +% feta-nummer.mf -- implement bold Orator numerals +% % part of LilyPond's pretty-but-neat music font +% +% source file of the Feta (not the Font-En-Tja) music font +% +% (c) 1997, 1998 Jan Nieuwenhuizen fet_begingroup("nummer") code := 47; diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index 7257a45277..2c314efb6e 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -4,7 +4,7 @@ % source file of the Feta (defintively not an abbreviation for Font-En-Tja) % music font % -% (c) 1997 Han-Wen Nienhuys +% (c) 1997, 1998 Han-Wen Nienhuys % Jan Nieuwenhuizen % @@ -58,6 +58,37 @@ fet_beginchar("fermata down", "dfermata", "dfermata") y_mirror_char; fet_endchar; +% +% Thumbs are used in cello music. +% TODO : thumbs should look like the finger-font and should be placed in +% the same way in the score. +% + +fet_beginchar("Thumb", "thumb", "thumb") + save thin, height, width, thick; + height# = 5/4 width#; + height# = interline#; + thin = 1.2 stafflinethickness; + thick = 1.4 thin; + set_char_box(width#/2, width#/2, height#/2, height#/2); + + penpos1(thick, 0); + penpos2(thin, 90); + z1r = (w, 0); + z2r = (0, h); + penlabels(1,2); + penstroke z1e{up} .. {left}z2e; + addto currentpicture also currentpicture xscaled -1; + addto currentpicture also currentpicture yscaled -1; + + pickup pencircle scaled thin; + save x,y; + z3r = (0, -h); + z4 = (0, -2h); + penlabels(3,4); + draw z3r -- z4; +fet_endchar; + % % FIXME: rounded endings @@ -179,6 +210,7 @@ fet_beginchar("marcato down", "dmarcato", "dmarcato") xy_mirror_char; fet_endchar; + % % used in french horn music todo % diff --git a/mf/feta-sleur.mf b/mf/feta-sleur.mf index e612937728..6d98d4dfc7 100644 --- a/mf/feta-sleur.mf +++ b/mf/feta-sleur.mf @@ -3,7 +3,7 @@ % % source file of LilyPond's pretty-but-neat music font % -% (c) 1997 Jan Nieuwenhuizen +% (c) 1997, 1998 Jan Nieuwenhuizen % & Han-Wen Nienhuys % % see Documentation/fonts.tex diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf index 7da404d0c7..b9c9a0ebbe 100644 --- a/mf/feta-toevallig.mf +++ b/mf/feta-toevallig.mf @@ -3,7 +3,7 @@ % % source file of the Feta (Font-En-Tja) music font % -% (c) 1997 Han-Wen Nienhuys +% (c) 1997, 1998 Han-Wen Nienhuys % diff --git a/mf/mfmp.ini b/mf/mfmp.ini deleted file mode 100644 index 1b0e00c26b..0000000000 --- a/mf/mfmp.ini +++ /dev/null @@ -1,4 +0,0 @@ -\input mfplain -\input modes -\dump - diff --git a/mf/mfplain.ini b/mf/mfplain.ini new file mode 100644 index 0000000000..7ad4dfd71e --- /dev/null +++ b/mf/mfplain.ini @@ -0,0 +1,3 @@ +\input plain.mf +\input modes.mf +\dump mfplain diff --git a/mf/out/feta11.afm b/mf/out/feta11.afm index 7e8f6f28d6..c95d407d33 100644 --- a/mf/out/feta11.afm +++ b/mf/out/feta11.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -1512.51 3632.84 1512.51 ; C 28; N balls-2l; B -908.22 -275.02 4541.06 275.02 ; C 29; N scripts-ufermata; B -3643.77 -206.27 3643.77 3987.55 ; C 30; N scripts-dfermata; B -3643.77 -3987.55 3643.77 206.27 ; -C 31; N scripts-sforzato; B -2474.99 -1375.00 2474.99 1375.00 ; -C 32; N scripts-staccato; B -412.54 -412.54 412.54 412.54 ; -C 33; N scripts-ustaccatissimo; B -550.05 -200.00 550.05 2750.06 ; -C 34; N scripts-dstaccatissimo; B -550.05 -2750.06 550.05 200.00 ; -C 35; N scripts-tenuto; B -1650.02 -192.52 1650.02 192.52 ; -C 36; N scripts-umarcato; B -1375.00 0.00 1375.00 3025.02 ; -C 37; N scripts-dmarcato; B -1375.00 -3025.02 1375.00 0.00 ; -C 38; N scripts-open; B -1100.00 -1375.00 1100.00 1375.00 ; -C 39; N scripts-stopped; B -1512.51 -1512.51 1512.51 1512.51 ; -C 40; N scripts-upbow; B -1787.50 0.00 1787.50 5720.05 ; -C 41; N scripts-downbow; B -2062.50 0.00 2062.50 3666.66 ; -C 42; N scripts-reverseturn; B -3007.81 -1455.89 3007.81 1455.89 ; -C 43; N scripts-turn; B -3007.81 -1455.89 3007.81 1455.89 ; -C 44; N scripts-trill; B -2750.00 0.00 2750.00 6187.50 ; -C 45; N scripts-upedalheel; B -1375.00 -1375.00 1375.00 1833.33 ; -C 46; N scripts-dpedalheel; B -1375.00 -1833.33 1375.00 1375.00 ; -C 47; N scripts-upedaltoe; B -1375.00 0.00 1375.00 4125.00 ; -C 48; N scripts-dpedaltoe; B -1375.00 -4125.00 1375.00 0.00 ; -C 49; N scripts-flageolet; B -1466.67 -1466.67 1466.67 1466.67 ; -C 50; N scripts-trilelement; B -1833.33 -1375.00 718.64 1375.00 ; -C 51; N scripts-prall; B -3109.31 -1375.00 3109.31 1375.00 ; -C 52; N scripts-mordent; B -3109.31 -1375.00 3109.31 1375.00 ; -C 53; N scripts-prallprall; B -4385.30 -1375.00 4385.30 1375.00 ; -C 54; N scripts-prallmordent; B -4385.30 -1375.00 4385.30 1375.00 ; -C 55; N scripts-upprall; B -4385.30 -1375.00 4385.30 1375.00 ; -C 56; N scripts-downprall; B -4385.30 -1375.00 4385.30 1375.00 ; -C 57; N flags-u3; B -137.51 -8428.77 3393.31 137.51 ; -C 58; N flags-u4; B -137.51 -9803.77 3393.31 137.51 ; -C 59; N flags-u5; B -137.51 -11866.27 3393.31 137.51 ; -C 60; N flags-u6; B -137.51 -14616.27 3393.31 137.51 ; -C 61; N flags-d3; B -137.51 -137.51 3755.11 8016.30 ; -C 62; N flags-d4; B -137.51 -137.51 3755.11 8428.77 ; -C 63; N flags-d5; B -137.51 -137.51 3755.11 10766.30 ; -C 64; N flags-d6; B -137.51 -137.51 3755.11 12141.30 ; -C 65; N clefs-alto; B -2750.00 -5500.00 10236.10 5500.00 ; -C 66; N clefs-alto_change; B -2200.01 -4400.02 8188.93 4400.02 ; -C 67; N clefs-bass; B -1375.00 -6875.00 9900.02 2750.00 ; -C 68; N clefs-bass_change; B -1100.02 -5500.03 7920.04 2200.01 ; -C 69; N clefs-violin; B -2396.44 -8250.00 10277.13 13750.00 ; -C 70; N clefs-violin_change; B -2082.15 -6600.04 8056.75 11000.06 ; -C 71; N timesig-C4/4; B -4950.01 -2750.00 4674.99 2750.00 ; -C 72; N timesig-C2/2; B -4950.01 -3849.99 4674.99 3849.99 ; -C 73; N timesig-old4/4; B -4812.50 -2062.50 4812.50 2062.50 ; -C 74; N timesig-old2/2; B -4812.50 -2750.00 4812.50 2750.00 ; -C 75; N timesig-old3/2; B -4812.50 -2062.50 4812.50 2062.50 ; -C 76; N timesig-old6/4; B -4812.50 -3437.50 4812.50 3437.50 ; -C 77; N timesig-old9/4; B -4812.50 -3437.50 4812.50 3437.50 ; +C 31; N scripts-thumb; B -1100.00 -1375.00 1100.00 1375.00 ; +C 32; N scripts-sforzato; B -2474.99 -1375.00 2474.99 1375.00 ; +C 33; N scripts-staccato; B -412.54 -412.54 412.54 412.54 ; +C 34; N scripts-ustaccatissimo; B -550.05 -200.00 550.05 2750.06 ; +C 35; N scripts-dstaccatissimo; B -550.05 -2750.06 550.05 200.00 ; +C 36; N scripts-tenuto; B -1650.02 -192.52 1650.02 192.52 ; +C 37; N scripts-umarcato; B -1375.00 0.00 1375.00 3025.02 ; +C 38; N scripts-dmarcato; B -1375.00 -3025.02 1375.00 0.00 ; +C 39; N scripts-open; B -1100.00 -1375.00 1100.00 1375.00 ; +C 40; N scripts-stopped; B -1512.51 -1512.51 1512.51 1512.51 ; +C 41; N scripts-upbow; B -1787.50 0.00 1787.50 5720.05 ; +C 42; N scripts-downbow; B -2062.50 0.00 2062.50 3666.66 ; +C 43; N scripts-reverseturn; B -3007.81 -1455.89 3007.81 1455.89 ; +C 44; N scripts-turn; B -3007.81 -1455.89 3007.81 1455.89 ; +C 45; N scripts-trill; B -2750.00 0.00 2750.00 6187.50 ; +C 46; N scripts-upedalheel; B -1375.00 -1375.00 1375.00 1833.33 ; +C 47; N scripts-dpedalheel; B -1375.00 -1833.33 1375.00 1375.00 ; +C 48; N scripts-upedaltoe; B -1375.00 0.00 1375.00 4125.00 ; +C 49; N scripts-dpedaltoe; B -1375.00 -4125.00 1375.00 0.00 ; +C 50; N scripts-flageolet; B -1466.67 -1466.67 1466.67 1466.67 ; +C 51; N scripts-trilelement; B -1833.33 -1375.00 718.64 1375.00 ; +C 52; N scripts-prall; B -3109.31 -1375.00 3109.31 1375.00 ; +C 53; N scripts-mordent; B -3109.31 -1375.00 3109.31 1375.00 ; +C 54; N scripts-prallprall; B -4385.30 -1375.00 4385.30 1375.00 ; +C 55; N scripts-prallmordent; B -4385.30 -1375.00 4385.30 1375.00 ; +C 56; N scripts-upprall; B -4385.30 -1375.00 4385.30 1375.00 ; +C 57; N scripts-downprall; B -4385.30 -1375.00 4385.30 1375.00 ; +C 58; N flags-u3; B -137.51 -8428.77 3393.31 137.51 ; +C 59; N flags-u4; B -137.51 -9803.77 3393.31 137.51 ; +C 60; N flags-u5; B -137.51 -11866.27 3393.31 137.51 ; +C 61; N flags-u6; B -137.51 -14616.27 3393.31 137.51 ; +C 62; N flags-d3; B -137.51 -137.51 3755.11 8016.30 ; +C 63; N flags-d4; B -137.51 -137.51 3755.11 8428.77 ; +C 64; N flags-d5; B -137.51 -137.51 3755.11 10766.30 ; +C 65; N flags-d6; B -137.51 -137.51 3755.11 12141.30 ; +C 66; N clefs-alto; B -2750.00 -5500.00 10236.10 5500.00 ; +C 67; N clefs-alto_change; B -2200.01 -4400.02 8188.93 4400.02 ; +C 68; N clefs-bass; B -1375.00 -6875.00 9900.02 2750.00 ; +C 69; N clefs-bass_change; B -1100.02 -5500.03 7920.04 2200.01 ; +C 70; N clefs-violin; B -2396.44 -8250.00 10277.13 13750.00 ; +C 71; N clefs-violin_change; B -2082.15 -6600.04 8056.75 11000.06 ; +C 72; N timesig-C4/4; B -4950.01 -2750.00 4674.99 2750.00 ; +C 73; N timesig-C2/2; B -4950.01 -3849.99 4674.99 3849.99 ; +C 74; N timesig-old4/4; B -4812.50 -2062.50 4812.50 2062.50 ; +C 75; N timesig-old2/2; B -4812.50 -2750.00 4812.50 2750.00 ; +C 76; N timesig-old3/2; B -4812.50 -2062.50 4812.50 2062.50 ; +C 77; N timesig-old6/4; B -4812.50 -3437.50 4812.50 3437.50 ; +C 78; N timesig-old9/4; B -4812.50 -3437.50 4812.50 3437.50 ; EndCharMetrics EndFontMetrics diff --git a/mf/out/feta13.afm b/mf/out/feta13.afm index 7679a06b19..328de318be 100644 --- a/mf/out/feta13.afm +++ b/mf/out/feta13.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -1787.52 4293.33 1787.52 ; C 28; N balls-2l; B -1073.33 -325.03 5366.67 325.03 ; C 29; N scripts-ufermata; B -4306.27 -243.77 4306.27 4712.55 ; C 30; N scripts-dfermata; B -4306.27 -4712.55 4306.27 243.77 ; -C 31; N scripts-sforzato; B -2924.99 -1625.00 2924.99 1625.00 ; -C 32; N scripts-staccato; B -487.55 -487.55 487.55 487.55 ; -C 33; N scripts-ustaccatissimo; B -650.05 -200.00 650.05 3250.06 ; -C 34; N scripts-dstaccatissimo; B -650.05 -3250.06 650.05 200.00 ; -C 35; N scripts-tenuto; B -1950.03 -227.52 1950.03 227.52 ; -C 36; N scripts-umarcato; B -1625.00 0.00 1625.00 3575.03 ; -C 37; N scripts-dmarcato; B -1625.00 -3575.03 1625.00 0.00 ; -C 38; N scripts-open; B -1300.00 -1625.00 1300.00 1625.00 ; -C 39; N scripts-stopped; B -1787.52 -1787.52 1787.52 1787.52 ; -C 40; N scripts-upbow; B -2112.50 0.00 2112.50 6760.04 ; -C 41; N scripts-downbow; B -2437.50 0.00 2437.50 4333.31 ; -C 42; N scripts-reverseturn; B -3554.69 -1720.60 3554.69 1720.60 ; -C 43; N scripts-turn; B -3554.69 -1720.60 3554.69 1720.60 ; -C 44; N scripts-trill; B -3250.00 0.00 3250.00 7312.50 ; -C 45; N scripts-upedalheel; B -1625.00 -1625.00 1625.00 2166.67 ; -C 46; N scripts-dpedalheel; B -1625.00 -2166.67 1625.00 1625.00 ; -C 47; N scripts-upedaltoe; B -1625.00 0.00 1625.00 4875.00 ; -C 48; N scripts-dpedaltoe; B -1625.00 -4875.00 1625.00 0.00 ; -C 49; N scripts-flageolet; B -1733.34 -1733.34 1733.34 1733.34 ; -C 50; N scripts-trilelement; B -2166.67 -1625.00 849.30 1625.00 ; -C 51; N scripts-prall; B -3674.65 -1625.00 3674.65 1625.00 ; -C 52; N scripts-mordent; B -3674.65 -1625.00 3674.65 1625.00 ; -C 53; N scripts-prallprall; B -5182.63 -1625.00 5182.63 1625.00 ; -C 54; N scripts-prallmordent; B -5182.63 -1625.00 5182.63 1625.00 ; -C 55; N scripts-upprall; B -5182.63 -1625.00 5182.63 1625.00 ; -C 56; N scripts-downprall; B -5182.63 -1625.00 5182.63 1625.00 ; -C 57; N flags-u3; B -162.52 -9961.27 4010.27 162.52 ; -C 58; N flags-u4; B -162.52 -11586.27 4010.27 162.52 ; -C 59; N flags-u5; B -162.52 -14023.77 4010.27 162.52 ; -C 60; N flags-u6; B -162.52 -17273.77 4010.27 162.52 ; -C 61; N flags-d3; B -162.52 -162.52 4437.84 9473.80 ; -C 62; N flags-d4; B -162.52 -162.52 4437.84 9961.27 ; -C 63; N flags-d5; B -162.52 -162.52 4437.84 12723.80 ; -C 64; N flags-d6; B -162.52 -162.52 4437.84 14348.80 ; -C 65; N clefs-alto; B -3250.00 -6500.00 12097.24 6500.00 ; -C 66; N clefs-alto_change; B -2600.00 -5200.01 9677.81 5200.01 ; -C 67; N clefs-bass; B -1625.00 -8125.00 11700.03 3250.00 ; -C 68; N clefs-bass_change; B -1300.02 -6500.02 9360.02 2600.00 ; -C 69; N clefs-violin; B -2832.14 -9750.00 12145.70 16250.00 ; -C 70; N clefs-violin_change; B -2460.72 -7800.02 9521.58 13000.03 ; -C 71; N timesig-C4/4; B -5850.00 -3250.00 5525.00 3250.00 ; -C 72; N timesig-C2/2; B -5850.00 -4549.99 5525.00 4549.99 ; -C 73; N timesig-old4/4; B -5687.50 -2437.50 5687.50 2437.50 ; -C 74; N timesig-old2/2; B -5687.50 -3250.00 5687.50 3250.00 ; -C 75; N timesig-old3/2; B -5687.50 -2437.50 5687.50 2437.50 ; -C 76; N timesig-old6/4; B -5687.50 -4062.50 5687.50 4062.50 ; -C 77; N timesig-old9/4; B -5687.50 -4062.50 5687.50 4062.50 ; +C 31; N scripts-thumb; B -1300.00 -1625.00 1300.00 1625.00 ; +C 32; N scripts-sforzato; B -2924.99 -1625.00 2924.99 1625.00 ; +C 33; N scripts-staccato; B -487.55 -487.55 487.55 487.55 ; +C 34; N scripts-ustaccatissimo; B -650.05 -200.00 650.05 3250.06 ; +C 35; N scripts-dstaccatissimo; B -650.05 -3250.06 650.05 200.00 ; +C 36; N scripts-tenuto; B -1950.03 -227.52 1950.03 227.52 ; +C 37; N scripts-umarcato; B -1625.00 0.00 1625.00 3575.03 ; +C 38; N scripts-dmarcato; B -1625.00 -3575.03 1625.00 0.00 ; +C 39; N scripts-open; B -1300.00 -1625.00 1300.00 1625.00 ; +C 40; N scripts-stopped; B -1787.52 -1787.52 1787.52 1787.52 ; +C 41; N scripts-upbow; B -2112.50 0.00 2112.50 6760.04 ; +C 42; N scripts-downbow; B -2437.50 0.00 2437.50 4333.31 ; +C 43; N scripts-reverseturn; B -3554.69 -1720.60 3554.69 1720.60 ; +C 44; N scripts-turn; B -3554.69 -1720.60 3554.69 1720.60 ; +C 45; N scripts-trill; B -3250.00 0.00 3250.00 7312.50 ; +C 46; N scripts-upedalheel; B -1625.00 -1625.00 1625.00 2166.67 ; +C 47; N scripts-dpedalheel; B -1625.00 -2166.67 1625.00 1625.00 ; +C 48; N scripts-upedaltoe; B -1625.00 0.00 1625.00 4875.00 ; +C 49; N scripts-dpedaltoe; B -1625.00 -4875.00 1625.00 0.00 ; +C 50; N scripts-flageolet; B -1733.34 -1733.34 1733.34 1733.34 ; +C 51; N scripts-trilelement; B -2166.67 -1625.00 849.30 1625.00 ; +C 52; N scripts-prall; B -3674.65 -1625.00 3674.65 1625.00 ; +C 53; N scripts-mordent; B -3674.65 -1625.00 3674.65 1625.00 ; +C 54; N scripts-prallprall; B -5182.63 -1625.00 5182.63 1625.00 ; +C 55; N scripts-prallmordent; B -5182.63 -1625.00 5182.63 1625.00 ; +C 56; N scripts-upprall; B -5182.63 -1625.00 5182.63 1625.00 ; +C 57; N scripts-downprall; B -5182.63 -1625.00 5182.63 1625.00 ; +C 58; N flags-u3; B -162.52 -9961.27 4010.27 162.52 ; +C 59; N flags-u4; B -162.52 -11586.27 4010.27 162.52 ; +C 60; N flags-u5; B -162.52 -14023.77 4010.27 162.52 ; +C 61; N flags-u6; B -162.52 -17273.77 4010.27 162.52 ; +C 62; N flags-d3; B -162.52 -162.52 4437.84 9473.80 ; +C 63; N flags-d4; B -162.52 -162.52 4437.84 9961.27 ; +C 64; N flags-d5; B -162.52 -162.52 4437.84 12723.80 ; +C 65; N flags-d6; B -162.52 -162.52 4437.84 14348.80 ; +C 66; N clefs-alto; B -3250.00 -6500.00 12097.24 6500.00 ; +C 67; N clefs-alto_change; B -2600.00 -5200.01 9677.81 5200.01 ; +C 68; N clefs-bass; B -1625.00 -8125.00 11700.03 3250.00 ; +C 69; N clefs-bass_change; B -1300.02 -6500.02 9360.02 2600.00 ; +C 70; N clefs-violin; B -2832.14 -9750.00 12145.70 16250.00 ; +C 71; N clefs-violin_change; B -2460.72 -7800.02 9521.58 13000.03 ; +C 72; N timesig-C4/4; B -5850.00 -3250.00 5525.00 3250.00 ; +C 73; N timesig-C2/2; B -5850.00 -4549.99 5525.00 4549.99 ; +C 74; N timesig-old4/4; B -5687.50 -2437.50 5687.50 2437.50 ; +C 75; N timesig-old2/2; B -5687.50 -3250.00 5687.50 3250.00 ; +C 76; N timesig-old3/2; B -5687.50 -2437.50 5687.50 2437.50 ; +C 77; N timesig-old6/4; B -5687.50 -4062.50 5687.50 4062.50 ; +C 78; N timesig-old9/4; B -5687.50 -4062.50 5687.50 4062.50 ; EndCharMetrics EndFontMetrics diff --git a/mf/out/feta16.afm b/mf/out/feta16.afm index f1562888fd..3bf340009e 100644 --- a/mf/out/feta16.afm +++ b/mf/out/feta16.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -2200.01 5284.09 2200.01 ; C 28; N balls-2l; B -1321.03 -400.02 6605.12 400.02 ; C 29; N scripts-ufermata; B -5300.02 -300.02 5300.02 5800.05 ; C 30; N scripts-dfermata; B -5300.02 -5800.05 5300.02 300.02 ; -C 31; N scripts-sforzato; B -3599.98 -2000.00 3599.98 2000.00 ; -C 32; N scripts-staccato; B -600.04 -600.04 600.04 600.04 ; -C 33; N scripts-ustaccatissimo; B -800.05 -200.00 800.05 4000.06 ; -C 34; N scripts-dstaccatissimo; B -800.05 -4000.06 800.05 200.00 ; -C 35; N scripts-tenuto; B -2400.02 -280.01 2400.02 280.01 ; -C 36; N scripts-umarcato; B -2000.00 0.00 2000.00 4400.02 ; -C 37; N scripts-dmarcato; B -2000.00 -4400.02 2000.00 0.00 ; -C 38; N scripts-open; B -1600.00 -2000.00 1600.00 2000.00 ; -C 39; N scripts-stopped; B -2200.01 -2200.01 2200.01 2200.01 ; -C 40; N scripts-upbow; B -2600.00 0.00 2600.00 8320.05 ; -C 41; N scripts-downbow; B -3000.00 0.00 3000.00 5333.31 ; -C 42; N scripts-reverseturn; B -4375.00 -2117.65 4375.00 2117.65 ; -C 43; N scripts-turn; B -4375.00 -2117.65 4375.00 2117.65 ; -C 44; N scripts-trill; B -4000.00 0.00 4000.00 9000.00 ; -C 45; N scripts-upedalheel; B -2000.00 -2000.00 2000.00 2666.67 ; -C 46; N scripts-dpedalheel; B -2000.00 -2666.67 2000.00 2000.00 ; -C 47; N scripts-upedaltoe; B -2000.00 0.00 2000.00 6000.00 ; -C 48; N scripts-dpedaltoe; B -2000.00 -6000.00 2000.00 0.00 ; -C 49; N scripts-flageolet; B -2133.33 -2133.33 2133.33 2133.33 ; -C 50; N scripts-trilelement; B -2666.67 -2000.00 1045.30 2000.00 ; -C 51; N scripts-prall; B -4522.66 -2000.00 4522.66 2000.00 ; -C 52; N scripts-mordent; B -4522.66 -2000.00 4522.66 2000.00 ; -C 53; N scripts-prallprall; B -6378.65 -2000.00 6378.65 2000.00 ; -C 54; N scripts-prallmordent; B -6378.65 -2000.00 6378.65 2000.00 ; -C 55; N scripts-upprall; B -6378.65 -2000.00 6378.65 2000.00 ; -C 56; N scripts-downprall; B -6378.65 -2000.00 6378.65 2000.00 ; -C 57; N flags-u3; B -200.01 -12260.03 4935.68 200.01 ; -C 58; N flags-u4; B -200.01 -14260.03 4935.68 200.01 ; -C 59; N flags-u5; B -200.01 -17260.03 4935.68 200.01 ; -C 60; N flags-u6; B -200.01 -21260.03 4935.68 200.01 ; -C 61; N flags-d3; B -200.01 -200.01 5461.91 11660.05 ; -C 62; N flags-d4; B -200.01 -200.01 5461.91 12260.03 ; -C 63; N flags-d5; B -200.01 -200.01 5461.91 15660.05 ; -C 64; N flags-d6; B -200.01 -200.01 5461.91 17660.05 ; -C 65; N clefs-alto; B -4000.00 -8000.00 14888.90 8000.00 ; -C 66; N clefs-alto_change; B -3200.01 -6400.02 11911.18 6400.02 ; -C 67; N clefs-bass; B -2000.00 -10000.00 14400.02 4000.00 ; -C 68; N clefs-bass_change; B -1600.04 -8000.03 11520.03 3200.01 ; -C 69; N clefs-violin; B -3485.72 -12000.00 14948.55 20000.00 ; -C 70; N clefs-violin_change; B -3028.58 -9600.04 11718.89 16000.06 ; -C 71; N timesig-C4/4; B -7200.01 -4000.00 6799.99 4000.00 ; -C 72; N timesig-C2/2; B -7200.01 -5599.98 6799.99 5599.98 ; -C 73; N timesig-old4/4; B -7000.00 -3000.00 7000.00 3000.00 ; -C 74; N timesig-old2/2; B -7000.00 -4000.00 7000.00 4000.00 ; -C 75; N timesig-old3/2; B -7000.00 -3000.00 7000.00 3000.00 ; -C 76; N timesig-old6/4; B -7000.00 -5000.00 7000.00 5000.00 ; -C 77; N timesig-old9/4; B -7000.00 -5000.00 7000.00 5000.00 ; +C 31; N scripts-thumb; B -1600.00 -2000.00 1600.00 2000.00 ; +C 32; N scripts-sforzato; B -3599.98 -2000.00 3599.98 2000.00 ; +C 33; N scripts-staccato; B -600.04 -600.04 600.04 600.04 ; +C 34; N scripts-ustaccatissimo; B -800.05 -200.00 800.05 4000.06 ; +C 35; N scripts-dstaccatissimo; B -800.05 -4000.06 800.05 200.00 ; +C 36; N scripts-tenuto; B -2400.02 -280.01 2400.02 280.01 ; +C 37; N scripts-umarcato; B -2000.00 0.00 2000.00 4400.02 ; +C 38; N scripts-dmarcato; B -2000.00 -4400.02 2000.00 0.00 ; +C 39; N scripts-open; B -1600.00 -2000.00 1600.00 2000.00 ; +C 40; N scripts-stopped; B -2200.01 -2200.01 2200.01 2200.01 ; +C 41; N scripts-upbow; B -2600.00 0.00 2600.00 8320.05 ; +C 42; N scripts-downbow; B -3000.00 0.00 3000.00 5333.31 ; +C 43; N scripts-reverseturn; B -4375.00 -2117.65 4375.00 2117.65 ; +C 44; N scripts-turn; B -4375.00 -2117.65 4375.00 2117.65 ; +C 45; N scripts-trill; B -4000.00 0.00 4000.00 9000.00 ; +C 46; N scripts-upedalheel; B -2000.00 -2000.00 2000.00 2666.67 ; +C 47; N scripts-dpedalheel; B -2000.00 -2666.67 2000.00 2000.00 ; +C 48; N scripts-upedaltoe; B -2000.00 0.00 2000.00 6000.00 ; +C 49; N scripts-dpedaltoe; B -2000.00 -6000.00 2000.00 0.00 ; +C 50; N scripts-flageolet; B -2133.33 -2133.33 2133.33 2133.33 ; +C 51; N scripts-trilelement; B -2666.67 -2000.00 1045.30 2000.00 ; +C 52; N scripts-prall; B -4522.66 -2000.00 4522.66 2000.00 ; +C 53; N scripts-mordent; B -4522.66 -2000.00 4522.66 2000.00 ; +C 54; N scripts-prallprall; B -6378.65 -2000.00 6378.65 2000.00 ; +C 55; N scripts-prallmordent; B -6378.65 -2000.00 6378.65 2000.00 ; +C 56; N scripts-upprall; B -6378.65 -2000.00 6378.65 2000.00 ; +C 57; N scripts-downprall; B -6378.65 -2000.00 6378.65 2000.00 ; +C 58; N flags-u3; B -200.01 -12260.03 4935.68 200.01 ; +C 59; N flags-u4; B -200.01 -14260.03 4935.68 200.01 ; +C 60; N flags-u5; B -200.01 -17260.03 4935.68 200.01 ; +C 61; N flags-u6; B -200.01 -21260.03 4935.68 200.01 ; +C 62; N flags-d3; B -200.01 -200.01 5461.91 11660.05 ; +C 63; N flags-d4; B -200.01 -200.01 5461.91 12260.03 ; +C 64; N flags-d5; B -200.01 -200.01 5461.91 15660.05 ; +C 65; N flags-d6; B -200.01 -200.01 5461.91 17660.05 ; +C 66; N clefs-alto; B -4000.00 -8000.00 14888.90 8000.00 ; +C 67; N clefs-alto_change; B -3200.01 -6400.02 11911.18 6400.02 ; +C 68; N clefs-bass; B -2000.00 -10000.00 14400.02 4000.00 ; +C 69; N clefs-bass_change; B -1600.04 -8000.03 11520.03 3200.01 ; +C 70; N clefs-violin; B -3485.72 -12000.00 14948.55 20000.00 ; +C 71; N clefs-violin_change; B -3028.58 -9600.04 11718.89 16000.06 ; +C 72; N timesig-C4/4; B -7200.01 -4000.00 6799.99 4000.00 ; +C 73; N timesig-C2/2; B -7200.01 -5599.98 6799.99 5599.98 ; +C 74; N timesig-old4/4; B -7000.00 -3000.00 7000.00 3000.00 ; +C 75; N timesig-old2/2; B -7000.00 -4000.00 7000.00 4000.00 ; +C 76; N timesig-old3/2; B -7000.00 -3000.00 7000.00 3000.00 ; +C 77; N timesig-old6/4; B -7000.00 -5000.00 7000.00 5000.00 ; +C 78; N timesig-old9/4; B -7000.00 -5000.00 7000.00 5000.00 ; EndCharMetrics EndFontMetrics diff --git a/mf/out/feta19.afm b/mf/out/feta19.afm index e1f742fdbd..c3eb6c4ba8 100644 --- a/mf/out/feta19.afm +++ b/mf/out/feta19.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -2612.52 6274.89 2612.52 ; C 28; N balls-2l; B -1568.73 -475.04 7843.61 475.04 ; C 29; N scripts-ufermata; B -6293.78 -356.28 6293.78 6887.57 ; C 30; N scripts-dfermata; B -6293.78 -6887.57 6293.78 356.28 ; -C 31; N scripts-sforzato; B -4274.98 -2375.00 4274.98 2375.00 ; -C 32; N scripts-staccato; B -712.55 -712.55 712.55 712.55 ; -C 33; N scripts-ustaccatissimo; B -950.07 -200.00 950.07 4750.09 ; -C 34; N scripts-dstaccatissimo; B -950.07 -4750.09 950.07 200.00 ; -C 35; N scripts-tenuto; B -2850.04 -332.53 2850.04 332.53 ; -C 36; N scripts-umarcato; B -2375.00 0.00 2375.00 5225.04 ; -C 37; N scripts-dmarcato; B -2375.00 -5225.04 2375.00 0.00 ; -C 38; N scripts-open; B -1900.01 -2375.00 1900.01 2375.00 ; -C 39; N scripts-stopped; B -2612.52 -2612.52 2612.52 2612.52 ; -C 40; N scripts-upbow; B -3087.51 0.00 3087.51 9880.07 ; -C 41; N scripts-downbow; B -3562.50 0.00 3562.50 6333.31 ; -C 42; N scripts-reverseturn; B -5195.31 -2514.71 5195.31 2514.71 ; -C 43; N scripts-turn; B -5195.31 -2514.71 5195.31 2514.71 ; -C 44; N scripts-trill; B -4750.00 0.00 4750.00 10687.50 ; -C 45; N scripts-upedalheel; B -2375.00 -2375.00 2375.00 3166.67 ; -C 46; N scripts-dpedalheel; B -2375.00 -3166.67 2375.00 2375.00 ; -C 47; N scripts-upedaltoe; B -2375.00 0.00 2375.00 7125.00 ; -C 48; N scripts-dpedaltoe; B -2375.00 -7125.00 2375.00 0.00 ; -C 49; N scripts-flageolet; B -2533.34 -2533.34 2533.34 2533.34 ; -C 50; N scripts-trilelement; B -3166.67 -2375.00 1241.30 2375.00 ; -C 51; N scripts-prall; B -5370.65 -2375.00 5370.65 2375.00 ; -C 52; N scripts-mordent; B -5370.65 -2375.00 5370.65 2375.00 ; -C 53; N scripts-prallprall; B -7574.63 -2375.00 7574.63 2375.00 ; -C 54; N scripts-prallmordent; B -7574.63 -2375.00 7574.63 2375.00 ; -C 55; N scripts-upprall; B -7574.63 -2375.00 7574.63 2375.00 ; -C 56; N scripts-downprall; B -7574.63 -2375.00 7574.63 2375.00 ; -C 57; N flags-u3; B -237.52 -14558.78 5861.15 237.52 ; -C 58; N flags-u4; B -237.52 -16933.78 5861.15 237.52 ; -C 59; N flags-u5; B -237.52 -20496.28 5861.15 237.52 ; -C 60; N flags-u6; B -237.52 -25246.28 5861.15 237.52 ; -C 61; N flags-d3; B -237.52 -237.52 6486.07 13846.31 ; -C 62; N flags-d4; B -237.52 -237.52 6486.07 14558.78 ; -C 63; N flags-d5; B -237.52 -237.52 6486.07 18596.31 ; -C 64; N flags-d6; B -237.52 -237.52 6486.07 20971.31 ; -C 65; N clefs-alto; B -4750.00 -9500.00 17680.59 9500.00 ; -C 66; N clefs-alto_change; B -3800.02 -7600.04 14144.50 7600.04 ; -C 67; N clefs-bass; B -2375.00 -11875.00 17100.04 4750.00 ; -C 68; N clefs-bass_change; B -1900.04 -9500.05 13680.05 3800.02 ; -C 69; N clefs-violin; B -4139.30 -14250.00 17751.40 23750.00 ; -C 70; N clefs-violin_change; B -3596.45 -11400.05 13916.18 19000.09 ; -C 71; N timesig-C4/4; B -8550.02 -4750.00 8074.98 4750.00 ; -C 72; N timesig-C2/2; B -8550.02 -6649.98 8074.98 6649.98 ; -C 73; N timesig-old4/4; B -8312.50 -3562.50 8312.50 3562.50 ; -C 74; N timesig-old2/2; B -8312.50 -4750.00 8312.50 4750.00 ; -C 75; N timesig-old3/2; B -8312.50 -3562.50 8312.50 3562.50 ; -C 76; N timesig-old6/4; B -8312.50 -5937.50 8312.50 5937.50 ; -C 77; N timesig-old9/4; B -8312.50 -5937.50 8312.50 5937.50 ; +C 31; N scripts-thumb; B -1900.01 -2375.00 1900.01 2375.00 ; +C 32; N scripts-sforzato; B -4274.98 -2375.00 4274.98 2375.00 ; +C 33; N scripts-staccato; B -712.55 -712.55 712.55 712.55 ; +C 34; N scripts-ustaccatissimo; B -950.07 -200.00 950.07 4750.09 ; +C 35; N scripts-dstaccatissimo; B -950.07 -4750.09 950.07 200.00 ; +C 36; N scripts-tenuto; B -2850.04 -332.53 2850.04 332.53 ; +C 37; N scripts-umarcato; B -2375.00 0.00 2375.00 5225.04 ; +C 38; N scripts-dmarcato; B -2375.00 -5225.04 2375.00 0.00 ; +C 39; N scripts-open; B -1900.01 -2375.00 1900.01 2375.00 ; +C 40; N scripts-stopped; B -2612.52 -2612.52 2612.52 2612.52 ; +C 41; N scripts-upbow; B -3087.51 0.00 3087.51 9880.07 ; +C 42; N scripts-downbow; B -3562.50 0.00 3562.50 6333.31 ; +C 43; N scripts-reverseturn; B -5195.31 -2514.71 5195.31 2514.71 ; +C 44; N scripts-turn; B -5195.31 -2514.71 5195.31 2514.71 ; +C 45; N scripts-trill; B -4750.00 0.00 4750.00 10687.50 ; +C 46; N scripts-upedalheel; B -2375.00 -2375.00 2375.00 3166.67 ; +C 47; N scripts-dpedalheel; B -2375.00 -3166.67 2375.00 2375.00 ; +C 48; N scripts-upedaltoe; B -2375.00 0.00 2375.00 7125.00 ; +C 49; N scripts-dpedaltoe; B -2375.00 -7125.00 2375.00 0.00 ; +C 50; N scripts-flageolet; B -2533.34 -2533.34 2533.34 2533.34 ; +C 51; N scripts-trilelement; B -3166.67 -2375.00 1241.30 2375.00 ; +C 52; N scripts-prall; B -5370.65 -2375.00 5370.65 2375.00 ; +C 53; N scripts-mordent; B -5370.65 -2375.00 5370.65 2375.00 ; +C 54; N scripts-prallprall; B -7574.63 -2375.00 7574.63 2375.00 ; +C 55; N scripts-prallmordent; B -7574.63 -2375.00 7574.63 2375.00 ; +C 56; N scripts-upprall; B -7574.63 -2375.00 7574.63 2375.00 ; +C 57; N scripts-downprall; B -7574.63 -2375.00 7574.63 2375.00 ; +C 58; N flags-u3; B -237.52 -14558.78 5861.15 237.52 ; +C 59; N flags-u4; B -237.52 -16933.78 5861.15 237.52 ; +C 60; N flags-u5; B -237.52 -20496.28 5861.15 237.52 ; +C 61; N flags-u6; B -237.52 -25246.28 5861.15 237.52 ; +C 62; N flags-d3; B -237.52 -237.52 6486.07 13846.31 ; +C 63; N flags-d4; B -237.52 -237.52 6486.07 14558.78 ; +C 64; N flags-d5; B -237.52 -237.52 6486.07 18596.31 ; +C 65; N flags-d6; B -237.52 -237.52 6486.07 20971.31 ; +C 66; N clefs-alto; B -4750.00 -9500.00 17680.59 9500.00 ; +C 67; N clefs-alto_change; B -3800.02 -7600.04 14144.50 7600.04 ; +C 68; N clefs-bass; B -2375.00 -11875.00 17100.04 4750.00 ; +C 69; N clefs-bass_change; B -1900.04 -9500.05 13680.05 3800.02 ; +C 70; N clefs-violin; B -4139.30 -14250.00 17751.40 23750.00 ; +C 71; N clefs-violin_change; B -3596.45 -11400.05 13916.18 19000.09 ; +C 72; N timesig-C4/4; B -8550.02 -4750.00 8074.98 4750.00 ; +C 73; N timesig-C2/2; B -8550.02 -6649.98 8074.98 6649.98 ; +C 74; N timesig-old4/4; B -8312.50 -3562.50 8312.50 3562.50 ; +C 75; N timesig-old2/2; B -8312.50 -4750.00 8312.50 4750.00 ; +C 76; N timesig-old3/2; B -8312.50 -3562.50 8312.50 3562.50 ; +C 77; N timesig-old6/4; B -8312.50 -5937.50 8312.50 5937.50 ; +C 78; N timesig-old9/4; B -8312.50 -5937.50 8312.50 5937.50 ; EndCharMetrics EndFontMetrics diff --git a/mf/out/feta20.afm b/mf/out/feta20.afm index 7b7bb8be82..ce54077bb9 100644 --- a/mf/out/feta20.afm +++ b/mf/out/feta20.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -2750.02 6605.15 2750.02 ; C 28; N balls-2l; B -1651.29 -500.03 8256.44 500.03 ; C 29; N scripts-ufermata; B -6625.03 -375.03 6625.03 7250.06 ; C 30; N scripts-dfermata; B -6625.03 -7250.06 6625.03 375.03 ; -C 31; N scripts-sforzato; B -4499.97 -2500.00 4499.97 2500.00 ; -C 32; N scripts-staccato; B -750.05 -750.05 750.05 750.05 ; -C 33; N scripts-ustaccatissimo; B -1000.06 -200.00 1000.06 5000.08 ; -C 34; N scripts-dstaccatissimo; B -1000.06 -5000.08 1000.06 200.00 ; -C 35; N scripts-tenuto; B -3000.03 -350.02 3000.03 350.02 ; -C 36; N scripts-umarcato; B -2500.00 0.00 2500.00 5500.03 ; -C 37; N scripts-dmarcato; B -2500.00 -5500.03 2500.00 0.00 ; -C 38; N scripts-open; B -2000.00 -2500.00 2000.00 2500.00 ; -C 39; N scripts-stopped; B -2750.02 -2750.02 2750.02 2750.02 ; -C 40; N scripts-upbow; B -3250.02 0.00 3250.02 10400.07 ; -C 41; N scripts-downbow; B -3750.00 0.00 3750.00 6666.64 ; -C 42; N scripts-reverseturn; B -5468.75 -2647.06 5468.75 2647.06 ; -C 43; N scripts-turn; B -5468.75 -2647.06 5468.75 2647.06 ; -C 44; N scripts-trill; B -5000.00 0.00 5000.00 11250.00 ; -C 45; N scripts-upedalheel; B -2500.00 -2500.00 2500.00 3333.33 ; -C 46; N scripts-dpedalheel; B -2500.00 -3333.33 2500.00 2500.00 ; -C 47; N scripts-upedaltoe; B -2500.00 0.00 2500.00 7500.00 ; -C 48; N scripts-dpedaltoe; B -2500.00 -7500.00 2500.00 0.00 ; -C 49; N scripts-flageolet; B -2666.67 -2666.67 2666.67 2666.67 ; -C 50; N scripts-trilelement; B -3333.33 -2500.00 1306.64 2500.00 ; -C 51; N scripts-prall; B -5653.30 -2500.00 5653.30 2500.00 ; -C 52; N scripts-mordent; B -5653.30 -2500.00 5653.30 2500.00 ; -C 53; N scripts-prallprall; B -7973.28 -2500.00 7973.28 2500.00 ; -C 54; N scripts-prallmordent; B -7973.28 -2500.00 7973.28 2500.00 ; -C 55; N scripts-upprall; B -7973.28 -2500.00 7973.28 2500.00 ; -C 56; N scripts-downprall; B -7973.28 -2500.00 7973.28 2500.00 ; -C 57; N flags-u3; B -250.02 -15325.03 6169.62 250.02 ; -C 58; N flags-u4; B -250.02 -17825.03 6169.62 250.02 ; -C 59; N flags-u5; B -250.02 -21575.03 6169.62 250.02 ; -C 60; N flags-u6; B -250.02 -26575.03 6169.62 250.02 ; -C 61; N flags-d3; B -250.02 -250.02 6827.44 14575.06 ; -C 62; N flags-d4; B -250.02 -250.02 6827.44 15325.03 ; -C 63; N flags-d5; B -250.02 -250.02 6827.44 19575.06 ; -C 64; N flags-d6; B -250.02 -250.02 6827.44 22075.06 ; -C 65; N clefs-alto; B -5000.00 -10000.00 18611.10 10000.00 ; -C 66; N clefs-alto_change; B -4000.02 -8000.03 14888.92 8000.03 ; -C 67; N clefs-bass; B -2500.00 -12500.00 18000.03 5000.00 ; -C 68; N clefs-bass_change; B -2000.05 -10000.05 14400.04 4000.02 ; -C 69; N clefs-violin; B -4357.15 -15000.00 18685.68 25000.00 ; -C 70; N clefs-violin_change; B -3785.74 -12000.05 14648.60 20000.08 ; -C 71; N timesig-C4/4; B -9000.02 -5000.00 8499.98 5000.00 ; -C 72; N timesig-C2/2; B -9000.02 -6999.97 8499.98 6999.97 ; -C 73; N timesig-old4/4; B -8750.00 -3750.00 8750.00 3750.00 ; -C 74; N timesig-old2/2; B -8750.00 -5000.00 8750.00 5000.00 ; -C 75; N timesig-old3/2; B -8750.00 -3750.00 8750.00 3750.00 ; -C 76; N timesig-old6/4; B -8750.00 -6250.00 8750.00 6250.00 ; -C 77; N timesig-old9/4; B -8750.00 -6250.00 8750.00 6250.00 ; +C 31; N scripts-thumb; B -2000.00 -2500.00 2000.00 2500.00 ; +C 32; N scripts-sforzato; B -4499.97 -2500.00 4499.97 2500.00 ; +C 33; N scripts-staccato; B -750.05 -750.05 750.05 750.05 ; +C 34; N scripts-ustaccatissimo; B -1000.06 -200.00 1000.06 5000.08 ; +C 35; N scripts-dstaccatissimo; B -1000.06 -5000.08 1000.06 200.00 ; +C 36; N scripts-tenuto; B -3000.03 -350.02 3000.03 350.02 ; +C 37; N scripts-umarcato; B -2500.00 0.00 2500.00 5500.03 ; +C 38; N scripts-dmarcato; B -2500.00 -5500.03 2500.00 0.00 ; +C 39; N scripts-open; B -2000.00 -2500.00 2000.00 2500.00 ; +C 40; N scripts-stopped; B -2750.02 -2750.02 2750.02 2750.02 ; +C 41; N scripts-upbow; B -3250.02 0.00 3250.02 10400.07 ; +C 42; N scripts-downbow; B -3750.00 0.00 3750.00 6666.64 ; +C 43; N scripts-reverseturn; B -5468.75 -2647.06 5468.75 2647.06 ; +C 44; N scripts-turn; B -5468.75 -2647.06 5468.75 2647.06 ; +C 45; N scripts-trill; B -5000.00 0.00 5000.00 11250.00 ; +C 46; N scripts-upedalheel; B -2500.00 -2500.00 2500.00 3333.33 ; +C 47; N scripts-dpedalheel; B -2500.00 -3333.33 2500.00 2500.00 ; +C 48; N scripts-upedaltoe; B -2500.00 0.00 2500.00 7500.00 ; +C 49; N scripts-dpedaltoe; B -2500.00 -7500.00 2500.00 0.00 ; +C 50; N scripts-flageolet; B -2666.67 -2666.67 2666.67 2666.67 ; +C 51; N scripts-trilelement; B -3333.33 -2500.00 1306.64 2500.00 ; +C 52; N scripts-prall; B -5653.30 -2500.00 5653.30 2500.00 ; +C 53; N scripts-mordent; B -5653.30 -2500.00 5653.30 2500.00 ; +C 54; N scripts-prallprall; B -7973.28 -2500.00 7973.28 2500.00 ; +C 55; N scripts-prallmordent; B -7973.28 -2500.00 7973.28 2500.00 ; +C 56; N scripts-upprall; B -7973.28 -2500.00 7973.28 2500.00 ; +C 57; N scripts-downprall; B -7973.28 -2500.00 7973.28 2500.00 ; +C 58; N flags-u3; B -250.02 -15325.03 6169.62 250.02 ; +C 59; N flags-u4; B -250.02 -17825.03 6169.62 250.02 ; +C 60; N flags-u5; B -250.02 -21575.03 6169.62 250.02 ; +C 61; N flags-u6; B -250.02 -26575.03 6169.62 250.02 ; +C 62; N flags-d3; B -250.02 -250.02 6827.44 14575.06 ; +C 63; N flags-d4; B -250.02 -250.02 6827.44 15325.03 ; +C 64; N flags-d5; B -250.02 -250.02 6827.44 19575.06 ; +C 65; N flags-d6; B -250.02 -250.02 6827.44 22075.06 ; +C 66; N clefs-alto; B -5000.00 -10000.00 18611.10 10000.00 ; +C 67; N clefs-alto_change; B -4000.02 -8000.03 14888.92 8000.03 ; +C 68; N clefs-bass; B -2500.00 -12500.00 18000.03 5000.00 ; +C 69; N clefs-bass_change; B -2000.05 -10000.05 14400.04 4000.02 ; +C 70; N clefs-violin; B -4357.15 -15000.00 18685.68 25000.00 ; +C 71; N clefs-violin_change; B -3785.74 -12000.05 14648.60 20000.08 ; +C 72; N timesig-C4/4; B -9000.02 -5000.00 8499.98 5000.00 ; +C 73; N timesig-C2/2; B -9000.02 -6999.97 8499.98 6999.97 ; +C 74; N timesig-old4/4; B -8750.00 -3750.00 8750.00 3750.00 ; +C 75; N timesig-old2/2; B -8750.00 -5000.00 8750.00 5000.00 ; +C 76; N timesig-old3/2; B -8750.00 -3750.00 8750.00 3750.00 ; +C 77; N timesig-old6/4; B -8750.00 -6250.00 8750.00 6250.00 ; +C 78; N timesig-old9/4; B -8750.00 -6250.00 8750.00 6250.00 ; EndCharMetrics EndFontMetrics diff --git a/mf/out/feta23.afm b/mf/out/feta23.afm index f5b55de4ed..ea84da9de9 100644 --- a/mf/out/feta23.afm +++ b/mf/out/feta23.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -3093.77 7430.80 3093.77 ; C 28; N balls-2l; B -1857.70 -562.53 9288.50 562.53 ; C 29; N scripts-ufermata; B -7453.16 -421.90 7453.16 8156.31 ; C 30; N scripts-dfermata; B -7453.16 -8156.31 7453.16 421.90 ; -C 31; N scripts-sforzato; B -5062.47 -2812.50 5062.47 2812.50 ; -C 32; N scripts-staccato; B -843.80 -843.80 843.80 843.80 ; -C 33; N scripts-ustaccatissimo; B -1125.06 -200.00 1125.06 5625.08 ; -C 34; N scripts-dstaccatissimo; B -1125.06 -5625.08 1125.06 200.00 ; -C 35; N scripts-tenuto; B -3375.03 -393.77 3375.03 393.77 ; -C 36; N scripts-umarcato; B -2812.50 0.00 2812.50 6187.53 ; -C 37; N scripts-dmarcato; B -2812.50 -6187.53 2812.50 0.00 ; -C 38; N scripts-open; B -2250.00 -2812.50 2250.00 2812.50 ; -C 39; N scripts-stopped; B -3093.77 -3093.77 3093.77 3093.77 ; -C 40; N scripts-upbow; B -3656.27 0.00 3656.27 11700.07 ; -C 41; N scripts-downbow; B -4218.75 0.00 4218.75 7499.97 ; -C 42; N scripts-reverseturn; B -6152.34 -2977.94 6152.34 2977.94 ; -C 43; N scripts-turn; B -6152.34 -2977.94 6152.34 2977.94 ; -C 44; N scripts-trill; B -5625.00 0.00 5625.00 12656.25 ; -C 45; N scripts-upedalheel; B -2812.50 -2812.50 2812.50 3750.00 ; -C 46; N scripts-dpedalheel; B -2812.50 -3750.00 2812.50 2812.50 ; -C 47; N scripts-upedaltoe; B -2812.50 0.00 2812.50 8437.50 ; -C 48; N scripts-dpedaltoe; B -2812.50 -8437.50 2812.50 0.00 ; -C 49; N scripts-flageolet; B -3000.00 -3000.00 3000.00 3000.00 ; -C 50; N scripts-trilelement; B -3750.00 -2812.50 1469.97 2812.50 ; -C 51; N scripts-prall; B -6359.99 -2812.50 6359.99 2812.50 ; -C 52; N scripts-mordent; B -6359.99 -2812.50 6359.99 2812.50 ; -C 53; N scripts-prallprall; B -8969.97 -2812.50 8969.97 2812.50 ; -C 54; N scripts-prallmordent; B -8969.97 -2812.50 8969.97 2812.50 ; -C 55; N scripts-upprall; B -8969.97 -2812.50 8969.97 2812.50 ; -C 56; N scripts-downprall; B -8969.97 -2812.50 8969.97 2812.50 ; -C 57; N flags-u3; B -281.27 -17240.65 6940.84 281.27 ; -C 58; N flags-u4; B -281.27 -20053.15 6940.84 281.27 ; -C 59; N flags-u5; B -281.27 -24271.90 6940.84 281.27 ; -C 60; N flags-u6; B -281.27 -29896.90 6940.84 281.27 ; -C 61; N flags-d3; B -281.27 -281.27 7680.88 16396.93 ; -C 62; N flags-d4; B -281.27 -281.27 7680.88 17240.65 ; -C 63; N flags-d5; B -281.27 -281.27 7680.88 22021.93 ; -C 64; N flags-d6; B -281.27 -281.27 7680.88 24834.43 ; -C 65; N clefs-alto; B -5625.00 -11250.00 20937.50 11250.00 ; -C 66; N clefs-alto_change; B -4500.02 -9000.03 16750.08 9000.03 ; -C 67; N clefs-bass; B -2812.50 -14062.50 20250.03 5625.00 ; -C 68; N clefs-bass_change; B -2250.05 -11250.05 16200.04 4500.02 ; -C 69; N clefs-violin; B -4901.80 -16875.00 21021.40 28125.00 ; -C 70; N clefs-violin_change; B -4258.94 -13500.05 16479.68 22500.08 ; -C 71; N timesig-C4/4; B -10125.02 -5625.00 9562.48 5625.00 ; -C 72; N timesig-C2/2; B -10125.02 -7874.97 9562.48 7874.97 ; -C 73; N timesig-old4/4; B -9843.75 -4218.75 9843.75 4218.75 ; -C 74; N timesig-old2/2; B -9843.75 -5625.00 9843.75 5625.00 ; -C 75; N timesig-old3/2; B -9843.75 -4218.75 9843.75 4218.75 ; -C 76; N timesig-old6/4; B -9843.75 -7031.25 9843.75 7031.25 ; -C 77; N timesig-old9/4; B -9843.75 -7031.25 9843.75 7031.25 ; +C 31; N scripts-thumb; B -2250.00 -2812.50 2250.00 2812.50 ; +C 32; N scripts-sforzato; B -5062.47 -2812.50 5062.47 2812.50 ; +C 33; N scripts-staccato; B -843.80 -843.80 843.80 843.80 ; +C 34; N scripts-ustaccatissimo; B -1125.06 -200.00 1125.06 5625.08 ; +C 35; N scripts-dstaccatissimo; B -1125.06 -5625.08 1125.06 200.00 ; +C 36; N scripts-tenuto; B -3375.03 -393.77 3375.03 393.77 ; +C 37; N scripts-umarcato; B -2812.50 0.00 2812.50 6187.53 ; +C 38; N scripts-dmarcato; B -2812.50 -6187.53 2812.50 0.00 ; +C 39; N scripts-open; B -2250.00 -2812.50 2250.00 2812.50 ; +C 40; N scripts-stopped; B -3093.77 -3093.77 3093.77 3093.77 ; +C 41; N scripts-upbow; B -3656.27 0.00 3656.27 11700.07 ; +C 42; N scripts-downbow; B -4218.75 0.00 4218.75 7499.97 ; +C 43; N scripts-reverseturn; B -6152.34 -2977.94 6152.34 2977.94 ; +C 44; N scripts-turn; B -6152.34 -2977.94 6152.34 2977.94 ; +C 45; N scripts-trill; B -5625.00 0.00 5625.00 12656.25 ; +C 46; N scripts-upedalheel; B -2812.50 -2812.50 2812.50 3750.00 ; +C 47; N scripts-dpedalheel; B -2812.50 -3750.00 2812.50 2812.50 ; +C 48; N scripts-upedaltoe; B -2812.50 0.00 2812.50 8437.50 ; +C 49; N scripts-dpedaltoe; B -2812.50 -8437.50 2812.50 0.00 ; +C 50; N scripts-flageolet; B -3000.00 -3000.00 3000.00 3000.00 ; +C 51; N scripts-trilelement; B -3750.00 -2812.50 1469.97 2812.50 ; +C 52; N scripts-prall; B -6359.99 -2812.50 6359.99 2812.50 ; +C 53; N scripts-mordent; B -6359.99 -2812.50 6359.99 2812.50 ; +C 54; N scripts-prallprall; B -8969.97 -2812.50 8969.97 2812.50 ; +C 55; N scripts-prallmordent; B -8969.97 -2812.50 8969.97 2812.50 ; +C 56; N scripts-upprall; B -8969.97 -2812.50 8969.97 2812.50 ; +C 57; N scripts-downprall; B -8969.97 -2812.50 8969.97 2812.50 ; +C 58; N flags-u3; B -281.27 -17240.65 6940.84 281.27 ; +C 59; N flags-u4; B -281.27 -20053.15 6940.84 281.27 ; +C 60; N flags-u5; B -281.27 -24271.90 6940.84 281.27 ; +C 61; N flags-u6; B -281.27 -29896.90 6940.84 281.27 ; +C 62; N flags-d3; B -281.27 -281.27 7680.88 16396.93 ; +C 63; N flags-d4; B -281.27 -281.27 7680.88 17240.65 ; +C 64; N flags-d5; B -281.27 -281.27 7680.88 22021.93 ; +C 65; N flags-d6; B -281.27 -281.27 7680.88 24834.43 ; +C 66; N clefs-alto; B -5625.00 -11250.00 20937.50 11250.00 ; +C 67; N clefs-alto_change; B -4500.02 -9000.03 16750.08 9000.03 ; +C 68; N clefs-bass; B -2812.50 -14062.50 20250.03 5625.00 ; +C 69; N clefs-bass_change; B -2250.05 -11250.05 16200.04 4500.02 ; +C 70; N clefs-violin; B -4901.80 -16875.00 21021.40 28125.00 ; +C 71; N clefs-violin_change; B -4258.94 -13500.05 16479.68 22500.08 ; +C 72; N timesig-C4/4; B -10125.02 -5625.00 9562.48 5625.00 ; +C 73; N timesig-C2/2; B -10125.02 -7874.97 9562.48 7874.97 ; +C 74; N timesig-old4/4; B -9843.75 -4218.75 9843.75 4218.75 ; +C 75; N timesig-old2/2; B -9843.75 -5625.00 9843.75 5625.00 ; +C 76; N timesig-old3/2; B -9843.75 -4218.75 9843.75 4218.75 ; +C 77; N timesig-old6/4; B -9843.75 -7031.25 9843.75 7031.25 ; +C 78; N timesig-old9/4; B -9843.75 -7031.25 9843.75 7031.25 ; EndCharMetrics EndFontMetrics diff --git a/mf/out/feta26.afm b/mf/out/feta26.afm index bd5369910d..9e80ffba1f 100644 --- a/mf/out/feta26.afm +++ b/mf/out/feta26.afm @@ -32,52 +32,53 @@ C 27; N balls-2; B 0.00 -3575.03 8586.67 3575.03 ; C 28; N balls-2l; B -2146.67 -650.04 10733.34 650.04 ; C 29; N scripts-ufermata; B -8612.53 -487.53 8612.53 9425.08 ; C 30; N scripts-dfermata; B -8612.53 -9425.08 8612.53 487.53 ; -C 31; N scripts-sforzato; B -5849.96 -3250.00 5849.96 3250.00 ; -C 32; N scripts-staccato; B -975.07 -975.07 975.07 975.07 ; -C 33; N scripts-ustaccatissimo; B -1300.08 -200.00 1300.08 6500.10 ; -C 34; N scripts-dstaccatissimo; B -1300.08 -6500.10 1300.08 200.00 ; -C 35; N scripts-tenuto; B -3900.04 -455.03 3900.04 455.03 ; -C 36; N scripts-umarcato; B -3250.00 0.00 3250.00 7150.04 ; -C 37; N scripts-dmarcato; B -3250.00 -7150.04 3250.00 0.00 ; -C 38; N scripts-open; B -2600.00 -3250.00 2600.00 3250.00 ; -C 39; N scripts-stopped; B -3575.03 -3575.03 3575.03 3575.03 ; -C 40; N scripts-upbow; B -4225.02 0.00 4225.02 13520.10 ; -C 41; N scripts-downbow; B -4875.00 0.00 4875.00 8666.64 ; -C 42; N scripts-reverseturn; B -7109.38 -3441.18 7109.38 3441.18 ; -C 43; N scripts-turn; B -7109.38 -3441.18 7109.38 3441.18 ; -C 44; N scripts-trill; B -6500.00 0.00 6500.00 14625.00 ; -C 45; N scripts-upedalheel; B -3250.00 -3250.00 3250.00 4333.33 ; -C 46; N scripts-dpedalheel; B -3250.00 -4333.33 3250.00 3250.00 ; -C 47; N scripts-upedaltoe; B -3250.00 0.00 3250.00 9750.00 ; -C 48; N scripts-dpedaltoe; B -3250.00 -9750.00 3250.00 0.00 ; -C 49; N scripts-flageolet; B -3466.67 -3466.67 3466.67 3466.67 ; -C 50; N scripts-trilelement; B -4333.33 -3250.00 1698.62 3250.00 ; -C 51; N scripts-prall; B -7349.30 -3250.00 7349.30 3250.00 ; -C 52; N scripts-mordent; B -7349.30 -3250.00 7349.30 3250.00 ; -C 53; N scripts-prallprall; B -10365.28 -3250.00 10365.28 3250.00 ; -C 54; N scripts-prallmordent; B -10365.28 -3250.00 10365.28 3250.00 ; -C 55; N scripts-upprall; B -10365.28 -3250.00 10365.28 3250.00 ; -C 56; N scripts-downprall; B -10365.28 -3250.00 10365.28 3250.00 ; -C 57; N flags-u3; B -325.03 -19922.53 8020.51 325.03 ; -C 58; N flags-u4; B -325.03 -23172.53 8020.51 325.03 ; -C 59; N flags-u5; B -325.03 -28047.53 8020.51 325.03 ; -C 60; N flags-u6; B -325.03 -34547.53 8020.51 325.03 ; -C 61; N flags-d3; B -325.03 -325.03 8875.67 18947.57 ; -C 62; N flags-d4; B -325.03 -325.03 8875.67 19922.53 ; -C 63; N flags-d5; B -325.03 -325.03 8875.67 25447.57 ; -C 64; N flags-d6; B -325.03 -325.03 8875.67 28697.57 ; -C 65; N clefs-alto; B -6500.00 -13000.00 24194.44 13000.00 ; -C 66; N clefs-alto_change; B -5200.03 -10400.05 19355.70 10400.05 ; -C 67; N clefs-bass; B -3250.00 -16250.00 23400.04 6500.00 ; -C 68; N clefs-bass_change; B -2600.07 -13000.08 18720.08 5200.03 ; -C 69; N clefs-violin; B -5664.29 -19500.00 24291.40 32500.00 ; -C 70; N clefs-violin_change; B -4921.46 -15600.08 19043.21 26000.14 ; -C 71; N timesig-C4/4; B -11700.03 -6500.00 11049.99 6500.00 ; -C 72; N timesig-C2/2; B -11700.03 -9099.96 11049.99 9099.96 ; -C 73; N timesig-old4/4; B -11375.00 -4875.00 11375.00 4875.00 ; -C 74; N timesig-old2/2; B -11375.00 -6500.00 11375.00 6500.00 ; -C 75; N timesig-old3/2; B -11375.00 -4875.00 11375.00 4875.00 ; -C 76; N timesig-old6/4; B -11375.00 -8125.00 11375.00 8125.00 ; -C 77; N timesig-old9/4; B -11375.00 -8125.00 11375.00 8125.00 ; +C 31; N scripts-thumb; B -2600.00 -3250.00 2600.00 3250.00 ; +C 32; N scripts-sforzato; B -5849.96 -3250.00 5849.96 3250.00 ; +C 33; N scripts-staccato; B -975.07 -975.07 975.07 975.07 ; +C 34; N scripts-ustaccatissimo; B -1300.08 -200.00 1300.08 6500.10 ; +C 35; N scripts-dstaccatissimo; B -1300.08 -6500.10 1300.08 200.00 ; +C 36; N scripts-tenuto; B -3900.04 -455.03 3900.04 455.03 ; +C 37; N scripts-umarcato; B -3250.00 0.00 3250.00 7150.04 ; +C 38; N scripts-dmarcato; B -3250.00 -7150.04 3250.00 0.00 ; +C 39; N scripts-open; B -2600.00 -3250.00 2600.00 3250.00 ; +C 40; N scripts-stopped; B -3575.03 -3575.03 3575.03 3575.03 ; +C 41; N scripts-upbow; B -4225.02 0.00 4225.02 13520.10 ; +C 42; N scripts-downbow; B -4875.00 0.00 4875.00 8666.64 ; +C 43; N scripts-reverseturn; B -7109.38 -3441.18 7109.38 3441.18 ; +C 44; N scripts-turn; B -7109.38 -3441.18 7109.38 3441.18 ; +C 45; N scripts-trill; B -6500.00 0.00 6500.00 14625.00 ; +C 46; N scripts-upedalheel; B -3250.00 -3250.00 3250.00 4333.33 ; +C 47; N scripts-dpedalheel; B -3250.00 -4333.33 3250.00 3250.00 ; +C 48; N scripts-upedaltoe; B -3250.00 0.00 3250.00 9750.00 ; +C 49; N scripts-dpedaltoe; B -3250.00 -9750.00 3250.00 0.00 ; +C 50; N scripts-flageolet; B -3466.67 -3466.67 3466.67 3466.67 ; +C 51; N scripts-trilelement; B -4333.33 -3250.00 1698.62 3250.00 ; +C 52; N scripts-prall; B -7349.30 -3250.00 7349.30 3250.00 ; +C 53; N scripts-mordent; B -7349.30 -3250.00 7349.30 3250.00 ; +C 54; N scripts-prallprall; B -10365.28 -3250.00 10365.28 3250.00 ; +C 55; N scripts-prallmordent; B -10365.28 -3250.00 10365.28 3250.00 ; +C 56; N scripts-upprall; B -10365.28 -3250.00 10365.28 3250.00 ; +C 57; N scripts-downprall; B -10365.28 -3250.00 10365.28 3250.00 ; +C 58; N flags-u3; B -325.03 -19922.53 8020.51 325.03 ; +C 59; N flags-u4; B -325.03 -23172.53 8020.51 325.03 ; +C 60; N flags-u5; B -325.03 -28047.53 8020.51 325.03 ; +C 61; N flags-u6; B -325.03 -34547.53 8020.51 325.03 ; +C 62; N flags-d3; B -325.03 -325.03 8875.67 18947.57 ; +C 63; N flags-d4; B -325.03 -325.03 8875.67 19922.53 ; +C 64; N flags-d5; B -325.03 -325.03 8875.67 25447.57 ; +C 65; N flags-d6; B -325.03 -325.03 8875.67 28697.57 ; +C 66; N clefs-alto; B -6500.00 -13000.00 24194.44 13000.00 ; +C 67; N clefs-alto_change; B -5200.03 -10400.05 19355.70 10400.05 ; +C 68; N clefs-bass; B -3250.00 -16250.00 23400.04 6500.00 ; +C 69; N clefs-bass_change; B -2600.07 -13000.08 18720.08 5200.03 ; +C 70; N clefs-violin; B -5664.29 -19500.00 24291.40 32500.00 ; +C 71; N clefs-violin_change; B -4921.46 -15600.08 19043.21 26000.14 ; +C 72; N timesig-C4/4; B -11700.03 -6500.00 11049.99 6500.00 ; +C 73; N timesig-C2/2; B -11700.03 -9099.96 11049.99 9099.96 ; +C 74; N timesig-old4/4; B -11375.00 -4875.00 11375.00 4875.00 ; +C 75; N timesig-old2/2; B -11375.00 -6500.00 11375.00 6500.00 ; +C 76; N timesig-old3/2; B -11375.00 -4875.00 11375.00 4875.00 ; +C 77; N timesig-old6/4; B -11375.00 -8125.00 11375.00 8125.00 ; +C 78; N timesig-old9/4; B -11375.00 -8125.00 11375.00 8125.00 ; EndCharMetrics EndFontMetrics diff --git a/ps/GNUmakefile b/ps/GNUmakefile index d4353253c4..a94b37ef8a 100644 --- a/ps/GNUmakefile +++ b/ps/GNUmakefile @@ -2,14 +2,12 @@ depth = .. - PS_FILES = $(wildcard *.ps) +STEPMAKE_TEMPLATES=install EXTRA_DIST_FILES = $(PS_FILES) INSTALLATION_DIR=$(datadir)/ps/ INSTALLATION_FILES=$(PS_FILES) include $(depth)/make/stepmake.make -include $(stepdir)/installfiles.make - diff --git a/scripts/mudela-book.py b/scripts/mudela-book.py index 596119c3dd..3faa60d238 100644 --- a/scripts/mudela-book.py +++ b/scripts/mudela-book.py @@ -1,23 +1,46 @@ #!@PYTHON@ - -# TODO: center option - +# All non-english comments are NOT in swedish, they are norwegian! + +# TODO: center option (??) +# * clean up handling of filename of inputfile +# * steal Props class from ly2dvi? +# * \onecolumn, \twocolumn +# * fontsize change with commandline parameters +# * the verbatim option should not be visible in the created latex file +# * what the h.. does castingalgorithm do/mean??? +# * compile all regular expressions +# * the following fails because mudelabook doesn't care that the +# last } after \end{mudela} finishes the marginpar: +# \marginpar{ +# \begin{mudela}[fragment] +# c d e f g +# \end{mudela}} +# * Command line parameter that force all inline mudela to be verbatim, and +# one that forces all to be printed # log: # 0.3: # rewrite in Python. +# 0.4: +# much rewritten by new author. I think the work has been split more +# logical between different classes. +# import os import string import re import getopt import sys +import regsub -outdir = 'out/' -program_version = '0.3' - - +outdir = 'out' +program_version = '0.4' +default_paper_size_global = 'a4' +default_mudela_fontsize = '16pt' +force_mudela_fontsize_b = 0 +fontsize_i2a = {11:'eleven', 13:'thirteen', 16:'sixteen', 20:'twenty', 26:'twentysix'} +fontsize_pt2i = {'11pt':11, '13pt':13, '16pt':16, '20pt':20, '26pt':26} def file_exist_b(name): try: @@ -27,208 +50,317 @@ def file_exist_b(name): f.close () return 1 +def ps_dimention(fname): + fd = open(fname) + lines = fd.readlines() + reg = re.compile('%%BoundingBox: ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + for line in lines: + s = reg.search(line) + if s: + break + return (int(s.groups()[2])-int(s.groups()[0]), + int(s.groups()[3])-int(s.groups()[1])) + + class CompileStatus: - pass + pass def file_mtime (name): return os.stat (name)[8] #mod time - -def compile (command, infile, outfile): - indate = file_mtime (infile) - try: - outdate = file_mtime (outfile) - recompile = indate > outdate - - except os.error: - recompile = 1 - - if recompile: - sys.stderr.write ('invoking `%s\'\n' % command) - - status = os.system (command) - if status: - raise CompileStatus +# +# executes os.system(command) if infile is newer than +# outfile or outfile don't exist +# +def compile (command, workingdir, infile, outfile): + indate = file_mtime (workingdir+infile) + try: + outdate = file_mtime (outfile) + recompile = indate > outdate + + except os.error: + recompile = 1 + + if recompile: + sys.stderr.write ('invoking `%s\'\n' % command) + if workingdir == '': + status = os.system (command) + else: + status = os.system ('cd %s; %s' %(workingdir, command)) + if status: + raise CompileStatus + + +class PaperDef: + __onecolumn_linewidth = { + 'a4':{'10pt': 345, '11pt': 360, '12pt':390}, + 'a5':{'10pt': 276, '11pt': 276, '12pt':276}, + 'b5':{'10pt': 345, '11pt': 356, '12pt':356}, + 'letter':{'10pt': 345, '11pt': 360, '12pt':390}, + 'legal':{'10pt': 345, '11pt': 360, '12pt':390}, + 'executive':{'10pt': 345, '11pt': 360, '12pt':379} + } + __twocolumn_linewidth = { + 'a4':{'10pt': 167, '11pt': 175, '12pt':190}, + 'a5':{'10pt': 133, '11pt': 133, '12pt':133}, + 'b5':{'10pt': 167, '11pt': 173, '12pt':173}, + 'letter':{'10pt': 167, '11pt': 175, '12pt':190}, + 'legal':{'10pt': 167, '11pt': 175, '12pt':190}, + 'executive':{'10pt': 167, '11pt': 175, '12pt':184} + } + __numcolumn = 1 + __fontsize = '11pt' + # + # init + # + def __init__(self): + self.__papersize = default_paper_size_global + def set_papersize (self, p): + if not self.__onecolumn_linewidth.has_key(p): + print "warning:unsupported papersize", p, \ + "will use", default_paper_size_global + self.__papersize = default_paper_size_global + else: + self.__papersize = p + def set_fontsize(self, pt): + self.__fontsize = pt + def get_linewidth (self): + if self.__numcolumn == 1: + return self.__onecolumn_linewidth[self.__papersize][self.__fontsize] + else: + return self.__twocolumn_linewidth[self.__papersize][self.__fontsize] + def onecolumn (slef): + self.__numcolumn = 1 + def twocolumn (self): + self.__numcolumn = 2 class Mudela_output: - def __init__ (self): - self.basename = '' - self.fragment = 0 - self.size = 16 - - def open (self, basename): - self.basename = basename - self.temp_file = "%s/%s" %(outdir, 'mudela-temp.ly') - self.file = open (self.temp_file, 'w') - self.file.write ('\\include \"paper%d.ly\"\n' % self.size) - if self.size == 16: - s = 'sixteen' - else: - s = 'twenty' - - self.file.write ('default_paper = \\paper { \\paper_%s\n linewidth = -15.\\cm; }\n' % s) - - if self.fragment: - self.file.write ('\\score { \\notes { ') - - def write (self,s): - self.file.write (s) - - def close (self): - if self.fragment: - self.file.write ( - '}\n \\paper { linewidth = -1.0\\cm;\n' + - 'castingalgorithm = \\Wordwrap; } }\n') - - - self.file.close () - - inf=self.basename + '.ly' - outf = self.basename + '.tex' - if not file_exist_b (inf): - status = 1 - else: -# print 'invoking %s' %('diff %s %s' % (self.temp_file, inf)) - status = os.system ('diff -q %s %s' % (self.temp_file, inf)) -# print 'status %d' % status - - if status: - os.rename (self.temp_file, inf) - - compile ('lilypond -o %s %s'% (self.basename, inf), inf, outf) -# os.rename (self.basename + '.tex', outdir +) - - + def __init__ (self, basename): + self.basename = basename + # it's an integer! + self.feta_pt_size = fontsize_pt2i[default_mudela_fontsize] + self.temp_filename = "%s/%s" %(outdir, 'mudela-temp.ly') + self.file = open (self.temp_filename, 'w') + # 'tex' or 'eps' + self.graphic_type = 'tex' + self.fragment = 0 + def write (self, line): + # match only if there is nothing but whitespace before \begin + if re.search('^\s*\\\\begin{mudela}', line): + self.scan_begin_statement(line) + self.write_red_tape() + else: + self.file.write (line) + def scan_begin_statement(self, line): + r = begin_mudela_opts_re.search(line) + if r: + o = r.group()[1:][:-1] + optlist = re.compile('[ ,]*').split(o) + else: + optlist = [] + if 'floating' in optlist: + self.graphic_type = 'eps' + else: + self.graphic_type = 'tex' + if 'fragment' in optlist: + self.fragment = 1 + else: + self.fragment = 0 + for pt in fontsize_pt2i.keys(): + if pt in optlist: + self.feta_pt_size = fontsize_pt2i[pt] + def write_red_tape(self): + self.file.write ('\\include \"paper%d.ly\"\n' % self.feta_pt_size) + s = fontsize_i2a[self.feta_pt_size] + if self.fragment: + self.file.write("default_paper = \\paper {" + + "\\paper_%s\n linewidth = -1.\\pt;" % s + + "castingalgorithm = \Wordwrap; indent = 2.\cm; \n}") + self.file.write("\\score{\n\\notes") #HACK + else: + self.file.write ("default_paper = \\paper {" + + "\\paper_%s\n linewidth = %i.\\pt;" % \ + (s, Paper.get_linewidth()) \ + + "castingalgorithm = \Wordwrap; indent = 2.\cm;\n}") + def close (self): + if self.fragment: + self.file.write ('\\paper { \\default_paper; } }\n') + self.file.close () + + inf = self.basename + '.ly' + outf = self.basename + '.tex' + if not file_exist_b (inf): + status = 1 + else: + status = os.system ('diff -q %s %s' % (self.temp_filename, inf)) + + if status: + os.rename (self.temp_filename, inf) + compile ('lilypond -o %s %s;'% (self.basename, inf), '', inf, outf) + if self.graphic_type == 'eps': + bname = self.basename[string.rfind(self.basename, '/')+1:] + tex_name = bname+'.tex' + dvi_name = bname+'.dvi' + eps_name = bname+'.eps' + compile ('tex %s' % tex_name, outdir, tex_name, dvi_name) + compile ('dvips -E -o %s %s' % (eps_name, dvi_name), outdir, dvi_name, eps_name) + def insert_me_string(self): + "Returns a string that can be used directly in latex." + if self.graphic_type == 'tex': + return '\\preMudelaExample\\input %s\n\postMudelaExample\n' % self.basename + elif self.graphic_type == 'eps': + ps_dim = ps_dimention('%s.eps' % self.basename) + return '\\parbox{%ipt}{\includegraphics{%s.eps}}' % (ps_dim[0], self.basename) + else: + print "Unsupported graphic type '%s'" % self.graphic_type + sys.exit(1) class Tex_output: - def __init__ (self, name): - self.output_fn = '%s/%s' % (outdir, name) - self.mudela = 0 - self.file = open (self.output_fn , 'w') - self.verbatim = 0 - def open_mudela (self, basename): - self.mudela_basename =basename - if self.verbatim: - self.file.write ('\\begin{verbatim}\n') - self.mudela = 1 - - def write (self, s): - self.file.write (s) - - def write_mudela (self, s): - if self.verbatim: - self.file.write (s) - - def close_mudela (self): - if self.verbatim: - self.file.write ('\\end{verbatim}\n') - self.verbatim = 0 - - self.file.write ( - '\\preMudelaExample\\input %s\n\postMudelaExample' %(self.mudela_basename)) - self.mudela = 0 - - - - + def __init__ (self, name): + self.output_fn = '%s/%s' % (outdir, name) + self.file = open (self.output_fn , 'w') + def open_mudela (self, basename): + self.mudela_basename = basename + def open_verbatim (self): + self.file.write ('\\begin{verbatim}\n') + def close_verbatim (self): + self.file.write ('\\end{verbatim}\n') + def write (self, s): + self.file.write (s) begin_mudela_re = re.compile ('^ *\\\\begin{mudela}') -begin_mudela_opts_re = re.compile ('^ *\\\\begin{mudela}\[(.*)\]') +begin_mudela_opts_re = re.compile('\[[^\]]*\]') end_mudela_re = re.compile ('^ *\\\\end{mudela}') section_re = re.compile ('\\\\section') chapter_re = re.compile ('\\\\chapter') -input_re = re.compile ('^\\\\input[ \t\n]+(.*)$') +input_re = re.compile ('^\\\\input{([^}]*)') +include_re = re.compile ('^\\\\include{([^}]*)') +begin_document_re = re.compile ('^ *\\\\begin{document}') +documentclass_re = re.compile('\\\\documentclass') +twocolumn_re = re.compile('\\\\twocolumn') +onecolumn_re = re.compile('\\\\onecolumn') class Tex_input: - def __init__ (self,name): - if not re.search ('\\.[^/\\\\]+',name): - name = name + '.tex' - print 'opening %s' % name - self.filename = name - self.infile = open (name) + def __init__ (self,name): + # HACK + if (name[-4:] != '.tex') and (name[-4:] != '.doc'): + name = name + '.tex' + self.filename = name + self.infile = open (name) - def get_lines (self): - lines = self.infile.readlines () - (retlines, retdeps) = ([],[self.filename]) - for line in lines: - m = input_re.search (line) - if m: - t = Tex_input (m.group (1)) - ls =t.get_lines () - retlines = retlines + ls[0] - retdeps = retdeps + ls[1] - else: - retlines.append (line) - - return (retlines, retdeps) + def get_lines (self): + lines = self.infile.readlines () + (retlines, retdeps) = ([],[self.filename]) + for line in lines: + r = input_re.search (line) + ri = include_re.search (line) + if r: + t = Tex_input (r.groups()[0]) + ls =t.get_lines () + retlines = retlines + ls[0] + retdeps = retdeps + ls[1] + elif ri: + t = Tex_input (ri.groups()[0]) + ls =t.get_lines () + ls[0].insert(0, '\\newpage') + ls[0].append('\\newpage') + retlines = retlines + ls[0] + retdeps = retdeps + ls[1] + else: + retlines.append (line) + return (retlines, retdeps) + class Main_tex_input(Tex_input): - def __init__ (self, name, outname): + def __init__ (self, name, outname): - Tex_input.__init__ (self, name) # ugh - - self.outname = outname - self.chapter = 0 - self.section = 0 - self.fine_count =0 - self.mudtex = Tex_output (self.outname) - self.mudela = None - self.deps = [] - def set_sections (self, l): - if section_re.search (l): - self.section = self.section + 1 - if chapter_re.search (l): - self.section = 0 - self.chapter = self.chapter + 1 - - - def gulp_mudela (self): - pass - - def gen_basename (self): - return '%s/%s-%d.%d.%d' % (outdir, self.outname,self.chapter,self.section,self.fine_count) - - def do_it(self): - (lines, self.deps) = self.get_lines () - for line in lines: - if begin_mudela_re.search (line): - m =begin_mudela_opts_re.search (line) - if m: - opts = m.group (1) - else: - opts = '' - optlist = string.split (opts, ',') - self.mudela = Mudela_output () - if 'fragment' in optlist: - self.mudela.fragment = 1 - if '16pt' in optlist: - self.mudela.size = 16 - if '20pt' in optlist: - self.mudela.size = 20 - - if 'verbatim' in optlist: - self.mudtex.verbatim = 1 - - b = self.gen_basename () - self.mudtex.open_mudela (b) - self.mudela.open (b) - - - continue - elif end_mudela_re.search (line): - self.mudela.close () - self.mudtex.close_mudela () - self.mudela = None - self.fine_count = self.fine_count + 1 - continue - - if self.mudela: - self.mudela.write (line) - self.mudtex.write_mudela (line) - else: - self.mudtex.write (line) - self.set_sections(line) - del self.mudtex + Tex_input.__init__ (self, name) # ugh + + self.outname = outname + self.chapter = 0 + self.section = 0 + self.fine_count =0 + self.mudtex = Tex_output (self.outname) + self.mudela = None + self.deps = [] + self.verbatim = 0 + # set to 'mudela' when we are processing mudela code, + # both verbatim and graphic-to-be + self.mode = 'latex' + def set_sections (self, l): + if section_re.search (l): + self.section = self.section + 1 + if chapter_re.search (l): + self.section = 0 + self.chapter = self.chapter + 1 + + def gen_basename (self): + return '%s/%s-%d.%d.%d' % (outdir, self.outname,self.chapter,self.section,self.fine_count) + + def extract_papersize_from_documentclass(self, line): + pre = re.search('\\\\documentclass[\[, ]*(\w*)paper[\w ,]*\]\{\w*\}', line) + if not pre: + return default_paper_size_global + return pre.groups()[0] + def extract_fontsize_from_documentclass(self, line): + if re.search('\\\\documentclass\[[^\]]*\]\{[^\}]*\}', line): + r = re.search('[ ,\[]*([0-9]*pt)', line) + if r: + return r.groups()[0] + return '10pt' + def do_it(self): + (lines, self.deps) = self.get_lines () + for line in lines: + if documentclass_re.search (line): + Paper.set_papersize (self.extract_papersize_from_documentclass (line) ) + Paper.set_fontsize (self.extract_fontsize_from_documentclass (line) ) + elif twocolumn_re.search (line): + Paper.twocolumn () + elif onecolumn_re.search (line): + Paper.onecolumn () + elif begin_document_re.search (line): + self.mudtex.write ('\\def\\preMudelaExample{}\n') + self.mudtex.write ('\\def\\postMudelaExample{}\n') + elif begin_mudela_re.search (line): + if __debug__: + if self.mode == 'mudela': + raise AssertionError + self.mode = 'mudela' + r = begin_mudela_opts_re.search (line) + if r: + o = r.group()[1:][:-1] + optlist = re.compile('[ ,]*').split(o) + else: + optlist = [] + if 'verbatim' in optlist: + self.verbatim = 1 + self.mudtex.open_verbatim () + else: + self.verbatim = 0 + self.mudela = Mudela_output (self.gen_basename ()) + + elif end_mudela_re.search (line): + if __debug__: + if self.mode != 'mudela': + raise AssertionError + if self.mudela: + self.mudela.close () + self.mudtex.write (self.mudela.insert_me_string()) + del self.mudela + self.mudela = None + self.fine_count = self.fine_count + 1 + else: + self.mudtex.write (line) + self.mudtex.close_verbatim () + self.mode = 'latex' + continue + + if self.mode == 'mudela' and not self.verbatim: + self.mudela.write (line) + else: + self.mudtex.write (line) + self.set_sections(line) + del self.mudtex def help(): @@ -236,32 +368,14 @@ def help(): + "Generate hybrid LaTeX input from Latex + mudela" + "Options:\n" + " -h, --help print this help\n" - + " -d, --outdir=DIR prefix directory\n" + + " -d, --outdir=DIR directory to put generated files\n" + " -o, --outname=FILE prefix for filenames\n" + + " --mudela-fontsize=??pt default fontsize when no parameter for \\begin{mudela}\n" + + " --force-mudela-fontsize=??pt force fontsize for all inline mudela\n" ) sys.exit (0) - -sys.stderr.write ('This is %s version %s\n' % ('mudela-book', program_version)) - -outname = '' -(options, files) = getopt.getopt( - sys.argv[1:], 'hd:o:', [ 'outdir=', 'outname=', 'help', 'dependencies']) - -do_deps = 0 -for opt in options: - o = opt[0] - a = opt[1] - if o == '--outname' or o == '-o': - outname = a - if o == '--outdir' or o == '-d': - outdir = a - if o == '--help' or o == '-h': - help () - if o == '--dependencies': - do_deps = 1 - def write_deps (fn, out, deps): out_fn = outdir + '/' + fn print '\`writing \`%s\'\n\'' % out_fn @@ -271,18 +385,64 @@ def write_deps (fn, out, deps): reduce (lambda x,y: x + ' '+ y, deps))) f.close () - -for f in files: - my_outname = outname - if not my_outname: - my_outname = regsub.sub ('\\(.*\\)\\.doc', '\\1', f) - - my_depname = my_outname + '.dep' - - inp = Main_tex_input (f, my_outname) - inp.do_it () - - if do_deps: +def identify(): + sys.stderr.write('*** Lokal versjon av mudela-book ***\n') + sys.stderr.write ('This is %s version %s\n' % ('mudela-book', program_version)) + +def main(): + global default_mudela_fontsize, outdir + outname = '' + try: + (options, files) = getopt.getopt( + sys.argv[1:], 'hd:o:', ['outdir=', 'outname=', 'mudela-fontsize=', + 'force-mudela-fontsize=', 'help', 'dependencies']) + except getopt.error, msg: + print "error:", msg + sys.exit(1) + + do_deps = 0 + for opt in options: + o = opt[0] + a = opt[1] + if o == '--outname' or o == '-o': + outname = a + if o == '--outdir' or o == '-d': + outdir = a + if o == '--help' or o == '-h': + help () + if o == '--dependencies': + do_deps = 1 + if o == '--mudela-fontsize': + default_mudela_fontsize = a + if o == '--force-mudela-fontsize': + default_mudela_fontsize = a + force_mudela_fontsize_b = 1 + + if outdir[-1:] != '/': + outdir = outdir + '/' + + if not file_exist_b(outdir): + os.system('mkdir %s' % outdir) + + if not fontsize_pt2i.has_key(default_mudela_fontsize): + print "warning: fontsize %s is not supported using 16pt" % default_mudela_fontsize + default_mudela_fontsize = '16pt' + + for f in files: + my_outname = outname + if not my_outname: + my_outname = regsub.sub ('\\(.*\\)\\.doc', '\\1', f) + + my_depname = my_outname + '.dep' + + inp = Main_tex_input (f, my_outname) + inp.do_it () + + if do_deps: write_deps (my_depname, my_outname, inp.deps) + +identify() +Paper = PaperDef() +main() diff --git a/stepmake/Documentation/GNUmakefile b/stepmake/Documentation/GNUmakefile index c49eec6022..4f6e24b7ff 100644 --- a/stepmake/Documentation/GNUmakefile +++ b/stepmake/Documentation/GNUmakefile @@ -5,10 +5,11 @@ depth = .. OUTTXT_FILES = $(OUTYO_FILES:.yo=.txt) $(OUTIN_FILES:.yo=.txt) EXTRA_DIST_FILES = -SUBDIRS=topdocs +OUT_DIST_FILES=$(OUTTXT_FILES) +SUBDIRS=topdocs -STEPMAKE_TEMPLATES=documentation +STEPMAKE_TEMPLATES=documentation install install-out include $(depth)/make/stepmake.make @@ -22,3 +23,9 @@ check-doc-deps: do-doc doc: do-doc +INSTALLATION_DIR=$(datadir)/Documentation +INSTALLATION_FILES=$(DIST_FILES) + +INSTALLATION_OUT_DIR=$(datadir)/Documentation/out +INSTALLATION_OUT_FILES=$(OUTTXT_FILES) + diff --git a/stepmake/Documentation/out/automake.txt b/stepmake/Documentation/out/automake.txt new file mode 100644 index 0000000000..6f1f5d2de4 --- /dev/null +++ b/stepmake/Documentation/out/automake.txt @@ -0,0 +1,173 @@ + + + + + + + + + + Automake -- Urgh! + + HWN and JCN + + +Contents + + 1: Introduction +2: What's wrong with Automake? +3: Irritations +4: Fundamental problems +5: Conclusions + + +1: Introduction + + +Every once in a while, we get comments on our `non-standard' +(non GNU compliant) configuration/compilation system. In +this document, we try to explain why we built our own sys- +tem. We focus on Automake, but of course writing complex +Makefile.ins without generating them automatically is an +even more deadly sin in our opinion. + + +2: What's wrong with Automake? + + +We have tried to use Automake and found it to be inadequate +for our needs for several reasons. On the surface the +shortcomings to Automake may seem bugs or "not-yet-com- +pleted" features. However, make itself is broken, and any +tool built on top of make is broken as well. + + +3: Irritations + + +We'll start with the superficial irritations first: + +o there is no intrinsic support for wildcarding; Adding + support for wildcarding adds yet another layer to a + top-heavy system. + + This may sound silly, but for a fast moving project, + with 1250 sourcefiles, one does not want to administer + a list of filenames by hand: files are created, deleted + and moved very often, and wildcarding prevents that + distributions miss files. + + +o Automake tries to cater for every taste of make. But + anyone who does more than the trivial configure; make + install has to install Automake and GNU make anyway + (for example, you need GCC and GNU Make for dependency + tracking). + + Automake's universal make support is good for tools + that have to be highly portable, but you have pay in + ease of use and speed while developing. This means + that it is counterproductive to use Automake for non- + essential programs that are under (heavy) development. + + +o Support for filetypes in built in to Automake, and can- + not be added on the fly: Automake is very much targeted + at standard GNU packages that are written in C (or C++) + and come with info-pages. If you want to add + + + dependencies from or METAFONT files you are out of + luck. Ditto if you have weird file types (.pod), weird + programming languages, etc. + + There are as many file types as there are languages and + compilers. Extending Automake to support all these + languages is error-prone, and creates nasty version + dependencies between an Automake-using package and + Automake itself. A package should be able to supply + its own specific rules and targets. + + +o Dependency handling is unreliable in our experience. On + several occasions we had unexplainable errors, that + went away after doing a make distclean, and recompile. + + +o It is slower, much slower than a tailored solution. + This diffence in speed can be as large as 800%. (On + JCNs machine a make dist takes 17 minutes in stead of + 2) for every distribution made; this constitutes 45 + minutes of irritation on an average hacking-night. + + +o For a large project, a specialised Makefile system + costs relatively little extra effort. The extra effort + pays itself back in speed and control. + + +o The Makefiles, Makefile.ins, and extensions constitute + a huge amount of state. We found it hard to reproduce + bugs in Automake (Strictly spoken they aren't bugs, as + we haven't diagnosed because we couldn't reproduce + them.) + + +4: Fundamental problems + + +Many of the fundamental problems can be traced back to flaws +in make: + + +o make is not standardised. The only decent implementa- + tion is GNU make, and GNU make is not widespread enough + to require GNU make for compiling GNU tools. + + +o make does not have enough meta-ness: one cannot manipu- + late dependencies and rules in make: they cannot be put + in variables, mapped at lists, etc. + + (In our tailor made compilation system, we worked + around this non-feature by using generic include files + + + as a stopgap function call.) + + +o VPATH is a broken concept: programs should not try to + be intelligent on their own; being intelligent is some- + thing the programmer should do. make should do exactly + as it is told, and make should enable easy formulation + of these commands. + +Automake tries to solve these problems by building on top of +this broken tool: an extra layer of complexity is added, +with self-modifying Makefiles, and different Makefile ver- +sions for maintainer and user. + + +5: Conclusions + + +We could be called `cheap' for complaining about the above +points, while not even filing decent bugreports. The real- +ity is that we ourselves are busy and that we don't find it +amusing to hunt for and fix bugs in a fix (Automake) for a +broken tool (make). + +It should also be emphasised that we still think that +Automake is a good tool: it is excellent for small projects, +and reasonable for big projects that are fully "standard." +However, for LilyPond, with its many sourcefiles and many +different filetypes we found it unwieldy. + +We hope that some day a better replacement for make comes +along, so that the gruesomeness of make and friends may die +in oblivion. (*) + +(*) I personally would like to enter a Makefile as func- +tional program, whose execution caches function results on +the disk as files. But I shan't bother you further with my +vaporware thoughts.. diff --git a/stepmake/Documentation/out/layout.txt b/stepmake/Documentation/out/layout.txt new file mode 100644 index 0000000000..01bcb4a817 --- /dev/null +++ b/stepmake/Documentation/out/layout.txt @@ -0,0 +1,31 @@ + + + + + + + doos/ # gnu/windows32 build and binary releases + harmonia -> harmonia-x.y.z + harmonia-x.y.z/ + lilypond -> lilypond-x.y.z # symlink to development directory + lilypond-x.y.z/ # current development + patches/ # patches between different releases + RedHat/BUILD # RedHat build and binary releases + RedHat/RPMS + RedHat/SPECS + releases/ # .tar.gz releases + test/ # tarballs and diffs from current version + yodl -> yodl-1.30.17 + yodl-1.30.17 + + + + +with prefix $HOME/usr/src and (for building rpms only) in +$HOME/.rpmrc: + + + + + + topdir: /home/fred/usr/src/RedHat diff --git a/stepmake/Documentation/topdocs/GNUmakefile b/stepmake/Documentation/topdocs/GNUmakefile index d12c14370e..f01c12573d 100644 --- a/stepmake/Documentation/topdocs/GNUmakefile +++ b/stepmake/Documentation/topdocs/GNUmakefile @@ -8,8 +8,16 @@ AT_FILES = $(BLURBS) # at-dir = $(doc-dir)/ at-ext = .in BLURBS=BLURB COPERTINA FLAPTEKST +OUT_DIST_FILES=$(OUTTXT_FILES) -STEPMAKE_TEMPLATES=documentation yolily-topdoc +STEPMAKE_TEMPLATES=documentation yolily-topdoc install install-out include $(depth)/make/stepmake.make +INSTALLATION_DIR=$(datadir)/Documentation/topdocs +INSTALLATION_FILES=$(DIST_FILES) +POST_INSTALL=-mkdir $(INSTALLATION_DIR)/out + +INSTALLATION_OUT_DIR=$(datadir)/Documentation/topdocs/out +INSTALLATION_OUT_FILES=$(OUTTXT_FILES) + diff --git a/stepmake/Documentation/topdocs/out/AUTHORS.txt b/stepmake/Documentation/topdocs/out/AUTHORS.txt new file mode 100644 index 0000000000..30fdcd285f --- /dev/null +++ b/stepmake/Documentation/topdocs/out/AUTHORS.txt @@ -0,0 +1,26 @@ + + + + + + +NAME + + AUTHORS - who did what on StepMake? + +DESCRIPTION + + This file lists authors of StepMake, and what they did. + +AUTHORS + + +o Han-Wen Nienhuys , + http://www.cs.uu.nl/people/hanwen + Main author. + +o Jan Nieuwenhuizen , + http://www.xs4all.nl/~jantien + Main author. + +o Jeffrey B. Reed , Windows-nt fixes. diff --git a/stepmake/Documentation/topdocs/out/BLURB b/stepmake/Documentation/topdocs/out/BLURB new file mode 100644 index 0000000000..7af77f056d --- /dev/null +++ b/stepmake/Documentation/topdocs/out/BLURB @@ -0,0 +1,6 @@ +StepMake is a drop-in package that takes care of generic Makefile and +packaging/distribution issues. It enables you to write only the simplest of +Makefile snippets, while providing a series powerful make targets. Features +include speed, wildcarding, out/ dir build, stateless Makefiles and package +clustering. It includes some handy scripts for making (package-)diffs and +patches, making binary distributions etc. diff --git a/stepmake/Documentation/topdocs/out/INSTALL.txt b/stepmake/Documentation/topdocs/out/INSTALL.txt new file mode 100644 index 0000000000..a3c8f1c7f1 --- /dev/null +++ b/stepmake/Documentation/topdocs/out/INSTALL.txt @@ -0,0 +1,292 @@ + + + + + + +NAME + + INSTALL - installing StepMake + +DESCRIPTION + + This page documents installation and usage of StepMake + +ABSTRACT + + + + + + StepMake is a drop-in package that takes care of generic Makefile and + packaging/distribution issues. It enables you to write only the simplest of + Makefile snippets, while providing a series powerful make targets. Features + include speed, wildcarding, out/ dir build, stateless Makefiles and package + clustering. It includes some handy scripts for making (package-)diffs and + patches, making binary distributions etc. + + + + + +To use StepMake with your package, you do something remotely +like: + + + + + + tar xzf releases/stepmake-0.1.23 + cd package-x.x.x/ # package to be StepMake-ised + ./../stepmake-0.1.23/bin/stepmakeise.sh + + + + +You'll have to customize at least the files: + + + + + + ./VERSION . + ./configure.in + + + + +to your package's needs. You might want to take a look at: + + + ./make/Toplevel.make.in + ./config.hh.in + ./config.make.in + + + + + +Also, you should put a Makefile in every subdirectory of +your package. These makefiles generally are quite simple, +e.g. this is a the makefile for an include directory of +LilyPond: + + + + + + # lily/include/Makefile + + depth = ../.. + include $(depth)/make/Stepmake.make + + + + + +it will identify all .h, .hh, ... files and take care of +distributing them. + +There's a make/Template.make that you can use as an example. +See also the Makefiles in the LilyPond or Yodl package. + +Once included in your package, StepMake (or in fact, any +StepMake-ised package) behaves as a normal subdirectory; +make commands such as 'make dist' recurse into the stepmake +tree (For a list of available targets, type make help after +configuring). Stepmake (and any changes made) will be dis- +tributed with the main pacakage. However, StepMake doesn't +lose its independency, change to the stepmake directory, and +it'll behave as a main package. You shouldn't version +directory names of subpackages, otherwise you'll see that +package twice in each patch when you upgrade. + + +PREREQUISITES + + +To use StepMake with a package you need: + + +o A GNU system: StepMake is known to work on these GNU + systems: Linux (PPC, intel), FreeBSD, AIX, NeXTStep, + IRIX, Digital Unix and Solaris. If you have the Cygnus + WINDOWS32 port of the GNU utils, it will even work in + + + Windows NT/95, but we don't promise to support it. + +o GNU make + +o GNU autoconf + + +RECOMMENDED + + +Although not strictly necessary, these are recommended to +have. + + +o Python + +o Yodl. All documentation will be in Yodl. (1.22.jcn3) + +o GNU find + + +INTERNALS + + +Over time, we put a lot of effort in the configure, make, +distribute system (CMDS) for LilyPond. Some months ago, we +realised it was not standard GNU --- we require GNU make for +building, and Python for extra scripting. In an effort to +be more GNU, we tried automake, but after two weeks we +realised the costs were too high for us and we reverted to +our own system (see automake.urgh). Not long after that i +was confronted with two other packages that lacked a decent +CMDS. I realised that Lily's would be perfect, it's modular +and easy. The only problem was to make a clean cut between +generic and Lily specific stuff. The result was StepMake: a +bunch of generic makefiles, found in: + + + + + + stepmake/stepmake/*.make + + + + +eneric helper scripts: + + + stepmake/bin/*.sh + stepmake/bin/*.py + + + + +and modular configure functions: + + + + + + stepmake/configure.in + stepmake/aclocal.m4 + stepmake/config.hh.in + stepmake/config.make.in + + + + + +Of course, every package has its own configure- and make +peculiarities. The best way to create the configure scripts +is to copy them from stepmake[1] into you package's toplevel +directory. For most packages, you'll only have to comment +in/out some functions in configure.in. + +Package specific makefiles go in: + + + + + + make/Targets.make + make/Rulese.make + make/Substitute.make + + + + +and are included by the generic StepMake makefiles. + + +MAINTAINING + + +If you want to make and manage (binary) distributions, cre- +ate and apply patches, you'll need some framework that's +outside of the package's sourcetree. For a number of simple +maintenance tasks, StepMake will therefore assume the fol- +lowing directory structure: +----------- +[1] Actually, stepmake/bin/stepmakeise.sh will do +that for you. + + + doos/ # gnu/windows32 build and binary releases + harmonia -> harmonia-x.y.z + harmonia-x.y.z/ + lilypond -> lilypond-x.y.z # symlink to development directory + lilypond-x.y.z/ # current development + patches/ # patches between different releases + RedHat/BUILD # RedHat build and binary releases + RedHat/RPMS + RedHat/SPECS + releases/ # .tar.gz releases + test/ # tarballs and diffs from current version + yodl -> yodl-1.30.17 + yodl-1.30.17 + + + + +with prefix $HOME/usr/src and (for building rpms only) in +$HOME/.rpmrc: + + + + + + topdir: /home/fred/usr/src/RedHat + + + + + +Check and update the layout with the command: + + + + + + ./stepmake/bin/stepdirs.sh + + + + + + +SEE ALSO + + +../PATCHES.txt + + +CONFIGURING + + +Stepmake comes with a number of precooked configure func- +tions for general needs, such as AC_STEPMAKE_COMPILE for + + +simple C development and AC_STEPMAKE_CXX for C++. + +See configure.in and comment in/out the functions that your +package needs. For specific needs, you can write your own +autoconf code, see info autoconf. + + +AUTHORS + + +Jan Nieuwenhuizen + +Han-Wen Nienhuys + +Have fun! diff --git a/stepmake/NEWS b/stepmake/NEWS index 3b27f3db08..7e0a1e72bf 100644 --- a/stepmake/NEWS +++ b/stepmake/NEWS @@ -1,3 +1,20 @@ +pl 59 + - bf: package-diff (remove missing automatic) + - install templates, (urg) INSTALL*1,2 INSTALL_OUT*1,2 + +pl 58 + - distribute formatted txt files: no yodl needed for operation! + - guile 1.2 and 1.3 support + +pl 57 + - yodl first build script fixes + - uninstall fixes, but, urg, still have to uninstall twice + to get rid of all subdirs + - installed stepmake + * install not required + * only installs on explicit make install from toplevel stepdir + * rather urg, 'make dist' needs absolute distdir! + pl 56 - crude metapost stuff diff --git a/stepmake/VERSION b/stepmake/VERSION index 57fd582a8e..e24ec2af87 100644 --- a/stepmake/VERSION +++ b/stepmake/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=StepMake MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=56 +PATCH_LEVEL=59 MY_PATCH_LEVEL= # use the above to send patches, always empty for released version: diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index ebbe27e3c7..8041121141 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -153,6 +153,16 @@ AC_DEFUN(AC_STEPMAKE_GXX, [ fi ]) +AC_DEFUN(AC_STEPMAKE_GUILE, [ + # urg, must check for different functions in libguile + # to force new check iso reading from cache + AC_CHECK_LIB(guile, scm_shell, \ + LIBS="-lguile $LIBS" AC_DEFINE(HAVE_LIBGUILE), \ + AC_CHECK_LIB(readline, readline) \ + AC_CHECK_LIB(dl, dlopen) \ + AC_CHECK_LIB(guile, scm_boot_guile)) +]) + AC_DEFUN(AC_STEPMAKE_INIT, [ . $srcdir/VERSION @@ -167,16 +177,44 @@ AC_DEFUN(AC_STEPMAKE_INIT, [ package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'` changequote([, ])dnl + # No versioning on directory names of sub-packages + # urg, urg + stepmake=${datadir}/stepmake + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"` + if test "x$PACKAGE" = "xSTEPMAKE"; then echo Stepmake package! (cd stepmake; rm -f stepmake; ln -s ../stepmake .) (cd stepmake; rm -f bin; ln -s ../bin .) AC_CONFIG_AUX_DIR(bin) + stepmake=stepmake else echo Package: $PACKAGE - AC_CONFIG_AUX_DIR(stepmake/bin) + # Check for installed stepmake + if test -d $stepmake; then + echo Using installed stepmake: $stepmake + else + stepmake='$(depth)'/stepmake + echo Using local stepmake: $datadir/stepmake not found + fi + AC_CONFIG_AUX_DIR(\ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + ) fi + AC_SUBST(stepmake) AC_SUBST(package) AC_SUBST(PACKAGE) AC_SUBST(PACKAGE_NAME) @@ -191,10 +229,6 @@ AC_DEFUN(AC_STEPMAKE_INIT, [ absolute_builddir="`pwd`" AC_SUBST(absolute_builddir) - # No versioning on directory names of sub-packages - stepmake=stepmake - AC_SUBST(stepmake) - STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null` if test "x$STATE_VECTOR" != "x"; then STATE_VECTOR="\$(depth)/$STATE_VECTOR" @@ -249,14 +283,14 @@ dnl fi DOTEXE=.exe DIRSEP='\\' PATHSEP=';' - INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" else DIRSEP='/' PATHSEP=':' LN=ln LN_S='ln -s' ZIP="zip -r -9" - INSTALL="\$(stepdir)/../bin/install-sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c" fi AC_SUBST(DOTEXE) AC_SUBST(ZIP) @@ -461,11 +495,13 @@ AC_DEFUN(AC_STEPMAKE_YODL, [ AC_CHECK_PROGS(YODL2MSLESS, yodl2msless, -echo no yodl) AC_CHECK_PROGS(YODL2TEXINFO, yodl2texinfo, -echo no yodl) AC_CHECK_PROGS(YODL2TXT, yodl2txt, -echo no yodl) + YODL2LESS_DIR='$(bindir)/' else AC_SUBST(STRIPROFF) AC_SUBST(YODL) AC_SUBST(YODL2HTML) AC_SUBST(YODL2LATEX) + AC_SUBST(YODL2LESS_DIR) AC_SUBST(YODL2MAN) AC_SUBST(YODL2MSLESS) AC_SUBST(YODL2TEXINFO) diff --git a/stepmake/bin/GNUmakefile b/stepmake/bin/GNUmakefile index 36d16462ca..4ca8cd1a8f 100644 --- a/stepmake/bin/GNUmakefile +++ b/stepmake/bin/GNUmakefile @@ -1,10 +1,11 @@ # bin/Makefile depth = .. - EXTRA_DIST_FILES = install-sh config.sub config.guess -STEPMAKE_TEMPLATES=script +STEPMAKE_TEMPLATES=script install include $(depth)/make/stepmake.make - +POST_INSTALL=chmod 755 $(datadir)/bin/* +INSTALLATION_DIR=$(datadir)/bin +INSTALLATION_FILES=$(DIST_FILES) diff --git a/stepmake/bin/package-diff.py b/stepmake/bin/package-diff.py index 0d1aba2820..e8e28f1bab 100644 --- a/stepmake/bin/package-diff.py +++ b/stepmake/bin/package-diff.py @@ -35,7 +35,7 @@ def help (): sys.stdout.write ( 'Generate a patch to go to current version\n' ' -f, --from=FROM old is FROM\n' - ' -h, --help print this help\n' + ' -h, --help print this help\n' ' -p, --package=DIR specify package\n' ' -r, --release diff against latest release\n' ' -t, --to=TO to version TO\n' @@ -58,7 +58,10 @@ def remove_automatic (dirnames): for d in dirs: files = files + multiple_find (['*'], [d]) for f in files: - os.remove (f) + try: + os.remove (f) + except: + sys.stderr.write ("can't remove: `" + f + "'\n'") def dirname (v): # urg, again? diff --git a/stepmake/config.make.in b/stepmake/config.make.in index 292783aab0..a2a43b481f 100644 --- a/stepmake/config.make.in +++ b/stepmake/config.make.in @@ -59,6 +59,7 @@ TROFF = @TROFF@ YODL= @YODL@ YODL2HTML= @YODL2HTML@ YODL2LATEX= @YODL2LATEX@ +YODL2LESS_DIR= @YODL2LESS_DIR@ YODL2MAN= @YODL2MAN@ YODL2MSLESS= @YODL2MSLESS@ YODL2TEXINFO= @YODL2TEXINFO@ diff --git a/stepmake/configure b/stepmake/configure index 13f46dff90..34691c9722 100755 --- a/stepmake/configure +++ b/stepmake/configure @@ -593,6 +593,15 @@ fi PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'` package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'` + # No versioning on directory names of sub-packages + # urg, urg + stepmake=${datadir}/stepmake + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"` + if test "x$PACKAGE" = "xSTEPMAKE"; then echo Stepmake package! (cd stepmake; rm -f stepmake; ln -s ../stepmake .) @@ -616,10 +625,38 @@ ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + stepmake=stepmake else echo Package: $PACKAGE + # Check for installed stepmake + if test -d $stepmake; then + echo Using installed stepmake: $stepmake + else + stepmake='$(depth)'/stepmake + echo Using local stepmake: $datadir/stepmake not found + fi ac_aux_dir= -for ac_dir in stepmake/bin $srcdir/stepmake/bin; do +for ac_dir in \ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + $srcdir/\ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + ; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" @@ -631,7 +668,27 @@ for ac_dir in stepmake/bin $srcdir/stepmake/bin; do fi done if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in stepmake/bin $srcdir/stepmake/bin" 1>&2; exit 1; } + { echo "configure: error: can not find install-sh or install.sh in \ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + $srcdir/\ + $HOME/usr/local/share/stepmake/bin\ + $HOME/usr/local/lib/stepmake/bin\ + $HOME/usr/share/stepmake/bin\ + $HOME/usr/lib/stepmake/bin\ + /usr/local/share/stepmake/bin\ + /usr/local/lib/stepmake/bin\ + /usr/share/stepmake/bin\ + /usr/lib/stepmake/bin\ + stepmake/bin\ + " 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub @@ -642,6 +699,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + cat >> confdefs.h </dev/null` if test "x$STATE_VECTOR" != "x"; then STATE_VECTOR="\$(depth)/$STATE_VECTOR" @@ -691,7 +745,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:695: checking host system type" >&5 +echo "configure:749: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -716,7 +770,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:720: checking for $ac_word" >&5 +echo "configure:774: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -750,7 +804,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:754: checking for $ac_word" >&5 +echo "configure:808: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -787,7 +841,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:791: checking for $ac_word" >&5 +echo "configure:845: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -821,7 +875,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:825: checking for $ac_word" >&5 +echo "configure:879: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -854,7 +908,7 @@ test -n "$BASH" || BASH="/bin/sh" # Extract the first word of "${PYTHON:-python}", so it can be a program name with args. set dummy ${PYTHON:-python}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:858: checking for $ac_word" >&5 +echo "configure:912: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -923,14 +977,14 @@ fi DOTEXE=.exe DIRSEP='\\' PATHSEP=';' - INSTALL="\$(stepdir)/../bin/install-dot-exe.sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c" else DIRSEP='/' PATHSEP=':' LN=ln LN_S='ln -s' ZIP="zip -r -9" - INSTALL="\$(stepdir)/../bin/install-sh -c" + INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c" fi @@ -1004,7 +1058,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:1008: checking language" >&5 +echo "configure:1062: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -1037,7 +1091,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1041: checking for $ac_word" >&5 +echo "configure:1095: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1071,7 +1125,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1075: checking for $ac_word" >&5 +echo "configure:1129: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1105,7 +1159,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1109: checking for $ac_word" >&5 +echo "configure:1163: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1139,7 +1193,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1143: checking for $ac_word" >&5 +echo "configure:1197: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1172,7 +1226,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1176: checking for $ac_word" >&5 +echo "configure:1230: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1206,7 +1260,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1210: checking for $ac_word" >&5 +echo "configure:1264: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1240,7 +1294,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1244: checking for $ac_word" >&5 +echo "configure:1298: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1274,7 +1328,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1278: checking for $ac_word" >&5 +echo "configure:1332: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1303,6 +1357,7 @@ test -n "$YODL2TXT" && break done test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" + YODL2LESS_DIR='$(bindir)/' else @@ -1312,6 +1367,7 @@ test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" + export STRIPROFF YODL YODL2HTML YODL2LATEX YODL2MAN YODL2MSLESS YODL2TEXINFO YODL2TXT fi if test "x$YODL" = "-echo no yodl"; then @@ -1330,7 +1386,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1334: checking for $ac_word" >&5 +echo "configure:1390: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1493,13 +1549,13 @@ s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g +s%@stepmake@%$stepmake%g s%@package@%$package%g s%@PACKAGE@%$PACKAGE%g s%@PACKAGE_NAME@%$PACKAGE_NAME%g s%@package_depth@%$package_depth%g s%@AUTOGENERATE@%$AUTOGENERATE%g s%@absolute_builddir@%$absolute_builddir%g -s%@stepmake@%$stepmake%g s%@STATE_VECTOR@%$STATE_VECTOR%g s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g s%@host@%$host%g @@ -1528,6 +1584,7 @@ s%@YODL2MAN@%$YODL2MAN%g s%@YODL2MSLESS@%$YODL2MSLESS%g s%@YODL2TEXINFO@%$YODL2TEXINFO%g s%@YODL2TXT@%$YODL2TXT%g +s%@YODL2LESS_DIR@%$YODL2LESS_DIR%g s%@MAKEINFO@%$MAKEINFO%g CEOF diff --git a/stepmake/make/GNUmakefile b/stepmake/make/GNUmakefile index c204b04dc2..fab275e872 100644 --- a/stepmake/make/GNUmakefile +++ b/stepmake/make/GNUmakefile @@ -1,7 +1,7 @@ # file make/Makefile depth = .. -STEPMAKE_TEMPLATES=makedir +STEPMAKE_TEMPLATES=makedir install BLURBS=BLURB # COPERTINA FLAPTEKST ifneq ($(strip $(state-vector)),) @@ -10,4 +10,5 @@ endif include $(depth)/make/stepmake.make - +INSTALLATION_DIR=$(datadir)/make +INSTALLATION_FILES=$(DIST_FILES) diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm index c5f611a824..004a96b08c 100644 --- a/stepmake/make/out/stepmake.lsm +++ b/stepmake/make/out/stepmake.lsm @@ -1,15 +1,15 @@ Begin3 Title: StepMake -Version: 0.1.56 -Entered-date: 14OCT98 +Version: 0.1.59 +Entered-date: 23OCT98 Description: Keywords: music notation typesetting midi fonts engraving Author: janneke@gnu.org (Jan Nieuwenhuizen) hanwen@cs.ruu.nl (Han-Wen Nienhuys) Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 40k stepmake-0.1.56.tar.gz + 40k stepmake-0.1.59.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 40k stepmake-0.1.56.tar.gz + 40k stepmake-0.1.59.tar.gz Copying-policy: GPL End diff --git a/stepmake/make/out/stepmake.spec b/stepmake/make/out/stepmake.spec index bc6591be30..5131d881e9 100644 --- a/stepmake/make/out/stepmake.spec +++ b/stepmake/make/out/stepmake.spec @@ -1,9 +1,9 @@ Name: stepmake -Version: 0.1.56 +Version: 0.1.59 Release: 1 Copyright: GPL Group: Development -Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.56.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.59.tar.gz Summary: generic make package Packager: janneke@gnu.org (Jan Nieuwenhuizen) Buildroot: /tmp/stepmake-install diff --git a/stepmake/make/toplevel.make.in b/stepmake/make/toplevel.make.in index 4541064055..f471aaee77 100644 --- a/stepmake/make/toplevel.make.in +++ b/stepmake/make/toplevel.make.in @@ -8,11 +8,11 @@ depth = . # descent order into subdirectories: # +ifeq ($(PACKAGE),STEPMAKE) SUBDIRS = bin make stepmake Documentation -# - -# bootstrap stepmake: -# +else +SUBDIRS = +endif # # list of distribution files: @@ -22,7 +22,6 @@ README_FILES = NEWS README TODO README_TXT_FILES = AUTHORS.txt INSTALL.txt EXTRA_DIST_FILES = $(IN_FILES) VERSION $(README_FILES) $(SCRIPTS) NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES) - # # bootstrap stepmake: @@ -31,3 +30,21 @@ STEPMAKE_TEMPLATES=toplevel include $(depth)/make/stepmake.make # +# descent order into subdirectories: +# +ifeq ($(PACKAGE),STEPMAKE) +SUBDIRS = bin make stepmake Documentation +else +SUBDIRS = +endif +# + +#urg urg +stepmake/aclocal.m4: + -$(LN) aclocal.m4 $@ + +ifeq ($(PACKAGE),STEPMAKE) +INSTALLATION_DIR=$(datadir) +INSTALLATION_FILES=$(DIST_FILES) $(NON_ESSENTIAL_DIST_FILES) GNUmakefile config.make config.status +include $(stepdir)/install-targets.make +endif diff --git a/stepmake/stepmake/GNUmakefile b/stepmake/stepmake/GNUmakefile index 72d8b8047a..7bdbd3c278 100644 --- a/stepmake/stepmake/GNUmakefile +++ b/stepmake/stepmake/GNUmakefile @@ -10,9 +10,12 @@ depth = .. SUBDIRS = # -STEPMAKE_TEMPLATES=makedir - +STEPMAKE_TEMPLATES=makedir install # bootstrap stepmake: # -include $(depth)/make/stepmake.make + +INSTALLATION_DIR=$(datadir)/stepmake +INSTALLATION_FILES=GNUmakefile $(MAKE_FILES) + diff --git a/stepmake/stepmake/documentation-targets.make b/stepmake/stepmake/documentation-targets.make index 862eebf7f7..59c1b1ecc0 100644 --- a/stepmake/stepmake/documentation-targets.make +++ b/stepmake/stepmake/documentation-targets.make @@ -30,7 +30,7 @@ $(outdir)/$(package).info: $(outdir)/topinfo.texinfo $(OUTTEXINFO_FILES) # what to do here? ifneq ($(strip $(INFO_FILES)),) -INFOINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(infodir) depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_FILES)" -f $(stepdir)/install-outfiles.sub.make $@ +INFOINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(infodir) depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_FILES)" -f $(stepdir)/install-out.sub.make $@ localinstall: # $(INFO_FILES) -$(INSTALL) -d $(infodir) diff --git a/stepmake/stepmake/executable-vars.make b/stepmake/stepmake/executable-vars.make index 1bb8bf6d7f..fb32b06344 100644 --- a/stepmake/stepmake/executable-vars.make +++ b/stepmake/stepmake/executable-vars.make @@ -1 +1,5 @@ # empty +LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) $($(PACKAGE)_LDFLAGS) + +MODULE_LIBES=$(addsuffix /$(outdir)/library.a, $(MODULE_LIBS)) +LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) $(BLA_LIBES)#u8gh diff --git a/stepmake/stepmake/generic-targets.make b/stepmake/stepmake/generic-targets.make index 3ca5d629f1..1d368b0a4b 100644 --- a/stepmake/stepmake/generic-targets.make +++ b/stepmake/stepmake/generic-targets.make @@ -86,6 +86,9 @@ doc++: local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES) +# echo topdir=$(topdir) +# echo distdir=$(distdir) +# echo locladir=$(localdir) mkdir -p $(distdir)/$(localdir) $(LN) $(DIST_FILES) $(distdir)/$(localdir) @@ -99,7 +102,9 @@ local-dist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES) mkdir $(distdir)/$(localdir)/out; \ $(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/out;; \ esac - $(foreach i, $(SUBDIRS), $(MAKE) distdir=../$(distdir) localdir=$(localdir)/$(i) -C $(i) local-dist &&) true +# $(foreach i, $(SUBDIRS), $(MAKE) distdir=../$(distdir) localdir=$(localdir)/$(i) -C $(i) local-dist &&) true +# absolute for installed stepmake + $(foreach i, $(SUBDIRS), $(MAKE) topdir=$(topdir) distdir=$(distdir) localdir=$(localdir)/$(notdir $(i)) -C $(i) local-dist &&) true @@ -118,7 +123,7 @@ $(outdir)/VERSION: $(depth)/VERSION cp $< $@ $(outdir)/version.hh: $(outdir)/VERSION - sh ./$(step-bindir)/make-version.sh $< > $@ + sh $(step-bindir)/make-version.sh $< > $@ # should this be in Rules? configure: configure.in aclocal.m4 diff --git a/stepmake/stepmake/generic-vars.make b/stepmake/stepmake/generic-vars.make index 223c59d093..811dd0d3a2 100644 --- a/stepmake/stepmake/generic-vars.make +++ b/stepmake/stepmake/generic-vars.make @@ -13,20 +13,21 @@ # not eh, normally used DEPTH = $(depth)/$(package-depth) +# topdir := $(shell cd $(depth); pwd) +ifeq ($(topdir),) topdir := $(shell cd $(depth); pwd) +endif pwd := $(shell pwd) - # derived names ifeq ($(distdir),) - distdir = $(depth)/$(outdir)/$(DIST_NAME) +# distdir = $(depth)/$(outdir)/$(DIST_NAME) +# must be absolute for 'make dist' with installed stepmake + distdir = $(topdir)/$(outdir)/$(DIST_NAME) DIST_NAME = $(package)-$(TOPLEVEL_VERSION) endif distname = $(package)-$(TOPLEVEL_VERSION) - - - # obsolete? makeout = $(depth)/make/$(outdir) docout = $(depth)/Documentation/$(outdir) @@ -38,8 +39,9 @@ po-dir = $(depth)/po # sort-out which of these are still needed # $(package)_bindir = $(depth)/bin -step-bindir = $(depth)/$(stepmake)/bin -abs-step-bindir = $(topdir)/$(stepmake)/bin +step-bindir = $(stepmake)/bin +# deprecated +# abs-step-bindir = $(topdir)/$(stepmake)/bin # group-dir = $(shell cd $(DEPTH)/..; pwd) release-dir = $(group-dir)/releases @@ -83,10 +85,7 @@ date := $(shell date +%x) #duplicated? ARFLAGS = ru INCLUDES = include $(outdir) $($(PACKAGE)_INCLUDES) -LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) $($(PACKAGE)_LDFLAGS) -MODULE_LIBES=$(addsuffix /$(outdir)/library.a, $(MODULE_LIBS)) -LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) # urg: for windows ? # LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) -lstdc++ # @@ -134,7 +133,7 @@ endif # substitute $(STRIP) in Site.make if you want stripping DO_STRIP=true -LOOP=$(foreach i, $(SUBDIRS), $(MAKE) -C $(i) $@ &&) true +LOOP=$(foreach i, $(SUBDIRS), $(MAKE) PACKAGE=$(PACKAGE) -C $(i) $@ &&) true include $(stepdir)/files.make diff --git a/stepmake/stepmake/install-out-rules.make b/stepmake/stepmake/install-out-rules.make new file mode 100644 index 0000000000..841db19676 --- /dev/null +++ b/stepmake/stepmake/install-out-rules.make @@ -0,0 +1,2 @@ + +#empty diff --git a/stepmake/stepmake/install-out-targets.make b/stepmake/stepmake/install-out-targets.make new file mode 100644 index 0000000000..eb445927a9 --- /dev/null +++ b/stepmake/stepmake/install-out-targets.make @@ -0,0 +1,41 @@ +# install-out-targets.make + +localinstall: localinstall-files localinstall-outfiles + +localinstall-files: + +# urg, parameterise +localinstall-outfiles: $(INSTALLATION_OUT_FILES) $(INSTALLATION_OUT_FILES1) $(INSTALLATION_OUT_FILES2) + -$(INSTALL) -d $(INSTALLATION_OUT_DIR) + $(foreach i, $(INSTALLATION_OUT_FILES), \ + $(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR) && )true +ifneq ($(strip $(INSTALLATION_OUT_FILES1)),) + -$(INSTALL) -d $(INSTALLATION_OUT_DIR1) + $(foreach i, $(INSTALLATION_OUT_FILES1), \ + $(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR1) && )true +endif +ifneq ($(strip $(INSTALLATION_OUT_FILES2)),) + -$(INSTALL) -d $(INSTALLATION_OUT_DIR2) + $(foreach i, $(INSTALLATION_OUT_FILES2), \ + $(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR2) && )true +endif + +localuninstall: localuninstall-outfiles localuninstall-files + +localuninstall-files: + +localuninstall-outfiles: + $(foreach i, $(notdir $(INSTALLATION_OUT_FILES)), \ + rm -f $(INSTALLATION_OUT_DIR)/$(i) && ) true + -rmdir $(INSTALLATION_OUT_DIR) +ifneq ($(strip $(INSTALLATION_OUT_FILES1)),) + $(foreach i, $(notdir $(INSTALLATION_OUT_FILES1)), \ + rm -f $(INSTALLATION_OUT_DIR1)/$(i) && ) true + -rmdir $(INSTALLATION_OUT_DIR1) +endif +ifneq ($(strip $(INSTALLATION_OUT_FILES2)),) + $(foreach i, $(notdir $(INSTALLATION_OUT_FILES2)), \ + rm -f $(INSTALLATION_OUT_DIR2)/$(i) && ) true + -rmdir $(INSTALLATION_OUT_DIR2) +endif +# -(cd $(INSTALLATION_OUT_DIR)/..; dir=`dirname \`pwd\`` cd ..; rmdir $$dir) diff --git a/stepmake/stepmake/install-out-vars.make b/stepmake/stepmake/install-out-vars.make new file mode 100644 index 0000000000..841db19676 --- /dev/null +++ b/stepmake/stepmake/install-out-vars.make @@ -0,0 +1,2 @@ + +#empty diff --git a/stepmake/stepmake/install-out.sub.make b/stepmake/stepmake/install-out.sub.make new file mode 100644 index 0000000000..cd95c35f5b --- /dev/null +++ b/stepmake/stepmake/install-out.sub.make @@ -0,0 +1,5 @@ +# install-out.sub.make + +include $(depth)/make/stepmake.make +include $(stepdir)/install-out-targets.make + diff --git a/stepmake/stepmake/install-outfiles.make b/stepmake/stepmake/install-outfiles.make deleted file mode 100644 index b4f2539f8c..0000000000 --- a/stepmake/stepmake/install-outfiles.make +++ /dev/null @@ -1,15 +0,0 @@ -# Initial_outfiles.make - -localinstall: localinstall-files - -localinstall-files: $(INSTALLATION_OUT_FILES) - -$(INSTALL) -d $(INSTALLATION_OUT_DIR) - $(foreach i, $(INSTALLATION_OUT_FILES), \ - $(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR) && )true - -localuninstall: localuninstall-files - -localuninstall-files: - $(foreach i, $(notdir $(INSTALLATION_OUT_FILES)), \ - rm -f $(INSTALLATION_OUT_DIR)/$(i) && ) true - -rmdir $(INSTALLATION_OUT_DIR) diff --git a/stepmake/stepmake/install-outfiles.sub.make b/stepmake/stepmake/install-outfiles.sub.make deleted file mode 100644 index a9a306bc0b..0000000000 --- a/stepmake/stepmake/install-outfiles.sub.make +++ /dev/null @@ -1,5 +0,0 @@ -# Initial_outfiles.sub.make - -include $(depth)/make/stepmake.make -include $(stepdir)/install-outfiles.make - diff --git a/stepmake/stepmake/install-rules.make b/stepmake/stepmake/install-rules.make new file mode 100644 index 0000000000..841db19676 --- /dev/null +++ b/stepmake/stepmake/install-rules.make @@ -0,0 +1,2 @@ + +#empty diff --git a/stepmake/stepmake/install-targets.make b/stepmake/stepmake/install-targets.make new file mode 100644 index 0000000000..aa648c3541 --- /dev/null +++ b/stepmake/stepmake/install-targets.make @@ -0,0 +1,49 @@ +# install-targets.make + +localinstall: localinstall-files localinstall-outfiles + +localinstall-outfiles: + +# urg, parameterise +localinstall-files: + $(PRE_INSTALL) + -$(INSTALL) -d $(INSTALLATION_DIR) + $(foreach i, $(INSTALLATION_FILES),\ + $(INSTALL) -m 644 $(i) $(INSTALLATION_DIR) &&)true + $(POST_INSTALL) +ifneq ($(strip $(INSTALLATION_FILES1)),) + $(PRE_INSTALL1) + -$(INSTALL) -d $(INSTALLATION_DIR1) + $(foreach i, $(INSTALLATION_FILES1),\ + $(INSTALL) -m 644 $(i) $(INSTALLATION_DIR1) &&)true + $(POST_INSTALL1) +endif +ifneq ($(strip $(INSTALLATION_FILES2)),) + $(PRE_INSTALL2) + -$(INSTALL) -d $(INSTALLATION_DIR2) + $(foreach i, $(INSTALLATION_FILES2),\ + $(INSTALL) -m 644 $(i) $(INSTALLATION_DIR2) &&)true + $(POST_INSTALL2) +endif + +localuninstall: localuninstall-outfiles localuninstall-files + +localuninstall-outfiles: + +localuninstall-files: + $(foreach i, $(INSTALLATION_FILES),\ + rm -f $(INSTALLATION_DIR)/$(i) && ) true + -$(foreach i, $(SUBDIRS), rmdir $(INSTALLATION_DIR)/$(i); ) + -rmdir $(INSTALLATION_DIR) +ifneq ($(strip $(INSTALLATION_FILES1)),) + $(foreach i, $(INSTALLATION_FILES1),\ + rm -f $(INSTALLATION_DIR1)/$(i) && ) true + -$(foreach i, $(SUBDIRS), rmdir $(INSTALLATION_DIR1)/$(i); ) + -rmdir $(INSTALLATION_DIR1) +endif +ifneq ($(strip $(INSTALLATION_FILES2)),) + $(foreach i, $(INSTALLATION_FILES2),\ + rm -f $(INSTALLATION_DIR2)/$(i) && ) true + -$(foreach i, $(SUBDIRS), rmdir $(INSTALLATION_DIR2)/$(i); ) + -rmdir $(INSTALLATION_DIR2) +endif diff --git a/stepmake/stepmake/install-vars.make b/stepmake/stepmake/install-vars.make new file mode 100644 index 0000000000..841db19676 --- /dev/null +++ b/stepmake/stepmake/install-vars.make @@ -0,0 +1,2 @@ + +#empty diff --git a/stepmake/stepmake/install.sub.make b/stepmake/stepmake/install.sub.make new file mode 100644 index 0000000000..7a4dc59e2b --- /dev/null +++ b/stepmake/stepmake/install.sub.make @@ -0,0 +1,5 @@ +# install.sub.make + +include $(depth)/make/stepmake.make +include $(stepdir)/install-targets.make + diff --git a/stepmake/stepmake/installfiles.make b/stepmake/stepmake/installfiles.make deleted file mode 100644 index 58d10e30cf..0000000000 --- a/stepmake/stepmake/installfiles.make +++ /dev/null @@ -1,15 +0,0 @@ -# Installfiles.make - -localinstall: localinstall-files - -localinstall-files: - -$(INSTALL) -d $(INSTALLATION_DIR) - $(foreach i, $(INSTALLATION_FILES),\ - $(INSTALL) -m 644 $(i) $(INSTALLATION_DIR) &&)true - -localuninstall: localuninstall-files - -localuninstall-files: - $(foreach i, $(INSTALLATION_FILES),\ - rm -f $(INSTALLATION_DIR)/$(i) && ) true - -rmdir $(INSTALLATION_DIR) diff --git a/stepmake/stepmake/metapost-rules.make b/stepmake/stepmake/metapost-rules.make index 866786d15b..a33b8cdd52 100644 --- a/stepmake/stepmake/metapost-rules.make +++ b/stepmake/stepmake/metapost-rules.make @@ -4,7 +4,7 @@ $(outdir)/%.pfa: %.mf # i've got no idea what this scaling could be for, on both sides... # it seems that 'low_res', which should be all we ever need according # to the metapost mfplain guru, really does 200dpi, iso 600dpi (minimun) - $(METAPOST) "&mfplain \mode=lowres; \mag=100.0; batchmode; input $<" + -$(METAPOST) "&mfplain \mode=lowres; \mag=100.0; batchmode; input $<" # -$(METAPOST) "&mfmp \mode=ljfour; \mag=100.0; batchmode; input $<" $(PYTHON) $(depth)/buildscripts/ps-to-pfa.py $< rm -f $(basename $(@F)).[0-9]* diff --git a/stepmake/stepmake/toplevel-targets.make b/stepmake/stepmake/toplevel-targets.make index b5423aa25d..32e734cba2 100644 --- a/stepmake/stepmake/toplevel-targets.make +++ b/stepmake/stepmake/toplevel-targets.make @@ -13,9 +13,10 @@ local-maintainerclean: GNUmakefile: make/toplevel.make.in $(MAKE) INFILE=$< OUTFILE=$@ -f $(stepdir)/automatically-generated.sub.make -aclocal.m4: $(stepdir)/../aclocal.m4 +ifneq ($(PACKAGE),STEPMAKE) +aclocal.m4: $(stepmake)/aclocal.m4 $(MAKE) INFILE=$< OUTFILE=$@ LINECOMMENT=dnl -f $(stepdir)/automatically-generated.sub.make - +endif local-WWW: #index.html @@ -35,7 +36,7 @@ dist: # ugh. # Can't compare "stage1" dist with "stage2" dist in this way? -ln -f $(depth)/$(outdir)/$(distname).tar.gz $(release-dir) - rm -rf ./$(distdir)/ + rm -rf $(distdir)/ local-help: @echo -e "\ diff --git a/tex/GNUmakefile b/tex/GNUmakefile index 86bf7797b0..1befb1f496 100644 --- a/tex/GNUmakefile +++ b/tex/GNUmakefile @@ -6,10 +6,10 @@ depth = .. TEX_FILES = $(wildcard *.tex) EXTRA_DIST_FILES = $(TEX_FILES) lilyponddefs.ps +STEPMAKE_TEMPLATES=install INSTALLATION_DIR=$(datadir)/tex/ INSTALLATION_FILES=$(TEX_FILES) include $(depth)/make/stepmake.make -include $(stepdir)/installfiles.make diff --git a/tex/lilyponddefs.ps b/tex/lilyponddefs.ps index b3ba94564e..467dc4589a 100644 --- a/tex/lilyponddefs.ps +++ b/tex/lilyponddefs.ps @@ -15,7 +15,8 @@ { /object exch def gsave - exch translate + %exch translate + translate 0 0 moveto object grestore @@ -67,7 +68,7 @@ stafflinethickness 1.6 mul widthbar } bind def -/maatstreep +/maatstreep % height { thinbar } bind def @@ -77,8 +78,9 @@ thickbar } bind def -/generalmeter +/generalmeter % num den { + pop pop } bind def /pianobrace @@ -110,7 +112,8 @@ yoffset staffheight 8 mul sub /yoffset exch def } bind def -/unknown {} bind def +/unknown { (U) show} bind def +/empty {(E) show} bind def /turnOnExperimentalFeatures { } bind def -- 2.39.2