]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.64 release/0.0.64
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 16 May 1997 11:32:53 +0000 (13:32 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 16 May 1997 11:32:53 +0000 (13:32 +0200)
104 files changed:
.version
Documentation/INSTALL.pod
Documentation/MANIFESTO.pod
Documentation/faq.pod
Documentation/gnu-music.pod
Documentation/index.pod
INSTALL.text
NEWS
TODO
bin/Makefile
bin/make_website
configure
configure.in
flower/.version
flower/NEWS
flower/test/Makefile
input/rhythm.ly
lib/include/moment.hh
lib/include/proto.hh
lib/moment.cc [new file with mode: 0644]
lily/.version
lily/Makefile
lily/bar-reg.cc
lily/clef-reg.cc
lily/collision-reg.cc
lily/complex-walker.cc
lily/dynamic-reg.cc
lily/head-reg.cc
lily/include/clef-reg.hh
lily/include/collision-reg.hh
lily/include/complex-walker.hh
lily/include/dynamic-reg.hh
lily/include/item.hh
lily/include/key-reg.hh
lily/include/lily-proto.hh
lily/include/local-key-item.hh
lily/include/local-key-reg.hh
lily/include/lookup.hh
lily/include/note-column-reg.hh
lily/include/p-score.hh
lily/include/pulk-voice.hh
lily/include/pulk-voices.hh
lily/include/register-group.hh
lily/include/register.hh
lily/include/request-column.hh
lily/include/rest-collision-reg.hh
lily/include/script-reg.hh
lily/include/slur-reg.hh
lily/include/spanner.hh
lily/include/staff-column.hh
lily/include/staff-elem-info.hh
lily/include/staff-elem.hh
lily/include/staff-regs.hh
lily/include/staff-side.hh
lily/include/staffeleminfo.hh
lily/include/stem-beam-reg.hh
lily/include/text-reg.hh
lily/include/tie-reg.hh
lily/include/time-description.hh
lily/include/vertical-brace.hh [new file with mode: 0644]
lily/include/vertical-spanner.hh [new file with mode: 0644]
lily/include/voice-regs.hh
lily/include/walk-regs.hh
lily/key-reg.cc
lily/local-key-item.cc
lily/local-key-reg.cc
lily/lookup.cc
lily/meter-reg.cc
lily/note-column-reg.cc
lily/pulk-voices.cc
lily/register-group.cc
lily/register.cc
lily/request-column.cc
lily/rest-collision-reg.cc
lily/score.cc
lily/script-reg.cc
lily/slur-reg.cc
lily/slur.cc
lily/spanner.cc
lily/staff-column.cc
lily/staff-elem-info.cc
lily/staff-elem.cc
lily/staff-regs.cc
lily/staff-side.cc
lily/staff-sym-reg.cc
lily/staff-walker.cc
lily/stem-beam-reg.cc
lily/stem.cc
lily/template1.cc
lily/text-reg.cc
lily/tie-reg.cc
lily/time-description.cc
lily/vertical-brace.cc [new file with mode: 0644]
lily/vertical-spanner.cc [new file with mode: 0644]
lily/voice-regs.cc
lily/walk-regs.cc
make/Targets.make
make/Toplevel.make.in
make/Variables.make
make/lilypond.lsm
make/lilypond.spec
mi2mu/Makefile
mi2mu/main.cc
tex/dimen.tex

index e94c2e0851105fcb269b6df7558b47392c9b6daa..461533285952612b71ef4a470bbfd0606c1e1491 100644 (file)
--- a/.version
+++ b/.version
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 63
+TOPLEVEL_PATCH_LEVEL = 64
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index 556f8690f8c406cec0924c0b490cc943b6812d3a..ef26b32fd367f7903e7ae5519a837dc37974cafd 100644 (file)
@@ -154,8 +154,9 @@ If you do
        make all
 
 everything will be compiled, but nothing will be installed.  The
-resulting binaries can be found in the subdirectory
-F<bin/>.
+resulting binaries can be found in the subdirectories F<out/> (which
+contain all files generated during compilation).
+
 
 =head1 INSTALLING
 
@@ -165,7 +166,7 @@ If you have done a successful C<make>, then a simple
 
 should do the trick. 
 
-[todo]
+[todo. Obsolete; fonts are in distribution now.]
 
 Install the musixtex fonts in a directory which TeX and MF knows (if
 you are root, look for a directory which contains the directories with
index 35568361c14520eb1d3d74fc0b16182dd8f46849..04d220e96ea4ad3570ba920c0bb458258b192121 100644 (file)
@@ -33,8 +33,8 @@ setting is not possible without a knowledgeable printer,"  untrue.
 
 =item *
 
-Make a  which system which fully tweakable. It should be possible to
-typeset a book on how not to typeset music. 
+Make a system which is fully tweakable. It should be possible to
+typeset a book on how not to typeset music.
 
 =back 
 
index e6ade53053ef83e2cef883fc6f8ed004484c8add..87a162c9c69d10a3d0a2a7038384765778212925 100644 (file)
@@ -113,6 +113,12 @@ Q: How do I change the TeX layout?
 
 A: See lilyponddefs.tex, it has some comments.
 
+Q: How do I learn the C++ code?
+
+A: The entry point is in main(). Good luck. :-)
+
+Seriously, read, reread and reread lilygut and CodingStyle, and
+just start anywhere. 
 
 Q: Why GPL?
 
index 33a3aee7b379b034d70b51db9408dbec37fd5e62..cdd1ea3b7040067f3fcd4fb38de1b177e43006f0 100644 (file)
@@ -132,6 +132,8 @@ A noninteractive typesetter, suited for batch jobs, and
 typesetting existing music. This would couple the  ASCII language, the
 printing engine and the typesetting engine
 
+LilyPond is currently representing this section.
+
 =item *
 
 A GUI for composing. This would combine the display engine, the
index 4dd3193944d2ab58c3651cedfefbe81a83423648..b90e3b463cc5c9d950055f87ca328773b26ea47f 100644 (file)
@@ -142,6 +142,13 @@ The coding standards of the lilypond project.
 </a
 >
 
+=item *
+<a href=gnu-music.html
+>
+The GNU Music project
+</a
+>
+
 =item *
 <a href=docxx/index.html
 >
@@ -154,12 +161,14 @@ The DOC++ documentation of the C++ sources.
 Get it at ftp://pcnov095.win.tue.nl/pub/lilypond !
 
 
-=head1 AUTHOR
-
-Han-Wen Nienhuys <hanwen@stack.nl>, for this page
-
+=item *
 <a href=sconstat/stats.html
 >
 Stats on this page.
 </a
 >
+
+
+=back
+
+
index 67ad8cdd500efd2bfe7c9dcf8cb912c41324b440..2db81c4b0ea41938c350c6a095c83d271c9c96c0 100644 (file)
@@ -61,7 +61,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-2/May/97                 LilyPond 0.0.62                        1
+16/May/97                LilyPond 0.0.64                        1
 
 
 
@@ -127,7 +127,7 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
 
-2/May/97                 LilyPond 0.0.62                        2
+16/May/97                LilyPond 0.0.64                        2
 
 
 
@@ -159,7 +159,8 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 
        everything will be compiled, but nothing will be
        installed.  The resulting binaries can be found in the
-       subdirectory _\bb_\bi_\bn_\b/.
+       subdirectories _\bo_\bu_\bt_\b/ (which contain all files generated
+       during compilation).
 
 I\bI\bI\bIN\bN\bN\bNS\bS\bS\bST\bT\bT\bTA\bA\bA\bAL\bL\bL\bLL\bL\bL\bLI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
        If you have done a successful make, then a simple
@@ -168,7 +169,7 @@ I\bI\bI\bIN\bN\bN\bNS\bS\bS\bST\bT\bT\bTA\bA\bA\bAL\bL\bL\bLL\bL\bL\bLI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 
        should do the trick.
 
-       [todo]
+       [todo. Obsolete; fonts are in distribution now.]
 
        Install the musixtex fonts in a directory which TeX and MF
        knows (if you are root, look for a directory which
@@ -189,11 +190,10 @@ C\bC\bC\bCA\bA\bA\bAV\bV\bV\bVE\bE\bE\bEA\bA\bA\bAT\bT\bT\bTS\bS\bS\bS
 
 R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
        GNU LilyPond does use a lot of resources. For operation
-       you need the following:
 
 
 
-2/May/97                 LilyPond 0.0.62                        3
+16/May/97                LilyPond 0.0.64                        3
 
 
 
@@ -202,6 +202,8 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       you need the following:
+
        +\bo    A fast computer (a full page of music typically takes
             1 minute on my 486/66, using the -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-c\bc\bc\bch\bh\bh\bhe\be\be\bec\bc\bc\bck\bk\bk\bki\bi\bi\bin\bn\bn\bng\bg\bg\bg
             compile. It's lot slower than most MusiXTeX
@@ -257,8 +259,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-
-
-2/May/97                 LilyPond 0.0.62                        4
+16/May/97                LilyPond 0.0.64                        4
 
 
diff --git a/NEWS b/NEWS
index f2495c5234651cd9bc3318f049d5378b2efe2346..5a66e820a8ae1278a0c16576af7282a998521f5e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+pl 64
+       - exe's now built in out/
+       - toplevel Makefile dep from make/Toplevel.make.in
+       - make_website: add version fokoter
+       - make_website: bf dist *.txt
+       - bf: fix loose bars :  \meter 4/4; c1.  
+       - Staff_elem -> Score_elem
+       - bf <cis cis>
+       - vbrace lookup
+       - stop if barchecks failed
+       - resync barcheck
+
+*******
 pl 63
        - bf: segfault during MIDI output  with mi2mu output.
        - kludge: parse error beyond eof
diff --git a/TODO b/TODO
index 2a42edee5a73e422230faebecca03fd657e6d164..9bbc6f491a2ac97d9a6eb978e0fdce3cbbdcf4f8 100644 (file)
--- a/TODO
+++ b/TODO
@@ -112,13 +112,8 @@ BUGS
 
        * staccato dot positions.
 
-       * \meter 4/4; c1.  doesn't gen bar.
-
        * stacked scripts.
 
-       * redo timing stuff <-> pulk to allow \meter 2/4; e2. to work
-       out correctly
-
        * key transposition.
 
        * help-lines for rests
@@ -165,6 +160,8 @@ INPUTLANGUAGE
 
 SMALLISH PROJECTS
 
+       * Help_line, Help_line_reg
+
        * --fast/--draft: leave out constraints
 
        * write Dynamic_line (to group dynamics horizontally)
@@ -181,9 +178,11 @@ SMALLISH PROJECTS
        * cleanup lily-proto.hh and proto.hh
 
        * half-sharps, half-flats
-       
-       * resync barcheck.
 
+       * adaptive accidental spacing.
+
+       * score_elem invible_b_ flag
+       
        * key undo
 
        * unix style paths for LILYINCLUDE env
index faa5163efe9182a1fa3a5328adf3cb3fcf374b04..ad9f6bb05b5b70613b469ca9ff7cba22df0bf468 100644 (file)
@@ -13,6 +13,7 @@ EXTRA_DISTFILES = $(SCRIPTS)
 #
 
 
+EXECUTABLES=convert-mudela 
 localinstall: all
        $(INSTALL) -d $(bindir)
        $(INSTALL) -m 755 convert-mudela $(bindir)
index c9fc73dfb4a3fe21b3dad61ef5f6ffdb8ed5dcfb..9586d88598c60a9d1e036585586df165bf27fcee 100755 (executable)
@@ -1,14 +1,55 @@
 #!/usr/bin/perl -w
-
+# stupid script to generate WWW site.
 
 use FileHandle;
+my $lily_version;
+my $footstr;
+my $mw_id = "<!make_website!>";
+sub get_version
+{
+    my ($vstr)=("");
+    open V, "$depth/.version";
+    while (<V>) {
+       s/#.*$//g;
+       next if (/^ *$/);
+       s/^/\$/;
+       s/= *(.*)$/=\"$1\";/;
+       $vstr .= $_;
+    }
+    eval ($vstr);
+    
+    $lily_version= "$TOPLEVEL_MAJOR_VERSION.$TOPLEVEL_MINOR_VERSION.$TOPLEVEL_PATCH_LEVEL$TOPLEVEL_MY_PATCH_LEVEL";
+    
+    # stupid checks.
+    $lily_version= "$TOPLEVEL_MAJOR_VERSION.$TOPLEVEL_MINOR_VERSION.$TOPLEVEL_PATCH_LEVEL$TOPLEVEL_MY_PATCH_LEVEL";
+
+
+    close V;
+}
+
+sub set_html_footer
+{
+    my $MAILADRESS=$ENV{MAILADRESS};
+    my @pw=(getpwuid($<));
+    my $username=$pw[6];
+
+    $footstr = 
+       "\n<hr>
+<font size=-2>
+This page was generated by <code>make_website</code> from lilypond-$lily_version by
+<p>
+<address><br>$username <a href=mailto:$MAILADRESS>&lt<!bla>$MAILADRESS</a>&gt</address>
+<p>" . `date` . "
+<p></font>\n";
+}
+    
 
 # do something, check return status
 sub my_system
 {
     my (@cmds) = @_;
     foreach $cmd (@cmds) {
-       my      $ret =  ( system ($cmd))/256;
+       my $ret =  ( system ($cmd));
        if ($ret) {
            print STDERR "\nmake_website: failed on command \`$cmd\' (status $ret)\n";
            exit 2;
@@ -83,7 +124,7 @@ sub gen_list
 {
     print "generating HTML list\n";
     open HTMLLIST, ">example_output.html";
-    print HTMLLIST "<title>LilyPond examples</title>\n";
+    print HTMLLIST "<html><body><title>LilyPond examples</title>\n";
     foreach $a (@examples) {
        $name=$a;
        print HTMLLIST "<h1>example file: $name</h1>\n<XMP>\n";
@@ -110,8 +151,40 @@ sub gen_list
            if ( -f $midif );
        print HTMLLIST "</ul>";
     }
+    print HTMLLIST "</BODY></HTML>";
        close HTMLLIST;
 }
+
+sub edit_html
+{
+    print STDERR "adding footer\n";
+
+    OUTER:
+    foreach $a (<*.html>) {
+       open H, "$a";
+       my $sep="</BODY>";
+       input_record_separator H $sep;
+       my $file="";
+       
+       while (<H>) { 
+           if (/$mw_id/) {
+               close H;
+               next OUTER;
+           }
+           $file .= $_; 
+
+       }
+       close H;
+       
+       
+       $file =~ s/$sep/$footstr$sep/g ;
+       
+       open H, ">$a";
+       print H $mw_id;
+       print H $file;
+       close H;
+    }
+}
 sub copy_files
 {  
     print "copying files\n";
@@ -126,28 +199,37 @@ sub docxx_update
     my_system "make -C $depth doc++";
 }
 
-sub
-    do_tar
+sub do_tar
 {
      print "tarring.\n";
      my_system
-        " tar vhcf website.tar *.html *.gif *.ps.gz *.ly.txt *.midi docxx/*;",
+        " tar vhcf website.tar *.html *.gif *.ps.gz *.txt *.midi docxx/*;",
         "gzip -f9 website.tar;";
 }
 
-$depth = "../../";
-$ENV{"TEXINPUTS"} .= ":$depth/input/:";
-$ENV{"LILYINCLUDE"} = "$depth/input/";
-my $cwd;
-chomp($cwd = `pwd`);
+sub main
+{
+    $depth = "../";
+    my $cwd;
+    chomp($cwd = `pwd`);
+    die "need to be in directory Documentation\n" if ( ! ($cwd =~ /Documentation$/));
+    get_version;
+    set_html_footer;
+
 
-die "need to be in directory Documentation\n" if ( ! ($cwd =~ /Documentation$/));
-chdir ("out");
+    $depth = "../../";
 
+    chdir ("out");
+    $ENV{"TEXINPUTS"} .= ":$depth/input/:";
+    $ENV{"LILYINCLUDE"} = "$depth/input/";
 
-gen_html;
-gen_examples;
-gen_list;
-copy_files;
-docxx_update;
-do_tar;
+
+    gen_html;
+    gen_examples;
+    gen_list;
+    copy_files;
+    edit_html;
+    docxx_update;
+    do_tar;
+}
+main;
index a803ba3e29b33930e2f2fd1284c6d5792c1a2d41..73ea61d3231a913ef6877cab1f33e3b57828b850 100755 (executable)
--- a/configure
+++ b/configure
@@ -1363,9 +1363,7 @@ done
 ac_given_srcdir=$srcdir
 ac_given_INSTALL="$INSTALL"
 
-trap 'rm -fr `echo "make/out/Configure_variables.make:make/Configure_variables.make.in
-    Makefile:make/Toplevel.make.in
-    " | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "make/out/Configure_variables.make:make/Configure_variables.make.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -1454,9 +1452,7 @@ EOF
 
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"make/out/Configure_variables.make:make/Configure_variables.make.in
-    Makefile:make/Toplevel.make.in
-    "}
+CONFIG_FILES=\${CONFIG_FILES-"make/out/Configure_variables.make:make/Configure_variables.make.in"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
@@ -1630,7 +1626,7 @@ fi
 eval "DIR_DATADIR=$datadir"
 DIR_DATADIR="$DIR_DATADIR/lilypond"
 echo $ac_n "checking ""... $ac_c" 1>&6
-echo "configure:1634: checking " >&5
+echo "configure:1630: checking " >&5
 
 cat << EOF > lib/out/config.hh
 
index f8f095502d3f98a49de5b5ee5102875b1fef1264..95a848b4767b863d9c0259b223db30fd6d2f7be1 100644 (file)
@@ -224,9 +224,7 @@ fi
 AC_CHECK_HEADER(FlexLexer.h, true,
        AC_MSG_WARN(can't find flex header. Please install Flex headers correctly))
 AC_CONFIG_SUBDIRS(flower)
-AC_OUTPUT(make/out/Configure_variables.make:make/Configure_variables.make.in
-    Makefile:make/Toplevel.make.in
-    )
+AC_OUTPUT(make/out/Configure_variables.make:make/Configure_variables.make.in)
 
 
 
index 10b56193150686d6083b2178a1ed6d88f539c1ae..c07a4a1e4ed2bd4efcae38dd45f5334e2dbb1fb1 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 1
 MINOR_VERSION = 1
-PATCH_LEVEL = 16
+PATCH_LEVEL = 17
 # use to send patches, always empty for released version:
 MY_PATCH_LEVEL = # include separator: "-1" or ".a"
 #
index 727d9e2487a02e5e06fb4576425aa96b9f63b8f9..9c330b8005ae558724dc8cce3054321b0a3d896d 100644 (file)
@@ -1,5 +1,7 @@
 version 1.1:
 
+pl 17
+       - naming: Pointer->Link, IPointer->Pointer
 pl 16
        - Array::get()
        - P< > doco.
index bf271c4d26575274e27a318c01cc7738dcf4ba1a..0cc3bb960c5d2515ad05e64939c25e49073fafff 100644 (file)
@@ -42,7 +42,6 @@ MODULE_LIBES = -lflower
 
 # main target of this module:
 #
-MAINTARGET = $(lily_bindir)/$(EXECUTABLE)# huh?
 BUILDSTRINGTEST=$(MAINTARGET)
 EXECSTRINGTEST=$(EXECUTABLE)
 
index 068a30de4ecb92aca3953183ede2687b1faf3e89..fe236e4dca73eee8f6bcaec422f7f84839086418 100644 (file)
@@ -8,6 +8,7 @@
  copyright:public domain
 
  Tested Features: multiple meters, beaming
+       unsynced bars
 EndMudelaHeader
 %}
 \version "0.0.57";
@@ -50,7 +51,7 @@ ritme = \staff {
 another = \staff {
        melodicregs
        \melodic{ \meter 4/4; 
-               c1 c1 c1 c4 c4 c4 c4  \meter  4/4; c1 c1 c1
+               c1.  c1. c4 c4 c4 c4  \meter  4/4; c1 c1 c1
         }
 }
 
@@ -66,6 +67,7 @@ yanother = \staff     {
        another
        yanother
        
+       \midi { }
        \paper{
                \unitspace 2\cm
                \geometric 1.3
index 0037d940784dae5bb5d6d7c6a49d87fad2e26c9c..e742bee900f7afec08bcbd6fed600b72681bae35 100644 (file)
@@ -8,6 +8,7 @@
 #include "rational.hh"
 class String;
 typedef Rational Moment;
+void print(Moment);
 
 
 #endif // 
index 19273d0ab1321fb2cba44e781981477a41a61b95..ab93a5472ff5f72cfbba9495c7b6abff80390c9d 100644 (file)
@@ -143,8 +143,6 @@ struct Spanner;
 struct Subtle_req;
 struct Staff;
 struct Staff_column;
-struct Staff_elem;
-struct Staff_elem_info;
 struct Staff_symbol;
 struct Staff_walker;
 struct Stem;
diff --git a/lib/moment.cc b/lib/moment.cc
new file mode 100644 (file)
index 0000000..46ed554
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream.h>
+#include "string.hh"
+#include "moment.hh"
+
+void
+print(Moment m)
+{
+    cout << String(m) << flush;
+}
+    
+
index e929572e511eb9d3ee1cf4d9995028e8a67bb54a..a01151100b75616c464676cca43edca578fbf52a 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 63
+PATCH_LEVEL = 64
 
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
index 01503659df47cfc093f297becba8a76759df453d..08088271ffa95932e738483c771b8beb82aa3869 100644 (file)
@@ -46,9 +46,7 @@ MODULE_LIBES= -llily -lflower
 
 # main target of this module:
 #
-MAINTARGET = $(lily_bindir)/$(EXECUTABLE)# huh?
-
-default: $(MAINTARGET)
+default: $(EXECUTABLE)
 #
 
 # generic targets and rules:
@@ -76,3 +74,8 @@ DEPFILES = $(wildcard $(depdir)/*.dep)
 
 localclean:
        rm -f $(outdir)/parser.* $(outdir)/lexer.cc
+
+#should merge with mi2mu rule
+localinstall: installexe
+
+localuninstall: uninstallexe
index 8450b6bf7e8ab5687c62d9a74f9ddc0fb5fc986c..4dd6199ce148aa4613d313f5436f535d6beabae5 100644 (file)
@@ -42,7 +42,7 @@ Bar_register::process_requests()
     }
     
     if (bar_p_){
-       announce_element(Staff_elem_info(bar_p_, bar_req_l_) );
+       announce_element(Score_elem_info(bar_p_, bar_req_l_) );
     }
 }
 
index f5687a166503e6a74592d62995bde7145e06a044..63e4a505fc45beb7230857e3ff7de307fa3e5fb0 100644 (file)
@@ -48,7 +48,7 @@ Clef_register::read_req(Clef_change_req*c_l)
        c_l->error("unknown clef type ");
 }
 void
-Clef_register::acknowledge_element(Staff_elem_info info)
+Clef_register::acknowledge_element(Score_elem_info info)
 {
     if (info.elem_l_->name() == Bar::static_name()) {
        if (!clef_p_){
@@ -76,7 +76,7 @@ Clef_register::create_clef()
 {
     clef_p_ = new Clef_item;
     clef_p_->read(*this);
-    announce_element(Staff_elem_info(clef_p_,
+    announce_element(Score_elem_info(clef_p_,
                                         clef_req_l_));
 }
 
index 954b999a24468e0ef078d5f8ad3119e2988005f1..6b9da7706229b435cdf7db2027be110b6c91f469 100644 (file)
@@ -11,7 +11,7 @@
 #include "collision.hh"
 
 void
-Collision_register::acknowledge_element(Staff_elem_info i)
+Collision_register::acknowledge_element(Score_elem_info i)
 {
     if (!(i.elem_l_->name() == Note_column::static_name()))
        return;
@@ -19,7 +19,7 @@ Collision_register::acknowledge_element(Staff_elem_info i)
     if (!col_p_)
        col_p_ = new Collision;
     
-    col_p_->add((Note_column*)i.elem_l_);
+    col_p_->add((Note_column*)i.elem_l_->item());
 }
 
 void
index 134a4705a7bacb49fd2d95445e3271ee53c1bd08..1e1ac452d78d07feb5e2cb0c2cd48ec968e41bfc 100644 (file)
@@ -68,7 +68,7 @@ Complex_walker::regs_process_requests()
 }
 
 void
-Complex_walker::typeset_element(Staff_elem *elem_p)
+Complex_walker::typeset_element(Score_elem *elem_p)
 {
     if (!elem_p)
        return;
index 11a74756a7f4563d225984adef7f618b0f6dcc7f..20ffe5cfe32ad63f5701572613680722f3c5ed88 100644 (file)
@@ -58,7 +58,7 @@ Dynamic_register::process_requests()
            assert (!dynamic_p_) ; // TODO
                
            dynamic_p_ = new Text_item(td_p);
-           announce_element(Staff_elem_info(dynamic_p_, dreq_l));
+           announce_element(Score_elem_info(dynamic_p_, dreq_l));
        } else if (dreq_l->span_dynamic()) {
 
            Span_dynamic_req* span_l = dreq_l->span_dynamic();
@@ -75,7 +75,7 @@ Dynamic_register::process_requests()
                assert(!new_cresc_p);
                new_cresc_p  = new Crescendo;
                new_cresc_p->grow_dir_i_ = span_l->dynamic_dir_i_;
-               announce_element(Staff_elem_info(new_cresc_p, span_l));
+               announce_element(Score_elem_info(new_cresc_p, span_l));
            }
        }
     }
@@ -136,7 +136,7 @@ Dynamic_register::~Dynamic_register()
     delete cresc_p_;
 }
 void
-Dynamic_register::acknowledge_element(Staff_elem_info i)
+Dynamic_register::acknowledge_element(Score_elem_info i)
 {
     if (i.elem_l_->name() == Note_column::static_name()) {
        if (dynamic_p_) dynamic_p_->add_support(i.elem_l_);
index 5b1557ea78d5aff746f100306ea740fe73df6c8f..562dbea654e08ff5ca22ea9cde09dd45479a5fd7 100644 (file)
@@ -48,7 +48,7 @@ Notehead_register::process_requests()
                       6 * paper()->internote()));
     }
     
-    Staff_elem_info itinf(note_p_,note_req_l_);
+    Score_elem_info itinf(note_p_,note_req_l_);
     announce_element(itinf);
 }
 
index 434ffcd95862aa6855a9fe2abe547852afde85c2..a9f3426a1225526bb17965e0148601414fceae60 100644 (file)
@@ -23,7 +23,7 @@ protected:
     virtual void pre_move_processing();
     virtual void post_move_processing();
     virtual bool try_request(Request*);
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
 public:
     int c0_position_i_;
     String clef_type_str_;
index 31de018f461d138c1686a6c9e0b61a378b1ce427..0dd8a66fcac515d942ec256cdb12b9327b304b7e 100644 (file)
@@ -16,7 +16,7 @@ class Collision_register : public Request_register {
     Collision* col_p_;
 
 protected:
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
 public:
     Collision_register();
index a23371abea74a6fd23b749187b918d483b7ad03e..44f445f069175d3114ba90de6090e9dc574f92d9 100644 (file)
@@ -27,8 +27,8 @@ public:
     /* *************** */
 
     void regs_process_requests();
-    void typeset_element(Staff_elem *elem_p);
-    void announce_element(Staff_elem_info);
+    void typeset_element(Score_elem *elem_p);
+    void announce_element(Score_elem_info);
     virtual void process_requests();
     virtual void do_post_move();
     virtual void do_pre_move();
index c56805d07d849214d72b0517bd4a5ee439e2307d..cf23d007c3985ea11a6b4abd5b77e785d89570b9 100644 (file)
@@ -25,7 +25,7 @@ public:
     ~Dynamic_register();
     NAME_MEMBERS(Dynamic_register);
 protected:
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual bool try_request(Request *req_l);
     virtual void process_requests();
     virtual void pre_move_processing();
index 622f0f0dea50657e9bdc60f4e52a67950f1c849e..f61a2f27650789168a2ea2724acd63ee5fe96d8d 100644 (file)
@@ -23,7 +23,7 @@
   spacing calculation. 
   
 */
-class Item : public Staff_elem {
+class Item : public virtual Score_elem {
 public:
     /// indirection to the column it is in
     PCol * pcol_l_;
index a907434bf2271505919cb9883e2e90a4f869104b..c674ca55a28c1fd9e09d07b4a526bcdef2762cda 100644 (file)
@@ -25,7 +25,7 @@ struct Key_register : Request_register {
     virtual void process_requests();
     virtual void pre_move_processing();
     virtual void post_move_processing();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     Key_register();
     NAME_MEMBERS(Key_register);
 private:
index d40e1616e6326ced0328c08b84c2085ccabde409..7cffaced164fccd7525df3f5de14e9304ac93ada 100644 (file)
@@ -47,6 +47,8 @@ struct Request_column;
 struct Rest_req;
 struct Rhythmic_grouping_req;
 struct Rhythmic_req;
+struct Score_elem;
+struct Score_elem_info;
 struct Script_req;
 struct Skip_req;
 struct Slur_req;
@@ -69,4 +71,6 @@ struct Script_column;
 struct Rest_column;
 struct Rest_collision_register;
 struct Rest_collision;
+struct Vertical_spanner;
+struct Vertical_brace;
 #endif // LILY_PROTO_HH
index dd4ae4b7367ac87127774be197fc29399ba075c8..2371277bb0fd9ff3300f6bb546c3f29c890d54f6 100644 (file)
@@ -10,7 +10,9 @@
 #include "varray.hh"
 
 struct Local_acc {
-    int name , acc, octave;
+    int name_i_;
+    int accidental_i_;
+    int octave_i_;
     static int compare(Local_acc&, Local_acc&);
 };
 
index 19e11b9d4e5872e898aee9bd99be0ddd3c1ba238..b7197d27435bfb303e6d4d1fefcccbac6862bf2a 100644 (file)
@@ -21,7 +21,7 @@ struct Local_key_register : Request_register {
     Link_array<Item *> tied_l_arr_;
     /* *************** */
     virtual void process_requests();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
     Local_key_register();
     NAME_MEMBERS(Local_key_register);
index e850586626a6aed90f6dd007ceff12baaed4acf6..42a2e03819bd986da0bf5325a9460a34faaf5a8c 100644 (file)
@@ -31,6 +31,7 @@ struct Lookup {
       */
     Symbol streepjes(int pos)const;
 
+    Symbol vbrace(Real &dy) const;
     Symbol meter(Array<Scalar>)const;
     Symbol stem(Real y1_pos, Real y2_pos)const;
     Symbol rule_symbol(Real height, Real width)const;
index d052d04983ca66a708c60237a7503c06fefd165e..d33dddf96209c49c0ba1803e514f5d074dc79011 100644 (file)
@@ -24,10 +24,10 @@ class Note_column_register :public Request_register {
     int dir_i_;
     
     /* *************** */
-    bool acceptable_elem_b(Staff_elem const*)const;
+    bool acceptable_elem_b(Score_elem const*)const;
 protected:
     virtual void set_feature(Feature);
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
     virtual void post_move_processing();
 public:
index 33e066c3c707536e721e06c135ea3df543631de5..1e283faf9e4a8b6f59c7f0b8bdf470b6da5e6db5 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "colhpos.hh"
 #include "varray.hh"
+#include "lily-proto.hh"
 #include "p-col.hh"
 #include "p-staff.hh"
 
@@ -45,6 +46,7 @@ struct PScore {
     /// broken spanners
     Pointer_list<Spanner*> broken_spans;
 
+    Pointer_list<Vertical_spanner*> vspan_p_list_;
     /* *************** */
     /* CONSTRUCTION */
     
index 3b9006305050a8856bdd43b6bf88d4e87c6a1af0..9d26d9798ad5bbd6c5f3e896befc0602c99ae8c6 100644 (file)
@@ -18,7 +18,9 @@
 
 /**
   Align requests with starting time.
- */
+
+  To our foreign readers "pulk"ing is what you do with the stuff in
+  your nose to get it out.  (and I don't mean blowing) */
 class Pulk_voice
 {
     PCursor<Voice_element*> cur_;
@@ -34,6 +36,10 @@ public:
     bool ok()const { return cur_.ok() ; }
 
     Pulk_voice(Voice*, int staff_idx);
+
+    /**
+      Get the requests at when(), and advance.
+     */
     Array<Request*> get_req_l_arr();
 };
 
index e6f9be9c1180bbedf038cfc61f8257876e1fc64d..9f01f4419e1f39627dcb4937c15b13a40e721c1e 100644 (file)
 
 #ifndef PULK_VOICES_HH
 #define PULK_VOICES_HH
+
 #include "pqueue.hh"
 #include "plist.hh"
 #include "moment.hh"
 #include "proto.hh"
 #include "lily-proto.hh"
 #include "voice.hh"
-
+#include "time-description.hh"
 
 
 struct Voice_l { 
@@ -36,12 +37,14 @@ class Pulk_voices
 PQueue< Voice_l > voice_pq_;
     Pointer_list< Pulk_voice * > pulk_p_list_;
     Link_list<Staff *> staff_l_list_;
+    Array < Time_description > time_arr_;
     Moment next_mom_;
 
 public:
     Moment last_;
+    bool time_checks_failed_b() const;
     bool ok() const;
-    Moment next_mom() { return next_mom_; }
+    Moment next_mom() const;
     Pulk_voices(Link_list<Staff*> const&);
     void get_aligned_request(Request_column *col_l );
 };
index 2156dbec804f4ed2d9dae0f251f3ce76234caed4..2e13b512483285df00f8cd72df4de912aa5ac535 100644 (file)
@@ -44,7 +44,7 @@ public:
     virtual void sync_features() ;
     virtual void pre_move_processing();
     virtual void post_move_processing();
-    virtual void acknowledge_element(Staff_elem_info info);
+    virtual void acknowledge_element(Score_elem_info info);
     virtual bool try_request(Request*);
     virtual void process_requests();
     virtual ~Register_group_register();
index 5ba28600ad2061741a9e5179385d231409bd9ceb..dee7c512c80bb3835dae91edf41f59efb16fc29f 100644 (file)
@@ -17,7 +17,7 @@
 #include "staff-info.hh"
 
 /**
-  a struct which processes requests, and creates the #Staff_elem#s.
+  a struct which processes requests, and creates the #Score_elem#s.
   It may use derived classes. Hungarian postfix: register
   */
 class Request_register {
@@ -69,7 +69,7 @@ protected:
     /**
       Invoke walker method to typeset element. Default: pass on to daddy.
       */
-    virtual void typeset_element(Staff_elem*elem_p);
+    virtual void typeset_element(Score_elem*elem_p);
     
      /**
       take note of item/spanner
@@ -77,11 +77,11 @@ protected:
 
       Default: ignore the info
       */
-    virtual void acknowledge_element(Staff_elem_info) {}
+    virtual void acknowledge_element(Score_elem_info) {}
     /**
       Announce element. Default: pass on to daddy. Utility
       */
-    virtual void announce_element(Staff_elem_info);
+    virtual void announce_element(Score_elem_info);
     /**
       Set Feature of the register(s). Default: ignore Feature.
      */
index ad198f3f04477a147393d3f2063cdda9f6be57ef..19876c9e37ff4de27daff83ef726bd50c750b614 100644 (file)
@@ -28,6 +28,7 @@ public:
     bool used_b()const;
     Moment when();
     void add_reqs(int staff_idx, Array<Request*> const&);
+    void update_time(int staff_idx, Time_description &);
     void set_score_cols(Score_column*, Score_column*);
 };
 
index da2992b65c17bac87cd85704e4a5761a57d95ee2..a572ee6449ceeb181d8d566d44d2ca8e7dd0eaf8 100644 (file)
@@ -17,7 +17,7 @@ class Rest_collision_register : public Request_register {
     Rest_collision* rest_collision_p_;
     Array< Collision *> collision_l_arr_;
 protected:
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
 public:
     Rest_collision_register();
index 67d1215b9a2497dacd16f30ee55a6e358472d98f..f7fc05d9eb6e17797abc105c980369d47d43d062 100644 (file)
@@ -16,14 +16,14 @@ class Script_register : public Request_register {
     Array<Script_req *> script_req_l_arr_;
 
     /* *************** */
-    bool acceptable_elem_b(Staff_elem*);
+    bool acceptable_elem_b(Score_elem*);
 public:
     NAME_MEMBERS(Script_register);
     Script_register();
 protected:
     virtual bool try_request(Request*);
     virtual void process_requests();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
     virtual void post_move_processing();
 
index cca97e0f138b43db81033919a4ec1f587528ce3e..9ac27e591680d1d9f1377e05004ae3462740c248 100644 (file)
@@ -23,7 +23,7 @@ protected:
     virtual void set_feature(Feature);
     virtual bool acceptable_request_b(Request*);
     virtual void process_requests();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
     virtual void post_move_processing();
 public:
index d3ca04af5e7ab50bba73506a9628017b2fb18fe6..df5e9e58e9c1bab72434d01d6a74f1480e1d5e6a 100644 (file)
@@ -31,7 +31,7 @@
   length of stems of notes they encompass.
 
     */
-class Spanner:public Staff_elem {
+class Spanner:public virtual Score_elem {
 public:
     PCol *left_col_l_, *right_col_l_;
 
index b0624664be8f6a28904b62ed6e5d33efd72b83a8..7550ae27fa74e00e5cad472d168020012acb2555 100644 (file)
@@ -35,6 +35,7 @@ public:
     void add_reqs (Array<Request*> req_l_arr);
     void OK() const;
     ~Staff_column();
+    void update_time(Time_description&, Rhythmic_grouping*);
     void typeset_breakable_items(Array<Item *> &pre_p_arr,
                                 Array<Item *> &nobreak_p_arr,
                                 Array<Item *> &post_p_arr);
index 25fa480170749e8bf3fb2eaecee63d7984255c7a..7d5955a2a72771020d6786b7eeaa86e3d901d5ab 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  staff-elem-info.hh -- declare Staff_elem_info
+  staff-elem-info.hh -- declare Score_elem_info
 
   source file of the LilyPond music typesetter
 
 #define STAFFELEMINFO_HH
 
 #include "scalar.hh"
-#include "proto.hh"
+#include "lily-proto.hh"
 #include "varray.hh"
 
 /// data container.
-struct Staff_elem_info {
-    Staff_elem * elem_l_;
+struct Score_elem_info {
+    Score_elem * elem_l_;
     Request*req_l_;
     Voice const * voice_l_;
     Array<Request_register*> origin_reg_l_arr_;
 
     /* *** */
-    Staff_elem_info(Staff_elem*, Request*);
-    Staff_elem_info();
+    Score_elem_info(Score_elem*, Request*);
+    Score_elem_info();
 };
 
 
index a1524a1bd6de50bed8aabed22e782ff9a0ea1c35..fa459f9e7677a7d6c386947f13d9603efb3d3207 100644 (file)
 #include "class-name.hh"
 
 
-/** Both Spanner and Item are Staff_elem's. Most Staff_elem's depend
-  on other Staff_elem's, eg, Beam needs to know and set direction of
+/** Both Spanner and Item are Score_elem's. Most Score_elem's depend
+  on other Score_elem's, eg, Beam needs to know and set direction of
   Stem. So the Beam has to be calculated *before* Stem. This is
-  accomplished with the dependencies field of struct Staff_elem.
+  accomplished with the dependencies field of struct Score_elem.
 
   (elem)
   */
-class Staff_elem {
+class Score_elem {
 
     /// member: the symbols
     Molecule *output;          // should scrap, and use temp var?
@@ -31,7 +31,7 @@ class Staff_elem {
       NULL.
       */
     Offset offset_;
-    Array<Staff_elem*> dependancy_l_arr_;
+    Array<Score_elem*> dependancy_l_arr_;
 public:
     enum Status {
        ORPHAN,                 // not yet added to pstaff
@@ -40,6 +40,8 @@ public:
        PRECALCED,              // calcs before spacing done
        POSTCALCING,            // busy calculating. This is used to trap cyclic deps.
        POSTCALCED,             // after spacing calcs done
+       VERTICALCING,           // height determined
+       VERTICALCED,
        OUTPUT,                 // molecule has been output
        DELETED,                // to catch malloc mistakes.
     } status;
@@ -48,15 +50,15 @@ public:
     PStaff *pstaff_l_;
 
     /* *************** */
-    Staff_elem(Staff_elem const&);
+    Score_elem(Score_elem const&);
     String TeXstring () const ;
     virtual void print() const;
     virtual Interval width() const;
     virtual Interval height() const;
     Paper_def *paper() const;
-    virtual ~Staff_elem();
-    Staff_elem();
-    NAME_MEMBERS(Staff_elem);    
+    virtual ~Score_elem();
+    Score_elem();
+    NAME_MEMBERS(Score_elem);    
 
     /**
       translate the symbol. The symbol does not have to be created yet. 
@@ -74,8 +76,8 @@ public:
     /**
       add a dependency. It may be the 0 pointer, in which case, it is ignored.
      */
-    void add_dependency(Staff_elem* );    
-    void substitute_dependency(Staff_elem* old, Staff_elem * newdep);
+    void add_dependency(Score_elem* );    
+    void substitute_dependency(Score_elem* old, Score_elem * newdep);
     
 protected:
     virtual  Interval do_height()const;
@@ -92,7 +94,9 @@ protected:
     /// do calculations after determining horizontal spacing
     virtual void do_post_processing();
 
-    Array<Staff_elem*> dependant_l_arr_;
+    /// do calculations after height of spanners/items is determined.
+    virtual void do_verticalcing();
+    Array<Score_elem*> dependant_l_arr_;
 
 };
 
index 88c41f89991dbb12d91adb46d05eea2299df495d..69f1f5356e7c76d97ab754e509c9cf58b2e6bce0 100644 (file)
@@ -25,7 +25,7 @@ protected:
     virtual bool try_request(Request * r);
     virtual Staff_info get_staff_info();
     virtual bool acceptable_request_b(Request*) const ;
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
 public:
     
     /* *************** */
index 13008710236084287a239abb1ed5c5e79c7b7f58..c81353f0cb769664669583dbbf0d8c02c44db640 100644 (file)
@@ -14,9 +14,9 @@
 
 /// A symbol which sits along  the staff
 class Staff_side  {
-    Array<Staff_elem*> support_l_arr_;
+    Array<Score_elem*> support_l_arr_;
     int staff_size_i_;
-    Staff_elem * elem_l_;
+    Score_elem * elem_l_;
     Interval support_height()const;
     Staff_symbol* staff_sym_l_;
     void read_staff_sym();
@@ -32,8 +32,8 @@ public:
 
     void set_staffsym(Staff_symbol*);
   
-    Staff_side(Staff_elem*);
-    void add_support(Staff_elem*);
+    Staff_side(Score_elem*);
+    void add_support(Score_elem*);
     
 protected:
     int get_position_i()const;
index 14652899d404765a3c725f84628075464f0b9b43..ef9f3c196f523583b38ae3803592f205ed9f28d7 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  staffeleminfo.hh -- declare Staff_elem_info
+  staffeleminfo.hh -- declare Score_elem_info
 
   source file of the LilyPond music typesetter
 
 #include "proto.hh"
 
 /// data container.
-struct Staff_elem_info {
-    Staff_elem * elem_p_;
+struct Score_elem_info {
+    Score_elem * elem_p_;
     Request*req_l_;
     Voice const * voice_l_;
     Voice_group_registers * group_regs_l_; 
     Request_register * origin_reg_l_;
 
     /* *** */
-    Staff_elem_info(Staff_elem*, Request*, Request_register*);
-    Staff_elem_info();
+    Score_elem_info(Score_elem*, Request*, Request_register*);
+    Score_elem_info();
 };
 
 #endif // STAFFELEMINFO_HH
index f5a3c6452b2d6eb874bd2f077a32b2ab74c891e8..f63f1ad6de8f141cfc0352bf06e447d0345e969d 100644 (file)
@@ -33,7 +33,7 @@ protected:
     virtual void set_feature(Feature dir_i_);
     virtual bool try_request(Request*);
     virtual void process_requests();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void pre_move_processing();
     virtual void post_move_processing();
 };
index f3544b3ec77ba58221b686ccc0ea248abeac7981..4b251aef97ee665dcf63f7bd73d0e93c2fe0fc5b 100644 (file)
@@ -20,7 +20,7 @@ protected:
     virtual void process_requests();
     virtual void pre_move_processing();
     virtual void post_move_processing();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
 public:
     Text_register();
     NAME_MEMBERS(Text_register);
index 5a0028f83e4e1373a21047b1043b53a43ff104f5..b0cd22762587df15ba97197fd6da760f9cabdb2a 100644 (file)
@@ -24,7 +24,7 @@ class Tie_register : public Request_register {
     
 protected:
     virtual ~Tie_register();
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual bool try_request(Request*);
     virtual bool acceptable_request_b(Request*);
     virtual void sync_features();
index 1bfd5820e6c2dffb6cad2fc1d54567a48b3f5871..c4edb172bf02764670c537ea253f665811141bd6 100644 (file)
@@ -8,11 +8,16 @@
 #define tdes_HH
 
 #include "moment.hh"
+#include "lily-proto.hh"
+#include "varray.hh"
 
 /// full info on where we are
 struct Time_description {
     Moment when_;
 
+    /// found an error so far?
+    bool error_b_ ;
+
     /// if true, no bars needed, no reduction of whole_in_measure
     bool cadenza_b_;
     
@@ -38,7 +43,8 @@ struct Time_description {
     void print() const;
     void setpartial(Moment p);
     String try_set_partial_str(Moment)const;
-    Moment barleft();
+    Moment barleft()const;
+    Moment next_bar_moment()const;
     void set_meter(int,int);
     static int compare (const Time_description&, const Time_description&);
 };
@@ -48,5 +54,10 @@ struct Time_description {
 
 instantiate_compare(Time_description&,Time_description::compare);
 
+
+void
+process_timing_reqs(Time_description &time_, 
+                   Rhythmic_grouping *default_grouping,
+                   Array<Timing_req*> const& timing_req_l_arr);
 #endif // Time_description_HH
 
diff --git a/lily/include/vertical-brace.hh b/lily/include/vertical-brace.hh
new file mode 100644 (file)
index 0000000..c0b368e
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+  vertical-brace.hh -- declare 
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef VERTICAL_BRACE_HH
+#define VERTICAL_BRACE_HH
+
+#include "vertical-spanner.hh"
+
+class Vertical_brace : public Vertical_spanner {
+public:
+    
+};
+
+#endif // VERTICAL_BRACE_HH
diff --git a/lily/include/vertical-spanner.hh b/lily/include/vertical-spanner.hh
new file mode 100644 (file)
index 0000000..be0aee6
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+  vertical-spanner.hh -- declare Vertical_spanner
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef VERTICAL_SPANNER_HH
+#define VERTICAL_SPANNER_HH
+
+#include "staff-elem.hh"
+
+class Vertical_spanner: virtual public Score_elem {
+public:
+    PStaff *lower_pstaff_l_;
+    PStaff *upper_pstaff_l_;
+    NAME_MEMBERS(Vertical_spanner);
+    
+    Vertical_spanner();
+    
+};
+#endif // VERTICAL_SPANNER_HH
index 818f32d71c680fbddac4fbbb528fa09e49a96022..4586f40ab2d3b5741107044dc8c07eab0884b170 100644 (file)
@@ -25,7 +25,7 @@ public:
 protected:
     virtual void pre_move_processing();
     virtual bool acceptable_request_b(Request*);
-    virtual void acknowledge_element(Staff_elem_info info);
+    virtual void acknowledge_element(Score_elem_info info);
     virtual bool try_request(Request*);
     virtual void do_print() const;
 };
index 7739ed269b01d50ba93ab664ffabfa8b7e6c5007..3326daad80dab97331fbafbc79a6982b97ede63c 100644 (file)
@@ -22,22 +22,22 @@ struct Walker_registers : Register_group_register {
     Array<Item*> prebreak_item_p_arr_;
     Array<Item*> nobreak_item_p_arr_;
     Array<Item*> postbreak_item_p_arr_;
-    Array<Staff_elem_info> announce_info_arr_;
+    Array<Score_elem_info> announce_info_arr_;
  
     Complex_walker * walk_l_;
 
     /* *************** */
   
-    void typeset_musical_item(Staff_elem * elem_p);
+    void typeset_musical_item(Score_elem * elem_p);
     Walker_registers(Complex_walker*);
     void do_announces();
    
     virtual Staff_info get_staff_info();
 
-    virtual void announce_element(Staff_elem_info);
-    virtual void acknowledge_element(Staff_elem_info);
+    virtual void announce_element(Score_elem_info);
+    virtual void acknowledge_element(Score_elem_info);
     virtual void typeset_breakable_item(Item * pre_p , Item * nobreak_p, Item * post_p);
-    virtual void typeset_element(Staff_elem*elem_p);
+    virtual void typeset_element(Score_elem*elem_p);
     virtual void pre_move_processing();
     virtual void post_move_processing();
     virtual Paper_def * paper() const;
index c1268181ae4836055b2792784c342a369b50b28f..fe2371e349af5be657bfad9267004c3ab8eb5a3e 100644 (file)
@@ -39,7 +39,7 @@ Key_register::try_request(Request * req_l)
 }
 
 void
-Key_register::acknowledge_element(Staff_elem_info info)
+Key_register::acknowledge_element(Score_elem_info info)
 {
     Command_req * r_l = info.req_l_->command() ;
     if (r_l && r_l->clefchange()) {
@@ -61,7 +61,7 @@ Key_register::process_requests()
     else 
        kit_p_ = new Key_item(c0_i);
     kit_p_->read(*this);
-    announce_element(Staff_elem_info(kit_p_, keyreq_l_));
+    announce_element(Score_elem_info(kit_p_, keyreq_l_));
 }
 
 void
index 6a658b64c27b7937c0fe76f02fd07245d1981928..f6d8b9ba7f6a8101b2aa78288c74b1a93888547f 100644 (file)
@@ -1,3 +1,11 @@
+/*
+  local-key-item.cc -- implement Local_key_item, Local_acc
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
 #include "local-key-item.hh"
 #include "molecule.hh"
 #include "scalar.hh"
@@ -26,13 +34,18 @@ Local_key_item::add(Melodic_req*m_l)
 {
     add(m_l->octave_i_, m_l->notename_i_, m_l->accidental_i_);
 }
+
 void
 Local_key_item::add (int o, int p , int a)
 {
     Local_acc l;
-    l.octave = o;
-    l.name = p;
-    l.acc = a;
+    l.octave_i_ = o;
+    l.name_i_ = p;
+    l.accidental_i_ = a;
+    for (int i=0; i< accs.size(); i++)
+       if (!Local_acc::compare(l, accs[i]))
+           return;
+    
     accs.push(l);
 }
 
@@ -50,7 +63,7 @@ Local_key_item::brew_molecule_p()const
     int lastoct = -100;
     for  (int i = 0; i <  accs.size(); i++) {
        // do one octave
-       if (accs[i].octave != lastoct) {
+       if (accs[i].octave_i_ != lastoct) {
            if (octmol){
                Real dy =lastoct*7*paper()->internote();
                octmol->translate(Offset(0, dy));
@@ -59,10 +72,10 @@ Local_key_item::brew_molecule_p()const
            }
            octmol= new Molecule;
        }
-       lastoct = accs[i].octave;
-       Symbol s =paper()->lookup_l()->accidental(accs[i].acc);   
+       lastoct = accs[i].octave_i_;
+       Symbol s =paper()->lookup_l()->accidental(accs[i].accidental_i_);   
        Atom a(s);
-       Real dy = (accs[i].name + c0_position) * paper()->internote();
+       Real dy = (accs[i].name_i_ + c0_position) * paper()->internote();
        a.translate(Offset(0,dy));
 
        octmol->add_right(a);
@@ -84,11 +97,11 @@ Local_key_item::brew_molecule_p()const
 int
 Local_acc::compare(Local_acc&a, Local_acc&b)
 {
-    if (a.octave - b.octave)
-       return a.octave - b.octave;
-    if (a.name - b.name)
-       return a.name - b.name;
+    if (a.octave_i_ - b.octave_i_)
+       return a.octave_i_ - b.octave_i_;
+    if (a.name_i_ - b.name_i_)
+       return a.name_i_ - b.name_i_;
     
-    assert(false);
+    return a.accidental_i_ - b.accidental_i_;
 };
 IMPLEMENT_STATIC_NAME(Local_key_item);
index 2fac0d573d21c3ac2ca8a909adbea239c03868e0..9e014e7c7501d24e3411b024a60c1789791f33af 100644 (file)
@@ -29,7 +29,8 @@ Local_key_register::pre_move_processing()
            Item * support_l = support_l_arr_[i];
 
            Note_req * note_l = mel_l_arr_[i];
-           if (tied_l_arr_.find_l(support_l) && !forced_l_arr_.find_l(support_l))
+           if (tied_l_arr_.find_l(support_l) && 
+               !forced_l_arr_.find_l(support_l))
                continue;
            
            if (!key_item_p)
@@ -49,9 +50,9 @@ Local_key_register::pre_move_processing()
 }
 
 void
-Local_key_register::acknowledge_element(Staff_elem_info info)
+Local_key_register::acknowledge_element(Score_elem_info info)
 {    
-    Staff_elem * elem_l = info.elem_l_;
+    Score_elem * elem_l = info.elem_l_;
     if (info.req_l_->note()) {
        Note_req * note_l = info.req_l_->note();
        Item * item_l = info.elem_l_->item();
@@ -75,7 +76,7 @@ Local_key_register::acknowledge_element(Staff_elem_info info)
            (Key_register*)info.origin_reg_l_arr_[0];
        key_C_ = &key_reg_l->key_;
     } else if (elem_l->name() == Tie::static_name()) {
-       Tie * tie_l = (Tie*)elem_l;
+       Tie * tie_l = (Tie*)elem_l->spanner();
        if (tie_l->same_pitch_b_)
            tied_l_arr_.push(tie_l-> right_head_l_ );
     }
index 08591cfe7cd61c811ef0327944029e18eca14f2b..12684d539d037dc8af5d518b65894d44303ef551 100644 (file)
@@ -232,3 +232,26 @@ Lookup::stem(Real y1,Real y2) const
     s.tex = substitute_args(src,a);
     return s;
 }
+
+Symbol
+Lookup::vbrace(Real &y) const
+{
+    if (y < 2* 20 PT) {
+       warning ( "piano brace too small (" + print_dimen(y)+ ")");
+       y = 2*20 PT;
+    }
+    if (y > 67 * 2 PT) {
+       warning ( "piano brace too big (" + print_dimen(y)+ ")");       
+       y = 67 *2 PT;
+    }
+    
+    int idx = (y/2.0 - 20 ) + 148;
+    
+    Symbol s = (*symtables_)("param")->lookup("brace");
+    
+    Array<String> a;
+    a.push(idx);
+    s.tex = substitute_args(s.tex,a);
+    s.dim.y = Interval(0,y);
+    return s;
+}
index c4ef7b9bb17fe2321742ffe00e97b3159e463703..338ea7e10f471a6dfeb0ee447f20c7309ab74bde 100644 (file)
@@ -41,7 +41,7 @@ Meter_register::process_requests()
     }
 
     if (meter_p_)
-       announce_element(Staff_elem_info(meter_p_, meter_req_l_) );
+       announce_element(Score_elem_info(meter_p_, meter_req_l_) );
 }
 
 void
index cb8129d5bc14d8325290964be93b75e0a0f207aa..feee0c66b50b1291275920b054d780991955815d 100644 (file)
@@ -14,7 +14,7 @@
 #include "rest-column.hh"
 
 bool
-Note_column_register::acceptable_elem_b(Staff_elem const*elem_C)const
+Note_column_register::acceptable_elem_b(Score_elem const*elem_C)const
 {
     char const*nC = elem_C->name();
     return (nC == Script::static_name() || nC == Notehead::static_name() 
@@ -25,7 +25,7 @@ Note_column_register::note_col_l()
 {
     if (!ncol_p_){
        ncol_p_ = new Note_column;
-       announce_element(Staff_elem_info(ncol_p_, 0));
+       announce_element(Score_elem_info(ncol_p_, 0));
     }
     return ncol_p_;
 }
@@ -35,13 +35,13 @@ Note_column_register::rest_col_l()
 {
     if (!restcol_p_) {
        restcol_p_  = new Rest_column;
-       announce_element(Staff_elem_info(restcol_p_,0));
+       announce_element(Score_elem_info(restcol_p_,0));
     }
     return restcol_p_;
 }
 
 void
-Note_column_register::acknowledge_element(Staff_elem_info i)
+Note_column_register::acknowledge_element(Score_elem_info i)
 {
     if (!acceptable_elem_b(i.elem_l_))
        return;
@@ -50,16 +50,16 @@ Note_column_register::acknowledge_element(Staff_elem_info i)
     char const*nC = i.elem_l_->name();
 
     if (nC == Script::static_name()) {
-       script_l_arr_.push((Script*)i.elem_l_);
+       script_l_arr_.push((Script*)i.elem_l_->item());
     } else if (nC == Notehead::static_name()) {
-       Notehead * h_l = (Notehead*)i.elem_l_;
+       Notehead * h_l = (Notehead*)i.elem_l_->item();
        if (h_l->rest_b_)
            rest_col_l()->add(h_l);
        else
            note_col_l()->add(h_l);
     }
     else if (nC == Stem::static_name()){ 
-       stem_l_ = (Stem*)i.elem_l_;
+       stem_l_ = (Stem*)i.elem_l_->item();
     }
 }
 
index f2c26cbe2522869372ea49289f25fe2dec2323d5..b4127af90cbb3001d9160e683a709af35a891d46 100644 (file)
@@ -31,10 +31,11 @@ Pulk_voices::Pulk_voices(Link_list<Staff*> const& l)
        last_ = last_ >? staff_last;
     }
     next_mom_ = voice_pq_.front().l_->start_;
-
+    time_arr_.set_size(staff_i);
 
     if (last_ != min_staff_last_mom)
        warning("Not all staffs end simultaneously");
+
 }
 
 void
@@ -46,7 +47,11 @@ Pulk_voices::get_aligned_request(Request_column* col_l)
     }
 
     /* hairy. #i# is a cursor which points to Pulk_voice (which a
-       cursor, essentially) */
+       cursor, essentially) 
+       
+       
+       At the same time bookkeeping of measures is done.
+       */
     
     Moment new_next_mom = last_;
     iter(pulk_p_list_.top() , i);
@@ -55,18 +60,35 @@ Pulk_voices::get_aligned_request(Request_column* col_l)
        assert (i->when() >= next_mom_);
        if (i->when() == next_mom_) {
            col_l->add_reqs(i->staff_idx_, i->get_req_l_arr() );
+           Time_description &t_r  = time_arr_[i->staff_idx_]; 
+           col_l->update_time(i->staff_idx_, t_r);
+           
+           if (! t_r.cadenza_b_ && t_r.next_bar_moment() > next_mom_) {
+               mtor << "next bar at: " << t_r.next_bar_moment();
+               new_next_mom = new_next_mom <? t_r.next_bar_moment();
+           }
 
            if (!i->ok()) {
                i.del();
                continue;
            }
        }
+       assert( i->when()  > next_mom_);
+       /* no need to call i->next(), since this is done automatically */
        new_next_mom = new_next_mom <? i->when();
-       i++; 
+
+       i++;
+
     }
     
     if (voice_pq_.size() )
        new_next_mom = new_next_mom <? voice_pq_.front().l_->start_;
+
+    for (int j=0; j < time_arr_.size(); j++)
+       time_arr_[j].add( new_next_mom - next_mom_  );
+
+    if (pulk_p_list_.size())
+       assert( new_next_mom > next_mom_);
     next_mom_ = new_next_mom;
 }
 
@@ -77,8 +99,23 @@ Pulk_voices::ok() const
     return pulk_p_list_.size() || voice_pq_.size();
 }
 
-int compare(Voice_l const& v1, Voice_l const& v2)
+int
+compare(Voice_l const& v1, Voice_l const& v2)
 {
     return sign(v1.l_->start_ - v2.l_->start_);
 }
            
+Moment
+Pulk_voices::next_mom()const
+{
+    return next_mom_;
+}
+
+bool
+Pulk_voices::time_checks_failed_b()const
+{
+    bool b = false;
+    for (int i=0; !b && i < time_arr_.size(); i++)
+       b|=time_arr_[i].error_b_;
+    return b;
+}
index 6e516df21b3afc5d1642db0d1edfe5202cf5e7ce..e80afd48e11d155a9fe9365fb96d83436b5ffa1f 100644 (file)
@@ -77,7 +77,7 @@ Register_group_register::post_move_processing()
 }
 
 void
-Register_group_register::acknowledge_element(Staff_elem_info info)
+Register_group_register::acknowledge_element(Score_elem_info info)
 {
     Request_register* origin = info.origin_reg_l_arr_[0];
     if (!contains_b(origin) && !origin->contains_b(this)) // am i sure?
index 08c3feaa00ec4ca85e05d185fb585ffec114da71..7710ddf87d7da2a21aa3d10b05dbc5fc4ae33f5c 100644 (file)
@@ -34,14 +34,14 @@ Request_register::Request_register()
 }
 
 void
-Request_register::announce_element(Staff_elem_info i)
+Request_register::announce_element(Score_elem_info i)
 {
     i.origin_reg_l_arr_.push(this);
     daddy_reg_l_->announce_element(i);
 }
 
 void
-Request_register::typeset_element(Staff_elem*p)
+Request_register::typeset_element(Score_elem*p)
 {
     daddy_reg_l_->typeset_element(p);
 }
index 9b896cf8f3f0e74bc72916a753815fe2a0875412..2913dae13b8166cbde2f2c9f7f87fb32053d2625 100644 (file)
@@ -56,3 +56,8 @@ Request_column::used_b() const
        b |= command_column_l_->used_b();
     return b;
 }
+void
+Request_column::update_time(int idx, Time_description&t)
+{
+    staff_col_l_arr_[idx]->update_time(t, 0);
+}
index b5a286f284d3855edce1b3c679acf7a29c5ef6eb..a9ca851cd44cfc3ec77a9f0730e778b3313bc549 100644 (file)
 #include "note-column.hh"
 
 void
-Rest_collision_register::acknowledge_element(Staff_elem_info i)
+Rest_collision_register::acknowledge_element(Score_elem_info i)
 {
     char const * nC = i.elem_l_->name();
     if (nC == Collision::static_name()) {
-       collision_l_arr_.push((Collision*)i.elem_l_);
+       collision_l_arr_.push((Collision*)i.elem_l_->item());
     } 
     else if (nC == Rest_column ::static_name()) {
        if (!rest_collision_p_)
            rest_collision_p_ = new Rest_collision;
-       rest_collision_p_->add((Rest_column*)i.elem_l_);
+       rest_collision_p_->add((Rest_column*)i.elem_l_->item());
     }
 }
 
index 8ec3049f487d661ed99b00f36aa6e3c229a7e453..e04f20468cedfd84af6d2bfee72cfbd6a9ccc847 100644 (file)
@@ -36,8 +36,11 @@ Score::setup_music()
        input_.error("Need to have music in a score.");
     }
     
+    Moment previous_mom = -1;
     while (pulk.ok()) {
+
        Moment w= pulk.next_mom();
+       assert(w > previous_mom);
        Request_column* rcol_p = new Request_column( staffs_ );
 
        Score_column* c1 = new Score_column(w);
@@ -54,7 +57,10 @@ Score::setup_music()
        rcol_p->set_score_cols(c1, c2);
        rcols_.bottom().add(rcol_p);
        pulk.get_aligned_request( rcol_p );
+       previous_mom =w;
     }
+
+    errorlevel_i_ |= pulk.time_checks_failed_b(); 
 }
 
 void
@@ -80,7 +86,11 @@ Score::paper()
 {
     if (!paper_p_)
        return;
-    
+    if( errorlevel_i_){
+       // should we? hampers debugging. 
+       warning("Errors found, /*not processing score*/");
+//     return;
+    }
     pscore_p_ = new PScore(paper_p_);
     do_cols();
     
index b68298d5dead3d3274f22aa155c96daaf3fd522f..be12028c178d038a54c09b620fb29963e141ecd6 100644 (file)
@@ -38,28 +38,28 @@ Script_register::process_requests()
        Script_req* l=script_req_l_arr_[i];
        Script *p =new Script( l);
        script_p_arr_.push(p);
-       announce_element(Staff_elem_info(p, l));
+       announce_element(Score_elem_info(p, l));
     }
 }
 
 bool
-Script_register::acceptable_elem_b(Staff_elem*s_l)
+Script_register::acceptable_elem_b(Score_elem*s_l)
 {
     char const *nC = s_l->name();
     return (nC == Stem::static_name());
 }
 
 void
-Script_register::acknowledge_element(Staff_elem_info info)
+Script_register::acknowledge_element(Score_elem_info info)
 {
-    Staff_elem *elem_l = info.elem_l_;
+    Score_elem *elem_l = info.elem_l_;
     if (!acceptable_elem_b(elem_l))
        return;
     
     for (int i=0; i < script_p_arr_.size(); i++) {
        Script*script_l = script_p_arr_[i];
        if (elem_l->name() == Stem::static_name())
-           script_l->set_stem((Stem*)elem_l);
+           script_l->set_stem((Stem*)elem_l->item());
     }
 }
 
index 20a3c5415e6a32b7b0f67f047c575cf10d6eb14b..d08488e371b00bacadef5e4f566d140d6fe371e1 100644 (file)
@@ -30,10 +30,10 @@ Slur_register::try_request(Request *req_l)
 }
 
 void
-Slur_register::acknowledge_element(Staff_elem_info info)
+Slur_register::acknowledge_element(Score_elem_info info)
 {
     if (info.elem_l_->name() == Note_column::static_name()) { 
-       Note_column *col_l =(Note_column*) info.elem_l_ ;// ugh
+       Note_column *col_l =(Note_column*) info.elem_l_->item() ;// ugh
        for (int i = 0; i < slur_l_stack_.size(); i++)
            slur_l_stack_[i]->add(col_l );
        for (int i = 0; i < end_slur_l_arr_.size(); i++)
@@ -76,7 +76,7 @@ Slur_register::process_requests()
            Slur * s_p =new Slur;
            requests_arr_.push(slur_req_l);
            start_slur_l_arr_.push(s_p);
-           announce_element(Staff_elem_info(s_p, slur_req_l));
+           announce_element(Score_elem_info(s_p, slur_req_l));
        }
     }
     for (int i=0; i < start_slur_l_arr_.size(); i++)
index 1b7bb0f76a028a13d27da1cb8fbeebd4d8947802..1fa1ad288531e0ac6f9f703910428a5d9d2780ea 100644 (file)
@@ -75,11 +75,11 @@ Slur::do_post_processing()
        set_default_dir();
     Real inter_f = paper()->internote();
     if (encompass_arr_[0]->stem_l_)
-        left_pos_i_ = encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f;
+        left_pos_i_ = rint(encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f);
     else
         left_pos_i_ = 0;
     if (encompass_arr_.top()->stem_l_)
-        right_pos_i_ = encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f;
+        right_pos_i_ = rint(encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f);
     else
         right_pos_i_ = 0;
 
index 2df030dd5b03b6de88435fae3f96d6d1f8eb6f64..53d7bca6b10290baf00f4ece3748de8f961ffd4d 100644 (file)
@@ -19,7 +19,7 @@ Spanner::broken_at(PCol*c1, PCol *c2)const
 
     for (int i=0; i < dependant_l_arr_.size(); i++) {
        dependant_l_arr_[i]->
-           substitute_dependency((Staff_elem*)this, span_p); 
+           substitute_dependency((Score_elem*)this, span_p); 
     }
     
     span_p->left_col_l_ = c1;
index 31454230ce67a99510e18daaf6c03e09ca1e472a..bfff878ea8d512d0c9336a3448b0e4c5ddc0cfa7 100644 (file)
@@ -19,6 +19,7 @@
 #include "item.hh"
 #include "p-col.hh"
 #include "request-column.hh"
+#include "grouping.hh"
 
 void
 Staff_column::OK() const
@@ -182,3 +183,52 @@ Staff_column::musical_column_l()
 {
     return req_col_l_->musical_column_l_;
 }
+
+void
+Staff_column::update_time(Time_description &time_, 
+                   Rhythmic_grouping *default_grouping)
+{
+    // first all meter changes
+    for (int i=0; i < timing_req_l_arr_.size(); i++) {
+       Timing_req * tr_l = timing_req_l_arr_[i];
+       if (tr_l->meterchange()) {
+           int b_i=tr_l->meterchange()->beats_i_;
+           int o_i = tr_l->meterchange()->one_beat_i_;
+           if (! time_.allow_meter_change_b() )
+               tr_l->warning("Meter change not allowed here");
+           else{
+               time_.set_meter(b_i, o_i);
+               if (default_grouping)
+                   *default_grouping = 
+                   Rhythmic_grouping(MInterval(0,Moment(b_i, o_i)), b_i);
+           }
+       }
+    }
+    
+    // then do the rest
+    for (int i=0; i < timing_req_l_arr_.size(); i++) {
+       Timing_req * tr_l = timing_req_l_arr_[i];
+       if (tr_l->partial()) {
+           Moment m = tr_l->partial()->duration_;
+           String error = time_.try_set_partial_str(m);
+           if (error != "") {
+               tr_l->warning(error);
+           } else 
+               time_.setpartial(m);
+       } else if (tr_l->barcheck() && time_.whole_in_measure_) {
+           tr_l ->warning( "Barcheck failed");
+
+           time_.whole_in_measure_ = 0; // resync
+           time_.error_b_ = true;
+       } else if (tr_l->cadenza()) {
+           time_.set_cadenza(tr_l->cadenza()->on_b_);
+       } else if (tr_l->measuregrouping()) {
+           if (default_grouping)
+               *default_grouping = parse_grouping(
+                   tr_l->measuregrouping()->beat_i_arr_,
+                   tr_l->measuregrouping()->elt_length_arr_);
+       }
+    }
+    time_.OK();
+}   
+
index 0bef384db6eb0cf2c45aab4d64eb6eb1e54ec469..669c0244ce445adbb03e78f54e3095e3cae87374 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  staff-elem-info.cc -- implement Staff_elem_info
+  staff-elem-info.cc -- implement Score_elem_info
 
   source file of the LilyPond music typesetter
 
@@ -9,14 +9,14 @@
 #include "staff-elem-info.hh"
 #include "request.hh"
 
-Staff_elem_info::Staff_elem_info(Staff_elem*s_l, Request*r_l)
+Score_elem_info::Score_elem_info(Score_elem*s_l, Request*r_l)
 {
     elem_l_ = s_l;
     voice_l_ =  (r_l)?r_l->voice_l():0;
     req_l_ = r_l;
 }
 
-Staff_elem_info::Staff_elem_info()
+Score_elem_info::Score_elem_info()
 {
     elem_l_ = 0;
     voice_l_ = 0;
index 331ffbe92fddffe064bfc54a65111c8ff13b4850..ec4f851922a3fe1e1c4401cf93d315ed15bc061d 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  staff-elem.cc -- implement Staff_elem
+  staff-elem.cc -- implement Score_elem
 
   source file of the LilyPond music typesetter
 
 #include "debug.hh"
 
 String
-Staff_elem::TeXstring() const
+Score_elem::TeXstring() const
 {
     Molecule m(*output);
     m.translate(offset_);      // ugh?
     return m.TeXstring();
 }
 
-Staff_elem::Staff_elem(Staff_elem const&s)
+Score_elem::Score_elem(Score_elem const&s)
       :dependancy_l_arr_(s.dependancy_l_arr_),
         dependant_l_arr_(s.dependant_l_arr_)
 {
@@ -38,7 +38,7 @@ Staff_elem::Staff_elem(Staff_elem const&s)
   TODO:
   If deleted, then remove dependant_l_arr_ depency!
   */
-Staff_elem::~Staff_elem()
+Score_elem::~Score_elem()
 {
     assert(status < DELETED);
     delete output;
@@ -47,13 +47,13 @@ Staff_elem::~Staff_elem()
 }
 
 void
-Staff_elem::translate(Offset O)
+Score_elem::translate(Offset O)
 {
     offset_ += O;
 }
 
 Interval
-Staff_elem::do_width() const 
+Score_elem::do_width() const 
 {
     Interval r;
     
@@ -67,7 +67,7 @@ Staff_elem::do_width() const
 }
 
 Interval
-Staff_elem::width() const
+Score_elem::width() const
 {
     Interval r=do_width();
 
@@ -77,7 +77,7 @@ Staff_elem::width() const
     return r;
 }
 Interval
-Staff_elem::do_height() const 
+Score_elem::do_height() const 
 {
     Interval r;
     if (!output){
@@ -90,7 +90,7 @@ Staff_elem::do_height() const
 }
 
 Interval
-Staff_elem::height() const
+Score_elem::height() const
 {
     Interval r=do_height();
 
@@ -102,7 +102,7 @@ Staff_elem::height() const
 }
 
 void
-Staff_elem::print()const
+Score_elem::print()const
 {
 #ifndef NPRINT
     mtor << name() << "{\n";
@@ -116,7 +116,7 @@ Staff_elem::print()const
 
 
 
-Staff_elem::Staff_elem()
+Score_elem::Score_elem()
 {
     pstaff_l_=0;
     offset_ = Offset(0,0);
@@ -126,14 +126,14 @@ Staff_elem::Staff_elem()
 
 
 Paper_def*
-Staff_elem::paper()  const
+Score_elem::paper()  const
 {
     assert(pstaff_l_);
     return pstaff_l_->pscore_l_->paper_l_;
 }
 
 void
-Staff_elem::add_processing()
+Score_elem::add_processing()
 {
     if (status >= VIRGIN)
        return;
@@ -142,7 +142,7 @@ Staff_elem::add_processing()
 }
 
 void
-Staff_elem::pre_processing()
+Score_elem::pre_processing()
 {
     if (status >= PRECALCED )
        return;
@@ -158,7 +158,7 @@ Staff_elem::pre_processing()
     status = PRECALCED;
 }
 void
-Staff_elem::post_processing()
+Score_elem::post_processing()
 {
     if (status >= POSTCALCED)
        return;
@@ -173,7 +173,7 @@ Staff_elem::post_processing()
 }
 
 void 
-Staff_elem::molecule_processing()
+Score_elem::molecule_processing()
 {
     if (status >= OUTPUT)
        return;
@@ -186,22 +186,26 @@ Staff_elem::molecule_processing()
 }
 
 void
-Staff_elem::do_post_processing()
+Score_elem::do_post_processing()
 {
 }
 
 void
-Staff_elem::do_pre_processing()
+Score_elem::do_pre_processing()
+{
+}
+void
+Score_elem::do_verticalcing()
 {
 }
 
 void
-Staff_elem::do_add_processing()
+Score_elem::do_add_processing()
 {
 }
 
 void
-Staff_elem::substitute_dependency(Staff_elem * old, Staff_elem * newdep)
+Score_elem::substitute_dependency(Score_elem * old, Score_elem * newdep)
 {
     bool hebbes_b=false;
     for (int i=0; i < dependancy_l_arr_.size(); i++) {
@@ -217,7 +221,7 @@ Staff_elem::substitute_dependency(Staff_elem * old, Staff_elem * newdep)
 }
 
 void
-Staff_elem::add_dependency(Staff_elem * p)
+Score_elem::add_dependency(Score_elem * p)
 {
     for (int i=0; i < dependancy_l_arr_.size(); i ++)
        if (dependancy_l_arr_[i] == p)
@@ -226,16 +230,16 @@ Staff_elem::add_dependency(Staff_elem * p)
     dependancy_l_arr_.push(p);
     p->dependant_l_arr_.push(p);
 }
-IMPLEMENT_STATIC_NAME(Staff_elem);
+IMPLEMENT_STATIC_NAME(Score_elem);
 
 Molecule*
-Staff_elem::brew_molecule_p()const
+Score_elem::brew_molecule_p()const
 {
     Atom a(paper()->lookup_l()->fill(Box(Interval(0,0), Interval(0,0))));
     return new Molecule (a);
 }
 Offset
-Staff_elem::offset() const
+Score_elem::offset() const
 {
     return offset_; 
 }
index b6dc1165b7e7bbd970bcdfe775669b5efff32831..7a0abadd9622061b3bda04d532febb162ebd1e85 100644 (file)
@@ -121,9 +121,9 @@ Staff_registers::acceptable_request_b(Request*r)const
 }
 
 void
-Staff_registers::acknowledge_element(Staff_elem_info i)
+Staff_registers::acknowledge_element(Score_elem_info i)
 {
     Register_group_register::acknowledge_element(i);
     if ( i.elem_l_->name() == Staff_symbol::static_name())
-       staff_sym_l_ = (Staff_symbol*)i.elem_l_;
+       staff_sym_l_ = (Staff_symbol*)i.elem_l_->item();
 }
index 29c584822f1b6079aef7697bd855cb1661bf1010..1435f5daa99e9d1fd7892fbe04c6db57eddf3ba1 100644 (file)
@@ -17,7 +17,7 @@ Staff_side::set_staffsym(Staff_symbol* s_l)
     staff_sym_l_ = s_l;
 }
 
-Staff_side::Staff_side(Staff_elem * elem_l)
+Staff_side::Staff_side(Score_elem * elem_l)
 {
     inter_f_ = 2 PT;
     staff_size_i_ = 0;
@@ -51,7 +51,7 @@ Staff_side::support_height() const
 }
 
 void
-Staff_side::add_support(Staff_elem*i)
+Staff_side::add_support(Score_elem*i)
 {
     support_l_arr_.push(i);
     elem_l_->add_dependency(i);
index 60be9b081415ac17636638c8061b411337122d94..e8863369acf351934c68b8a381e29365d74bc45d 100644 (file)
@@ -35,7 +35,7 @@ Staff_sym_register::post_move_processing()
 void
 Staff_sym_register::process_requests()
 {
-    announce_element(Staff_elem_info(span_p_, 0));
+    announce_element(Score_elem_info(span_p_, 0));
 }
 
 void
index 97080b894904835d67e6826b4676ddd1c1b062d2..ca6cbf500f03d03805849707e1d31905fcfc967e 100644 (file)
@@ -48,48 +48,10 @@ Staff_walker::when() const
     return ptr()->when();
 }
 
-
 void
 Staff_walker::process_timing_reqs()
 {
-    // first all meter changes
-    for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) {
-       Timing_req * tr_l = ptr()->timing_req_l_arr_[i];
-       if (tr_l->meterchange()) {
-           int b_i=tr_l->meterchange()->beats_i_;
-           int o_i = tr_l->meterchange()->one_beat_i_;
-           if (! time_.allow_meter_change_b() )
-               
-                       tr_l->warning("Meterchange should be at start of measure");
-           else
-               time_.set_meter(b_i, o_i);
-                       
-           *default_grouping = Rhythmic_grouping(
-               MInterval(0,Moment(b_i, o_i)), b_i);
-       } 
-    }
-    
-    // then do the rest
-    for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) {
-       Timing_req * tr_l = ptr()->timing_req_l_arr_[i];
-       if (tr_l->partial()) {
-           Moment m = tr_l->partial()->duration_;
-           String error = time_.try_set_partial_str(m);
-           if (error != "") {
-               tr_l->warning(error);
-           } else 
-               time_.setpartial(m);
-       } else if (tr_l->barcheck() && time_.whole_in_measure_) {
-           tr_l ->warning( "Barcheck failed");
-       } else if (tr_l->cadenza()) {
-           time_.set_cadenza(tr_l->cadenza()->on_b_);
-       } else if (tr_l->measuregrouping()) {
-           *default_grouping = parse_grouping(
-               tr_l->measuregrouping()->beat_i_arr_,
-               tr_l->measuregrouping()->elt_length_arr_);
-       }
-    }
-    time_.OK();
+    ptr()->update_time(time_, default_grouping);
 }
 
 void
index 95f8979803354f6189207bcc414074f3e4e490c1..63040205007bfe3ce3cae94da855a9f49dafe77d 100644 (file)
@@ -97,19 +97,19 @@ Stem_beam_register::process_requests()
            stem_p_->print_flag_b_ = true;
        }
        
-       announce_element(Staff_elem_info(stem_p_, stem_req_l_));
+       announce_element(Score_elem_info(stem_p_, stem_req_l_));
     }
 }
 
 void
-Stem_beam_register::acknowledge_element(Staff_elem_info info)
+Stem_beam_register::acknowledge_element(Score_elem_info info)
 {
     if (!stem_p_)
        return;
 
     if (info.elem_l_->name() == Notehead::static_name() &&
        stem_req_l_->duration() == info.req_l_->rhythmic()->duration()){
-       Notehead * n_l= (Notehead*)info.elem_l_;
+       Notehead * n_l= (Notehead*)info.elem_l_->item();
        stem_p_->add(n_l);
     }
 }
index 7fb36e3005988369f805fbf195f274ea41f1917b..7c57aa80e676fda64572c1ca0812c036fac0e4ae 100644 (file)
@@ -203,7 +203,7 @@ Stem::brew_molecule_p()const
 {
     Molecule *out =0;
     if ( invisible_b() )
-       return Staff_elem::brew_molecule_p();
+       return Score_elem::brew_molecule_p();
     
     Real bot  = stem_bottom_f_;
     Real top = stem_top_f_;
index 23c68dd011caaaf3fe1cb6a3466c815c4f475630..0e1b7258b9bb73fc40c6fc97161f775541e4b71a 100644 (file)
@@ -7,6 +7,7 @@
 #include "spanner.hh"
 #include "scoreline.hh" 
 #include "staffline.hh"
+#include "vertical-spanner.hh"
 
 #include "pcursor.tcc"
 #include "plist.tcc"
@@ -19,6 +20,7 @@ IPLC_instantiate(Line_of_score);
 IPLC_instantiate(Line_of_staff);
 IPLC_instantiate(Item);
 IPLC_instantiate(Spanner);
+IPLC_instantiate(Vertical_spanner);
 IPLC_instantiate(PStaff);
 IPLC_instantiate(Idealspacing);
 IPLC_instantiate(PCol);
index a3231cec410027c2d4cd370b8e1e4fa3aca8b212..afbf035d22da7f5b57b874a1e4f7c4129b10c248 100644 (file)
@@ -29,7 +29,7 @@ Text_register::try_request(Request*req_l)
     return true;
 }
 void
-Text_register::acknowledge_element(Staff_elem_info i)
+Text_register::acknowledge_element(Score_elem_info i)
 {
     if (text_p_ && i.elem_l_->name() == Note_column::static_name()) {
        text_p_->add_support(i.elem_l_);
@@ -40,7 +40,7 @@ Text_register::process_requests()
 {
     if (text_req_l_) {
        text_p_ = new Text_item(text_req_l_->tdef_p_, text_req_l_->dir_i_); // ugh
-       announce_element(Staff_elem_info(text_p_, text_req_l_));
+       announce_element(Score_elem_info(text_p_, text_req_l_));
     }
 }
 void
index c1c5b0bc837d452f455cebce480bebea5b2d09e7..3d75818870bfc4f5ab8ed16d1609963302312ccd 100644 (file)
@@ -71,19 +71,19 @@ Tie_register::process_requests()
 }
 
 void
-Tie_register::acknowledge_element(Staff_elem_info i)
+Tie_register::acknowledge_element(Score_elem_info i)
 {
     if (i.elem_l_->name() == Notehead::static_name()) {
        if (tie_p_) {
-           tie_p_->set_head(-1, (Notehead*)i.elem_l_);
+           tie_p_->set_head(-1, (Notehead*)i.elem_l_->item());
            melodic_req_l_ = i.req_l_->musical()->melodic();
        }
 
        if (end_tie_p_) {
-           end_tie_p_->set_head(1, (Notehead*)i.elem_l_);
+           end_tie_p_->set_head(1, (Notehead*)i.elem_l_->item());
            if (!Melodic_req::compare ( *end_melodic_req_l_, *melodic_req_l_))
                end_tie_p_->same_pitch_b_ = true;
-           announce_element(Staff_elem_info(end_tie_p_,end_req_l_));
+           announce_element(Score_elem_info(end_tie_p_,end_req_l_));
        }
     }
 }
index e6945ba482b2942b97b420e82c951d6faa56b917..c56a0375d06fcf17ad202aac530f27bd4fe2406a 100644 (file)
@@ -55,6 +55,7 @@ Time_description::set_cadenza(bool b)
 
 Time_description::Time_description()
 {
+    error_b_ =  false;
     whole_per_measure_ = 1;
     whole_in_measure_ =0;
     one_beat_ = Moment(1,4);
@@ -112,7 +113,7 @@ Time_description::setpartial(Moment p)
 }
 
 Moment
-Time_description::barleft()
+Time_description::barleft()const
 {
     assert(!cadenza_b_);
     return whole_per_measure_-whole_in_measure_;
@@ -132,3 +133,10 @@ Time_description::compare(Time_description const &t1,  Time_description const&t2
 
     return i;
 }
+
+Moment
+Time_description::next_bar_moment() const
+{
+    return when_ + barleft();
+}
+
diff --git a/lily/vertical-brace.cc b/lily/vertical-brace.cc
new file mode 100644 (file)
index 0000000..0bd59e7
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+  vertical-brace.cc -- implement 
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "vertical-brace.hh"
diff --git a/lily/vertical-spanner.cc b/lily/vertical-spanner.cc
new file mode 100644 (file)
index 0000000..bea6834
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+  vertical-spanner.cc -- implement Vertical_spanner
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "vertical-spanner.hh"
+
+Vertical_spanner::Vertical_spanner()
+{
+    upper_pstaff_l_ = lower_pstaff_l_ = 0;
+}
+
+IMPLEMENT_STATIC_NAME(Vertical_spanner);
+    
index 7545442c6e15431c67d1c007729c96f1bd50a757..77fd724552f491807755ba6da44941c995be24f2 100644 (file)
@@ -25,7 +25,7 @@ Voice_registers::Voice_registers(Voice *v_p, Input_register const*ireg_C)
 }
 
 void
-Voice_registers::acknowledge_element(Staff_elem_info i)
+Voice_registers::acknowledge_element(Score_elem_info i)
 {
     if (i.voice_l_ != voice_l_)
        return;
index da852c79ac685223075a4b9b8f10ad7330e8913a..404500dceecc039bf6fca8a6039b891d05553ec7 100644 (file)
@@ -28,7 +28,7 @@ Walker_registers::Walker_registers(Complex_walker *w)
 }
 
 void
-Walker_registers::announce_element(Staff_elem_info info)
+Walker_registers::announce_element(Score_elem_info info)
 {
     if (info.elem_l_->name() == Bar::static_name()) {
        walk_l_->allow_break();
@@ -37,7 +37,7 @@ Walker_registers::announce_element(Staff_elem_info info)
 }
 
 void
-Walker_registers::acknowledge_element(Staff_elem_info )
+Walker_registers::acknowledge_element(Score_elem_info )
 {
     assert(false);
 }
@@ -47,7 +47,7 @@ Walker_registers::do_announces()
 {
     Request dummy_req;
     for (int i = 0; i < announce_info_arr_.size(); i++){
-       Staff_elem_info info = announce_info_arr_[i];
+       Score_elem_info info = announce_info_arr_[i];
        mtor << "Announcing " << info.elem_l_->name()<<"\n";
 
        if (!info.req_l_)
@@ -58,13 +58,13 @@ Walker_registers::do_announces()
 }
 
 void
-Walker_registers::typeset_element(Staff_elem *elem_p)
+Walker_registers::typeset_element(Score_elem *elem_p)
 {
     typeset_musical_item(elem_p);
 }
 
 void
-Walker_registers::typeset_musical_item(Staff_elem * elem_p)
+Walker_registers::typeset_musical_item(Score_elem * elem_p)
 {
     walk_l_->typeset_element(elem_p);
 }
index 52f0f96e6a5e93c8c17949be68335b435c53be75..0a5a87b61300f7dc8984f64844501a6740879da9 100644 (file)
@@ -29,7 +29,7 @@ include ./$(depth)/make/out/Site.make
 
 # dependency list of executable:
 #
-EXECUTABLE = $(lily_bindir)/$(NAME)
+
 $(EXECUTABLE): $(build) $(OFILES)
        $(MAKE) $(MODULE_LIBDEPS) 
        $(INCREASE_BUILD)
@@ -64,14 +64,19 @@ $(SHAREDLIBRARY):  $(build) $(OFILES) $(MODULE_LIBDEPS)
 lib: $(LIBRARY)
 #
 TOCLEAN= $(allobs) $(alldeps)
+
+# be careful about deletion.
 clean: localclean
+       rm -f core 
+ifdef EXECUTABLE
+       rm -f $(EXECUTABLE)
+endif
 ifdef allobs
        rm -f $(allobs)
 endif
 ifdef alldeps
        rm -f $(alldeps)
 endif
-       rm -f core
 ifdef SUBDIRS
        set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i clean; done
 endif
@@ -222,3 +227,9 @@ rpm:
        rpm -ba $(makeout)/lilypond.spec
 #
 
+installexe:
+       $(INSTALL) -d $(bindir)
+       $(INSTALL) -m 755 $(EXECUTABLES) $(bindir)
+
+uninstallexe:
+       for a in $(EXECUTABLES); do rm -f $(bindir)/`basename $a`; done
index 346b2898ced55356299ece8958c2a92da4dd2ee0..b4949cdb0f41a00429ec666992f5595b259656fa 100644 (file)
@@ -1,13 +1,5 @@
 # -*-Makefile-*-
 ########################################################
-#
-# WARNING!WARNING!WARNING!WARNING!WARNING!WARNING!
-#      
-#      DO NOT EDIT!    
-#
-#
-# @configure_input@
-########################################################
 # project  LilyPond -- the musical typesetter
 # title           top level makefile for LilyPond  
 # file    Makefile 
@@ -67,12 +59,11 @@ localdistclean:
 
 
 localclean:
-       rm -f $(allexe) core config.cache config.log config.status 
+       rm -f core config.cache config.log config.status 
        rm -f $(outdir)/*.{class,html,gif}
 
-localinstall: all
-       $(INSTALL) -d $(bindir)
-       $(INSTALL) -m 755 $(allexe) $(bindir)
+Makefile: make/Toplevel.make.in
+       echo '# WARNING WARNING WARNING WARNING' > $@
+       echo '# do not edit! this is generated from make/Toplevel.make.in' >> $@
+       cat $< >> $@
 
-localuninstall:
-       for i in $(allexe); do rm -f $(bindir)/`basename $$i`; done
index 4cc56e118bd815cef6be4a6fc9a51d756ce57941..9ddf1d56916c1641c381a58ffd0657de9092256b 100644 (file)
@@ -95,7 +95,6 @@ DUMMYDEPS=\
 #
 ERROR_LOG = 2> /dev/null
 SILENT_LOG = 2>&1 >  /dev/null
-allexe = $(lily_bindir)/lilypond $(lily_bindir)/mi2mu
 date = $(shell date +%x)
 allhh := $(shell $(FIND) ./ -name "*.hh" $(ERROR_LOG))
 allcc := $(shell $(FIND)  ./ -name "*.cc" $(ERROR_LOG))
@@ -170,7 +169,8 @@ DODEP=rm -f $(depfile); DEPENDENCIES_OUTPUT="$(depfile) $(outdir)/$(notdir $@)"
 
 # generic target names:
 #
-EXECUTABLE = $(NAME)$(EXE)
+EXECUTABLE = $(outdir)/$(NAME)$(EXE)
+EXECUTABLES = $(EXECUTABLE)
 LIB_PREFIX = lib
 
 ifndef LIB_SUFFIX
index f3dea72647a6467cf58bcd8f14209ad6089ebf7b..b6fee6afc2e0661084a3a819005f4ee499edc54a 100644 (file)
@@ -2,8 +2,8 @@
 
 Begin3
 Title: LilyPond
-Version: 0.0.63
-Entered-date: 05/15/97
+Version: 0.0.64
+Entered-date: 05/16/97
 Description: LilyPond is a program which converts a music-script (mudela) into
 TeX output, or MIDI to produce multi-staff scores. Features include multiple
 meters, clefs, keys, lyrics, versatile input-language, cadenzas
@@ -13,7 +13,7 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: pcnov095.win.tue.nl /pub/lilypond/  
-       300k lilypond-0.0.63.tar.gz
+       300k lilypond-0.0.64.tar.gz
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
index fef4517805b566f9bfec6164acaa3f6d7b08d484..5b6d3b19ce1e34e186eb1f3b3edf5c0c1167f99d 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.0.63
+Version: 0.0.64
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.63.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.64.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
index 1009a20bc4a49e5497ba36eede745aa2fe2efcda..1afa1ac1f82649a9186100f9cf8886b21670c37b 100644 (file)
@@ -50,14 +50,9 @@ MODULE_LIBDEPS=check-flower-deps check-lily-deps
 MODULE_LIBES=-llily -lflower
 #
 
-# main target of this module:
-#
-# MAINTARGET = $(EXECUTABLE)
-# MAINTARGET = $(LIBRARY)
-MAINTARGET = $(lily_bindir)/$(EXECUTABLE)# huh?
-# MAINTARGET = $(libdir)/$(LIBRARY)# huh?
 
-default: $(MAINTARGET)
+default: $(EXECUTABLE)
+
 #
 
 # generic targets and rules:
@@ -82,3 +77,6 @@ DEPFILES = $(wildcard $(depdir)/*.dep)
 localclean:
        rm -f $(outdir)/{midi-parser,midi-lexer}.*
 
+localinstall: installexe
+
+localuninstall: uninstallexe
index 200c96a606ae91bfea0192d7f15728d50d1221ba..5009b8dd7b220758a3484d3f0256c47249abd4fa 100644 (file)
@@ -76,18 +76,18 @@ int
 main( int argc_i, char* argv_sz_a[] )
 {
        Long_option_init long_option_init_a[] = {
-               0, "be-blonde", 'b',
-               0, "debug", 'd',
-               0, "help", 'h',
-               0, "no-silly", 'n',
-               1, "output", 'o',
-               0, "no-plets", 'p',
-               0, "quiet", 'q',
-               1, "smallest", 's',
-               0, "verbose", 'v',
-               0, "warranty", 'w',
-               0, "no-double-dots", 'x',
-               0,0,0
+               {0, "be-blonde", 'b'},
+               {0, "debug", 'd'},
+               {0, "help", 'h'},
+               {0, "no-silly", 'n'},
+               {1, "output", 'o'},
+               {0, "no-plets", 'p'},
+               {0, "quiet", 'q'},
+               {1, "smallest", 's'},
+               {0, "verbose", 'v'},
+               {0, "warranty", 'w'},
+               {0, "no-double-dots", 'x'},
+               {0,0,0}
        };
        Getopt_long getopt_long( argc_i, argv_sz_a, long_option_init_a );
 
index 4ae5e1376c7df063e25a8636a9af502907541334..6eae855c6725e91ee81382cb861f194b62591321 100644 (file)
@@ -1,4 +1,4 @@
-\font\musicfont=musix16
+\font\musicfont=musixsps
 \font\slurfont=xslu16
 \def\thefont{\musicfont}