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)))
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
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:
-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:
- <filename>.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
--- /dev/null
+
+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:
+ <filename>.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
+
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
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
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
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
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)
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"
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)
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)
YODL= @YODL@
YODL2HTML= @YODL2HTML@
YODL2LATEX= @YODL2LATEX@
+YODL2LESS_DIR= @YODL2LESS_DIR@
YODL2MAN= @YODL2MAN@
YODL2MSLESS= @YODL2MSLESS@
YODL2TEXINFO= @YODL2TEXINFO@
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
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 .)
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"
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
+
cat >> confdefs.h <<EOF
#define PACKAGE "${PACKAGE_NAME}"
EOF
absolute_builddir="`pwd`"
- # No versioning on directory names of sub-packages
- stepmake=stepmake
-
-
STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null`
if test "x$STATE_VECTOR" != "x"; then
STATE_VECTOR="\$(depth)/$STATE_VECTOR"
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
# 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
# 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
# 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
# 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
# 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
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
# 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
# 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
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.
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 1175 "configure"
+#line 1227 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1179: \"$ac_link\") 1>&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
{ 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
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
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
# 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"
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
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 1306 "configure"
+#line 1350 "configure"
#include "confdefs.h"
#include <stdlib.h>
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
:
# 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
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.
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 1383 "configure"
+#line 1427 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1387: \"$ac_link\") 1>&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
{ 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
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
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
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
-#line 1471 "configure"
+#line 1515 "configure"
#include "confdefs.h"
#include <FlexLexer.h>
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*
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 <<EOF
-#line 1531 "configure"
+#line 1575 "configure"
#include "confdefs.h"
template <class T> struct foo { static int baz; };
return foo<int>::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
# 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
# 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
# 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
# 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
# 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
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;;
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
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1842 "configure"
+#line 1886 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
gettext()
; return 0; }
EOF
-if { (eval echo configure:1856: \"$ac_link\") 1>&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
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 <<EOF
-#line 1891 "configure"
+#line 1935 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:1917: \"$ac_link\") 1>&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
# 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
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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
done
test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
+ YODL2LESS_DIR='$(bindir)/'
else
+
export STRIPROFF YODL YODL2HTML YODL2LATEX YODL2MAN YODL2MSLESS YODL2TEXINFO YODL2TXT
fi
if test "x$YODL" = "-echo no yodl"; then
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
ac_save_LIBS="$LIBS"
LIBS="-lguile $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2454 "configure"
+#line 2498 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
scm_shell()
; return 0; }
EOF
-if { (eval echo configure:2468: \"$ac_link\") 1>&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 <<EOF
+#line 2544 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char readline();
+
+int main() {
+readline()
+; return 0; }
+EOF
+if { (eval echo configure:2558: \"$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
+ ac_tr_lib=HAVE_LIB`echo readline | sed -e 's/^a-zA-Z0-9_/_/g' \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+ LIBS="-lreadline $LIBS"
+
+else
+ echo "$ac_t""no" 1>&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 <<EOF
+#line 2594 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo configure:2608: \"$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
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 <<EOF
+#define $ac_tr_lib 1
+EOF
+
+ LIBS="-ldl $LIBS"
+
+else
+ echo "$ac_t""no" 1>&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 <<EOF
+#line 2644 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char scm_boot_guile();
+
+int main() {
+scm_boot_guile()
+; return 0; }
+EOF
+if { (eval echo configure:2658: \"$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
+ ac_tr_lib=HAVE_LIB`echo guile | sed -e 's/^a-zA-Z0-9_/_/g' \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
cat >> confdefs.h <<EOF
#define $ac_tr_lib 1
echo "$ac_t""no" 1>&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
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 2508 "configure"
+#line 2699 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:2521: \"$ac_link\") 1>&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
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 <<EOF
-#line 2544 "configure"
+#line 2735 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
; return 0; }
EOF
-if { (eval echo configure:2570: \"$ac_link\") 1>&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
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 <<EOF
-#line 2599 "configure"
+#line 2790 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
; return 0; }
EOF
-if { (eval echo configure:2625: \"$ac_link\") 1>&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
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 <<EOF
-#line 2657 "configure"
+#line 2848 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2683: \"$ac_link\") 1>&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
# 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
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
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
# 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"
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)
Bow 1
Bezier_bow 1
Change_iterator 1
+Change_translator 1
Chord 1
Chord_iterator 1
Clef_item 1
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
Symtables 1
Text_def 1
+Text_item 1
Text_req 1
Time_description 1
Translation_property 0
#include "rational.hh"
/// indent of each level
-const INDTAB = 2;
+const int INDTAB = 2;
/*
should use Regexp library.
nexti = (nexti + j*j)%sz;
}
- finish:
return retval;
}
};
V operator [] (String k) const
{
- return elem (k);
+ V retval;
+ if (!elem_b (k))
+ return retval ;
+ retval ((Dictionary<V> *) this)->elem (k);
}
V remove (String s)
INSTALLATION_DIR=$(datadir)/ly/
INSTALLATION_FILES=$(INI_FILES)
+STEPMAKE_TEMPLATES=install
LOCALSTEPMAKE_TEMPLATES=mutopia
include $(depth)/make/stepmake.make
-
-include $(stepdir)/installfiles.make
-
--- /dev/null
+%{
+
+ 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 <jobrador@ipc4.uib.es>
+
+\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 }
+}
+
+
\include "property.ly"
+\include "scm.ly"
+
% music = "\melodic\relative c"
-2 = \symboltables { \table_thirteen }
-1 = \symboltables { \table_sixteen }
0 = \symboltables { \table_twenty }
-
+
\include "params.ly";
}
% 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 }
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
--- /dev/null
+\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>
+ <c_\thumb c'-3(> <)d_\thumb d'-3]>
+ }
+ \paper{
+ linewidth = 80.\mm;
+ castingalgorithm = \Wordwrap;
+ }
+}
+
+
MODULE_LIBS=$(depth)/lib $(depth)/flower
+EXTRA_LIBES=-lguile #ugh
+BLA_LIBES=-lguile #ugh
+
STEPMAKE_TEMPLATES= c++ executable
include $(depth)/make/stepmake.make
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<Stem*> (n) : 0;
}
bool
Abbreviation_beam_engraver::do_try_request (Request*r)
{
- Musical_req* mus_l = r->access_Musical_req ();
+ Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
if (!mus_l)
return false;
- Abbreviation_beam_req * b = mus_l->access_Abbreviation_beam_req ();
+ Abbreviation_beam_req * b = dynamic_cast <Abbreviation_beam_req *> (mus_l);
if (!b)
return false;
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 <Item *> (i.elem_l_);
int type_i = span_reqs_drul_[LEFT]->type_i_;
s->flag_i_ = intlog2 (type_i) - 2;
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);
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;
}
#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 <Command_req *> (r);
if (!(c &&
- c->access_Bracket_req ()))
+ dynamic_cast <Bracket_req *> (c)))
{
return false;
}
- Bracket_req * b = c->access_Bracket_req ();
+ Bracket_req * b = dynamic_cast <Bracket_req *> (c);
bracket_req_arr_.push (b);
return true;
}
-
void
Tuplet_engraver::do_process_requests ()
{
int stopcount =0;
- Link_array<Slur> start_arr;
+ Link_array<Plet_spanner> start_arr;
for (int i=0; i < bracket_req_arr_.size (); i++)
{
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++)
{
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 <Item *> (i.elem_l_);
for (int j =0; j <started_span_p_arr_.size (); j++)
- started_span_p_arr_[j]->add_column (nc);
+ // started_span_p_arr_[j]->add_column (nc);
+ ;
}
}
*/
Link_array<Score_element> r;
for (int i=0; i < elem_l_arr_.size (); i++)
- r.push (elem_l_arr_[i]->access_Score_element());
+ r.push (dynamic_cast<Score_element*>(elem_l_arr_[i]));
+
return r;
}
{
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 <Axis_group_element *> (e);
if (axis_group)
childs.concat (axis_group->get_children ());
}
Link_array<Score_element> elems = elem_l_arr ();
for (int i=0; i < elems.size(); i++)
{
- Item * it_l = elems[i]->access_Item ();
+ Item * it_l = dynamic_cast<Item*> (elems[i]);
assert (it_l);
}
}
Link_array<Score_element> elems = elem_l_arr ();
for (int i=0; i < elems.size(); i++)
{
- Item* it_l = elems[i]->access_Item ();
+ Item* it_l = dynamic_cast<Item*> (elems[i]);
Direction j=LEFT;
do
{
{
if (!elems[i]->line_l())
{
- Item * item_l = elems[i]->access_Item ();
+ Item * item_l = dynamic_cast<Item*> (elems[i]);
if (item_l
&& item_l->breakable_b_
&& item_l->break_status_dir() == 0)
/* 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 <Spanner *> (elt))
{
- Spanner * sp = elt->access_Spanner ();
+ Spanner * sp = dynamic_cast <Spanner *> (elt);
for (int j =0; j < broken_into_l_arr_.size(); j++)
{
}
}
- else if (elt->access_Item ()
- && elt->access_Item ()->breakable_b_
- && elt->access_Item ()->break_status_dir () == 0)
+ else if (dynamic_cast <Item *> (elt)
+ && dynamic_cast <Item *> (elt)->breakable_b_
+ && dynamic_cast <Item *> (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 <Item *> (elt)->broken_to_drul_[j];
Line_of_score * item_line_l = my_item->line_l() ;
if (! item_line_l)
continue;
void
Bar_column_engraver::acknowledge_element (Score_element_info info)
{
- Item * it = info.elem_l_->access_Item ();
+ Item * it = dynamic_cast <Item *> (info.elem_l_);
if (!it)
return;
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 <Item *> (n) : 0;
}
}
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 <Command_req *> (r_l);
+ if (!c_l|| !dynamic_cast <Bar_req *> (c_l))
return false;
- Bar_req * b= c_l->access_Bar_req ();
+ Bar_req * b= dynamic_cast <Bar_req *> (c_l);
if (bar_req_l_ && bar_req_l_->equal_b (b))
return false;
Bar_number_engraver::acknowledge_element (Score_element_info i)
{
- Item *it=i.elem_l_->access_Item ();
+ Item *it=dynamic_cast <Item *> (i.elem_l_);
if (script_p_
|| !it || !it->is_type_b (Bar::static_name()))
return;
bool
Beam_engraver::do_try_request(Request*r)
{
- Musical_req* mus_l = r->access_Musical_req ();
+ Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
if (!mus_l)
return false;
- Beam_req* b = mus_l->access_Beam_req ();
+ Beam_req* b = dynamic_cast <Beam_req *> (mus_l);
if (!b)
return false;
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 <Item *> (i.elem_l_);
+ if (!dynamic_cast <Rhythmic_req *> (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 <Rhythmic_req *> (i.req_l_);
if (rhythmic_req->duration_.durlog_i_<= 2)
{
rhythmic_req->warning (_ ("stem doesn't fit in beam"));
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 <Item *> (o), n? (Stem*) dynamic_cast <Item *> (n):0);
}
Interval
}
/* ugh; should make Clef_referenced baseclass */
- Item * it_l =info.elem_l_->access_Item ();
+ Item * it_l =dynamic_cast <Item *> (info.elem_l_);
if (it_l)
{
if (it_l->is_type_b (Note_head::static_name ()))
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 <Command_req *> (r_l);
+ if (!creq_l || !dynamic_cast <Clef_change_req *> (creq_l))
return false;
- clef_req_l_ = creq_l->access_Clef_change_req ();
+ clef_req_l_ = dynamic_cast <Clef_change_req *> (creq_l);
read_req (clef_req_l_);
return true;
}
{
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 <Item *> (i.elem_l_);
if (c->rest_b ())
return ;
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 <Item *> (o_l),
+ (Note_column*)(n_l?dynamic_cast <Item *> (n_l):0));
}
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 <Cadenza_req *> (r);
return cad->on_b_ == on_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 <Bar_req *> (r);
return type_str_ == b->type_str_;
}
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 <Partial_measure_req *> (r);
return p->duration_ == duration_;
}
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 <Time_signature_change_req *> (r);
return m->beats_i_ == beats_i_
&& one_beat_i_ == m->one_beat_i_;
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 <Tempo_req *> (r);
return t->dur_.length()== dur_.length () && metronome_i_ == t->metronome_i_;
}
--- /dev/null
+// 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;
+}
+
void
Dot_column_engraver::acknowledge_element (Score_element_info info)
{
- Item * i=info.elem_l_->access_Item ();
+ Item * i=dynamic_cast <Item *> (info.elem_l_);
if (! (i && i->is_type_b (Rhythmic_head::static_name ())))
return;
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 <Item *> (o);
+ Item *ni = n?dynamic_cast <Item *> (n):0;
if (oi&&oi->is_type_b (Rhythmic_head::static_name ()))
head_l_arr_.substitute ((Rhythmic_head*)oi, (Rhythmic_head*)ni);
bool
Dynamic_engraver::do_try_request (Request * r)
{
- Musical_req * m = r->access_Musical_req ();
+ Musical_req * m = dynamic_cast <Musical_req *> (r);
if (!m)
return false;
- Dynamic_req * d = m->access_Dynamic_req ();
+ Dynamic_req * d = dynamic_cast <Dynamic_req *> (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 <Span_dynamic_req *> (d)
+ && dynamic_cast <Span_dynamic_req *> (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 <Dynamic_req *> (m));
return true;
}
void
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 <Absolute_dynamic_req *> (dreq_l))
{
if (dynamic_p_)
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 <Absolute_dynamic_req *> (dreq_l)->loudness_str ();
td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_;
td_p->style_str_ = "dynamic";
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 <Span_dynamic_req *> (dreq_l))
{
- Span_dynamic_req* span_l = dreq_l->access_Span_dynamic_req ();
+ Span_dynamic_req* span_l = dynamic_cast <Span_dynamic_req *> (dreq_l);
if (span_l->spantype == Span_req::STOP)
{
if (!cresc_p_)
Link_array<Translator_group> groups = group_l_arr ();
for (int i=0; i < groups.size(); i++)
{
- Engraver * eng = groups[i]->access_Engraver ();
+ Engraver * eng = dynamic_cast<Engraver*> (groups[i]);
if (eng)
{
Engraver_group_engraver * group =
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<Engraver*> (nongroups[i]);
if (eng && eng!= info.origin_grav_l_arr_[0])
eng->acknowledge_element (info);
}
announce_info_arr_.clear ();
for (int i=0; i < nongroups.size(); i++)
{
- Engraver * eng = nongroups[i]->access_Engraver ();
+ Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
if (eng)
eng->process_acknowledged ();
}
Link_array<Translator> 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<Engraver*> (simple_translators[i]);
if (eng)
eng->fill_staff_info (inf);
}
daddy_grav_l()->announce_element (i);
}
-
void
Engraver::typeset_element (Score_element*p)
{
daddy_grav_l()->typeset_element (p);
}
+
Paper_def*
Engraver::paper() const
{
Engraver::daddy_grav_l () const
{
return (daddy_trans_l_ )
- ? (Engraver_group_engraver*) daddy_trans_l_->access_Engraver ()
+ ? (Engraver_group_engraver*) dynamic_cast <Engraver *> (daddy_trans_l_)
: 0;
}
#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
{
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 <Item *> (e));
Line_group_engraver_group::typeset_element (e);
}
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 <Item *> (o),
+ (n)? (Note_head*)dynamic_cast <Item *> (n) : 0);
}
if (note_req_l_)
return false;
- if (!(req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Note_req ()))
-
+ if (!(dynamic_cast <Note_req *> (req_l)))
return false;
- note_req_l_=req_l->access_Musical_req ()->access_Rhythmic_req ();
+ note_req_l_=dynamic_cast <Rhythmic_req *> (req_l);
return true;
}
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 *> (note_req_l_)->pitch_.steps ();
Score_element_info itinf (note_p_,note_req_l_);
bool
Note_heads_engraver::do_try_request (Request *req_l)
{
- if (!req_l->access_Musical_req ())
+ if (!dynamic_cast <Musical_req *> (req_l))
return false;
- Note_req * n =req_l->access_Musical_req ()->access_Note_req ();
+ Note_req * n =dynamic_cast <Note_req *> (req_l);
if (!n)
return false;
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 *> (note_req_l)->pitch_.steps ();
Score_element_info itinf (note_p,note_req_l);
#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;
protected:
Link_array<Bracket_req> bracket_req_arr_;
- Link_array<Slur> started_span_p_arr_;
- Link_array<Slur> stop_now_span_p_arr_;
+ Link_array<Plet_spanner> started_span_p_arr_;
+ Link_array<Plet_spanner> stop_now_span_p_arr_;
virtual void do_removal_processing ();
virtual void acknowledge_element (Score_element_info);
#define CM *CM_TO_PT
#define INCH *INCH_TO_PT
+String print_dimen (Real);
+
#endif // DIMENSIONS_HH
Invoke walker method to typeset element. Default: pass on to daddy.
*/
virtual void typeset_element (Score_element*elem_p);
+
/**
take note of item/spanner
#include "config.hh"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifdef HAVE_LIBGUILE
extern "C" {
#include <guile/gh.h>
#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<Real> args_arr);
+SCM lambda_scm (String str, Array<Scalar> args_arr);
+
#endif // LILY_GUILE_HH
struct Engraver_group_engraver;
struct General_script_def;
struct Graphical_element;
+
struct Graphical_axis_group;
struct Mark_req;
struct Music_output;
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;
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 ;
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<Offset> controls, Real thick, Real dash) const = 0;
+ Atom dashed_slur (Array<Offset> 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<String> args) const;
- /// paratime_signature substitution in lookup strings
- String substitute_args (String source, Array<Scalar> 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<Offset> controls) const = 0;
+ Atom stem (Real y1_pos, Real y2_pos) const;
+ Atom slur (Array<Offset> 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<Scalar>) const;
Atom time_signature (Array<Scalar>) const;
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;
{
Assoc<int, Lookup *> *lookup_p_assoc_p_;
static int default_count_i_;
- bool ps_b_;
protected:
VIRTUAL_COPY_CONS(Paper_def,Music_output_def);
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*);
};
#include "lily-proto.hh"
#include "array.hh"
#include "string.hh"
+#include "lily-guile.hh"
/**
Abstract interface for a Score_element to output itself.
{
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<String> font_arr_;
String current_font_;
/// 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&);
+++ /dev/null
-/*
- tex-lookup.hh -- declare Tex_lookup
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#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<Offset> 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<Offset> 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
+++ /dev/null
-/*
- ps-outputter.hh -- declare Ps_outputter
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#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
+++ /dev/null
-#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
*/
struct Score_element_info {
Score_element * elem_l_;
+
Request*req_l_;
Array<Engraver*> origin_grav_l_arr_;
Score_element_info (Score_element*, Request*);
+
Score_element_info();
};
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 ();
};
+++ /dev/null
-/*
- tex-lookup.hh -- declare Tex_lookup
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#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<Offset> 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<Offset> 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
+++ /dev/null
-/*
- tex-outputter.hh -- declare Tex_outputter
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#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
+++ /dev/null
-#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
if (!ga)
return 0;
- assert (ga->access_Score_element());
- return ga->access_Score_element ()-> line_l ();
+ assert (dynamic_cast <Score_element *> (ga));
+ return dynamic_cast <Score_element *> (ga)-> line_l ();
}
Direction
Direction i=LEFT;
do
{
- Item * item_p = clone()->access_Item ();
+ Item * item_p = dynamic_cast<Item*>(clone());
item_p->break_status_dir_ = i;
pscore_l_->typeset_element (item_p);
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<Item*> (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<Item*> (r->axis_group_l_a_[X_AXIS]);
Paper_column *p1 = (Paper_column*)l;
Paper_column* p2 = (Paper_column*)r;
Paper_column *
Item::column_l () const
{
- return axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ()->column_l ();
+ return dynamic_cast<Item*> (axis_group_l_a_[X_AXIS]) ->column_l ();
}
Item::Item (Item const &s)
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 <Command_req *> (req_l);
+ if (!creq_l|| !dynamic_cast <Key_change_req *> (creq_l))
return false;
if (keyreq_l_)
return false; // TODO
- keyreq_l_ = creq_l->access_Key_change_req ();
+ keyreq_l_ = dynamic_cast <Key_change_req *> (creq_l);
read_req (keyreq_l_);
return true;
}
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 <Command_req *> (info.req_l_) ;
- if (r_l && r_l->access_Clef_change_req ())
+ if (r_l && dynamic_cast <Clef_change_req *> (r_l))
{
int i= get_property ("createKeyOnClefChange").length_i ();
if (i)
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 <Key_change_req *> (req_l))
+ {
+ key_req_l_ = dynamic_cast <Key_change_req*> (req_l);
+ return true;
+ }
return false;
}
if (breaking.size() >1)
{
- line_l = (Line_of_score*)clone()->access_Spanner ();
+ line_l = dynamic_cast <Line_of_score*> (clone());
}
else
line_l = (Line_of_score*) this;
}
else
{
- key_C_ = &((Key_engraver*)result->access_Engraver ())->key_;
+ key_C_ = &((Key_engraver*)dynamic_cast <Engraver *> (result))->key_;
local_key_ = *key_C_;
}
}
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 <Item *> (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 <Note_req *> (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 <Key_change_req*> (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 <Spanner *> (elem_l);
if (tie_l->same_pitch_b_)
tied_l_arr_.push (tie_l-> head_l_drul_[RIGHT]);
}
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 <Item *> (o);
+ Item* n_l = n?dynamic_cast <Item *> (n):0;
support_items_.substitute (o_l, n_l);
}
#include "paper-def.hh"
#include "string-convert.hh"
#include "main.hh"
+#include "lily-guile.hh"
Lookup::Lookup ()
{
}
Atom
-Lookup::afm_find (String s, String str) const
+Lookup::afm_find (String s) const
{
if (!afm_p_)
{
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<Real> arr;
+ arr.push (m.code ());
+ a.lambda_ = lambda_scm ("char", arr);
a.font_ = font_;
return a;
}
Atom
Lookup::bar (String str, Real h) const
{
- Array<String> 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<Real> 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
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<Offset> 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, 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
#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
{
Lookup::rule_symbol (Real height, Real width) const
{
Atom bs= (*symtables_p_) ("param")->lookup ("rule");
- Array<String> args;
- args.push (print_dimen (height));
- args.push (print_dimen (width));
- bs.str_ = substitute_args (bs.str_, args);
+ Array<Real> 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;
Atom
Lookup::special_time_signature (String s, Array<Scalar> 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
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<String> 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<Scalar> args) const
-{
- Array<String> 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)
{
s.dim_.x () = Interval (0,0);
s.dim_.y () = Interval (y1,y2);
- Array<String> a;
+ Array<Real> 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;
}
Atom
Lookup::text (String style, String text) const
{
- Array<String> a;
+ Array<Scalar> 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;
Lookup::time_signature (Array<Scalar> 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;
}
int idx = int (rint ( (y- min_y)/step)) + 1;
- {
- Array<String> a;
- a.push (character_str (idx));
- brace.str_ = substitute_args (brace.str_,a);
- brace.dim_[Y_AXIS] = Interval (-y/2,y/2);
- }
+ Array<Real> 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<Offset> 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, 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<Real> 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;
+}
+
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 <Musical_req *> (r);
+ if (!m || ! dynamic_cast <Lyric_req *> (m))
return false;
- lreq_l_ = m->access_Lyric_req ();
+ lreq_l_ = dynamic_cast <Lyric_req *> (m);
return true;
}
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 <Musical_req *> (req_l);
+ if (!m_l || ! dynamic_cast <Lyric_req *> (m_l))
return false;
- lreq_arr_.push (m_l->access_Lyric_req ());
+ lreq_arr_.push (dynamic_cast <Lyric_req *> (m_l));
return true;
}
#include <iostream.h>
#include <assert.h>
#include <locale.h>
+#include "lily-guile.hh"
+
#include "proto.hh"
#include "dimensions.hh"
#include "plist.hh"
#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
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;
{0, "no-timestamps", 'T'},
{0, "find-fourths", 'Q'},
{0, "ignore-version", 'V'},
+ {1, "output-format", 'f'},
{0,0,0}
};
" -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"
*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 ()
{
}
-
-int
+void
main_prog (int argc, char **argv)
{
- guile_init ();
identify ();
call_constructors ();
debug_init (); // should be first
{
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_;
notice ();
exit (0);
break;
+ case 'f':
+ output_global_ch = oparser.optional_argument_ch_C_;
+ break;
case 'Q':
find_quarts_global_b = true;
break;
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
}
/*
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
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 <Command_req *> (r_l);
+ if (!c_l || !dynamic_cast <Mark_req *> (c_l) || mark_req_l_)
return false;
- mark_req_l_ = c_l->access_Mark_req ();
+ mark_req_l_ = dynamic_cast <Mark_req *> (c_l);
return true;
}
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 <Key_change_req *> (audio_item_l_->req_l_);
int sharps_i = k->sharps_i ();
int flats_i = k->flats_i ();
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 <Time_signature_change_req *> (audio_item_l_->req_l_);
int num_i = m->beats_i_;
int den_i = m->one_beat_i_;
Moment
Midi_note::duration () const
{
- Moment m = audio_item_l_->req_l_->access_Musical_req ()->access_Rhythmic_req ()->duration ();
+ Moment m = dynamic_cast <Rhythmic_req *> (audio_item_l_->req_l_)->duration ();
if (m < Moment (1, 1000))
{
warning (_ ("silly duration"));
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 <Melodic_req*> (audio_item_l_->req_l_)->pitch_.semitone_pitch ()
+ ((Audio_note*)audio_item_l_)->transposing_i_;
if (p == INT_MAX)
{
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 <Melodic_req *> (audio_item_l_->req_l_)->pitch_.semitone_pitch ()
+ ((Audio_note*)audio_item_l_)->transposing_i_;
}
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<Multi_measure_rest_req *> (req_l))
return false;
if (multi_measure_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<Multi_measure_rest_req *> (req_l);
req_start_mom_ = now_moment ();
rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
{
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<Musical_req*> (i.ptr ());
+ if (m && dynamic_cast <Melodic_req *> (m))
+ {
+ Musical_pitch &pit = dynamic_cast <Melodic_req *> (m)->pitch_;
pit.to_relative_octave (last);
return pit;
}
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];
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 <Translator_group *> (t)->global_l ();
t->add_processing ();
return g;
return "";
Identifier * id = (*scope_p_) ["output"];
- String *p = id->access_String ();
+ String *p = dynamic_cast <String *> (id);
return p ? *p : String ("");
}
bool
Melodic_req::do_equal_b (Request*r) const
{
- Melodic_req* m= r->access_Musical_req ()->access_Melodic_req ();
+ Melodic_req* m= dynamic_cast <Melodic_req *> (r);
return !compare (*m, *this);
}
bool
Rhythmic_req::do_equal_b (Request*r) const
{
- Rhythmic_req* rh = r->access_Musical_req ()->access_Rhythmic_req ();
+ Rhythmic_req* rh = dynamic_cast <Rhythmic_req *> (r);
return !compare (*this, *rh);
}
bool
Span_req:: do_equal_b (Request*r) const
{
- Span_req * s = r->access_Span_req ();
+ Span_req * s = dynamic_cast <Span_req *> (r);
return spantype == s->spantype;
}
bool
Script_req::do_equal_b (Request*r) const
{
- Script_req * s = r->access_Script_req ();
+ Script_req * s = dynamic_cast <Script_req *> (r);
return scriptdef_p_->equal_b (*s->scriptdef_p_);
}
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 <Absolute_dynamic_req *> (r);
return loudness_ == a->loudness_;
}
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 <Span_dynamic_req *> (req);
return Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
}
{"pt", PT_T},
{"relative", RELATIVE},
{"remove", REMOVE},
+ {"scm", SCHEME},
{"score", SCORE},
{"script", SCRIPT},
{"shape", SHAPE},
switch (t)
{
case BEAMPLET:
- reqs.top ()->access_Span_req ()->spantype = Span_req::START;
+ dynamic_cast<Span_req*> (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<Span_req*> (reqs.top ())->spantype = Span_req::START;
break;
case MAEBTELP:
- reqs.top ()->access_Span_req ()->spantype = Span_req::STOP;
+ dynamic_cast<Span_req*> (reqs.top ())->spantype = Span_req::STOP;
/* fall through */
case '!':
case ')':
case ']':
- reqs[0]->access_Span_req ()->spantype = Span_req::STOP;
+ dynamic_cast<Span_req*> (reqs[0])->spantype = Span_req::STOP;
break;
default:
}
for (int i = 0; i < reqs.size (); i++)
- if (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ())
+ if (dynamic_cast<Span_dynamic_req*> (reqs[i]))
{
- Span_dynamic_req* s_l= reqs[i]->access_Musical_req ()->access_Span_dynamic_req ();
+ Span_dynamic_req* s_l= dynamic_cast<Span_dynamic_req*> (reqs[i]);
s_l->dynamic_dir_ = (t == '<') ? UP:DOWN;
}
{
if (stem_l_ == o)
{
- stem_l_ = n ? (Stem*)n->access_Item ():0;
+ stem_l_ = n ? (Stem*)dynamic_cast <Item *> (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 <Item *> (o),
+ (n)? (Note_head*)dynamic_cast <Item *> (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 <Item *> (o),
+ (n)? (Rest*)dynamic_cast <Item *> (n) : 0);
}
}
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 <Melodic_req *> (note_req_l_) || !dynamic_cast <Rhythmic_req *> (note_req_l_))
return;
int transposing_i = 0;
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 <Note_req *> (req_l))
+ {
+ note_req_l_ = nr;
+ return true;
+ }
+ return false;
}
#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"
}
for (iter (elem_p_list_.top (),i); i.ok () ;)
{
- Item *i_l =i->access_Item ();
+ Item *i_l =dynamic_cast <Item *> (i);
if (i_l && !i_l->line_l ())
{
i_l->unlink ();
Array<Column_x_positions> 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<Line_of_score> lines;
for (int i=0; i < breaking.size (); i++)
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<Item*> (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<Item*>(r->axis_group_l_a_[X_AXIS]);
PCursor<Paper_column*> start (l ? find_col ((Paper_column*)l)+1 : col_p_list_.top ());
PCursor<Paper_column*> stop (r ? find_col ((Paper_column*)r) : col_p_list_.bottom ());
#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"
#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 ()
{
lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
for (Assoc_iter<int, Lookup*> 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);
}
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<Identifier*> 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<Identifier*> 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<Identifier*> 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 ("<stdout>") : 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;
+}
Jan Nieuwenhuizen <janneke@gnu.org>
*/
+#include <time.h>
#include "paper-outputter.hh"
#include "paper-stream.hh"
#include "molecule.hh"
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";
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<String> 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 ();
}
*/
#include <fstream.h>
-#include <time.h>
#include "main.hh"
#include "paper-stream.hh"
nest_level = 0;
line_len_i_ = 0;
outputting_comment=false;
- // header ();
}
Paper_stream::~Paper_stream ()
break;
}
}
+ //urg, for debugging only!!
+ *os << flush;
return *this;
}
*/
#include <iostream.h>
+#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"
#define yyerror THIS->parser_error
#define ARRAY_SIZE(a,s) if (a.size () != s) THIS->parser_error (_f("expecting %d arguments", s))
-
%}
%token PT_T
%token RELATIVE
%token REMOVE
+%token SCHEME /* token vs typedef; can't be named SCM */
%token SCORE
%token SCRIPT
%token SHAPE
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);
$$ = 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 ';' {
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;
}
;
Performer::daddy_perf_l () const
{
return (daddy_trans_l_)
- ?(Performer_group_performer*) daddy_trans_l_->access_Performer ()
+ ?(Performer_group_performer*) dynamic_cast <Performer *> (daddy_trans_l_)
: 0;
}
{
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 <Item *> (i.elem_l_);
nl->position_i_ =0;
}
}
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 <Item *> (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 <Item *> (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 <Musical_req *> (req_l);
if (!mus_l)
return false;
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 <Beam_req *> (mus_l);
if (b)
{
if (b->spantype)
return false;
}
- Plet_req* p = mus_l->access_Plet_req ();
+ Plet_req* p = dynamic_cast <Plet_req *> (mus_l);
if (!p)
return false;
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 <Item *> (n) : 0;
+ if (dynamic_cast <Item *> (o) == stem_l_drul_[LEFT])
stem_l_drul_[LEFT] = new_l;
- else if (o->access_Item () == stem_l_drul_[RIGHT])
+ else if (dynamic_cast <Item *> (o) == stem_l_drul_[RIGHT])
stem_l_drul_[RIGHT] = new_l;
}
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 <Plet_req *> (req_l);
}
halign_p_->breakable_b_ = true;
announce_element (Score_element_info (halign_p_,0));
}
- Item * it = i.elem_l_->access_Item ();
+ Item * it = dynamic_cast <Item *> (i.elem_l_);
if (it->break_priority_i_ == 0)
halign_p_->center_l_ = it;
+++ /dev/null
-/*
- ps-lookup.cc -- implement Ps_lookup
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#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<Offset> 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, 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<Identifier*> 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 ("<stdout>") : 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<Offset> 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, 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;
-}
-
-
-
+++ /dev/null
-/*
- ps-outputter.cc -- implement Ps_outputter
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#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_ <<ps_font_command (i) << "\n";
- return ;
- }
-
-
- font_arr_.push (fontname);
- *outstream_l_ << "%\\font" + ps_font_command (i) << "% =" + fontname << "\n";
- *outstream_l_<< ps_font_command (i) << "\n";
-}
-
-void
-Ps_outputter::output_molecule (Molecule const*m, Offset o, char const *nm)
-{
- if (check_debug)
- *outstream_l_ << String ("\n%start: ") << nm << "\n";
-
- Paper_outputter::output_molecule (m, o, nm, "% % {%}placebox \n");
-}
-
-void
-Ps_outputter::start_line ()
-{
- *outstream_l_ << "\nstart_line {\n";
-}
-
-void
-Ps_outputter::stop_line ()
-{
- *outstream_l_ << "}\nstop_line\n";
- current_font_ = "";
- font_arr_.clear ();
-}
+++ /dev/null
-/*
- tex-stream.cc -- implement Ps_stream
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include <fstream.h>
-#include <time.h>
-
-#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);
-}
-
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 <Item *> (i.elem_l_));
}
void
void
Rest_collision::do_substitute_dependency (Score_element*o,Score_element*n)
{
- Item*o_l = o->access_Item ();
+ Item*o_l = dynamic_cast <Item *> (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 <Item *> (n):0;
rest_l_arr_.substitute ((Note_column*)o_l, n_l);
ncol_l_arr_.substitute ((Note_column*)o_l, n_l);
}
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 <Musical_req *> (r);
+ if (!m || !dynamic_cast <Rest_req *> (m))
return false;
- rest_req_l_ = m->access_Rest_req (); // ugh
+ rest_req_l_ = dynamic_cast <Rest_req *> (m); // ugh
return true;
}
#include "note-column.hh"
#include "script.hh"
#include "dot-column.hh"
+#include "musical-request.hh"
Rhythmic_column_engraver::Rhythmic_column_engraver()
{
void
Rhythmic_column_engraver::acknowledge_element (Score_element_info i)
{
- Item * item = i.elem_l_->access_Item ();
+ Item * item = dynamic_cast <Item *> (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 <Musical_req *> (i.req_l_))
{
script_l_arr_.push ((Script*)item);
}
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 <Item *> (n) :0;
}
IMPLEMENT_IS_TYPE_B1(Rhythmic_head, Item);
req_l_ = r_l;
}
+
Score_element_info::Score_element_info()
{
elem_l_ = 0;
#include <string.h>
-#include "tex-outputter.hh"
#include "p-score.hh"
#include "paper-def.hh"
#include "lookup.hh"
#include "p-col.hh"
#include "molecule.hh"
#include "misc.hh"
+#include "paper-outputter.hh"
#define PARANOID
Score_element * elt = dependency (i);
if (elt->line_l() != line)
{
- if (elt->access_Spanner ())
+ if (dynamic_cast <Spanner *> (elt))
{
- Spanner * sp = elt->access_Spanner ();
+ Spanner * sp = dynamic_cast <Spanner *> (elt);
Spanner * broken = sp->find_broken_piece (line);
substitute_dependency (sp, broken);
add_dependency (broken);
}
- else if (elt->access_Item ())
+ else if (dynamic_cast <Item *> (elt))
{
- Item * my_item = elt->access_Item ()->find_prebroken_piece (line);
+ Item * my_item = dynamic_cast <Item *> (elt)->find_prebroken_piece (line);
substitute_dependency (elt, my_item);
if (my_item)
for (int i=0; i < dependency_size(); i++)
{
Score_element * elt = dependency (i);
- Item *it_l = elt->access_Item ();
+ Item *it_l = dynamic_cast <Item *> (elt);
if (it_l && it_l->breakable_b_)
- if (access_Item ())
+ if (Item *me = dynamic_cast<Item*> (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);
#include "paper-def.hh"
+
Score_engraver::Score_engraver()
{
break_penalty_i_ = 0;
*/
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 <Musical_req *> ( announce_info_arr_[i].req_l_);
+ if (m && dynamic_cast <Rhythmic_req *> (m))
{
musical_column_l_->add_duration (m->duration());
}
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 <Spanner *> (elem_p))
{
- Spanner *s = elem_p->access_Spanner ();
+ Spanner *s = dynamic_cast <Spanner *> (elem_p);
pscore_p_->typeset_unbroken_spanner (s);
-
-
- /*
+ /*
do something sensible if spanner not
spanned on 2 items.
*/
}
else
{
- Item *item_p = elem_p->access_Item ();
+ Item *item_p = dynamic_cast <Item *> (elem_p);
pscore_p_->typeset_element (item_p);
if (!item_p->axis_group_l_a_[X_AXIS]) {
if (item_p->breakable_b_)
}
-
Music_output*
Score_engraver::get_output_p ()
{
{
bool gotcha = Engraver_group_engraver::do_try_request (r);
- if (gotcha || !r->access_Command_req ())
+ if (gotcha || !dynamic_cast <Command_req *> (r))
return gotcha;
- Command_req * c = r->access_Command_req ();
- if (c->access_Break_req ())
+ Command_req * c = dynamic_cast <Command_req *> (r);
+ if (dynamic_cast <Break_req *> (c))
{
- Break_req* b = (Break_req*)c->access_Break_req ();
+ Break_req* b = (Break_req*)dynamic_cast <Break_req *> (c);
if (b->penalty_i_ <= Break_req::DISALLOW)
break_penalty_i_ = b->penalty_i_;
else if (b->penalty_i_ >= Break_req::FORCE)
void
Score_priority_engraver::acknowledge_element (Score_element_info inf)
{
- Item * item_l = inf.elem_l_->access_Item ();
+ Item * item_l = dynamic_cast <Item *> (inf.elem_l_);
if (item_l && item_l->breakable_b_ && !item_l->empty_b ())
{
/*
*/
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<Score_element*> (unbound_elem->axis_group_l_a_[X_AXIS]);
}
hg->add_element (unbound_elem);
#include "file-results.hh"
#include "my-lily-parser.hh"
#include "source.hh"
-#include "lookup.hh"
Sources* source_global_l = 0;
Array<String> inclusion_global_array;
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;
void
Script_column::do_substitute_dependency (Score_element*o,Score_element*n)
{
- if (o->access_Item ())
+ if (dynamic_cast <Item *> (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 <Item *> (o),(Script*) (n?dynamic_cast <Item *> (n):0));
+ support_l_arr_.substitute (dynamic_cast <Item *> (o), (n?dynamic_cast <Item *> (n):0));
}
}
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 <Musical_script_req *> (r_l))
return false ;
for (int i=0; i < script_req_l_arr_.size(); i++)
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 <Script_req *> (r_l));
return true;
}
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 <Item *> (n) : 0;
}
}
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 <Item *> (n) : 0;
+ spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)dynamic_cast <Item *> (o), ns);
}
}
void
Separating_line_group_engraver::acknowledge_element (Score_element_info i)
{
- Item * it = i.elem_l_->access_Item ();
+ Item * it = dynamic_cast <Item *> (i.elem_l_);
if (it && !it->axis_group_l_a_[X_AXIS])
{
Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ?
void
Single_malt_grouping_item::do_substitute_dependency (Score_element*o, Score_element*n)
{
- if (o->access_Item ())
+ if (dynamic_cast <Item *> (o))
{
- item_l_arr_.unordered_substitute (o->access_Item (), n ? n->access_Item () : 0);
+ item_l_arr_.unordered_substitute (dynamic_cast <Item *> (o), n ? dynamic_cast <Item *> (n) : 0);
}
}
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 <Musical_req *> (req_l);
+ if (!mus_l || !dynamic_cast <Slur_req *> (mus_l))
return false;
- new_slur_req_l_arr_.push (mus_l->access_Slur_req ());
+ new_slur_req_l_arr_.push (dynamic_cast <Slur_req *> (mus_l));
return true;
}
{
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 <Item *> (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++)
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 <Item *> (o))) >=0)
{
if (n)
- encompass_arr_[i] = (Note_column*)n->access_Item ();
+ encompass_arr_[i] = (Note_column*)dynamic_cast <Item *> (n);
else
encompass_arr_.del (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 <Item *> (i.elem_l_));
if (bar_l_arr_.size() >= 2 && !spanbar_p_)
/*
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 <Spanner *> (i.elem_l_);
}
}
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 <Span_bar *> (i.elem_l_);
Piano_brace * piano_l = (Piano_brace*) b;
piano_l->extra_move_left_f_ = paper ()->interline_f (); // ugh
}
#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);
for (int i=1; i < break_cols.size(); i++)
{
- Spanner* span_p = clone()->access_Spanner ();
+ Spanner* span_p = dynamic_cast<Spanner*> (clone());
Item *left = break_cols[i-1];
Item *right = break_cols[i];
if (!right->line_l())
void
Staff_margin_engraver::acknowledge_element (Score_element_info i)
{
- Item * it = i.elem_l_->access_Item ();
+ Item * it = dynamic_cast <Item *> (i.elem_l_);
if (!it
|| script_p_
{
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 <Item *> (i.elem_l_);
if (!stem_p_)
{
- Rhythmic_req * r = i.req_l_->access_Musical_req ()->access_Rhythmic_req ();
+ Rhythmic_req * r = dynamic_cast <Rhythmic_req *> (i.req_l_);
stem_p_ = new Stem;
int durlog_i = r->duration_.durlog_i_;
stem_p_->flag_i_ = durlog_i;
bool
Stem_engraver::do_try_request (Request* r)
{
- Musical_req* mus_l = r->access_Musical_req ();
+ Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
if (!mus_l)
return false;
- Abbreviation_req* a = mus_l->access_Abbreviation_req ();
+ Abbreviation_req* a = dynamic_cast <Abbreviation_req *> (mus_l);
if (!a)
return false;
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 <Item *> (o);
+ Item * n_l = n? dynamic_cast <Item *> (n) : 0;
head_l_arr_.substitute ((Note_head*)o_l, (Note_head*)n_l);
rest_l_arr_.substitute ((Rest*)o_l, (Rest*)n_l);
}
#include "line-of-score.hh"
#include "p-score.hh"
#include "string.hh"
-#include "tex-outputter.hh"
+#include "paper-outputter.hh"
Super_element::Super_element()
+++ /dev/null
-/*
- tex-lookup.cc -- implement Tex_lookup
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#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<Offset> 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<Identifier*> 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 ("<stdout>") : 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<Offset> 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));
-}
-
+++ /dev/null
-/*
- tex-outputter.cc -- implement Tex_outputter
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
- Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#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_ <<tex_font_command (i) << "\n";
- return ;
- }
-
-
- font_arr_.push (fontname);
- *outstream_l_ << "\\font" + tex_font_command (i) << "=" + fontname << "\n";
- *outstream_l_<< tex_font_command (i);
-}
-
-void
-Tex_outputter::output_molecule (Molecule const*m, Offset o, char const *nm)
-{
- if (check_debug)
- *outstream_l_ << String ("\n%start: ") << nm << "\n";
-
- Paper_outputter::output_molecule (m, o, nm, "\\placebox{%}{%}{%}");
-}
-
-void
-Tex_outputter::start_line ()
-{
- *outstream_l_ << "\\hbox{%\n";
-}
-
-void
-Tex_outputter::stop_line ()
-{
- *outstream_l_ << "}";
- *outstream_l_ << "\\interscoreline";
- current_font_ = "";
- font_arr_.clear ();
-}
+++ /dev/null
-/*
- tex-stream.cc -- implement Tex_stream
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-*/
-
-#include <fstream.h>
-#include <time.h>
-
-#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);
-}
-
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 <Spanner *> (n):0);
}
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 <Item *> (n):0;
+ if (dynamic_cast <Item *> (o) == head_l_drul_[LEFT])
head_l_drul_[LEFT] = new_l;
- else if (o->access_Item () == head_l_drul_[RIGHT])
+ else if (dynamic_cast <Item *> (o) == head_l_drul_[RIGHT])
head_l_drul_[RIGHT] = new_l;
}
bool
Ties_engraver::do_try_request (Request*req)
{
- if (! req->access_Musical_req ())
+ if (! dynamic_cast <Musical_req *> (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 <Tie_req *> (req))
+ {
+ req_l_ = r;
+ return true;
+ }
+ return false;
}
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 <Note_head *> (i.elem_l_);
+ Melodic_req *m = dynamic_cast <Melodic_req *> (i.req_l_);
head_mel_tuple_arr_.push (Head_melodic_tuple (h, m));
}
return ;
}
- Timing_engraver * timing_grav_l= (Timing_engraver*) result->access_Engraver ();
+ Timing_engraver * timing_grav_l= (Timing_engraver*) dynamic_cast <Engraver *> (result);
Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
if (req)
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 <Command_req *> (req_l))
+ time_signature_req_l_ = dynamic_cast <Time_signature_change_req *> (req_l);
if (time_signature_req_l_)
return true;
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 <Command_req *> (r);
+ if (!(c && dynamic_cast <Timing_req *> (c)))
return false;
for (int i=0; i < timing_req_l_arr_.size (); i++)
{
}
}
- timing_req_l_arr_.push(c->access_Timing_req ());
+ timing_req_l_arr_.push(dynamic_cast <Timing_req *> (c));
return true;
}
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<Time_signature_change_req*> (timing_req_l_arr_[i]);
}
return m_l;
}
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 <Time_signature_change_req *> (tr_l);
if (m_l)
{
int b_i= m_l->beats_i_;
Rhythmic_grouping (MInterval (0,Moment (b_i, o_i)), b_i);
}
}
- else if (tr_l->access_Partial_measure_req ())
+ else if (dynamic_cast <Partial_measure_req *> (tr_l))
{
- Moment m = tr_l->access_Partial_measure_req ()->duration_;
+ Moment m = dynamic_cast <Partial_measure_req *> (tr_l)->duration_;
String error = time_.try_set_partial_str (m);
if (error.length_i ())
{
else
time_.setpartial (m);
}
- else if (tr_l->access_Barcheck_req())
+ else if (dynamic_cast <Barcheck_req *> (tr_l))
{
if (time_.whole_in_measure_)
{
}
}
- else if (tr_l->access_Cadenza_req ())
+ else if (dynamic_cast <Cadenza_req *> (tr_l))
{
- time_.set_cadenza (tr_l->access_Cadenza_req ()->on_b_);
+ time_.set_cadenza (dynamic_cast <Cadenza_req *> (tr_l)->on_b_);
}
- else if (tr_l->access_Measure_grouping_req ())
+ else if (dynamic_cast <Measure_grouping_req *> (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 <Measure_grouping_req *> (tr_l)->beat_i_arr_,
+ dynamic_cast <Measure_grouping_req *> (tr_l)->elt_length_arr_);
}
}
{
for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
{
- if (i->access_Translator_group ())
+ if (dynamic_cast <Translator_group *> (i.ptr ()))
return false;
}
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 <Translator_group *> (t))
continue;
- accepted_arr.push (t->access_Translator_group ());
+ accepted_arr.push (dynamic_cast <Translator_group *> (t));
}
// 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<Translator_group*>(path[i]->clone ());
current->add_translator (new_group);
current = new_group;
}
Link_array<Translator_group> groups;
for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
{
- if (i->access_Translator_group ())
- groups.push (i->access_Translator_group ());
+ if (dynamic_cast <Translator_group *> (i.ptr ()))
+ groups.push (dynamic_cast <Translator_group *> (i.ptr ()));
}
return groups;
}
Link_array<Translator> groups;
for (PCursor<Translator*> i (trans_p_list_.top ()); i.ok (); i++)
{
- if (!i->access_Translator_group ())
+ if (!dynamic_cast <Translator_group *> (i.ptr ()))
groups.push (i.ptr ());
}
return groups;
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 <Translator_group*>(t->clone ());
add_translator (g);
if (!g->is_bottom_translator_b ())
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
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
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
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 <hanwen@cs.uu.nl>
outdir=out
endif
-stepdir = $(depth)/$(stepmake)/stepmake
+stepdir = $(stepmake)/stepmake
STEPMAKE_TEMPLATES := generic $(STEPMAKE_TEMPLATES)
LOCALSTEPMAKE_TEMPLATES:= generic $(LOCALSTEPMAKE_TEMPLATES)
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)
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)
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)/$(<F:.log=.dep) --ly $(outdir)/$(<F:.log=.ly) --afm $(outdir)/$(<F:.log=.afm) --tex $(outdir)/$(<F:.log=.tex) $<
-
-
-
-TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(datadir)/tex/ depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(stepdir)/install-outfiles.sub.make $@
+#PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
+INSTALLATION_DIR=$(datadir)/mf/
+INSTALLATION_FILES=$(MF_FILES)
-AFMINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir)/afm/ INSTALLATION_OUT_FILES="$(AFM_FILES)" -f $(stepdir)/install-outfiles.sub.make $@
+INSTALLATION_OUT_DIR=$(datadir)/tex
+INSTALLATION_OUT_FILES=$(TEXTABLES)
-LYINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir)/ly/ INSTALLATION_OUT_FILES="$(LYTABLES)" -f $(stepdir)/install-outfiles.sub.make $@
+INSTALLATION_OUT_DIR1=$(datadir)/afm
+INSTALLATION_OUT_FILES1=$(AFM_FILES)
-localinstall: $(ALL_GEN_FILES)
- $(TEXINSTALL)
- $(LYINSTALL)
- $(AFMINSTALL)
+INSTALLATION_OUT_DIR2=$(datadir)/ly
+INSTALLATION_OUT_FILES2=$(LYTABLES)
-localuninstall:
- $(TEXINSTALL)
- $(LYINSTALL)
- $(AFMINSTALL)
+include $(depth)/make/stepmake.make
-INSTALLATION_DIR=$(datadir)/mf/
-INSTALLATION_FILES=$(MF_FILES)
+default: $(ALL_GEN_FILES)
-include $(stepdir)/installfiles.make
+$(outdir)/%.afm $(outdir)/%.ly $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log
+ $(PYTHON) $(buildscripts)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --ly $(outdir)/$(<F:.log=.ly) --afm $(outdir)/$(<F:.log=.afm) --tex $(outdir)/$(<F:.log=.tex) $<
%
% source file of the Feta (Font-En-Tja) pretty-but-neat music font
%
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
% Jan Nieuwenhuizen <janneke@gnu.org>
%
% these macros help create ascii logging output
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997, 1998 Jan Nieuwenhuizen <janneke@gnu.org>
%
mode_setup;
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997, 1998 Jan Nieuwenhuizen <janneke@gnu.org>
% & Han-Wen Nienhuys <hanwen@stack.nl>
%
%
% source file of the Feta (Font-En-Tja) music font
%
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
%
font_identifier:="feta-braces16";
%
% source file of the Feta (Font-En-Tja) music font
%
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
%
font_identifier:="feta-braces20";
-% 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 <janneke@gnu.org>
fet_begingroup("rests");
% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
% music font
%
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
%
-%
% 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 <hanwen@stack.nl>,
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>,
% Jan Nieuwenhuizen <janneke@gnu.org>
-
-
fet_begingroup("clefs");
%
-% 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 <janneke@gnu.org>
fet_begingroup("nummer")
code := 47;
% source file of the Feta (defintively not an abbreviation for Font-En-Tja)
% music font
%
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
% Jan Nieuwenhuizen <janneke@gnu.org>
%
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
xy_mirror_char;
fet_endchar;
+
%
% used in french horn music todo
%
%
% source file of LilyPond's pretty-but-neat music font
%
-% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
+% (c) 1997, 1998 Jan Nieuwenhuizen <janneke@gnu.org>
% & Han-Wen Nienhuys <hanwen@stack.nl>
%
% see Documentation/fonts.tex
%
% source file of the Feta (Font-En-Tja) music font
%
-% (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+% (c) 1997, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
%
+++ /dev/null
-\input mfplain
-\input modes
-\dump
-
--- /dev/null
+\input plain.mf
+\input modes.mf
+\dump mfplain
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
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
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
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
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
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
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
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
-
#!@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:
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():
+ "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
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()
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
doc: do-doc
+INSTALLATION_DIR=$(datadir)/Documentation
+INSTALLATION_FILES=$(DIST_FILES)
+
+INSTALLATION_OUT_DIR=$(datadir)/Documentation/out
+INSTALLATION_OUT_FILES=$(OUTTXT_FILES)
+
--- /dev/null
+
+
+
+
+
+
+
+
+
+ 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..
--- /dev/null
+
+
+
+
+
+
+ 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
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)
+
--- /dev/null
+
+
+
+
+
+
+NAME
+
+ AUTHORS - who did what on StepMake?
+
+DESCRIPTION
+
+ This file lists authors of StepMake, and what they did.
+
+AUTHORS
+
+
+o Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+ http://www.cs.uu.nl/people/hanwen
+ Main author.
+
+o Jan Nieuwenhuizen <janneke@gnu.org>,
+ http://www.xs4all.nl/~jantien
+ Main author.
+
+o Jeffrey B. Reed <daboys@bga.com>, Windows-nt fixes.
--- /dev/null
+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.
--- /dev/null
+
+
+
+
+
+
+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 <janneke@gnu.org>
+
+Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+Have fun!
+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
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:
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
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)
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"
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)
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)
# 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)
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'
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?
YODL= @YODL@
YODL2HTML= @YODL2HTML@
YODL2LATEX= @YODL2LATEX@
+YODL2LESS_DIR= @YODL2LESS_DIR@
YODL2MAN= @YODL2MAN@
YODL2MSLESS= @YODL2MSLESS@
YODL2TEXINFO= @YODL2TEXINFO@
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 .)
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"
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
+
cat >> confdefs.h <<EOF
#define PACKAGE "${PACKAGE_NAME}"
EOF
absolute_builddir="`pwd`"
- # No versioning on directory names of sub-packages
- stepmake=stepmake
-
-
STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null`
if test "x$STATE_VECTOR" != "x"; then
STATE_VECTOR="\$(depth)/$STATE_VECTOR"
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
# 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
# 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
# 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
# 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
# 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
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
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;;
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
done
test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
+ YODL2LESS_DIR='$(bindir)/'
else
+
export STRIPROFF YODL YODL2HTML YODL2LATEX YODL2MAN YODL2MSLESS YODL2TEXINFO YODL2TXT
fi
if test "x$YODL" = "-echo no yodl"; then
# 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
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
s%@YODL2MSLESS@%$YODL2MSLESS%g
s%@YODL2TEXINFO@%$YODL2TEXINFO%g
s%@YODL2TXT@%$YODL2TXT%g
+s%@YODL2LESS_DIR@%$YODL2LESS_DIR%g
s%@MAKEINFO@%$MAKEINFO%g
CEOF
# file make/Makefile
depth = ..
-STEPMAKE_TEMPLATES=makedir
+STEPMAKE_TEMPLATES=makedir install
BLURBS=BLURB # COPERTINA FLAPTEKST
ifneq ($(strip $(state-vector)),)
include $(depth)/make/stepmake.make
-
+INSTALLATION_DIR=$(datadir)/make
+INSTALLATION_FILES=$(DIST_FILES)
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
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
# descent order into subdirectories:
#
+ifeq ($(PACKAGE),STEPMAKE)
SUBDIRS = bin make stepmake Documentation
-#
-
-# bootstrap stepmake:
-#
+else
+SUBDIRS =
+endif
#
# list of distribution files:
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:
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
SUBDIRS =
#
-STEPMAKE_TEMPLATES=makedir
-
+STEPMAKE_TEMPLATES=makedir install
# bootstrap stepmake:
#
-include $(depth)/make/stepmake.make
+
+INSTALLATION_DIR=$(datadir)/stepmake
+INSTALLATION_FILES=GNUmakefile $(MAKE_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)
# 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
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)
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
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
# 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)
# 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
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++
#
# 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
--- /dev/null
+# 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)
--- /dev/null
+# install-out.sub.make
+
+include $(depth)/make/stepmake.make
+include $(stepdir)/install-out-targets.make
+
+++ /dev/null
-# 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)
+++ /dev/null
-# Initial_outfiles.sub.make
-
-include $(depth)/make/stepmake.make
-include $(stepdir)/install-outfiles.make
-
--- /dev/null
+# 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
--- /dev/null
+# install.sub.make
+
+include $(depth)/make/stepmake.make
+include $(stepdir)/install-targets.make
+
+++ /dev/null
-# 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)
# 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]*
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
# 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 "\
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
{
/object exch def
gsave
- exch translate
+ %exch translate
+ translate
0 0 moveto
object
grestore
stafflinethickness 1.6 mul widthbar
} bind def
-/maatstreep
+/maatstreep % height
{
thinbar
} bind def
thickbar
} bind def
-/generalmeter
+/generalmeter % num den
{
+ pop pop
} bind def
/pianobrace
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