From bb446de35e2d24c7f6f15425a76b433cb71a4a1d Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 15 Feb 1999 15:43:56 +0100 Subject: [PATCH] release: 1.1.30 --- Documentation/topdocs/index.yo | 11 ++--- NEWS | 46 ++++++++---------- TODO | 64 ++++++++++--------------- VERSION | 4 +- input/test/GNUmakefile | 2 +- input/test/grace.ly | 1 + input/{bugs => test}/staff-side-slur.ly | 5 +- lily/bar-script-engraver.cc | 63 +++++++++++++++++++----- lily/beam-engraver.cc | 9 ++-- lily/bow.cc | 2 + lily/dimension-cache.cc | 5 ++ lily/direction.cc | 3 +- lily/extender-engraver.cc | 5 +- lily/include/bar-script-engraver.hh | 14 +++++- lily/include/bow.hh | 2 +- lily/include/cons.hh | 48 ++++++++++++++++++- lily/include/killing-cons.tcc | 35 ++++++++++++-- lily/include/mark-engraver.hh | 2 +- lily/include/molecule.hh | 2 +- lily/include/repeated-music-iterator.hh | 1 - lily/include/slur.hh | 1 - lily/include/tie.hh | 5 +- lily/lookup.cc | 2 + lily/main.cc | 4 +- lily/molecule.cc | 12 +++-- lily/repeated-music-iterator.cc | 44 ++++++++--------- lily/slur.cc | 47 +++++++++--------- lily/spanner.cc | 2 + lily/staff-margin-engraver.cc | 13 ++--- lily/template4.cc | 25 ---------- lily/tie.cc | 6 ++- ly/paper16.ly | 3 +- make/out/lelievijver.lsm | 8 ++-- make/out/lilypond.lsm | 8 ++-- make/out/lilypond.spec | 4 +- mutopia/W.A.Mozart/GNUmakefile | 2 +- scm/lily.scm | 2 +- 37 files changed, 291 insertions(+), 221 deletions(-) rename input/{bugs => test}/staff-side-slur.ly (71%) delete mode 100644 lily/template4.cc diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo index 8ebbc3d811..ffec8796ed 100644 --- a/Documentation/topdocs/index.yo +++ b/Documentation/topdocs/index.yo @@ -41,13 +41,10 @@ of LilyPond, specifically, this page was made from LilyPond nsect(Free Software) -LilyPond is url(free software)(http://www.fsf.org/copyleft/copyleft.html). -We believe that -url(software should be free)(http://www.fsf.org/philosophy/why-free.html). -For more url(information)(http://www.fsf.org/philosophy/philosophy.html), -see the url(Free Software Foundation)(http://www.fsf.org/). -Just say ``No'' to proprietary software. - +Of course LilyPond, being part of the GNU project, is url(free +software)(http://www.fsf.org/copyleft/copyleft.html). For more +url(information)(http://www.fsf.org/philosophy/philosophy.html), see +the url(Free Software Foundation)(http://www.fsf.org/). nsect(Preview) diff --git a/NEWS b/NEWS index c0d39a6dcf..0db7718f1c 100644 --- a/NEWS +++ b/NEWS @@ -1,38 +1,32 @@ ---- ../lilypond-1.1.29.jcn3/NEWS Wed Feb 10 15:21:05 1999 -++ b/NEWS Wed Feb 10 17:56:14 1999 -@@ -1,3 +1,6 @@ -pl 29.jcn4 - - unsuccessful try at fixing repeat-iter::ok () constness - - pl 29.jcn3 - - fix: slur-case3.ly - - init.sly: .fly with linewidt=-1--- ../lilypond-1.1.29.jcn2/NEWS Tue Feb 9 22:46:07 1999 -++ b/NEWS Wed Feb 10 15:21:05 1999 -@@ -1,3 +1,7 @@ +pl 30 (feb 15) + +pl 29.uu1 + - typewriter font + - star-spangled-banner bf (slur.cc). + + pl 29.jcn3 - fix: slur-case3.ly - init.sly: .fly with linewidt=-1 - pl 29.jcn2 - - resurrected ps output - --- ../lilypond-1.1.29.jcn1/NEWS Tue Feb 9 17:15:49 1999 -++ b/NEWS Tue Feb 9 22:46:07 1999 -@@ -1,3 +1,6 @@ pl 29.jcn2 - resurrected ps output - pl 29.jcn1 - - bf: volta sizes - - GNU stuff on home page--- ../lilypond-1.1.29/NEWS Tue Feb 9 13:54:27 1999 -++ b/NEWS Tue Feb 9 17:15:49 1999 -@@ -1,3 +1,7 @@ +pl 29.hwn1 + - bf: coord relative to self. + - bf: error msg if no AFM found + - bf: hang script on bar in other axis too (fixes staff-side-slur bug) + - hang on scripts on clef as well (more to left for single staffs) + + pl 29.jcn1 - - bf: volta sizes - - GNU stuff on home page + - bf: volta sizes + - GNU stuff on home page + +******* +pl 29 - xl 28.jcn1 - - new outline TODO + .emacs setup - pl 28.hwn1 +pl 28.hwn1 - bf: mid measure clefs (breakable items in non-breakable columns.) - spanner.cc assert changed to warning - (c) 1998 -> 1999 search replace. diff --git a/TODO b/TODO index 596c8df7a2..f31959ee40 100644 --- a/TODO +++ b/TODO @@ -10,9 +10,8 @@ grep for TODO and ugh/ugr/urg .* BUGS . * .ly files -. * input/praeludium-fuga-E.ly -. * input/font20 . * mutopia/J.S.Bach/wtk1-fugue2.ly +. * input/test/grace . * fix: text on rests: rediculous dims . * fix midi output: . * default duration? d @@ -22,62 +21,53 @@ grep for TODO and ugh/ugr/urg . * turn slope-damping on/off . * c4 \! \> c4 . * tremolo stuff -. * gallina barlines. . * fix height of / collisions with lyrics (chords), see input/test/vertical-text.ly; input/test/repeat.ly +. * We need feta-din*.mf files for more sizes than 10. . * latex bla.tex broken (titles / \lilyfooter stuff?) . * fix dynamics decently, ie. use kerning & ligatures. . * fix "I've been drinking too much" . * support_l_arr_ empty in staff-margin's G_staff_side_item . * remove old preformats in RPM +. * minVerticalAlign for StaffGroups. +. * I have tried the barAuto property to get barlines when +typesetting rhythms. Lily prints all barlines except +between first and second bar. Where is my mistake?? + +\score{ + \type RhythmicStaff< + \property RhythmicStaff.barAuto=1 + \notes{ + \time 3/4; + c4 c c | c c c | c c c + } + > +} . * declaring \score . * is \break broken? input/test/hara-kiri.ly . * fix OrchestralScore and Hara-kiri (i.e., fix Coriolan) -. * -\score{ - \type Staff \notes\relative c''{ - \property Staff.instrument = "Toeters" - c c c c(\break - )c c c c ~\break - c c c c\break - } - \paper{ - linewidth=60.0\mm; -% \translator { \HaraKiriStaffContext } - \translator { \OrchestralScoreContext } - \translator { - \StaffContext - \consists "Staff_margin_engraver"; - } - } -} - -. * -Phrasing: Indicating the textual underlay of a piece, or - otherwise dividing a piece into phrases. +. * Phrasing: Indicating the textual underlay of a piece, or +otherwise dividing a piece into phrases. There are distinct ways of specifying the first two (although at present, they're not properly distinguished) but no distinct way to specify the third. Should there be? .* TODO before 1.2 -. * -> Yes. I want ties to tie only notes of the same pitch, so that -> f < a~ a,> a +. * Check gcc 2.8.1 compatibility +. * use Drul_array for Interval. +. * ties to tie only notes of the same pitch, so that +> < a~ a,> a > works as you'd expect it to. - -I don't think that's functional, but there is a bug (--jcn): -Lily will set a tie between the a and the preceeding f. . * 1. Can Lily be told where to start numbering? -Fix: set bar-number to 0 if first bar is an anacrouse? . * The timpani part has rests the full first line. Is it possible to force lilypond to print all parts on the first page of the score but use the hara-kiri mechanism on the remaining pages? . * do scaled fonts. . * profile atom smobs -. * make ly2dvi test page. . * Try to use Killing_cons iso. Pointer_list . * make dependencies () a virtual function. +. * fix Repeated_music_iterator::ok() (constness.) . * one big ly2dvi input that includes *all* tests. . * Don't use boolean properties (0,1), instead check existence of property. @@ -210,9 +200,9 @@ The beams are at the right angle, but they aren't in the right place. . * 'hinterfleisch' before bar (e.g. wtk1-fugue2)? . * \type Voice \times 2/3 { [c8 c16 c16 c16 c16] } . * repeat bars: need distance after ":|" and before "|:" -.* Summary of minor spelling irregularities: -. * capitalization/use of underscores in property names -. * fix SkipBars -> skipBars +. * Summary of minor spelling irregularities: +. * capitalization/use of underscores in property names +. * fix SkipBars -> skipBars . * fix marks/barnumbers/marginal notes . * broken scripts: @@ -224,9 +214,7 @@ The beams are at the right angle, but they aren't in the right place. rfheel = \script { "fheel" 0 0 1 0 0 } lftoe = \script { "ftoe" 0 0 -1 0 0 } rftoe = \script { "ftoe" 0 0 1 0 0 } - and also - portato= \script { "portato" 0 -1 0 1 0 } . * ly2dvi . * bottomnote for ly2dvi diff --git a/VERSION b/VERSION index f34be36d3f..b14c758bed 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 -PATCH_LEVEL=29 -MY_PATCH_LEVEL=jcn4 +PATCH_LEVEL=30 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/GNUmakefile b/input/test/GNUmakefile index 193b5b94fc..e4059cecb9 100644 --- a/input/test/GNUmakefile +++ b/input/test/GNUmakefile @@ -1,7 +1,7 @@ # input/test/Makefile depth = ../.. -examples=font20 mark knee beam-interstaff slur-interstaff denneboom sleur repeat hara-kiri grace +examples=font20 mark knee beam-interstaff slur-interstaff denneboom sleur repeat hara-kiri LOCALSTEPMAKE_TEMPLATES=mutopia include $(depth)/make/stepmake.make diff --git a/input/test/grace.ly b/input/test/grace.ly index af7f830ba4..5d625966ca 100644 --- a/input/test/grace.ly +++ b/input/test/grace.ly @@ -18,6 +18,7 @@ > \paper { linewidth = 120.0\mm; + \translator { \VoiceContext } } } diff --git a/input/bugs/staff-side-slur.ly b/input/test/staff-side-slur.ly similarity index 71% rename from input/bugs/staff-side-slur.ly rename to input/test/staff-side-slur.ly index 1a3cb5ceb2..d099cf6116 100644 --- a/input/bugs/staff-side-slur.ly +++ b/input/test/staff-side-slur.ly @@ -1,8 +1,6 @@ \score{ \type Staff \notes\relative c''{ - % length matters... -% \property Staff.instrument = "Tot" - \property Staff.instrument = "ToetersToetersToeters" + \property Staff.instrument = "Toeters" c c c c(\break )c c c c ~\break c c c c\break @@ -14,6 +12,7 @@ \translator { \StaffContext \consists "Staff_margin_engraver"; + marginHangOnClef = 1; } } } diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index e197da6a9c..63e6155438 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -9,6 +9,7 @@ #include "bar-script-engraver.hh" #include "bar.hh" +#include "clef-item.hh" #include "g-staff-side.hh" #include "g-text-item.hh" #include "lily-guile.hh" @@ -18,31 +19,69 @@ Bar_script_engraver::Bar_script_engraver () axis_ = Y_AXIS; staff_side_p_ = 0; text_p_ =0; + hang_on_clef_b_ = false; visibility_lambda_ = gh_eval_str ("non_postbreak_visibility"); } void -Bar_script_engraver::acknowledge_element (Score_element_info i) +Bar_script_engraver::do_creation_processing () +{ + Scalar prop = get_property (type_ + "HangOnClef", 0); + if (prop.to_bool ()) + { + hang_on_clef_b_ = true; + } +} + +void +Bar_script_engraver::do_acknowledge_element (Item *i) { Axis other_axis = Axis((axis_ + 1)%2); - if (staff_side_p_ && !staff_side_p_->dim_cache_[other_axis].parent_l_) { - Bar * bar_l = dynamic_cast (i.elem_l_); - if (!bar_l) + staff_side_p_->dim_cache_[other_axis].parent_l_ + = &i->dim_cache_[other_axis]; + staff_side_p_->dim_cache_[axis_].parent_l_ + = &i->dim_cache_[axis_]; + + staff_side_p_->add_support (i); + i->add_dependency (staff_side_p_); // UGH. + } +} + + +Item* +Bar_script_engraver::cast_to_interesting_item (Score_element *e) +{ + Item * i =0; + if (hang_on_clef_b_) + { + i = dynamic_cast (e); + } + else + { + i = dynamic_cast (e); + } + return i; +} + +void +Bar_script_engraver::acknowledge_element (Score_element_info inf) +{ + if (inf.origin_grav_l_arr_.size () == 1) + { + Item *i=cast_to_interesting_item (inf.elem_l_); + if (!i) return; - + /* Only put numbers on bars that are at our own level (don't put numbers over the staffs of a GrandStaff, only over the GrandStaff itself */ - if (i.origin_grav_l_arr_.size () == 1) - { - staff_side_p_->dim_cache_[other_axis].parent_l_ = &bar_l->dim_cache_[other_axis]; - // staff_side_p_->dim_cache_[axis_].parent_l_ = &bar_l->dim_cache_[axis_]; - staff_side_p_->add_support (i.elem_l_); - bar_l->add_dependency (staff_side_p_); // UGH. - } + if (inf.origin_grav_l_arr_.size () != 1) + return; + + do_acknowledge_element (i); } } diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 32273b7339..d855e41dea 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -67,6 +67,7 @@ Beam_engraver::do_process_requests () return; } + prev_start_req_ = reqs_drul_[START]; beam_p_ = new Beam; grouping_p_ = new Rhythmic_grouping; @@ -113,11 +114,7 @@ Beam_engraver::typeset_beam () void Beam_engraver::do_post_move_processing () { - if (reqs_drul_[START]) - { - prev_start_req_ = reqs_drul_[START]; - reqs_drul_ [START] =0; - } + reqs_drul_ [START] =0; } void @@ -165,7 +162,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) if (rhythmic_req->duration_.durlog_i_<= 2) { rhythmic_req->warning (_ ("stem doesn't fit in beam")); - reqs_drul_[LEFT]->warning (_ ("beam was started here")); + prev_start_req_->warning (_ ("beam was started here")); return; } diff --git a/lily/bow.cc b/lily/bow.cc index 146969f025..873613b121 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -92,6 +92,7 @@ Bow::do_height () const return iv; } +#if 0 Interval Bow::do_width () const { @@ -99,6 +100,7 @@ Bow::do_width () const Real dx = i.length(); return Interval (0, dx); } +#endif Array Bow::get_controls () const diff --git a/lily/dimension-cache.cc b/lily/dimension-cache.cc index 4d96032f69..6fb7842dcf 100644 --- a/lily/dimension-cache.cc +++ b/lily/dimension-cache.cc @@ -78,10 +78,15 @@ Dimension_cache::absolute_coordinate () const return r; } +/* + what *should* these functions *do* anyway. + */ Real Dimension_cache::relative_coordinate (Dimension_cache *d) const { Real r =0.0; + if (d == this) // UGH + return 0.0; for (Dimension_cache* c = parent_l_; c != d; diff --git a/lily/direction.cc b/lily/direction.cc index dcfb10339d..d073a901d8 100644 --- a/lily/direction.cc +++ b/lily/direction.cc @@ -1,6 +1,5 @@ - /* - direction.cc -- implement + direction.cc -- implement Direction source file of the GNU LilyPond music typesetter diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc index 000568dfa4..3cf5b3455c 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -63,10 +63,7 @@ Extender_engraver::do_removal_processing () if (extender_spanner_p_) { span_reqs_drul_[LEFT]->warning (_ ("unterminated extender")); - extender_spanner_p_->unlink (); - delete extender_spanner_p_; - extender_spanner_p_ = 0; - span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0; + extender_spanner_p_->set_bounds(RIGHT, get_staff_info ().command_l ()); } } diff --git a/lily/include/bar-script-engraver.hh b/lily/include/bar-script-engraver.hh index cfd2b7c266..7b9ddbfde7 100644 --- a/lily/include/bar-script-engraver.hh +++ b/lily/include/bar-script-engraver.hh @@ -13,7 +13,8 @@ #include "protected-scm.hh" /** - put stuff over or next to bars + put stuff over or next to bars. Examples: bar numbers, marginal notes, + rehearsal marks. */ class Bar_script_engraver : public Engraver { @@ -23,9 +24,18 @@ protected: Protected_scm visibility_lambda_; String type_; Axis axis_; - + bool hang_on_clef_b_; protected: + /** + Put the script on #it# + */ + void do_acknowledge_element (Item *it); + /** + Return non-nil if we want to hang something on this. + */ + Item *cast_to_interesting_item (Score_element*); Bar_script_engraver (); + virtual void do_creation_processing (); virtual void do_pre_move_processing (); virtual void acknowledge_element (Score_element_info); void create_items(Request*); diff --git a/lily/include/bow.hh b/lily/include/bow.hh index 359a03e545..ba7e20ff6e 100644 --- a/lily/include/bow.hh +++ b/lily/include/bow.hh @@ -31,7 +31,7 @@ public: protected: virtual Molecule* do_brew_molecule_p () const; - virtual Interval do_width () const; + // virtual Interval do_width () const; Array get_controls () const; virtual Array get_encompass_offset_arr () const; virtual Interval do_height () const; diff --git a/lily/include/cons.hh b/lily/include/cons.hh index 4b4de47e55..472f0a89a8 100644 --- a/lily/include/cons.hh +++ b/lily/include/cons.hh @@ -1,5 +1,5 @@ /* - cons.hh -- declare + cons.hh -- declare LISP like datatypes source file of the GNU LilyPond music typesetter @@ -9,6 +9,30 @@ #ifndef CONS_HH #define CONS_HH +#if 0 +template +class NCons +{ +public: + T car_; + U cdr_; + NCons (T t, U u) : car_ (t), cdr_ (u) {} + virtual ~NCons () {} +}; + +template +class Pointer_cons : public NCons +{ + Pointer_cons () : Cons (0,0){} + Pointer_cons (T t, Pointer_cons*c) + : Cons (t,c) + { + car_ = t; + next_ = c; + } +}; +#endif + template class Cons @@ -16,7 +40,6 @@ class Cons public: T * car_; Cons * next_; - virtual ~Cons (); Cons () { car_=0; next_ =0; @@ -26,6 +49,10 @@ public: car_ = t; next_ = c; } + virtual ~Cons () + { + delete next_; + } }; template @@ -39,5 +66,22 @@ public: virtual ~Killing_cons (); }; + +template +class Cons_list +{ +public: + Cons * head_; + Cons ** tail_; + Cons_list () { head_ =0; tail_ = &head_; } +}; + + +template +Cons_list copy_killing_cons_list (Cons *src); +template +Cons_list clone_killing_cons_list (Cons *src); + + #endif /* CONS_HH */ diff --git a/lily/include/killing-cons.tcc b/lily/include/killing-cons.tcc index 3c9a9710e7..d67e6b56b7 100644 --- a/lily/include/killing-cons.tcc +++ b/lily/include/killing-cons.tcc @@ -10,16 +10,43 @@ #ifndef KILLING_CONS_TCC #define KILLING_CONS_TCC + template -Cons::~Cons () +Killing_cons::~Killing_cons () { + delete car_; } template -Killing_cons::~Killing_cons () +Cons_list +copy_killing_cons_list (Cons *src) { - delete car_; - delete next_; + Cons_list kl; + + for (; src; src = src->next_) + { + T *t = new T(*src->car_); + *kl.tail_ = new Killing_cons (t, 0); + kl.tail_ = &(*kl.tail_)->next_; + } + + return kl; +} + +template +Cons_list +clone_killing_cons_list (Cons *src) +{ + Cons_list kl; + + for (; src; src = src->next_) + { + T *t = src->car_->clone (); + *kl.tail_ = new Killing_cons (t, 0); + kl.tail_ = &(*kl.pp)->next_; + } + + return kl; } diff --git a/lily/include/mark-engraver.hh b/lily/include/mark-engraver.hh index 952df5a356..314da60c17 100644 --- a/lily/include/mark-engraver.hh +++ b/lily/include/mark-engraver.hh @@ -12,7 +12,7 @@ #include "bar-script-engraver.hh" -/** +/**Print rehearsal marks. */ class Mark_engraver : public Bar_script_engraver { diff --git a/lily/include/molecule.hh b/lily/include/molecule.hh index de52b56e5f..461993e482 100644 --- a/lily/include/molecule.hh +++ b/lily/include/molecule.hh @@ -20,7 +20,7 @@ to the top, to the right, etc. */ class Molecule { // Protected_scm atom_list_; // change to List? - Killing_cons *atom_list_; + Cons *atom_list_; friend class Paper_outputter; public: Box dim_; diff --git a/lily/include/repeated-music-iterator.hh b/lily/include/repeated-music-iterator.hh index 79f3f3ae15..4b42751c0b 100644 --- a/lily/include/repeated-music-iterator.hh +++ b/lily/include/repeated-music-iterator.hh @@ -28,7 +28,6 @@ protected: private: void start_next_element (); - bool done_b_; int unfold_i_; Moment here_mom_; Music_iterator* repeat_iter_p_; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 6e94b024ce..affb2d0c0a 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -31,7 +31,6 @@ protected: virtual void do_add_processing (); virtual void do_pre_processing (); virtual void do_substitute_dependency (Score_element*, Score_element*); - virtual Interval do_width () const; Array get_rods () const; }; diff --git a/lily/include/tie.hh b/lily/include/tie.hh index c4488caef0..861c93fb4f 100644 --- a/lily/include/tie.hh +++ b/lily/include/tie.hh @@ -21,8 +21,6 @@ class Tie : public Bow public: Tie (); void set_head (Direction, Note_head*head_l); - - VIRTUAL_COPY_CONS(Score_element); bool same_pitch_b_; @@ -33,8 +31,7 @@ protected: virtual void do_post_processing (); virtual void set_default_dir(); virtual void do_substitute_dependency (Score_element*,Score_element*); - virtual Interval do_width () const; - Array get_rods () const; + virtual Array get_rods () const; Array get_controls () const; }; diff --git a/lily/lookup.cc b/lily/lookup.cc index bb6ac3fe89..dcbafb3975 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -101,6 +101,7 @@ Lookup::afm_find (String s, bool warn) const { warning (_f("Can't open `%s'\n", font_name_)); warning (_f("Search path %s\n", global_path.str ().ch_C())); + error (_f("Aborting")); } } Adobe_font_char_metric cm = afm_l_->find_char (s, warn); @@ -382,6 +383,7 @@ static Dict_initialiser cmr_init[] = { {"bold", "cmbx"}, {"dynamic", "feta-din"}, {"finger", "feta-nummer"}, + {"typewriter", "cmtt"}, {"italic", "cmti"}, {"roman", "cmr"}, {"large", "cmbx"}, diff --git a/lily/main.cc b/lily/main.cc index c619701663..9de98a4bc2 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -164,7 +164,7 @@ about () cout << _ ("GNU LilyPond is Free software, see --warranty"); cout << '\n'; cout << '\n'; - cout << _f ("Copyright (c) %s by", "1996, 1997, 1998"); + cout << _f ("Copyright (c) %s by", "1996--1999"); cout << '\n'; cout << " " + _ ("Han-Wen Nienhuys ") + "\n"; cout << " " + _ ("Jan Nieuwenhuizen ") + "\n"; @@ -177,7 +177,7 @@ notice () cout << '\n'; cout << _ ("GNU LilyPond -- The GNU Project music typesetter"); cout << '\n'; - cout << _f ("Copyright (c) %s by", "1996, 1997, 1998"); + cout << _f ("Copyright (c) %s by", "1996--1999"); cout << '\n'; cout << " " + _ ("Han-Wen Nienhuys ") + "\n"; cout << " " + _ ("Jan Nieuwenhuizen ") + "\n"; diff --git a/lily/molecule.cc b/lily/molecule.cc index caffe1a74c..142a7af91c 100644 --- a/lily/molecule.cc +++ b/lily/molecule.cc @@ -11,6 +11,7 @@ #include "molecule.hh" #include "atom.hh" #include "debug.hh" + #include "killing-cons.tcc" Box @@ -39,20 +40,21 @@ void Molecule::translate_axis (Real x,Axis a) { for (Cons * ptr = atom_list_; ptr; ptr = ptr->next_) - { ptr->car_->off_[a] += x; - } + dim_[a] += x; } void Molecule::add_molecule (Molecule const &m) { - for (Cons * ptr = m.atom_list_; ptr; ptr = ptr->next_) + Cons_list al (copy_killing_cons_list (m.atom_list_)); + + if (al.head_) { - add_atom (ptr->car_); + *al.tail_ = atom_list_; + atom_list_ = al.head_; } - dim_.unite (m.dim_); } diff --git a/lily/repeated-music-iterator.cc b/lily/repeated-music-iterator.cc index 15f3caf334..80007e5b13 100644 --- a/lily/repeated-music-iterator.cc +++ b/lily/repeated-music-iterator.cc @@ -19,7 +19,6 @@ Repeated_music_iterator::Repeated_music_iterator () alternative_iter_p_ = 0; here_mom_ = 0; unfold_i_ = -1; - done_b_ = false; } Repeated_music_iterator::~Repeated_music_iterator () @@ -38,7 +37,6 @@ Repeated_music_iterator::do_print () const void Repeated_music_iterator::construct_children () { - done_b_ = false; repeat_iter_p_ = get_iterator_p (dynamic_cast (music_l_)->repeat_p_); } @@ -51,20 +49,10 @@ Repeated_music_iterator::do_process_and_next (Moment m) if (!success) music_l_->warning ( _("No one to print a volta bracket")); } - - if (!ok ()) - start_next_element (); - - // if (!ok()) - // return; - if (repeat_iter_p_ && repeat_iter_p_->ok ()) repeat_iter_p_->process_and_next (m - here_mom_); - else if (alternative_iter_p_ && alternative_iter_p_->ok ()) - alternative_iter_p_->process_and_next (m - here_mom_); else - return; - + alternative_iter_p_->process_and_next (m - here_mom_); Music_iterator::do_process_and_next (m); } @@ -81,18 +69,34 @@ Repeated_music_iterator::next_moment () const return r->alternative_p_->length_mom () + here_mom_; } +/* + FIXME + */ bool Repeated_music_iterator::ok () const { - return !done_b_; + if (!repeat_iter_p_ && !alternative_iter_p_) + return false; + + if ((repeat_iter_p_ && repeat_iter_p_->ok ()) + || (alternative_iter_p_ && alternative_iter_p_->ok ())) + return true; + + Repeated_music_iterator *urg = (Repeated_music_iterator*)this; + // urg, we're const + urg->start_next_element (); + + return ok (); } + void Repeated_music_iterator::start_next_element () { Repeated_music const*rep =dynamic_cast (music_l_); - if (repeat_iter_p_) + + if (repeat_iter_p_) { assert (!repeat_iter_p_->ok ()); assert (!alternative_iter_p_); @@ -116,21 +120,17 @@ Repeated_music_iterator::start_next_element () unfold_i_--; repeat_iter_p_ = get_iterator_p (rep->repeat_p_); // urg, assume same length alternatives for now... - // here_mom_ += rep->alternative_p_->music_p_list_p_->top ()->length_mom (); +// here_mom_ += rep->alternative_p_->music_p_list_p_->top ()->length_mom (); /* URG this is *wrong* but at least it doesn't dump core when unfolding, the alternative (sequential) music shouldn't automatically move to the next alternative - + how to intercept this... - */ + */ here_mom_ += rep->alternative_p_->length_mom (); } } - - if ((!repeat_iter_p_ || !repeat_iter_p_->ok ()) - && (!alternative_iter_p_ || !alternative_iter_p_->ok ())) - done_b_ = true; } diff --git a/lily/slur.cc b/lily/slur.cc index 62cf0016ce..d0270a4fac 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -192,7 +192,7 @@ Slur::do_post_processing () if (d == LEFT) dy_f_drul_[u] += dir_ * internote_f; - dy_f_drul_[d] = dy_f_drul_[(Direction)-d]; + dy_f_drul_[d] = dy_f_drul_[u]; } } while (flip(&d) != LEFT); @@ -214,8 +214,10 @@ Slur::do_post_processing () if (sign (dy) != sign (note_dy)) { Real damp_f = paper ()->get_var ("slur_slope_follow_music_factor"); - Real dy = note_dy * damp_f; - Direction adjust_dir = (Direction)(- dir_ * sign (dy)); + Real realdy = note_dy * damp_f; + Direction adjust_dir = (Direction)(- dir_ * sign (realdy)); + if (!adjust_dir) + adjust_dir = -dir_; /* adjust only if no beam gets in the way */ @@ -224,7 +226,7 @@ Slur::do_post_processing () || (extrema[adjust_dir]->stem_l_->beams_i_drul_[-adjust_dir] < 1)) { dy_f_drul_[adjust_dir] = dy_f_drul_[-adjust_dir] - + 2 * adjust_dir * dy; + + 2 * adjust_dir * realdy; Real dx = notewidth_f / 2; if (adjust_dir != extrema[adjust_dir]->stem_l_->dir_) dx /= 2; @@ -239,12 +241,12 @@ Slur::do_post_processing () Real damp_f = paper ()->get_var ("slur_slope_damping"); Offset d_off = Offset (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT], dy_f_drul_[RIGHT] - dy_f_drul_[LEFT]); - d_off.x () += extent (X_AXIS).length (); + d_off[X_AXIS] += extent (X_AXIS).length (); - Real ratio_f = abs (d_off.y () / d_off.x ()); + Real ratio_f = abs (d_off[Y_AXIS] / d_off[X_AXIS]); if (ratio_f > damp_f) - dy_f_drul_[(Direction)(- dir_ * sign (d_off.y ()))] += - dir_ * (ratio_f - damp_f) * d_off.x (); + dy_f_drul_[(Direction)(- dir_ * sign (d_off[Y_AXIS]))] += + dir_ * (ratio_f - damp_f) * d_off[X_AXIS]; } Array @@ -255,7 +257,7 @@ Slur::get_encompass_offset_arr () const Real internote = paper ()->internote_f (); Offset left = Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]); - left.x () += encompass_arr_[0]->stem_l_->hpos_f (); + left[X_AXIS] += encompass_arr_[0]->stem_l_->hpos_f (); /* @@ -270,19 +272,19 @@ Slur::get_encompass_offset_arr () const */ if (dir_ != encompass_arr_[0]->stem_l_->dir_) - left.x () += - 0.5 * notewidth * encompass_arr_[0]->stem_l_->dir_ + left[X_AXIS] += - 0.5 * notewidth * encompass_arr_[0]->stem_l_->dir_ + gap; else if (encompass_arr_[0]->stem_l_->dir_ == UP) - left.x () -= notewidth; + left[X_AXIS] -= notewidth; if ((dir_ == encompass_arr_[0]->stem_l_->dir_) && (encompass_arr_[0]->stem_l_->dir_ == DOWN)) - left.y () -= internote * encompass_arr_[0]->stem_l_->dir_; + left[Y_AXIS] -= internote * encompass_arr_[0]->stem_l_->dir_; /* */ Offset d = Offset (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT], dy_f_drul_[RIGHT] - dy_f_drul_[LEFT]); - d.x () += extent (X_AXIS).length (); + d[X_AXIS] += extent (X_AXIS).length (); int first = 1; int last = encompass_arr_.size () - 1; @@ -303,19 +305,20 @@ Slur::get_encompass_offset_arr () const Encompass_info info (encompass_arr_[i], dir_); notes.push (info.o_ - left); } - Encompass_info info (encompass_arr_[encompass_arr_.size () - 1], dir_); - + Encompass_info info (encompass_arr_.top (), dir_); + // [encompass_arr_.size () - 1] + // urg: Slur* urg = (Slur*)this; urg->interstaff_f_ = info.interstaff_f_; - d.y () += interstaff_f_; + d[Y_AXIS] += interstaff_f_; // prebreak if (interstaff_f_ && (encompass_arr_.top () != spanned_drul_[RIGHT])) { Encompass_info info (encompass_arr_[encompass_arr_.size () - 1], dir_); - d.y () -= info.o_.y () - interstaff_f_; + d[Y_AXIS] -= info.o_[Y_AXIS] - interstaff_f_; } notes.push (d); @@ -323,13 +326,6 @@ Slur::get_encompass_offset_arr () const return notes; } -Interval -Slur::do_width () const -{ - Real min_f = paper ()->get_var ("slur_x_minimum"); - Interval width_int = Bow::do_width (); - return width_int.length () < min_f ? Interval (0, min_f) : width_int; -} Array Slur::get_rods () const @@ -337,7 +333,8 @@ Slur::get_rods () const Array a; Rod r; r.item_l_drul_ = spanned_drul_; - r.distance_f_ = do_width ().length (); + r.distance_f_ = paper ()->get_var ("slur_x_minimum"); + a.push (r); return a; } diff --git a/lily/spanner.cc b/lily/spanner.cc index cf4932b47f..c2358c2cb9 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -146,6 +146,8 @@ Spanner::output_processing () Interval Spanner::do_width() const { + + Real l = spanned_drul_[LEFT]->absolute_coordinate (X_AXIS); Real r = spanned_drul_[RIGHT]->absolute_coordinate (X_AXIS); diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index 7363f07a99..ce66cb5265 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -23,10 +23,8 @@ Staff_margin_engraver::Staff_margin_engraver () } - /* TODO - fix alignment/support should be able to set whole paragraph (multiple lines, centre) to left (right?) of staff, e.g.: @@ -37,13 +35,10 @@ Staff_margin_engraver::Staff_margin_engraver () |______________ */ void -Staff_margin_engraver::acknowledge_element (Score_element_info i) +Staff_margin_engraver::acknowledge_element (Score_element_info inf) { - Bar * b =dynamic_cast (i.elem_l_); - if (!b) - return ; - - if (i.origin_grav_l_arr_.size() != 1) + Item *i = cast_to_interesting_item (inf.elem_l_); + if (!i || inf.origin_grav_l_arr_.size() != 1) return; @@ -58,7 +53,7 @@ Staff_margin_engraver::acknowledge_element (Score_element_info i) create_items (0); text_p_->text_str_ = long_str; staff_side_p_->dir_ = LEFT; - Bar_script_engraver::acknowledge_element(i); + Bar_script_engraver::do_acknowledge_element (i); } diff --git a/lily/template4.cc b/lily/template4.cc deleted file mode 100644 index 1d67bee14d..0000000000 --- a/lily/template4.cc +++ /dev/null @@ -1,25 +0,0 @@ -/* - template4.cc -- instantiate Link_list baseclass. - - source file of the GNU LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ -#if 0 -#ifndef __CYGWIN32__ -#include "proto.hh" -#include "pcursor.hh" -#include "plist.hh" -#include "spanner.hh" -#include "audio-column.hh" -#include "audio-item.hh" -#include "audio-staff.hh" -#include "p-col.hh" -#include "p-score.hh" -#include "cursor.tcc" -#include "list.tcc" -#include "pcursor.tcc" -#include "plist.tcc" - -#endif -#endif diff --git a/lily/tie.cc b/lily/tie.cc index e559e8ed0e..20b63a8cf9 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -151,13 +151,15 @@ Tie::do_substitute_dependency (Score_element*o, Score_element*n) head_l_drul_[RIGHT] = new_l; } +#if 0 Interval Tie::do_width () const { - Real min_f = paper ()->get_var ("tie_x_minimum"); + Real min_f = Interval width_int = Bow::do_width (); return width_int.length () < min_f ? Interval (0, min_f) : width_int; } +#endif Array Tie::get_rods () const @@ -165,7 +167,7 @@ Tie::get_rods () const Array a; Rod r; r.item_l_drul_ = spanned_drul_; - r.distance_f_ = do_width ().length (); + r.distance_f_ = paper ()->get_var ("tie_x_minimum"); a.push (r); return a; } diff --git a/ly/paper16.ly b/ly/paper16.ly index aa15beff32..37f9b0fabc 100644 --- a/ly/paper16.ly +++ b/ly/paper16.ly @@ -18,7 +18,8 @@ paper_sixteen = \paper { font_finger = 4.; font_volta = 5.; font_number = 8.; - font_mark = 10.; + font_dynamic = 10.; + font_mark = 10.; arithmetic_basicspace = 2.; arithmetic_multiplier = 4.8\pt; diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index fa80aa5853..cebb5eb414 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,15 +1,15 @@ Begin3 Titel: LilyPond -Versie: 1.1.28 -Inschrijf datum: 08FEB99 +Versie: 1.1.30 +Inschrijf datum: 15FEB99 Beschrijving: @FLAPTEKST@ Trefwoorden: muziek typezetten midi notatie Auteur: hanwen@stack.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 770k lilypond-1.1.28.tar.gz + 770k lilypond-1.1.30.tar.gz Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.28.tar.gz + 770k lilypond-1.1.30.tar.gz Copi-eer voorwaarden: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 81f613aba6..b1a52cdca6 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 1.1.28 -Entered-date: 08FEB99 +Version: 1.1.30 +Entered-date: 15FEB99 Description: LilyPond is the GNU Project music typesetter. This program can print beautiful sheet music from a music definition file. It can also play @@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 770k lilypond-1.1.28.tar.gz + 770k lilypond-1.1.30.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.28.tar.gz + 770k lilypond-1.1.30.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index a3108d15f9..5cd36c15df 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.1.28 +Version: 1.1.30 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.28.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.30.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/mutopia/W.A.Mozart/GNUmakefile b/mutopia/W.A.Mozart/GNUmakefile index d8a0eebd19..7c436a1619 100644 --- a/mutopia/W.A.Mozart/GNUmakefile +++ b/mutopia/W.A.Mozart/GNUmakefile @@ -2,7 +2,7 @@ depth = ../.. -examples=cadenza +examples=# cadenza LOCALSTEPMAKE_TEMPLATES=mutopia include $(depth)/make/stepmake.make diff --git a/scm/lily.scm b/scm/lily.scm index 73a0dc4ef4..378fa22ebb 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -5,7 +5,7 @@ ; (c) 1998 Jan Nieuwenhuizen -(debug-enable 'backtrace) +;(debug-enable 'backtrace) ;;; library funtions (define -- 2.39.5