From a9e27bfa5428cdedd91a5616e1aef8cbba6ec3a5 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 28 May 1997 13:22:39 +0200 Subject: [PATCH] release: 0.0.66 --- .version | 2 +- ANNOUNCE | 4 +- AUTHORS.text | 2 +- Documentation/INSTALL.pod | 16 +++-- Documentation/faq.pod | 4 +- Documentation/gnu-music.pod | 2 +- Documentation/index.pod | 6 +- Documentation/lilyliterature.pod | 22 ++++--- INSTALL.text | 38 ++++++------ NEWS | 13 ++++ TODO | 29 ++++----- bin/make_website | 103 +++++++++++++++++++++++++------ flower/.version | 2 +- flower/NEWS | 2 + flower/include/varray.hh | 5 ++ init/table_sixteen.ini | 10 +-- lily/.version | 2 +- lily/beam.cc | 2 +- lily/include/p-score.hh | 2 + lily/p-score.cc | 38 ++++++++++-- lily/score-elem.cc | 3 + lily/slur.cc | 19 ++++-- lily/spanner.cc | 52 ++++++++-------- lily/stem.cc | 10 ++- make/lilypond.lsm | 6 +- make/lilypond.spec | 4 +- tex/dimen.tex | 3 + tex/lilyponddefs.tex | 22 ++++--- 28 files changed, 288 insertions(+), 135 deletions(-) diff --git a/.version b/.version index fa58dc3090..e8e755d92b 100644 --- a/.version +++ b/.version @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 0 -TOPLEVEL_PATCH_LEVEL = 65 +TOPLEVEL_PATCH_LEVEL = 66 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/ANNOUNCE b/ANNOUNCE index 42e9686124..09c2e51cc1 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,3 +1,4 @@ +[DRAFT] Announcing @@ -45,7 +46,7 @@ WHAT IS NEEDED? for compilation you need - Unix. (Win32 is known to work, too) + Unix. (windows32 is known to work, too) GNU C++ v2.7 or better, with libg++ installed. GNU make. Flex (2.5.1 or better). @@ -73,7 +74,6 @@ general n-plet (triplet, quadruplets, etc.), lyrics, transposition dynamics (both absolute and hairpin style) clef changes, meter changes, cadenza-mode, key changes, repeat bars - [Kudos to the FSF, all linux hackers, and --of course-- especially GrandMaster Linus T, for the OS and The Announce :-] diff --git a/AUTHORS.text b/AUTHORS.text index e516153369..672b6556be 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -19/May/97 LilyPond 0.0.65 1 +19/May/97 LilyPond 0.0.66 1 diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod index cd096c7818..000411ef18 100644 --- a/Documentation/INSTALL.pod +++ b/Documentation/INSTALL.pod @@ -23,10 +23,10 @@ For compilation you need. =item * -Unix. GNU LilyPond is known to run on Linux, AIX, Digital Unix and -Solaris +A Unix system with GNU tools. GNU LilyPond is known to run on Linux, +AIX, Digital Unix and Solaris. -If you have the Cygnus WIN32 port of the GNU utils, it will +If you have the Cygnus WINDOWS32 port of the GNU utils, it will even work in Lose NT/95, but don't promise to support it. =item * @@ -59,6 +59,7 @@ Perl. Most scripts are written in Perl. The documentation was created with the perl's Plain Old Documentation. =item * + (GNU) find =back @@ -258,7 +259,7 @@ F Windows NT: -you need the cygnus win32 gnu port development stuff; have a look +you need the cygnus windows32 gnu port development stuff; have a look at http://www.cygnus.com/gnu-win32. to make GNU LilyPond under, brr, aargh, well, simply type: @@ -270,9 +271,14 @@ to make GNU LilyPond under, brr, aargh, well, simply type: GNU LilyPond (pl 0.0.39) is known to compile on the following platforms: +Unix: + * linux 2.0.x, g++ 2.7.2[.1] * aix 4.1, g++ 2.7.2 - * windows-nt 4.0, cygnus gnu-win32 beta17.1 (~=g++ 2.7.2) + +Other: + + * windows-nt 4.0, cygnus gnu-windows32 beta17.1 (~=g++ 2.7.2) * linux 2.0.28 X to doze, gcc-go32 (~=g++ 2.7.2) [exec. untested] =head1 AUTHORS diff --git a/Documentation/faq.pod b/Documentation/faq.pod index 395a411fa2..2935fe4a02 100644 --- a/Documentation/faq.pod +++ b/Documentation/faq.pod @@ -106,6 +106,8 @@ manner in which Request (the basic building blocks of mudela) are translated into printable items is complex: it is not always possible to associate one Request with one Item or Spanner. +As a further notice, we want to move away from TeX (and perhaps +output PostScript or render to an X window too) =head2 Miscellaneous @@ -194,7 +196,7 @@ LD_LIBRARY_PATH to a directory containing F Q: I want a DOS/NT/W95 port. -A.0: Reconsider. Try Linux. It's fun! +A.0: Reconsider. Try Linux/GNU. It's fun! A.1: Currently (patchlevel 27), GNU LilyPond (and flowerLib) compiles, links and runs on windhoos-nt, using the cygnus gnu port (release b17.1). diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod index 994dadac54..f0fe5fc7e5 100644 --- a/Documentation/gnu-music.pod +++ b/Documentation/gnu-music.pod @@ -6,7 +6,7 @@ GNU Music project - manifesto Random ranting about the GNU Music project -=head GOAL +=head1 GOAL Provide the users with free software for: diff --git a/Documentation/index.pod b/Documentation/index.pod index b90e3b463c..d650acee2c 100644 --- a/Documentation/index.pod +++ b/Documentation/index.pod @@ -102,21 +102,21 @@ errors =item * -The lilypond logo (Big) +The lilypond logo (Big, format: .gif) =item * -The lilypond logo (in gif format, medium size) +The lilypond logo (medium size, format: .gif) =item * -examples: MIDI, PS, GIF and input. +examples: MIDI, PS, .gif and input. diff --git a/Documentation/lilyliterature.pod b/Documentation/lilyliterature.pod index 98f71e631e..d0a3ac3bd9 100644 --- a/Documentation/lilyliterature.pod +++ b/Documentation/lilyliterature.pod @@ -4,9 +4,13 @@ Lily literature -- reading on music engraving =head1 DESCRIPTION -A list of resources on music printing/writing and engraving. -Please note that don't have access to most material (except a library -copy of Chlapik) +A list of resources on music printing/writing and engraving. Please +note that don't have access to most material (except a library copy of +Chlapik) + + +More on GNU Music: http://dept-info.labri.u-bordeaux.fr/~strandh/Gsharp + =head2 References @@ -23,16 +27,16 @@ Association of the United States Inc., 1993. W.A. Hegazy and J. S. Gourlay. Optimal line breaking in music. In ``Document Manipulation and Typography'', J.C. van Vliet (ed) 1988. -Ross, Ted. ``Teach yourself the art of music engraving and processing'' -(3rd edition). Hansen House, Miami Beach, FL. +Ross, Ted. ``Teach yourself the art of music engraving and +processing'' (3rd edition). Hansen House, Miami Beach, FL. Hansen House 1820 West Ave. Miami, FL 33139 (305) 532-5461 -[This is about I i.e. professional music typesetting, and includes -some good spacing tables] +[This is about I i.e. professional music typesetting, and +includes some good spacing tables] Read, Gardner. ``Modern Rhythmic Notation.'' Indiana University Press, 1978. @@ -43,9 +47,7 @@ New York. as one is likely to get.] The University of Colorado Music Engraving page. -http://www.cc.colorado.edu/cgi-bin/mfs/01/Dept/Musicpress/Welcome.html - -More on GNU Music: http://www.u-bordeaux.fr/~strandh +http://www.cc.colorado.edu/cgi-bin/mfs/01/Dept/MU/Musicpress/Welcome.html =head2 Further reading diff --git a/INSTALL.text b/INSTALL.text index 8de884cd99..1ed0bd2d39 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -23,12 +23,12 @@ IIIIMMMMPPPPOOOORRRRTTTTAAAANNNNTTTT PPPPRRRREEEERRRREEEEQQQQUUUUIIIISSSSIIIITTTTEEEESSSS For compilation you need. - +o Unix. GNU LilyPond is known to run on Linux, AIX, - Digital Unix and Solaris + +o A Unix system with GNU tools. GNU LilyPond is known + to run on Linux, AIX, Digital Unix and Solaris. - If you have the Cygnus WIN32 port of the GNU utils, - it will even work in Lose NT/95, but don't promise to - support it. + If you have the Cygnus WINDOWS32 port of the GNU + utils, it will even work in Lose NT/95, but don't + promise to support it. +o GNU C++ v2.7 or better, with libg++ installed. Version 2.7.2 or better recommended. I almost @@ -45,7 +45,7 @@ RRRREEEECCCCOOOOMMMMMMMMEEEENNNNDDDDEEEEDDDD documentation was created with the perl's Plain Old Documentation. - +o (GNU) find + +o (GNU) find CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG aaaannnndddd CCCCOOOOMMMMPPPPIIIILLLLIIIINNNNGGGG to install GNU LilyPond, simply type: @@ -61,7 +61,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -26/May/97 LilyPond 0.0.65 1 +28/May/97 LilyPond 0.0.66 1 @@ -127,7 +127,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -26/May/97 LilyPond 0.0.65 2 +28/May/97 LilyPond 0.0.66 2 @@ -193,7 +193,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -26/May/97 LilyPond 0.0.65 3 +28/May/97 LilyPond 0.0.66 3 @@ -259,7 +259,7 @@ WWWWIIIINNNNDDDDOOOOZZZZEEEE -26/May/97 LilyPond 0.0.65 4 +28/May/97 LilyPond 0.0.66 4 @@ -268,8 +268,8 @@ WWWWIIIINNNNDDDDOOOOZZZZEEEE INSTALL(1) LilyPond documentation INSTALL(1) - you need the cygnus win32 gnu port development stuff; have - a look at http://www.cygnus.com/gnu-win32. + you need the cygnus windows32 gnu port development stuff; + have a look at http://www.cygnus.com/gnu-win32. to make GNU LilyPond under, brr, aargh, well, simply type: @@ -281,9 +281,14 @@ PPPPLLLLAAAATTTTFFFFOOOORRRRMMMMSSSS GNU LilyPond (pl 0.0.39) is known to compile on the following platforms: + Unix: + * linux 2.0.x, g++ 2.7.2[.1] * aix 4.1, g++ 2.7.2 - * windows-nt 4.0, cygnus gnu-win32 beta17.1 (~=g++ 2.7.2) + + Other: + + * windows-nt 4.0, cygnus gnu-windows32 beta17.1 (~=g++ 2.7.2) * linux 2.0.28 X to doze, gcc-go32 (~=g++ 2.7.2) [exec. untested] @@ -320,11 +325,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS - - - - - -26/May/97 LilyPond 0.0.65 5 +28/May/97 LilyPond 0.0.66 5 diff --git a/NEWS b/NEWS index a77e57c09e..cc0f07c315 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,16 @@ +pl 66 + - make_website --jpeg, --png and --gif + - win32 -> windows32 + - bf: Score_elem::TeXstring assert fail + - bf: headswap with stemdown + - bf: broken tie + - bf: broken slur + - bf: accidental dims + - bf: measure bar width + + +****** +may 26 pl 65 - bf pathfind /root/file - massive Score_elem rewrite: diff --git a/TODO b/TODO index 9e657cd02c..5af191f9f2 100644 --- a/TODO +++ b/TODO @@ -22,7 +22,7 @@ IMPORTANT * decent TeX page layout - * per-pstaff item-widths [JCN] + * per staff item-widths [JCN] * script priority @@ -59,11 +59,11 @@ PROJECTS - trill - bracket - * Rewrite Beam and Rhythmic_grouping (hairy) + * Rewrite Stem, Beam and Rhythmic_grouping (hairy) - [c8. c32 c32] - interbeam height - doc on Rhythmic_grouping - - general shaving + - general shaving on Beam and Stem - use plet grouping - abbreviations [c2 c2]1/2 - separate visual from rhythmic info even more @@ -124,7 +124,10 @@ verplichte regels **************** + BUGS + * RPM permissions -> redhat! + * spurious Weird stem size warnings * staccato dot positions. @@ -133,8 +136,6 @@ BUGS * lilypond - -> crash - * chlapik balk ruimte - * standchen triool beam up/down SEVERELY LACKING: @@ -182,9 +183,7 @@ PROJECTS SMALLISH PROJECTS - * handle do_substitute_dependency in more derived classes. - - * replace member access by get()/set() methods, to enable + * replace Score_elem member access by get()/set() methods, to enable future embedded code. * --fast/--draft: leave out constraints @@ -206,7 +205,7 @@ SMALLISH PROJECTS * adaptive accidental spacing. - * Score_elem invible_b_ flag + * Score_elem invisible_b_ flag * unix style paths for LILYINCLUDE env @@ -261,7 +260,6 @@ SMALLISH PROJECTS * detect -pipe - DOC * Score_elem structure. @@ -287,7 +285,8 @@ FUTURE * guitar chord - * Junk Staff_column, and find the requests while walking the Voices.? + * Junk Staff_column, and find the requests while walking the + Voices.? * better beamslope calculation: QLP for beams? @@ -299,12 +298,10 @@ FUTURE * volta - * piano staff - - * vertical spanner - IDEAS - * derive PCol from Score_elem? + * check out CORBA for Score_elems? + + * derive PCol from Score_elem? More in Score_elems? Spacing? * scoping in Lexer: do general id- assignments in mudela. diff --git a/bin/make_website b/bin/make_website index ce8c6bb793..f5d540306e 100755 --- a/bin/make_website +++ b/bin/make_website @@ -2,9 +2,11 @@ # stupid script to generate WWW site. use FileHandle; +use Getopt::Long; my $lily_version; my $footstr; my $mw_id = ""; + sub get_version { my ($vstr)=(""); @@ -49,8 +51,14 @@ sub my_system { my (@cmds) = @_; foreach $cmd (@cmds) { + my ($ignoreret)=0; + if ( $cmd =~ /^-/ ) { + $ignoreret = 1; + $cmd = substr ($cmd, 1); + } + my $ret = ( system ($cmd)); - if ($ret) { + if (!$ignoreret && $ret) { print STDERR "\nmake_website: failed on command \`$cmd\' (status $ret)\n"; exit 2; } @@ -68,6 +76,25 @@ sub gen_html my_system "make -kC .. html"; } +sub ps_to_gif +{ + my ($a)=@_; + + if (! -f "$a.ps" ) { + my_system("gunzip -c $a.ps.gz > $a.ps"); + } + my_system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif"; +} + + +sub ps_to_jpeg +{ + my ($a)=@_; + my $in = "$a.ps"; + + my_system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $in -c quit |pnmscale 0.5| cjpeg -grayscale > $a.jpeg"; +} + sub gen_examples { print "generating examples: \n"; @@ -82,19 +109,22 @@ sub gen_examples if ( ! -f "$a.ly.txt" ) { my_system "ln $depth/input/$a.ly ./$a.ly.txt"; } - if ( ! -f "$a.ps.gz" ) { + if (! -f "$a.dvi" ) { my_system "lilypond $a;", - "$tex", - "dvips -o $a.ps $texfile;"; - + "$tex", "-mv $texfile.dvi $a.dvi"; + } + if ( ! -f "$a.ps.gz" && ! -f "$a.ps" ) { + my_system "dvips -o $a.ps $a.dvi"; } - my_system "mv lelie.midi $a.midi; " if ( -f "lelie.midi" ); + my_system "mv lelie.midi $a.midi; " if ( -f "lelie.midi" ); # generate the pixmap at twice the size, then rescale (for antialiasing) if ( ! -f "$a.gif" ) { - my_system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif", - "gzip $a.ps"; + ps_to_gif($a); + } + if ( ! -f "$a.ps.gz" ) { + my_system "gzip -f $a.ps"; } } } @@ -119,20 +149,28 @@ sub gen_list $inputf="$a.ly.txt"; $giff="$a.gif"; + $jpegf="$a.jpeg"; + $pngf = "$a.png"; $psf="$a.ps.gz"; $midif="$a.midi"; - print HTMLLIST "
    -
  • The input file -
  • The output (gif) -
  • The output (PS)\n"; + print HTMLLIST ""; } print HTMLLIST ""; - close HTMLLIST; + close HTMLLIST; } sub edit_html @@ -159,13 +197,14 @@ sub edit_html my $subst = $footstr; $subst .= $back if (! $a =~ /index.html/ ); $file =~ s/$sep/$subst$sep/g ; - + $file =~ s/\.gif/\.$image/g; open H, ">$a"; print H $mw_id; print H $file; close H; } } + sub copy_files { print "copying files\n"; @@ -175,6 +214,20 @@ sub copy_files "cp ../lelie*gif ."; } +sub set_images +{ + for $a (<*.gif>) { + if ($opt_png) { + my_system "gif2png -d $a"; + } + if ($opt_jpeg) { + my $b=$a; + $b =~ s/.gif/.jpeg/; + my_system "cjpeg -o $b $a"; + } + } +} + sub docxx_update { my_system "make -C $depth doc++"; @@ -184,12 +237,23 @@ sub do_tar { print "tarring.\n"; my_system - " tar vhcf website.tar *.html *.gif *.ps.gz *.txt *.midi docxx/*;", + " tar vhcf website.tar *.html *.$image *.ps.gz *.txt *.midi docxx/*;", "gzip -f9 website.tar;"; } - +sub identify +{ + print STDERR "make_website 0.1\n"; + +} sub main { + identify; + GetOptions("jpeg", "gif", "png"); + + local $image="gif" ; + $image = "png" if ($opt_png); + $image = "jpeg" if ($opt_jpeg); + $depth = "../"; my $cwd; chomp($cwd = `pwd`); @@ -207,10 +271,13 @@ sub main gen_html; gen_examples; - gen_list; copy_files; + set_images; + gen_list; edit_html; + docxx_update; do_tar; } + main; diff --git a/flower/.version b/flower/.version index 1234aa46c7..e275cb9db0 100644 --- a/flower/.version +++ b/flower/.version @@ -1,6 +1,6 @@ MAJOR_VERSION = 1 MINOR_VERSION = 1 -PATCH_LEVEL = 18 +PATCH_LEVEL = 19 # use to send patches, always empty for released version: MY_PATCH_LEVEL = # include separator: "-1" or ".a" # diff --git a/flower/NEWS b/flower/NEWS index 23867797db..050b1356d8 100644 --- a/flower/NEWS +++ b/flower/NEWS @@ -1,4 +1,6 @@ version 1.1: +pl 19 + - Array::reverse() pl 18 - Path::find("/usr/..") fix diff --git a/flower/include/varray.hh b/flower/include/varray.hh index 105d96ac27..5fe5fa3943 100644 --- a/flower/include/varray.hh +++ b/flower/include/varray.hh @@ -200,6 +200,11 @@ public: arrcpy(r.thearray, thearray + lower, s); return r; } + void reverse() { + int h = size_/2; + for (int i =0,j = size_-1; i < h; i++,j--) + swap(i,j); + } }; #endif diff --git a/init/table_sixteen.ini b/init/table_sixteen.ini index 18cc2b5680..abcdeab3ef 100644 --- a/init/table_sixteen.ini +++ b/init/table_sixteen.ini @@ -84,11 +84,11 @@ table_sixteen= "half" "\hslurchar%{%}" } "accidentals" = \table { - "-2" "\flatflat" 0\pt 10.2\pt -2.5\pt 7.5\pt - "-1" "\flat" 0\pt 6\pt -2.5\pt 7.5\pt - "0" "\natural" 0\pt 6\pt -7.5\pt 7.5\pt - "1" "\sharp" 0\pt 6\pt -7.5\pt 7.5\pt - "2" "\sharpsharp" 0\pt 6\pt -2.5\pt 7.5\pt + "-2" "\flatflat" 0\pt 8.16\pt -2.5\pt 7.5\pt + "-1" "\flat" 0\pt 4.8\pt -2.5\pt 7.5\pt + "0" "\natural" 0\pt 4.8\pt -7.5\pt 7.5\pt + "1" "\sharp" 0\pt 3.6\pt -7.5\pt 7.5\pt + "2" "\sharpsharp" 0\pt 4.8\pt -2.5\pt 7.5\pt } "streepjes" = \table { diff --git a/lily/.version b/lily/.version index b7c968121e..de91678501 100644 --- a/lily/.version +++ b/lily/.version @@ -1,6 +1,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 0 -PATCH_LEVEL = 65 +PATCH_LEVEL = 66 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/lily/beam.cc b/lily/beam.cc index e838f90ea0..9fcd49f705 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -46,7 +46,7 @@ Stem_info::Stem_info(Stem const *s) x = s->hpos_f(); int dir = s->dir_i_; idealy = dir * s->stem_end_f(); - miny = dir * s->stem_start_f(); + miny = dir * s->stem_start_f() + 2; // ugh assert(miny <= idealy); } diff --git a/lily/include/p-score.hh b/lily/include/p-score.hh index 5490345729..75b875c616 100644 --- a/lily/include/p-score.hh +++ b/lily/include/p-score.hh @@ -60,6 +60,8 @@ public: PCursor find_col(PCol const *)const; Link_array col_range(PCol *left_l, PCol *right_l) const; + Link_array breakable_col_range(PCol*,PCol*) const; + Link_array broken_col_range(PCol*,PCol*) const; /* MAIN ROUTINES */ void process(); diff --git a/lily/p-score.cc b/lily/p-score.cc index bf91890d77..6bec375634 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -1,7 +1,7 @@ /* p-score.cc -- implement PScore - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter (c) 1996, 1997 Han-Wen Nienhuys */ @@ -12,12 +12,9 @@ #include "lookup.hh" #include "spanner.hh" #include "paper-def.hh" -#include "molecule.hh" -#include "dimen.hh" #include "scoreline.hh" #include "p-score.hh" #include "tex-stream.hh" -#include "item.hh" #include "break.hh" #include "p-col.hh" @@ -238,7 +235,23 @@ PScore::process() *mlog << "\nPostprocessing elements..." << endl; postprocess(); } +/** Get all breakable columns between l and r, (not counting l and r). */ +Link_array +PScore::breakable_col_range(PCol*l,PCol*r)const +{ + Link_array ret; + + PCursor start(l ? find_col(l)+1 : cols.top() ); + PCursor stop(r ? find_col(r) : cols.bottom()); + + while ( start < stop ) { + if (start->breakable_b()) + ret.push(start); + start++; + } + return ret; +} Link_array PScore::col_range(PCol*l,PCol*r)const { @@ -252,3 +265,20 @@ PScore::col_range(PCol*l,PCol*r)const ret.push(r); return ret; } + +Link_array +PScore::broken_col_range(PCol*l,PCol*r)const +{ + Link_array ret; + + PCursor start(l ? find_col(l)+1 : cols.top() ); + PCursor stop(r ? find_col(r) : cols.bottom()); + + while ( start < stop ) { + if (start->breakable_b() && !start->line_l_ ) + ret.push(start); + start++; + } + + return ret; +} diff --git a/lily/score-elem.cc b/lily/score-elem.cc index 218a8a7842..11ce7936aa 100644 --- a/lily/score-elem.cc +++ b/lily/score-elem.cc @@ -340,6 +340,9 @@ Score_elem::handle_broken_dependencies() remove_us_arr.uniq(); for (int i=0; i pcol_l_->rank_i() - n2->pcol_l_->rank_i(); +} + void Slur::do_post_processing() { + encompass_arr_.sort(Note_column_compare); if (!dir_i_) set_default_dir(); Real inter_f = paper()->internote_f(); - if (encompass_arr_[0]->stem_l_) + + if (encompass_arr_[0]->stem_l_) left_pos_i_ = rint(encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f); - else - left_pos_i_ = 0; + else + left_pos_i_ = rint ( encompass_arr_[0]->head_positions_interval()[dir_i_]); + if (encompass_arr_.top()->stem_l_) right_pos_i_ = rint(encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f); - else - right_pos_i_ = 0; + else + right_pos_i_ = rint (encompass_arr_.top()->head_positions_interval()[dir_i_]); left_pos_i_ += dir_i_; right_pos_i_ += dir_i_; diff --git a/lily/spanner.cc b/lily/spanner.cc index 4c8376ce5a..10ee753e19 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -17,7 +17,7 @@ void Spanner::do_print()const { if (broken_into_l_arr_.size()) - mtor << "Spanner with broken pieces\n"; + mtor << "with broken pieces\n"; } void @@ -25,35 +25,35 @@ Spanner::break_into_pieces() { PCol * left = left_col_l_; PCol * right = right_col_l_; - if (left->daddy_l_) - left = left->daddy_l_; - if (right->daddy_l_) - right = right->daddy_l_; + if(left->daddy_l_) left = left->daddy_l_; + if(right->daddy_l_) right = right->daddy_l_; - Link_array all_cols = pscore_l_->col_range(left, right); - Line_of_score *line = left->line_l_; - if (!line) { - left = left->postbreak_p_; - line = left->line_l_; + Link_array break_cols = pscore_l_->broken_col_range(left,right); + Link_array broken_into_l_arr; + + break_cols.insert(left,0); + break_cols.push(right); + + for (int i=1; i < break_cols.size(); i++) { + Spanner* span_p = clone(); + left = break_cols[i-1]; + right = break_cols[i]; + if (!right->line_l_) + right = right->prebreak_p_; + if (!left->line_l_) + left = left->postbreak_p_; + + assert(left&&right && left->line_l_ == right->line_l_); + + span_p->left_col_l_ = left; + span_p->right_col_l_ = right; + + pscore_l_->typeset_broken_spanner(span_p); + broken_into_l_arr.push( span_p ); } - for (int i=1; i < all_cols.size(); i++) { - if (!all_cols[i]->line_l_) { - - Spanner* span_p = clone(); - right = all_cols[i]->prebreak_p_; - assert(left&&right && left->line_l_ == right->line_l_); - - span_p->left_col_l_ = left; - span_p->right_col_l_ = right; - left = all_cols[i]->postbreak_p_; - line = left->line_l_; - - pscore_l_->typeset_broken_spanner(span_p); - broken_into_l_arr_.push( span_p ); - } - } + broken_into_l_arr_ = broken_into_l_arr; } void diff --git a/lily/stem.cc b/lily/stem.cc index 33e86f657c..3cd58198b3 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -112,7 +112,6 @@ Stem::chord_b() const } // if dir_i_ is set we return a fake value. - int Stem::get_center_distance() { @@ -173,12 +172,21 @@ Stem::set_default_extents() stem_xoffset_f_ = 0; } +/* + TODO + + move into note_column.cc + + */ void Stem::set_noteheads() { if(!head_l_arr_.size()) return; head_l_arr_.sort(Note_head::compare); + if (dir_i_ < 0) + head_l_arr_.reverse(); + head_l_arr_[0]->extremal_i_ = -1; head_l_arr_.top()->extremal_i_ = 1; int parity=1; diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 1bb08d53a4..4450e5f0fc 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -2,8 +2,8 @@ Begin3 Title: LilyPond -Version: 0.0.65 -Entered-date: 05/23/97 +Version: 0.0.66 +Entered-date: 05/28/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.65.tar.gz + 300k lilypond-0.0.66.tar.gz Alternate-site: Original-site: Platform: unix/win32, GNU C++ diff --git a/make/lilypond.spec b/make/lilypond.spec index 5c296f9cb8..6b06b219e6 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.0.65 +Version: 0.0.66 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.65.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.66.tar.gz Summary: A preprocessor to make TeX typeset music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/tex/dimen.tex b/tex/dimen.tex index 6eae855c67..35b7e4df43 100644 --- a/tex/dimen.tex +++ b/tex/dimen.tex @@ -1,3 +1,6 @@ +% +% A tex file to help determine dims. +% \font\musicfont=musixsps \font\slurfont=xslu16 \def\thefont{\musicfont} diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index a9db1f5fa2..5bc96a07a6 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -49,6 +49,7 @@ \newdimen\noteheight \newdimen\notewidthhalf \newdimen\notewidthdouble +\newdimen\notewidthquart \newdimen\staffrulethickness \newdimen\interstaffrule \newdimen\balkhalf @@ -105,15 +106,15 @@ \interlinedist=\fontdimen5\musicfnt \smallspace=.3\interlinedist \interstaffrule=\balkhoog - \advance\interstaffrule by-\staffrulethickness \divide\interstaffrule by 4 - \advance\interstaffrule by -\staffrulethickness \notewidthhalf=\notewidth + \notewidthquart=\notewidth \notewidthdouble=\notewidth \rationalmultiply \notewidthhalf*1/2 + \rationalmultiply\notewidthquart*1/4 \multiply \notewidthdouble by 2 - \balkhalf=\balkhoog - \rationalmultiply\balkhalf*1/2 + \balkhalf=\balkhoog + \rationalmultiply\balkhalf*1/2 } % dynamics take extra kerning @@ -238,16 +239,13 @@ \def\emptybar{} -\def\thinbar{\vrule height\balkhoog} +\def\thinbar{\vrule height\balkhoog width0.8pt} % TODO parametric. \def\thickbar{\vrule height\balkhoog width 2\smallspace} \def\maatstreep{\thinbar} %? what-s wrong with rightalign? \def\finishbar{\rightalign{\thinbar\kern\smallspace\thickbar}} -%%% \def\finishbar{\hss\rightalign{\thinbar\kern\smallspace\thickbar}} -% \def\repeatstopbar{\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}} - \def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}} \def\repeatstartbar{\hbox{\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}} \def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar\kern\smallspace\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}} @@ -279,12 +277,18 @@ \n=0\nointerlineskip% \loop\ifnum\n<#1\advance\n by1% \kern\interstaffrule - \hrule height \staffrulethickness width#2 + \nointerlineskip + \vbox to 0pt{\hrule height \staffrulethickness width#2% + \vss}\nointerlineskip \repeat }} +%% +% Ugh. Need to redo this. Wish we had PS. +% \def\toplines#1{ % why space needed here? \topalign{\hbox{\kern-\notewidth\lines{#1}{\notewidthdouble}}}} + \def\botlines#1{ % idem ditto \botalign{\hbox{\kern-\notewidth\lines{#1}{\notewidthdouble}}}} -- 2.39.5