From f1baf9749eb3315b6f58622e084fc34295bccea7 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 18 Mar 1999 15:11:52 +0100 Subject: [PATCH] release: 1.1.36 --- Documentation/faq.yo | 18 ++- Documentation/tex/other-packages.bib | 10 +- NEWS | 9 ++ TODO | 13 +- VERSION | 4 +- configure | 211 +++++++++++++++++++++++---- flower/include/array.hh | 2 +- flower/include/parray.hh | 3 +- lily/auto-beam-engraver.cc | 2 +- lily/bar-script-engraver.cc | 5 +- lily/beam-engraver.cc | 4 +- lily/beam.cc | 20 ++- lily/bow.cc | 5 +- lily/clef-engraver.cc | 17 ++- lily/clef-item.cc | 34 ++--- lily/extender-spanner.cc | 49 +------ lily/include/beam.hh | 19 ++- lily/include/clef-item.hh | 20 +-- lily/include/extender-spanner.hh | 11 +- lily/include/ly-symbols.hh | 7 + lily/include/midi-walker.hh | 4 +- lily/include/note-performer.hh | 3 +- lily/include/p-score.hh | 7 +- lily/include/stem.hh | 16 +- lily/local-key-engraver.cc | 2 +- lily/midi-item.cc | 2 - lily/note-performer.cc | 18 +-- lily/p-score.cc | 106 ++++---------- lily/paper-outputter.cc | 12 +- lily/performance.cc | 2 +- lily/score-element.cc | 7 +- lily/slur.cc | 1 - lily/stem-engraver.cc | 2 +- lily/stem-info.cc | 4 +- lily/stem.cc | 8 - make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- stepmake/make/out/stepmake.lsm | 8 +- stepmake/make/out/stepmake.spec | 4 +- tex/headers.tex | 2 +- tex/lilypond-latex.tex | 4 +- 42 files changed, 409 insertions(+), 286 deletions(-) diff --git a/Documentation/faq.yo b/Documentation/faq.yo index ea2e567fe0..aa15a3196e 100644 --- a/Documentation/faq.yo +++ b/Documentation/faq.yo @@ -391,24 +391,28 @@ previous fonts, including the file(.pk) and file(.tfm) fonts in file(/var/lib/texmf). A script automating this has been included, see file(buildscripts/clean-fonts.sh). - question(How does PS output work?) itemize( -it() Generate the PostScript Type-3 fonts. In the file(mf/) + it() +Generate the PostScript Type-3 fonts. In the file(mf/) subdirectory, issue: verb( - make pfa -) -it() Run lilypond with option tt(-f ps): + make pfa +) in the mf/ subdirectory. This will also make file(mfplain) for metapost. +it() +Run lilypond with option tt(-f ps): verb( lilypond -fps foo.ly ) it() To view the file(.ps) output with GhostView, set GS_FONTPATH to the -directory containing the pfas. In the source tree, this is file(mf/out/), +directory containing the file(pfa)s, and set GS_LIB to the directory containing the file(.ps) library files of LilyPond. In the source tree, these are file(mf/out/) and file(ps/). + + i.e. do something like: verb( export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out + export GS_LIB=$HOME/usr/src/lilypond/ps gv foo.ps & ) ) @@ -416,7 +420,7 @@ verb( Direct PS output is still experimental. For creating nice looking ps output, use TeX() and code(dvips). - + question(The beams and slurs are gone if use the XDvi magnifying glass!?) The beams and slurs are done in PostScript. XDvi doesn't show diff --git a/Documentation/tex/other-packages.bib b/Documentation/tex/other-packages.bib index 30c1dd71e4..866659ee0d 100644 --- a/Documentation/tex/other-packages.bib +++ b/Documentation/tex/other-packages.bib @@ -235,10 +235,16 @@ author = {Arkkra Enterprises}, @misc{MusicEase, title = {MusicEase}, author = {Gary M. Rader}, - HTML={http://mesa.colorado.edu/\~grader/musicez.html }, - note={Described in Computer vol 29(6). Shareware}, + HTML = {http://mesa.colorado.edu/\~grader/musicez.html }, + note = {Described in Computer vol 29(6). Shareware}, } +@Misc{quickscore, + title = {QuickScore}, + publisher={Sion Software}, + html={http://www.infoserve.net/quickscore/pages.html} +} + @misc{LIME, title = {LIME}, HTML={http://datura.cerl.uiuc.edu/}, diff --git a/NEWS b/NEWS index 8f707c6969..ab43ab8884 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,12 @@ +pl 35.uu1 + - more memory tweaks: don't do Score_element::line_l () when deleting lines. + - more generic properties. + - change ridic. dims assert into warning. + - tex/ midi fixes (thanks, Mats). + - bf: don't crash when no Stem_infos are set. + - extender-spanner simplification + - working MIDI chords (Thanks Dscho) + pl 35.jcn1 - some ps fixes diff --git a/TODO b/TODO index 029a6293d7..10fca2894a 100644 --- a/TODO +++ b/TODO @@ -9,6 +9,8 @@ Most of the items are marked in the code as well Grep for TODO and ugh/ugr/urg. .* BUGS +. * header for PS enteredby = "bla " +. * ps/lily.ps . * AFM for BlueSky AFM files. . * staff size for post/prebreaks . * .ly files @@ -50,8 +52,6 @@ Grep for TODO and ugh/ugr/urg. . *P.P.S. It can be cool in mudela-book to distinguish in pre,postMudelaExample, whether MudelaExample is epsed or not: ( if this fragment is floating eps, than 1, otherwise 2). say preMudelaExample[eps]{}, and change it in document body sometimes. - -. * tetex: mfplain.mem . * fix singleStaffBracket . * declare performers in \midi . * fix MIDI @@ -74,6 +74,7 @@ present, they're not properly distinguished) but no distinct way to specify the third. Should there be? .* TODO before 1.2 +. * \selectmusic to cut pieces from music. . * break priority setting from SCM. . * Gade score . * remove [] in favour of auto-beamer @@ -313,6 +314,8 @@ touching it. . * glibc 2.0: f = fopen ("/dev/null", "r") assert (feof (f)) + +. * tetex: mfplain.mem .* 3RD PARTY PROJECTS: . * make GCC warn about ctor that leaves member vars uninitialised. . * GNU patch @@ -439,12 +442,12 @@ with a broadcast/acknowledge process. So the best way of handling this, is -- supporting dynamic settings in Audio_note + 1 supporting dynamic settings in Audio_note -- mimicking the broadcast/acknowledge mechanism of the Engravers in + 2 mimicking the broadcast/acknowledge mechanism of the Engravers in the Performers -- using that mechanism to write a Dynamics_performer that will modify + 3 using that mechanism to write a Dynamics_performer that will modify any notes it finds to set appropriate strengths. You could also kludge this by deriving from Performer_group_performer diff --git a/VERSION b/VERSION index 187c9b2400..de8033e122 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 -PATCH_LEVEL=35 -MY_PATCH_LEVEL=jcn1 +PATCH_LEVEL=36 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/configure b/configure index 5423c29744..7db90382ff 100755 --- a/configure +++ b/configure @@ -2064,12 +2064,13 @@ echo "configure:2046: checking whether msgfmt accepts -o" >&5 # urg, never know what names these teTeX guys will think up + for ac_prog in mf do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2073: checking for $ac_word" >&5 +echo "configure:2074: 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 @@ -2104,7 +2105,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2108: checking for $ac_word" >&5 +echo "configure:2109: 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 @@ -2141,7 +2142,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2145: checking for $ac_word" >&5 +echo "configure:2146: 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 @@ -2176,7 +2177,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2180: checking for $ac_word" >&5 +echo "configure:2181: 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 @@ -2208,6 +2209,152 @@ test -n "$MPOST" || MPOST="-echo no mp or mpost" METAPOST=$MPOST fi + for ac_prog in inimf +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2218: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$INIMETAFONT"; then + ac_cv_prog_INIMETAFONT="$INIMETAFONT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_INIMETAFONT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +INIMETAFONT="$ac_cv_prog_INIMETAFONT" +if test -n "$INIMETAFONT"; then + echo "$ac_t""$INIMETAFONT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$INIMETAFONT" && break +done +test -n "$INIMETAFONT" || INIMETAFONT="no" + + if test "x$INIMETAFONT" = "xno"; then + for ac_prog in inimfont +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2253: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$INIMFONT"; then + ac_cv_prog_INIMFONT="$INIMFONT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_INIMFONT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +INIMFONT="$ac_cv_prog_INIMFONT" +if test -n "$INIMFONT"; then + echo "$ac_t""$INIMFONT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$INIMFONT" && break +done +test -n "$INIMFONT" || INIMFONT="-echo no inimf or inimfont" + + INIMETAFONT=$INIMFONT + fi + + for ac_prog in inimp +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2290: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$INIMETAPOST"; then + ac_cv_prog_INIMETAPOST="$INIMETAPOST" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_INIMETAPOST="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +INIMETAPOST="$ac_cv_prog_INIMETAPOST" +if test -n "$INIMETAPOST"; then + echo "$ac_t""$INIMETAPOST" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$INIMETAPOST" && break +done +test -n "$INIMETAPOST" || INIMETAPOST="no" + + if test "x$INIMETAPOST" = "xno"; then + for ac_prog in inimpost +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2325: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$INIMPOST"; then + ac_cv_prog_INIMPOST="$INIMPOST" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_INIMPOST="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +INIMPOST="$ac_cv_prog_INIMPOST" +if test -n "$INIMPOST"; then + echo "$ac_t""$INIMPOST" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$INIMPOST" && break +done +test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost" + + INIMETAPOST=$INIMPOST + fi + + + @@ -2219,7 +2366,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2223: checking for $ac_word" >&5 +echo "configure:2370: 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 @@ -2253,7 +2400,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2257: checking for $ac_word" >&5 +echo "configure:2404: 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 @@ -2287,7 +2434,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2291: checking for $ac_word" >&5 +echo "configure:2438: 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 @@ -2321,7 +2468,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2325: checking for $ac_word" >&5 +echo "configure:2472: 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 @@ -2354,7 +2501,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2358: checking for $ac_word" >&5 +echo "configure:2505: 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 @@ -2388,7 +2535,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2392: checking for $ac_word" >&5 +echo "configure:2539: 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 @@ -2422,7 +2569,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2426: checking for $ac_word" >&5 +echo "configure:2573: 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 @@ -2456,7 +2603,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2460: checking for $ac_word" >&5 +echo "configure:2607: 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 @@ -2516,7 +2663,7 @@ test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" ## The GUILE_FLAGS macro. ## First, let's just see if we can find Guile at all. echo $ac_n "checking for Guile""... $ac_c" 1>&6 -echo "configure:2520: checking for Guile" >&5 +echo "configure:2667: checking for Guile" >&5 guile-config link > /dev/null || { echo "configure: cannot find guile-config; is Guile installed?" 1>&2 exit 1 @@ -2528,7 +2675,7 @@ echo "configure:2520: checking for Guile" >&5 echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gh_scm2doubles in -lguile""... $ac_c" 1>&6 -echo "configure:2532: checking for gh_scm2doubles in -lguile" >&5 +echo "configure:2679: checking for gh_scm2doubles in -lguile" >&5 ac_lib_var=`echo guile'_'gh_scm2doubles | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2536,7 +2683,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lguile $GUILE_LDFLAGS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2701: \"$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 @@ -2584,7 +2731,7 @@ fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:2588: checking for 8-bit clean memcmp" >&5 +echo "configure:2735: 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 @@ -2592,7 +2739,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2756: \"$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 @@ -2623,12 +2770,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:2627: checking for vprintf" >&5 +echo "configure:2774: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -2678,12 +2825,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:2682: checking for _doprnt" >&5 +echo "configure:2829: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -2736,12 +2883,12 @@ fi for ac_func in memmem snprintf vsnprintf gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2740: checking for $ac_func" >&5 +echo "configure:2887: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2806,7 +2953,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2810: checking for $ac_word" >&5 +echo "configure:2957: 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 @@ -2847,7 +2994,7 @@ test -n "$MAKEINFO" || MAKEINFO="error" echo $ac_n "checking Checking TFM directory""... $ac_c" 1>&6 -echo "configure:2851: checking Checking TFM directory" >&5 +echo "configure:2998: checking Checking TFM directory" >&5 CMR10=`kpsewhich tfm cmr10.tfm` TEX_TFMDIR=`dirname $CMR10` echo "$ac_t""$TEX_TFMDIR" 1>&6 @@ -3032,6 +3179,10 @@ s%@METAFONT@%$METAFONT%g s%@MFONT@%$MFONT%g s%@METAPOST@%$METAPOST%g s%@MPOST@%$MPOST%g +s%@INIMETAFONT@%$INIMETAFONT%g +s%@INIMFONT@%$INIMFONT%g +s%@INIMETAPOST@%$INIMETAPOST%g +s%@INIMPOST@%$INIMPOST%g s%@STRIPROFF@%$STRIPROFF%g s%@YODL@%$YODL%g s%@YODL2HTML@%$YODL2HTML%g diff --git a/flower/include/array.hh b/flower/include/array.hh index c8fe30f16f..f8194c2789 100644 --- a/flower/include/array.hh +++ b/flower/include/array.hh @@ -123,7 +123,7 @@ public: } /// tighten array size_. - void precompute() { + void tighten_maxsize() { remax (size_); } diff --git a/flower/include/parray.hh b/flower/include/parray.hh index 16836c6a9c..ee529a5316 100644 --- a/flower/include/parray.hh +++ b/flower/include/parray.hh @@ -121,7 +121,8 @@ public: Array::clear; Array::set_size; Array::empty; - Array::reverse; + Array::reverse; + Array::tighten_maxsize; T * get (int i) { return (T*) Array::get (i); diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 1fd4be9440..1396f68e75 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -173,7 +173,7 @@ Auto_beam_engraver::create_beam_p () /* urg, copied from Beam_engraver */ Scalar prop = get_property ("beamslopedamping", 0); if (prop.isnum_b ()) - beam_p->damping_i_ = prop; + beam_p->set_elt_property (damping_scm_sym, gh_int2scm( prop)); prop = get_property ("beamquantisation", 0); if (prop.isnum_b ()) diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index bf462f3e9d..a623c132e5 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -58,7 +58,10 @@ Bar_script_engraver::cast_to_interesting_item (Score_element *e) if (hang_on_clef_b_) { Clef_item * c = dynamic_cast (e); - if (c && c->default_b_) + + + // urg. + if (c) // && c->default_b_) { i = c; } diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index d855e41dea..9afca27c9f 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -73,8 +73,8 @@ Beam_engraver::do_process_requests () Scalar prop = get_property ("beamslopedamping", 0); if (prop.isnum_b ()) - beam_p_->damping_i_ = prop; - + beam_p_->set_elt_property (damping_scm_sym, gh_int2scm( prop)); + prop = get_property ("beamquantisation", 0); if (prop.isnum_b ()) beam_p_->quantisation_ = (Beam::Quantisation)(int)prop; diff --git a/lily/beam.cc b/lily/beam.cc index 752f23e10b..d5f9d9e9a9 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -26,7 +26,6 @@ #include "abbreviation-beam.hh" #include "misc.hh" #include "debug.hh" - #include "molecule.hh" #include "leastsquares.hh" #include "stem.hh" @@ -38,7 +37,6 @@ Beam::Beam () { slope_f_ = 0; left_y_ = 0; - damping_i_ = 1; quantisation_ = NORMAL; multiple_i_ = 0; vertical_align_drul_[MIN] = 0; @@ -62,6 +60,9 @@ Molecule* Beam::do_brew_molecule_p () const { Molecule *mol_p = new Molecule; + if (!sinfo_.size ()) + return mol_p; + Real x0 = stems_[0]->hpos_f (); for (int j=0; j beam_dir_ = dir_; - if (!s->dir_forced_b_) + s->set_elt_property (beam_dir_scm_sym, gh_int2scm (dir_)); + + SCM force = s->remove_elt_property (dir_forced_scm_sym); + if (force == SCM_BOOL_F) s->dir_ = dir_; } } @@ -358,8 +361,13 @@ Beam::calculate_slope () damped = tanh (slope_f_) corresponds with some tables in [Wanske] */ - if (damping_i_) - slope_f_ = 0.6 * tanh (slope_f_) / damping_i_; + SCM damp = remove_elt_property (damping_scm_sym); + int damping = 1; // ugh. + if (damp!= SCM_BOOL_F) + damping = gh_int2scm (SCM_CDR(damp)); + + if (damping) + slope_f_ = 0.6 * tanh (slope_f_) / damping; quantise_dy (); diff --git a/lily/bow.cc b/lily/bow.cc index c634746b1f..9f198376d5 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -35,10 +35,11 @@ Bow::do_brew_molecule_p () const Real dy = c[3].y () - c[0].y (); Molecule a; - if (!dash_i_) + SCM d = get_elt_property (dashed_scm_sym); + if (d == SCM_BOOL_F) a = lookup_l ()->slur (c); else - a = lookup_l ()->dashed_slur (c, thick, dash_i_); + a = lookup_l ()->dashed_slur (c, thick, gh_scm2int (SCM_CDR(d))); if (check_debug && !monitor->silent_b ("Bow")) { diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index bdd816430c..da300420b1 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -30,7 +30,7 @@ Clef_engraver::Clef_engraver() } /* - ugh. Should be configurable. + PUT THIS IN GUILE! */ struct Clef_settings { char const *name; @@ -125,9 +125,11 @@ Clef_engraver::acknowledge_element (Score_element_info info) if (dynamic_cast(info.elem_l_) && clef_type_str_.length_i()) { + bool def = !clef_p_; create_clef(); - if (!clef_req_l_) - clef_p_->default_b_ = true; + if(def) + clef_p_->set_elt_property(visibility_lambda_scm_sym, + gh_eval_str ("postbreak_only_visibility")); } /* ugh; should make Clef_referenced baseclass */ @@ -161,7 +163,7 @@ Clef_engraver::do_creation_processing() if (clef_type_str_.length_i ()) { create_clef(); - clef_p_->default_b_ = false; + clef_p_->set_elt_property (non_default_scm_sym, SCM_BOOL_T); } } @@ -194,7 +196,10 @@ Clef_engraver::create_clef() clef_p_->symbol_ = clef_type_str_; clef_p_->y_position_i_ = clef_position_i_; - clef_p_->octave_dir_ = octave_dir_; + if (octave_dir_) + { + clef_p_->set_elt_property (octave_dir_scm_sym, gh_int2scm (octave_dir_)); + } } @@ -204,14 +209,12 @@ Clef_engraver::do_process_requests() if (clef_req_l_) { create_clef(); - clef_p_->default_b_ = false; } else if (create_default_b_) { String type = get_property ("defaultClef", 0); set_type (type.length_i () ? type : "treble"); create_clef (); - clef_p_->default_b_ = false; create_default_b_ =0; } } diff --git a/lily/clef-item.cc b/lily/clef-item.cc index f10fbb17b9..282bd535ec 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -19,7 +19,10 @@ void Clef_item::do_pre_processing() { dim_cache_[Y_AXIS].translate (y_position_i_ * staff_line_leading_f () / 2.0); - change_b_ = (break_status_dir() != RIGHT); + if (break_status_dir() != RIGHT) + { + symbol_ += "_change"; + } } /* @@ -28,9 +31,7 @@ Clef_item::do_pre_processing() Clef_item::Clef_item() { set_elt_property (breakable_scm_sym, SCM_BOOL_T); - default_b_ = false; - change_b_ = true; - octave_dir_ = CENTER; + symbol_ = "treble"; y_position_i_ = -2; } @@ -40,10 +41,12 @@ Clef_item::do_add_processing () { if (!break_status_dir ()) // broken stuff takes care of their own texts { - SCM defvis = gh_eval_str ("(lambda (d) (if (= d 1) '(#f . #f) '(#t . #t)))"); G_text_item *g =0; - if (octave_dir_) + + SCM octave_dir = remove_elt_property (octave_dir_scm_sym); + if (octave_dir != SCM_BOOL_F) { + Direction d = Direction (gh_int2scm (SCM_CDR(octave_dir))); g = new G_text_item; pscore_l_->typeset_element (g); @@ -53,30 +56,19 @@ Clef_item::do_add_processing () g->dim_cache_[X_AXIS].parent_l_ = &dim_cache_[X_AXIS]; add_dependency (g); // just to be sure. - Real r = do_height ()[octave_dir_] + g->extent (Y_AXIS)[-octave_dir_]; + Real r = do_height ()[d] + g->extent (Y_AXIS)[-d]; g->dim_cache_[Y_AXIS].set_offset (r); + g->set_elt_property (visibility_lambda_scm_sym, + get_elt_property (visibility_lambda_scm_sym)); } - - if (default_b_) - { - set_elt_property (visibility_lambda_scm_sym, - defvis); - if (g) - g->set_elt_property (visibility_lambda_scm_sym, - defvis); - } } } Molecule* Clef_item::do_brew_molecule_p() const { - String t = symbol_; - if (change_b_) - t += "_change"; - - Molecule*output = new Molecule (lookup_l ()->clef (t)); + Molecule*output = new Molecule (lookup_l ()->clef (symbol_)); return output; } diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc index 3b97b29c65..541080b60b 100644 --- a/lily/extender-spanner.cc +++ b/lily/extender-spanner.cc @@ -6,6 +6,10 @@ (c) 1998, 1999 Jan Nieuwenhuizen */ +/* + TODO: too complicated implementation. Why the dx_drul?. + */ + #include "box.hh" #include "debug.hh" @@ -18,22 +22,9 @@ Extender_spanner::Extender_spanner () : Directional_spanner () { - item_l_drul_[LEFT] = item_l_drul_[RIGHT] = 0; - dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0; dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; } -Extender_spanner::Extender_spanner (Extender_spanner const& c) - : Directional_spanner (c) -{ - item_l_drul_ = c.item_l_drul_; - dy_f_drul_ = c.dy_f_drul_; - dx_f_drul_ = c.dx_f_drul_; -} - -Extender_spanner::~Extender_spanner () -{ -} Offset Extender_spanner::center () const @@ -53,25 +44,13 @@ Extender_spanner::do_brew_molecule_p () const w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]); Real h = paper_l ()->get_realvar (extender_height_scm_sym); Molecule a = lookup_l ()->filledbox ( Box (Interval (0,w), Interval (0,h))); - a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT])); + a.translate (Offset (dx_f_drul_[LEFT], 0)); mol_p->add_molecule (a); return mol_p; } -void -Extender_spanner::do_add_processing () -{ - Direction d = LEFT; - Drul_array new_textitem_drul = item_l_drul_; - do { - if (!item_l_drul_[d]) - new_textitem_drul[d] = item_l_drul_[(Direction)-d]; - } while (flip(&d) != LEFT); - item_l_drul_ = new_textitem_drul; -} - Interval Extender_spanner::do_height () const { @@ -81,16 +60,14 @@ Extender_spanner::do_height () const void Extender_spanner::do_post_processing () { - assert (item_l_drul_[LEFT] || item_l_drul_[RIGHT]); - // UGH Real nw_f = paper_l ()->note_width () * 0.8; Direction d = LEFT; do { - Item* t = item_l_drul_[d] - ? item_l_drul_[d] : item_l_drul_[(Direction)-d]; + Item* t = spanned_drul_[d] + ? spanned_drul_[d] : spanned_drul_[(Direction)-d]; if (d == LEFT) dx_f_drul_[d] += t->extent (X_AXIS).length (); else @@ -99,23 +76,11 @@ Extender_spanner::do_post_processing () while (flip(&d) != LEFT); } -void -Extender_spanner::do_substitute_element_pointer (Score_element* o, Score_element* n) -{ - Item* new_l = n ? dynamic_cast (n) : 0; - if (dynamic_cast (o) == item_l_drul_[LEFT]) - item_l_drul_[LEFT] = new_l; - else if (dynamic_cast (o) == item_l_drul_[RIGHT]) - item_l_drul_[RIGHT] = new_l; -} void Extender_spanner::set_textitem (Direction d, Item* textitem_l) { - assert (!item_l_drul_[d]); - item_l_drul_[d] = textitem_l; set_bounds (d, textitem_l); - add_dependency (textitem_l); } diff --git a/lily/include/beam.hh b/lily/include/beam.hh index a8b6ca286a..3b99b4e083 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -15,7 +15,16 @@ /** a beam connects multiple stems. Beam adjusts the stems its owns to make sure that they reach the - beam and that point in the correct direction */ + beam and that point in the correct direction + +elt property: + +damping: amount of beam slope damping. (int) + +should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams + + +*/ class Beam : public Directional_spanner { public: /** @@ -33,10 +42,12 @@ public: /// position of leftmost end of beam Real left_y_; - /// should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams - int damping_i_; - /// should beam pos / slope be quantised? 0: no, 1: yes, 2: traditional + + /** should beam pos / slope be quantised? 0: no, 1: yes, 2: traditional + JUNKME. + */ Quantisation quantisation_; + /// maximum number of beams (for opening-up of beam-spacing) int multiple_i_; diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh index 232b57ef72..effd9886b5 100644 --- a/lily/include/clef-item.hh +++ b/lily/include/clef-item.hh @@ -13,6 +13,15 @@ #include "staff-symbol-referencer.hh" /** Set a clef in a staff. + + properties: + + nondefault: not set because of existence of a bar + + octave_dir: should we print an octave symbol (8), and where? (up=1, down=-1)? + + change: is this a change clef (smaller size)? + */ class Clef_item : public Item, public Staff_symbol_referencer { protected: @@ -20,19 +29,10 @@ protected: virtual Molecule* do_brew_molecule_p() const; virtual void do_add_processing (); public: - + String symbol_; int y_position_i_; - /// is this a change clef (smaller size)? - bool change_b_; - - /// set because of existence of a bar - bool default_b_; - - /// should we print an octave symbol (8), and where? (up=1, down=-1)? - Direction octave_dir_; - VIRTUAL_COPY_CONS(Score_element); Clef_item(); }; diff --git a/lily/include/extender-spanner.hh b/lily/include/extender-spanner.hh index d97edc8401..3da4095ebf 100644 --- a/lily/include/extender-spanner.hh +++ b/lily/include/extender-spanner.hh @@ -30,25 +30,18 @@ class Extender_spanner : public Directional_spanner { public: - Extender_spanner (); - virtual ~Extender_spanner (); - +Extender_spanner (); Offset center () const; void set_textitem (Direction, Item*); - Drul_array item_l_drul_; // should use teh spanpoints field of item. protected: virtual Molecule* do_brew_molecule_p () const; - void do_add_processing (); Interval do_height () const; - void do_substitute_element_pointer (Score_element* o, Score_element* n); + void do_post_processing (); VIRTUAL_COPY_CONS (Score_element); - Extender_spanner (Extender_spanner const&); - - Drul_array dy_f_drul_; Drul_array dx_f_drul_; }; diff --git a/lily/include/ly-symbols.hh b/lily/include/ly-symbols.hh index 99ba650faf..3dfe3025d4 100644 --- a/lily/include/ly-symbols.hh +++ b/lily/include/ly-symbols.hh @@ -16,11 +16,16 @@ DECLARE_LY_SYMBOL(beam); DECLARE_LY_SYMBOL(beam_thickness); +DECLARE_LY_SYMBOL(beam_dir); DECLARE_LY_SYMBOL(bracket); DECLARE_LY_SYMBOL(break_helper_only); DECLARE_LY_SYMBOL(break_priority); DECLARE_LY_SYMBOL(breakable); DECLARE_LY_SYMBOL(char); +DECLARE_LY_SYMBOL(change); +DECLARE_LY_SYMBOL(damping); +DECLARE_LY_SYMBOL(dashed); +DECLARE_LY_SYMBOL(dir_forced); DECLARE_LY_SYMBOL(extender_height); DECLARE_LY_SYMBOL(filledbox); DECLARE_LY_SYMBOL(fontsize); @@ -31,6 +36,8 @@ DECLARE_LY_SYMBOL(interbeam4); DECLARE_LY_SYMBOL(interline); DECLARE_LY_SYMBOL(linewidth); DECLARE_LY_SYMBOL(notewidth); +DECLARE_LY_SYMBOL(non_default); +DECLARE_LY_SYMBOL(octave_dir); DECLARE_LY_SYMBOL(output); DECLARE_LY_SYMBOL(pianobrace); DECLARE_LY_SYMBOL(placebox); diff --git a/lily/include/midi-walker.hh b/lily/include/midi-walker.hh index 30ec476420..20d1f95ff9 100644 --- a/lily/include/midi-walker.hh +++ b/lily/include/midi-walker.hh @@ -9,8 +9,6 @@ #define MIDI_WALKER_HH #include "proto.hh" -#include "plist.hh" -#include "pcursor.hh" #include "pqueue.hh" #include "lily-proto.hh" #include "moment.hh" @@ -26,7 +24,7 @@ int compare (Midi_note_event const& left, Midi_note_event const& right); /** walk audio and output midi */ -class Midi_walker// : public PCursor +class Midi_walker { public: Midi_walker (Audio_staff* audio_staff_l, Midi_track* midi_track_l); diff --git a/lily/include/note-performer.hh b/lily/include/note-performer.hh index 1a6c53bd5f..194365af89 100644 --- a/lily/include/note-performer.hh +++ b/lily/include/note-performer.hh @@ -9,6 +9,7 @@ #define NOTE_PERFORMER_HH #include "performer.hh" +#include "list.hh" /** */ @@ -27,7 +28,7 @@ protected: virtual void do_print() const; private: - Melodic_req * note_req_l_; + Array note_req_l_; }; #endif // NOTE_PERFORMER_HH diff --git a/lily/include/p-score.hh b/lily/include/p-score.hh index 88e2d54f24..e3a5174f94 100644 --- a/lily/include/p-score.hh +++ b/lily/include/p-score.hh @@ -27,7 +27,9 @@ class Paper_score : public Music_output /// other elements Link_array elem_p_arr_; - + + Link_array to_delete_arr_; + Link_array break_helpers_arr_; public: Paper_def *paper_l_; @@ -59,7 +61,8 @@ public: void typeset_broken_spanner (Spanner*); /// add a Spanner void typeset_unbroken_spanner (Spanner*); - + + void schedule_for_delete (Score_element*); virtual ~Paper_score(); protected: diff --git a/lily/include/stem.hh b/lily/include/stem.hh index a3f0921a45..003922789e 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -26,14 +26,22 @@ TODO. Stem size depends on flag. + + elt properties: + + beam_dir: direction of the beam (int) + + dir_force: is direction explicitely specified? (bool) + */ +// todo: remove baseclass Staff_symbol_referencer, since stem +// can be across a staff. class Stem : public Item, public Staff_symbol_referencer { - Drul_array yextent_drul_; /**extent of the stem (positions). fractional, since Beam has to adapt them. */ - + Drul_array yextent_drul_; /** geen gedonder, jij gaat onder. @@ -65,11 +73,7 @@ public: /// direction stem (that's me) Direction dir_; - /// is direction explicitely specified? - bool dir_forced_b_; - /// direction of the beam - Direction beam_dir_; Stem (); /// ensure that this Stem also encompasses the Notehead #n# diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index 44747ad824..c40679e1f8 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -26,7 +26,7 @@ Local_key_engraver::Local_key_engraver() void Local_key_engraver::do_creation_processing () { - /* +/* UGHGUHGUH. Breaks if Key_engraver is removed from under us. diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 9d09226f7e..ccb0a5ae90 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -7,8 +7,6 @@ */ #include "proto.hh" -#include "plist.hh" -#include "pcursor.hh" #include "debug.hh" #include "misc.hh" #include "string.hh" diff --git a/lily/note-performer.cc b/lily/note-performer.cc index 0903207d9e..a96439a928 100644 --- a/lily/note-performer.cc +++ b/lily/note-performer.cc @@ -16,22 +16,22 @@ ADD_THIS_TRANSLATOR (Note_performer); Note_performer::Note_performer () { - note_req_l_ = 0; } void Note_performer::do_print () const { #ifndef NPRINT - if (note_req_l_) - note_req_l_->print (); + if (note_req_l_.size()>0) + for(int i=0;iprint (); #endif } void Note_performer::do_process_requests () { - if (note_req_l_) + if (note_req_l_.size()>0) { int transposing_i = 0; //urg @@ -39,22 +39,18 @@ Note_performer::do_process_requests () if (!prop.empty_b () && prop.isnum_b ()) transposing_i = prop; + while(note_req_l_.size()>0) + play (new Audio_note (note_req_l_.pop(), transposing_i)); - play (new Audio_note (note_req_l_, transposing_i)); - - note_req_l_ = 0; } } bool Note_performer::do_try_music (Music* req_l) { - if (note_req_l_) - return false; - if (Note_req *nr = dynamic_cast (req_l)) { - note_req_l_ = nr; + note_req_l_.push(nr); return true; } return false; diff --git a/lily/p-score.cc b/lily/p-score.cc index 0e12201fc5..1e2e45226c 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -25,6 +25,7 @@ Paper_score::Paper_score () { + paper_l_ =0; outputter_l_ =0; Line_of_score * line_p = new Line_of_score; typeset_unbroken_spanner (line_p); @@ -52,6 +53,10 @@ Paper_score::typeset_element (Score_element * elem_p) elem_p_arr_.push (elem_p); elem_p->pscore_l_ = this; elem_p->add_processing (); + + SCM p = elem_p->remove_elt_property (break_helper_only_scm_sym); + if (p != SCM_BOOL_F) + break_helpers_arr_.push (elem_p); } @@ -61,6 +66,10 @@ Paper_score::typeset_unbroken_spanner (Spanner*span_p) span_p_arr_.push (span_p); span_p->pscore_l_=this; span_p->add_processing (); + + SCM p = span_p->remove_elt_property (break_helper_only_scm_sym); + if (p != SCM_BOOL_F) + break_helpers_arr_.push (span_p); } void @@ -129,7 +138,13 @@ Paper_score::calc_breaking () -void delete_array_contents (Link_array const&to_remove, Dictionary &type_stats) +/* + not clean. Should update elem_p_arr_ and span_p_arr_. That would + also repair the stats. + + This may be done efficiently by first sorting the arrays. */ +void +delete_array_contents (Link_array &to_remove, Dictionary &type_stats) { for (int i=0; i < to_remove.size (); i++) { @@ -147,40 +162,14 @@ void delete_array_contents (Link_array const&to_remove, Dictionar type_stats["Total"] ++; } + to_remove.clear (); + to_remove.tighten_maxsize (); } -Link_array -Paper_score::remove_break_helpers () -{ - Link_array to_remove; - Link_array keep; - SCM help_sym = break_helper_only_scm_sym; - for (int i=0; i < elem_p_arr_.size (); i++) - { - Score_element*e = elem_p_arr_[i]; - SCM p = e->get_elt_property (help_sym); - if (p != SCM_BOOL_F) - to_remove.push (e); - else - keep.push (e); - } - elem_p_arr_ = keep; - Link_array keeps; - for (int i=0; iget_elt_property (break_helper_only_scm_sym); - if (p != SCM_BOOL_F) - to_remove.push (e); - else - keeps.push (s); - } - - - span_p_arr_ =keeps; - - return to_remove; +void +Paper_score::schedule_for_delete (Score_element*e) +{ + to_delete_arr_.push (e); } void @@ -190,18 +179,19 @@ Paper_score::process () type_stats["Item"] =0; type_stats["Spanner"] =0; type_stats["Total"]=0; - + print (); *mlog << _ ("Preprocessing elements...") << " " << flush; line_l_->breakable_col_processing (); - line_l_->pre_processing (); + line_l_->pre_processing (); - *mlog << '\n' << _ ("Calculating column positions...") << " " << flush; - line_l_->space_processing (); + *mlog << '\n' << _ ("Calculating column positions...") << " " << flush; + line_l_->space_processing (); Array breaking = calc_breaking (); - delete_array_contents (remove_break_helpers(), type_stats); + + delete_array_contents (break_helpers_arr_, type_stats); Paper_stream* paper_stream_p = paper_l_->paper_stream_p (); outputter_l_ = paper_l_->paper_outputter_p (paper_stream_p, header_l_, origin_str_); @@ -217,6 +207,7 @@ Paper_score::process () if (experimental_features_global_b) *mlog << elem_p_arr_.size () + span_p_arr_.size () << " elements. "; + *mlog << "\nLine ... "; for (int i=0; i < lines.size (); i++) { @@ -232,10 +223,9 @@ Paper_score::process () *mlog << '(' << elem_p_arr_.size () + span_p_arr_.size () << ')'; *mlog << ']' << flush; - Link_array to_remove (remove_line (line_l)); - - delete_array_contents (to_remove, type_stats); - } + + delete_array_contents (to_delete_arr_, type_stats); + } // huh? delete outputter_l_; @@ -257,38 +247,6 @@ Paper_score::process () } - -Link_array -Paper_score::remove_line (Line_of_score *l) -{ - Link_array to_remove; - Link_array keep; - for (int i=0; i < elem_p_arr_.size (); i++) - { - Score_element*e = elem_p_arr_[i]; - if (e->line_l () == l) - to_remove.push (e); - else - keep.push (e); - } - - elem_p_arr_ = keep; - Link_array keeps; - for (int i=0; iline_l () == l) - to_remove.push (e); - else - keeps.push (s); - } - - - span_p_arr_ =keeps; - return to_remove; -} - Link_array Paper_score::broken_col_range (Item const*l, Item const*r) const { diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index 9e46701ceb..29ae5715cd 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -109,7 +109,17 @@ Paper_outputter::output_molecule (Molecule const*m, Offset o, char const *nm) if (!i->func_) continue; - assert (a_off.length () < 100 CM); + if (a_off.length () > 100 CM) + { + warning (_f("Improbable dimension for object type `%s\'", nm)); + Axis a =X_AXIS; + while (a < NO_AXES) + { + if (abs(a_off[a]) > 50 CM) + a_off[a] = 50 CM; + incr (a); + } + } if (i->font_) { diff --git a/lily/performance.cc b/lily/performance.cc index 130cd4a2ec..f25b63eea1 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -55,7 +55,7 @@ Performance::output (Midi_stream& midi_stream) MIDI players tend to ignore instrument settings on channel 10, the percussion channel by default. */ - if (channel == 10) + if (channel == 9) channel++; s->output (midi_stream, channel++); } diff --git a/lily/score-element.cc b/lily/score-element.cc index 21989d59a3..117b693279 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -84,8 +84,9 @@ SCM Score_element::get_elt_property (SCM sym) const { SCM s = scm_assq(sym, element_property_alist_); + // is this a good idea? - if (s == SCM_BOOL_F && pscore_l_) + if (s == SCM_BOOL_F && pscore_l_ && pscore_l_->paper_l_) s = pscore_l_->paper_l_->get_scm_var (sym); return s; @@ -217,6 +218,7 @@ Score_element::output_processing () if (get_elt_property (transparent_scm_sym) != SCM_BOOL_F) return; + // we're being silly here. if (output_p_) delete output_p_; @@ -224,9 +226,12 @@ Score_element::output_processing () pscore_l_->outputter_l_->output_molecule (output_p_, absolute_offset (), classname(this)); + + pscore_l_->schedule_for_delete (this); } + /* VIRTUAL STUBS diff --git a/lily/slur.cc b/lily/slur.cc index f4d58d9b75..3e2b5d1abb 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -312,7 +312,6 @@ Slur::get_encompass_offset_arr () const notes.push (info.o_ - left); } Encompass_info info (encompass_arr_.top (), dir_, this); - // [encompass_arr_.size () - 1] // urg: Slur* urg = (Slur*)this; diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index 8bc446ee85..44e991908a 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -92,7 +92,7 @@ Stem_engraver::do_pre_move_processing() if (dir) { stem_p_->dir_ = dir; - stem_p_->dir_forced_b_ = true; + stem_p_->set_elt_property (dir_forced_scm_sym, SCM_BOOL_T); } Translator_group const *which; diff --git a/lily/stem-info.cc b/lily/stem-info.cc index cd9be5dd1d..a0914f000b 100644 --- a/lily/stem-info.cc +++ b/lily/stem-info.cc @@ -27,7 +27,9 @@ Stem_info::Stem_info (Stem*s) stem_l_ = s; x_ = stem_l_->hpos_f (); dir_ = stem_l_->dir_; - beam_dir_ = stem_l_->beam_dir_; + SCM bd = stem_l_->remove_elt_property (beam_dir_scm_sym); + beam_dir_ = gh_scm2int (SCM_CDR(bd)); + mult_i_ = stem_l_->mult_i_; interstaff_f_ = 0; diff --git a/lily/stem.cc b/lily/stem.cc index e88166ae58..c0221c73fd 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -19,26 +19,18 @@ #include "beam.hh" #include "rest.hh" - - - Stem::~Stem () { } Stem::Stem () { - /* - TODO: staff-size - */ beams_i_drul_[LEFT] = beams_i_drul_[RIGHT] = -1; mult_i_ = 0; yextent_drul_[DOWN] = yextent_drul_[UP] = 0; flag_i_ = 2; dir_ = CENTER; - beam_dir_ = CENTER; - dir_forced_b_ = false; stem_xdir_ = LEFT; beam_gap_i_ = 0; diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index c9d187ae58..68a2e8333e 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,15 +1,15 @@ Begin3 Titel: LilyPond -Versie: 1.1.35 -Inschrijf datum: 15MAR99 +Versie: 1.1.36 +Inschrijf datum: 18MAR99 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.1.35.tar.gz + 770k lilypond-1.1.36.tar.gz Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.35.tar.gz + 770k lilypond-1.1.36.tar.gz Copi-eer voorwaarden: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 1bae4f1cab..6ec0240a5f 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 1.1.35 -Entered-date: 15MAR99 +Version: 1.1.36 +Entered-date: 18MAR99 Description: LilyPond is the GNU Project music typesetter. This program can print beautiful sheet music from a music definition file. It can also play @@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 770k lilypond-1.1.35.tar.gz + 770k lilypond-1.1.36.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.35.tar.gz + 770k lilypond-1.1.36.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index a05db63f49..4a5b57845a 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.1.35 +Version: 1.1.36 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.35.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.36.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm index a1c44a24d9..555662c73c 100644 --- a/stepmake/make/out/stepmake.lsm +++ b/stepmake/make/out/stepmake.lsm @@ -1,15 +1,15 @@ Begin3 Title: StepMake -Version: 0.1.71 -Entered-date: 22FEB99 +Version: 0.1.72 +Entered-date: 17MAR99 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.71.tar.gz + 40k stepmake-0.1.72.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 40k stepmake-0.1.71.tar.gz + 40k stepmake-0.1.72.tar.gz Copying-policy: GPL End diff --git a/stepmake/make/out/stepmake.spec b/stepmake/make/out/stepmake.spec index f4e519ca9a..9516c29312 100644 --- a/stepmake/make/out/stepmake.spec +++ b/stepmake/make/out/stepmake.spec @@ -1,9 +1,9 @@ Name: stepmake -Version: 0.1.71 +Version: 0.1.72 Release: 1 Copyright: GPL Group: Development -Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.71.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.72.tar.gz Summary: generic make package Packager: janneke@gnu.org (Jan Nieuwenhuizen) Buildroot: /tmp/stepmake-install diff --git a/tex/headers.tex b/tex/headers.tex index 81dd884c8c..cd4bc70c60 100644 --- a/tex/headers.tex +++ b/tex/headers.tex @@ -9,7 +9,7 @@ \rhead{} \chead{} \lfoot{} -\cfoot{\ifnum\thepage=1{\hfill\LilyIdString}\fi} +\cfoot{\ifnum\thepage=1{\hfill\mudelatagline}\fi} \rfoot{\ifnum\thepage>1{\hfill\thepage\hfill}\fi} \headrulewidth0mm \pagestyle{fancy} diff --git a/tex/lilypond-latex.tex b/tex/lilypond-latex.tex index 97b6f320ac..143a4c28c5 100644 --- a/tex/lilypond-latex.tex +++ b/tex/lilypond-latex.tex @@ -54,7 +54,7 @@ \renewcommand{\@evenfoot}{}% \renewcommand{\@evenhead}{}% \renewcommand{\@oddfoot}{% - \ifnum\thepage=1{\hfil \LilyIdString}% + \ifnum\thepage=1{\hfil \mudelatagline}% \else{% foo\hfil\the\pageno\hfil}% \fi}} @@ -63,7 +63,7 @@ \renewcommand{\@evenfoot}{}% \renewcommand{\@evenhead}{}% \renewcommand{\@oddfoot}{% - \ifnum\thepage=1{\hfil \LilyIdString}% + \ifnum\thepage=1{\hfil \mudelatagline}% \else{foo\hfil\the\pageno\hfil}% \fi}}% \nopagenumbers -- 2.39.5