]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.36 release/1.1.36
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 18 Mar 1999 14:11:52 +0000 (15:11 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 18 Mar 1999 14:11:52 +0000 (15:11 +0100)
42 files changed:
Documentation/faq.yo
Documentation/tex/other-packages.bib
NEWS
TODO
VERSION
configure
flower/include/array.hh
flower/include/parray.hh
lily/auto-beam-engraver.cc
lily/bar-script-engraver.cc
lily/beam-engraver.cc
lily/beam.cc
lily/bow.cc
lily/clef-engraver.cc
lily/clef-item.cc
lily/extender-spanner.cc
lily/include/beam.hh
lily/include/clef-item.hh
lily/include/extender-spanner.hh
lily/include/ly-symbols.hh
lily/include/midi-walker.hh
lily/include/note-performer.hh
lily/include/p-score.hh
lily/include/stem.hh
lily/local-key-engraver.cc
lily/midi-item.cc
lily/note-performer.cc
lily/p-score.cc
lily/paper-outputter.cc
lily/performance.cc
lily/score-element.cc
lily/slur.cc
lily/stem-engraver.cc
lily/stem-info.cc
lily/stem.cc
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
stepmake/make/out/stepmake.lsm
stepmake/make/out/stepmake.spec
tex/headers.tex
tex/lilypond-latex.tex

index ea2e567fe0c430947c2246e0aa61bdeb7626657d..aa15a3196ea6fc19b224066704f75df11beb4c05 100644 (file)
@@ -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
index 30c1dd71e4ed63dbef5dd5f24fd14d691dee0473..866659ee0d12db72916206de4bf65eeb5c0e8c7d 100644 (file)
@@ -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 8f707c6969a386f6f69c9ef14ed2733579d797aa..ab43ab88841cfd310384c44cc8b1c42e482bafa0 100644 (file)
--- 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 029a6293d75f15726e484c44c5d022575e82b36b..10fca2894a794ea323ae64fc6d103fc028670e8c 100644 (file)
--- 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 <bla@bar.com>"
+. * 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 187c9b24008d2b5cf4a69b4071f364e3293964b0..de8033e1229c055c03bdb09e68ebcb6bbc9e1b31 100644 (file)
--- 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.
index 5423c297443002e9a58d4df63578f7a21ea36309..7db90382ff7e3e0746ed499f37a5f5d83402efec 100755 (executable)
--- 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 <<EOF
-#line 2540 "configure"
+#line 2687 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -2550,7 +2697,7 @@ int main() {
 gh_scm2doubles()
 ; return 0; }
 EOF
-if { (eval echo configure:2554: \"$ac_link\") 1>&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 <<EOF
-#line 2596 "configure"
+#line 2743 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -2605,7 +2752,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:2609: \"$ac_link\") 1>&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 <<EOF
-#line 2632 "configure"
+#line 2779 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -2654,7 +2801,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2658: \"$ac_link\") 1>&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 <<EOF
-#line 2687 "configure"
+#line 2834 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -2709,7 +2856,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2713: \"$ac_link\") 1>&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 <<EOF
-#line 2745 "configure"
+#line 2892 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2767,7 +2914,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2771: \"$ac_link\") 1>&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
index c8fe30f16fb36d362c016606e6aae092b76097d7..f8194c27899ccebb31e07558f06f17ae517fa3cf 100644 (file)
@@ -123,7 +123,7 @@ public:
     }
 
   /// tighten array size_.
-  void precompute()     {
+  void tighten_maxsize()     {
     remax (size_);
   }
     
index 16836c6a9cfb6725fd74e1233bb0a6e71a6744fa..ee529a5316cb923f184e99384472e6059e58c74b 100644 (file)
@@ -121,7 +121,8 @@ public:
   Array<void*>::clear;
   Array<void*>::set_size;
   Array<void*>::empty;
-  Array<void*>::reverse;  
+  Array<void*>::reverse;
+  Array<void*>::tighten_maxsize;
   T * get (int i)
     {
       return (T*) Array<void*>::get (i);
index 1fd4be94400790128ef2e0c732cac49f97da6ecc..1396f68e752cc61f244281f2857493d6902f5fa4 100644 (file)
@@ -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 ()) 
index bf462f3e9d57e7795a4d5325ed9964342274e39e..a623c132e582fef1025a49447ce73cff1671108d 100644 (file)
@@ -58,7 +58,10 @@ Bar_script_engraver::cast_to_interesting_item (Score_element *e)
   if (hang_on_clef_b_)
     {
       Clef_item * c = dynamic_cast<Clef_item*> (e);
-      if (c && c->default_b_)
+
+
+      // urg.
+      if (c) //  && c->default_b_)
        {
          i = c;
        }
index d855e41dea98623217ba935724bc90f8e575d63c..9afca27c9f750b5083aef816673ca661ec4b7826 100644 (file)
@@ -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;
index 752f23e10b44e265957158884d65218acad3a484..d5f9d9e9a9c7ecde26fb6ce9cced66175b229b9a 100644 (file)
@@ -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 <stems_.size (); j++)
     {
@@ -200,8 +201,10 @@ Beam::set_default_dir ()
   for (int i=0; i <stems_.size (); i++)
     {
       Stem *s = stems_[i];
-      s->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 ();
 
index c634746b1f6cc2a7047485e166301ad6da6be32b..9f198376d58566704f3192fb3ff8932ac4e46c72 100644 (file)
@@ -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"))
     {
index bdd816430c5e6ed57390afb9339c7b7d075a6b9e..da300420b16aaf5bec51984711142df57f764449 100644 (file)
@@ -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<Bar*>(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;
     }
 }
index f10fbb17b919f7d8ffcebda6f668ef09d184dbaa..282bd535ec9ac13fdad2f71b848d1e289b6bb2b3 100644 (file)
@@ -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;
 }
 
index 3b97b29c65751ec0faa2c4f0b4791acb81df8300..541080b60be4bc8071e005a5489d0a4e66f876ae 100644 (file)
@@ -6,6 +6,10 @@
   (c) 1998, 1999 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
+/*
+  TODO: too complicated implementation.  Why the dx_drul?.
+ */
+
 
 #include "box.hh"
 #include "debug.hh"
 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<Item *> 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<Item *> (n) : 0;
-  if (dynamic_cast <Item *> (o) == item_l_drul_[LEFT])
-    item_l_drul_[LEFT] = new_l;
-  else if (dynamic_cast <Item *> (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);
 }
 
index a8b6ca286a3d8c2de56290a7cdae7d11096b8689..3b99b4e08301c15d46ab40ed08f5d73ef134c375 100644 (file)
 /** 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_;
 
index 232b57ef729cd870df18d96addc7998782443feb..effd9886b556ef6ccfb22c6d21268cb78664101b 100644 (file)
 #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();
 };
index d97edc84014be13b7683dfcb4dd9ed9c41683a6c..3da4095ebf88e39b3c4a1051168a75513f587f9d 100644 (file)
 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 *> 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<Real> dy_f_drul_;
   Drul_array<Real> dx_f_drul_;
 };
 
index 99ba650faf9211fe69a4878d1ba5cf44c795002a..3dfe3025d45eb8f108c323f3835f6429d2443ccd 100644 (file)
 
 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);
index 30ec4764201bd9b126f4a626ba1d0cf4b5e488b4..20d1f95ff93f756f0b2b8c1b717e2fb06eff0229 100644 (file)
@@ -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<Audio_item*> 
+class Midi_walker
 {
 public:
   Midi_walker (Audio_staff* audio_staff_l, Midi_track* midi_track_l);
index 1a6c53bd5fa1ad8b902797001c2808a9e4eb06d1..194365af898e618a523a77978f966352bcf4a5f4 100644 (file)
@@ -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<Melodic_req *> note_req_l_;
 };
 
 #endif // NOTE_PERFORMER_HH
index 88e2d54f242e5c05c9296888181427d769773588..e3a5174f945c99a43dcfde2063c6754d091cdd2b 100644 (file)
@@ -27,7 +27,9 @@ class Paper_score : public Music_output
 
   /// other elements
   Link_array<Score_element> elem_p_arr_;
-  
+
+  Link_array<Score_element> to_delete_arr_;
+  Link_array<Score_element> 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:
index a3f0921a45bbe2828a4b1e687401ae7b728fd20c..003922789efe33c6b2d2764a0d9c7d9dd1c38959 100644 (file)
   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<Real> yextent_drul_;
 
   /**extent of the stem (positions).
     fractional, since Beam has to adapt them.
     */
-
+  Drul_array<Real> 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#
index 44747ad824ea04b5f400b83b7f7742ac58d75eea..c40679e1f8b2fdd04e92e8e098047054ac86264a 100644 (file)
@@ -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.
index 9d09226f7e1826071e56559a44ce32af298b3e8a..ccb0a5ae90bef25ddb078e5c8b4d2105a9309c74 100644 (file)
@@ -7,8 +7,6 @@
  */
 
 #include "proto.hh"
-#include "plist.hh"
-#include "pcursor.hh"
 #include "debug.hh"
 #include "misc.hh"
 #include "string.hh"
index 0903207d9e457d6b1c023eed2386b0778c07a93d..a96439a92884d6ad253ae146f32c838b72be4c10 100644 (file)
@@ -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;i<note_req_l_.size();i++)
+      note_req_l_[i]->print ();
 #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 <Note_req *> (req_l))
     {
-      note_req_l_ = nr;
+      note_req_l_.push(nr);
       return true;
     }
   return false;
index 0e12201fc52f2155c8bec3840816fbdd69c9ff37..1e2e45226c8aea2efb6ec73e161b4340abd53c3d 100644 (file)
@@ -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<Score_element> const&to_remove, Dictionary<int> &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<Score_element> &to_remove, Dictionary<int> &type_stats)
 {
   for (int i=0; i < to_remove.size (); i++)
     {
@@ -147,40 +162,14 @@ void delete_array_contents (Link_array<Score_element> const&to_remove, Dictionar
         type_stats["Total"] ++;
        }
 
+  to_remove.clear ();
+  to_remove.tighten_maxsize ();
 }
-Link_array<Score_element>
-Paper_score::remove_break_helpers ()
-{
-  Link_array<Score_element> to_remove;
-  Link_array<Score_element> 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<Spanner> keeps;
-  for (int i=0; i<span_p_arr_.size  ();i++)
-    {
-      Spanner *s = span_p_arr_[i];
-      Score_element *e = s;
-      SCM p =  e->get_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<Column_x_positions> 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<Score_element> 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<Score_element>
-Paper_score::remove_line (Line_of_score *l)
-{
-  Link_array<Score_element> to_remove;
-  Link_array<Score_element> 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<Spanner> keeps;
-  for (int i=0; i<span_p_arr_.size  ();i++)
-    {
-      Spanner *s = span_p_arr_[i];
-      Score_element *e = s;
-      if (e->line_l () == l)
-       to_remove.push (e);
-      else
-       keeps.push (s);
-    }
-
-
-  span_p_arr_ =keeps;
-  return to_remove;
-}
-
 Link_array<Item>
 Paper_score::broken_col_range (Item const*l, Item const*r) const
 {
index 9e46701cebd4014d52451b933cca99c74b66dd5e..29ae5715cd845e5de1d712f1f54da7135f4f971a 100644 (file)
@@ -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_)
        {
index 130cd4a2ec5cd0f185c611682c200a38e5593f5e..f25b63eea11c5d25175cb7bb27007667938f3202 100644 (file)
@@ -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++);
     }
index 21989d59a344b4cc04dd2ce97019a9d8ff046085..117b69327946e385409dffea925c822b6592833b 100644 (file)
@@ -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
index f4d58d9b7545e62ce503032deb0b7b415362e75b..3e2b5d1abb2c034a1de719c7a96f409d6e05f247 100644 (file)
@@ -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;
index 8bc446ee8569251090abcf2956991c93deee5075..44e991908a9e3ddbd8654a1ed7c367f650358070 100644 (file)
@@ -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;
index cd9be5dd1d192f8f7c47c5c6a82f680ba2fd608e..a0914f000b75248dbd272d183100195917d0fbef 100644 (file)
@@ -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;
 
index e88166ae58b2fd5de89fe8686aff065349595e70..c0221c73fde68c47ae737f5d1be8a7becaa79a4f 100644 (file)
 #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;
index c9d187ae58fb36906ab5555ce0c2c57c593be963..68a2e8333ea319779ea3346c1fbce3c63f9c95a4 100644 (file)
@@ -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
index 1bae4f1cabaaad37f377b6777e10ae845c77ca25..6ec0240a5f3a3abddac2ca87033b089ac7b0c354 100644 (file)
@@ -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
index a05db63f4910695147ff4e66ae7163ec187388b8..4a5b57845a87e9008e737a1db4129a47e12ab881 100644 (file)
@@ -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 <hanwen@cs.uu.nl>
index a1c44a24d97b1c39e9c360f31aea32878853badf..555662c73ca658c7f9dfac7782e375ab5207d81a 100644 (file)
@@ -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
index f4e519ca9a02d0226c23ce9ce62fc1a98eec3d33..9516c293120f478430b1c1979062707995ef21ce 100644 (file)
@@ -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
index 81dd884c8cdc58228e1e1c815ec781dce8fbb4f3..cd4bc70c601658d95ebf3c6dc8f5d14882635a1b 100644 (file)
@@ -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}
index 97b6f320ac878a88e937c1c3008c79af854058e3..143a4c28c50699c56b6ca7a222b9a9f109823139 100644 (file)
@@ -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