]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.30 release/1.1.30
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 15 Feb 1999 14:43:56 +0000 (15:43 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 15 Feb 1999 14:43:56 +0000 (15:43 +0100)
38 files changed:
Documentation/topdocs/index.yo
NEWS
TODO
VERSION
input/bugs/staff-side-slur.ly [deleted file]
input/test/GNUmakefile
input/test/grace.ly
input/test/staff-side-slur.ly [new file with mode: 0644]
lily/bar-script-engraver.cc
lily/beam-engraver.cc
lily/bow.cc
lily/dimension-cache.cc
lily/direction.cc
lily/extender-engraver.cc
lily/include/bar-script-engraver.hh
lily/include/bow.hh
lily/include/cons.hh
lily/include/killing-cons.tcc
lily/include/mark-engraver.hh
lily/include/molecule.hh
lily/include/repeated-music-iterator.hh
lily/include/slur.hh
lily/include/tie.hh
lily/lookup.cc
lily/main.cc
lily/molecule.cc
lily/repeated-music-iterator.cc
lily/slur.cc
lily/spanner.cc
lily/staff-margin-engraver.cc
lily/template4.cc [deleted file]
lily/tie.cc
ly/paper16.ly
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
mutopia/W.A.Mozart/GNUmakefile
scm/lily.scm

index 8ebbc3d8117601ee084779ce397d21ebf55044ca..ffec8796ed15f42448eae98ec1d3b01b08edaf4c 100644 (file)
@@ -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 c0d39a6dcf7104641acc44c1e76d084a996c0136..0db7718f1c0950d0c97c05dba94f8a7c036a5d44 100644 (file)
--- 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 596c8df7a2164683e95928419b5a3f28d93e25d8..f31959ee40a87f4217c8cb7ac45009813e36538a 100644 (file)
--- 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 f34be36d3f32563b8664c57a7b181cf817f74fc9..b14c758bed0de2d74d2b5f780d59bf80b4bccf1c 100644 (file)
--- 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/bugs/staff-side-slur.ly b/input/bugs/staff-side-slur.ly
deleted file mode 100644 (file)
index 1a3cb5c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-\score{
-       \type Staff \notes\relative c''{
-               % length matters...
-%              \property Staff.instrument = "Tot"
-               \property Staff.instrument = "ToetersToetersToeters"
-               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";
-               }
-       }
-}
-
index 193b5b94fc808efebe7274bc9ccb89059452dedc..e4059cecb9a789aa0949d07ebb173d08cdd1192b 100644 (file)
@@ -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 
index af7f830ba4dcdac6cdbd30104c27253d33650b20..5d625966ca6c95294de424c8e71cdfa7292b6d59 100644 (file)
@@ -18,6 +18,7 @@
        >
        \paper {
                linewidth = 120.0\mm;
+               \translator { \VoiceContext  }
        }
 }
 
diff --git a/input/test/staff-side-slur.ly b/input/test/staff-side-slur.ly
new file mode 100644 (file)
index 0000000..d099cf6
--- /dev/null
@@ -0,0 +1,19 @@
+\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";
+                       marginHangOnClef = 1;
+               }
+       }
+}
+
index e197da6a9c934a38ec0f9622ce30d391c401d17f..63e6155438b8bda8eb1cec69043ce6b7ebab02da 100644 (file)
@@ -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<Bar*> (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<Clef_item*> (e);
+    }
+  else
+    {
+      i = dynamic_cast<Bar*> (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);
     }
 }
 
index 32273b73397e177bc674bbeb65771a552c610f46..d855e41dea98623217ba935724bc90f8e575d63c 100644 (file)
@@ -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;
          }
 
index 146969f025a386cde91100d1ef6d26f3c9b6a85d..873613b121babb52ff21c0bc74502914e388e445 100644 (file)
@@ -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<Offset>
 Bow::get_controls () const
index 4d96032f6949f97fdb4ead964e3f39462ac48dcb..6fb7842dcf6325b4dbc88137f96b5d8dd78ed8e1 100644 (file)
@@ -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;
index dcfb10339dfdd5413efc87e7568262d41090a59f..d073a901d8a90a5b775281c733e8c40cecf0de1b 100644 (file)
@@ -1,6 +1,5 @@
-
 /*   
-  direction.cc --  implement 
+  direction.cc --  implement Direction
   
   source file of the GNU LilyPond music typesetter
   
index 000568dfa4b779990229e11798911d62f20235c8..3cf5b3455c9c487e484a3c40e90b0332a2a14ac0 100644 (file)
@@ -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 ());
     }
 }
 
index cfd2b7c266c7a4d3e68e2584bf44abe4ce10f800..7b9ddbfde7d3ac8ca1f2e3d13c9ffe2c89769145 100644 (file)
@@ -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*);
index 359a03e545c157bfce21edb46400cc76af838aed..ba7e20ff6eaf886c94f4a6ce96aecab1924803cb 100644 (file)
@@ -31,7 +31,7 @@ public:
 
 protected:
   virtual Molecule* do_brew_molecule_p () const;
-  virtual Interval do_width () const;    
+  //  virtual Interval do_width () const;    
   Array<Offset> get_controls () const;
   virtual Array<Offset> get_encompass_offset_arr () const;
   virtual Interval do_height () const;
index 4b4de47e55c4e3d6db22e9008b13629a1b6fa79a..472f0a89a8ca05e98a96349e2221bddb73f0f1b4 100644 (file)
@@ -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 T, class U>
+class NCons
+{
+public:
+  T car_;
+  U cdr_;
+  NCons (T t, U u) : car_ (t), cdr_ (u) {}
+  virtual ~NCons () {}
+};
+
+template<class T>
+class Pointer_cons : public NCons<T, NCons*>
+{
+  Pointer_cons () : Cons<T, Cons*> (0,0){}
+  Pointer_cons (T t, Pointer_cons<T>*c)
+    : Cons<T, Cons*> (t,c)
+    {
+      car_ = t;
+      next_ = c;
+    }
+};
+#endif 
+
 
 template<class T>
 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<class T>
@@ -39,5 +66,22 @@ public:
   virtual ~Killing_cons ();
 };
 
+
+template<class T>
+class Cons_list
+{
+public:
+  Cons<T> * head_;
+  Cons<T> ** tail_;
+  Cons_list () { head_ =0; tail_ = &head_; }
+};
+
+
+template<class T>
+Cons_list<T> copy_killing_cons_list (Cons<T> *src);
+template<class T>
+Cons_list<T> clone_killing_cons_list (Cons<T> *src);
+
+
 #endif /* CONS_HH */
 
index 3c9a9710e7638dc2d9dad3cef70ecebe67309d27..d67e6b56b787183e93a5c01d3b5cab28c86af5f4 100644 (file)
 #ifndef KILLING_CONS_TCC
 #define KILLING_CONS_TCC
 
+
 template<class T>
-Cons<T>::~Cons ()
+Killing_cons<T>::~Killing_cons ()
 {
+  delete car_;
 }
 
 template<class T>
-Killing_cons<T>::~Killing_cons ()
+Cons_list<T>
+copy_killing_cons_list (Cons<T> *src)
 {
-  delete car_;
-  delete next_;
+  Cons_list<T> kl;
+
+  for (; src; src  = src->next_)
+    {
+      T *t = new T(*src->car_);
+      *kl.tail_ = new Killing_cons<T> (t, 0);
+      kl.tail_ = &(*kl.tail_)->next_;
+    }
+  
+  return kl;
+}
+
+template<class T>
+Cons_list<T>
+clone_killing_cons_list (Cons<T> *src)
+{
+  Cons_list<T> kl;
+
+  for (; src; src  = src->next_)
+    {
+      T *t = src->car_->clone ();
+      *kl.tail_ = new Killing_cons<T> (t, 0);
+      kl.tail_ = &(*kl.pp)->next_;
+    }
+  
+  return kl;
 }
 
 
index 952df5a3565da60c0423d0305a4070189cec162c..314da60c17937682c63b52e350e85ca42cc1e804 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "bar-script-engraver.hh"
 
-/**
+/**Print rehearsal marks.
   */
 class Mark_engraver : public Bar_script_engraver 
 {
index de52b56e5f417ff413cc4b222a194faabcb39d35..461993e482d2f1921a4e3253325a8fb582c7bde7 100644 (file)
@@ -20,7 +20,7 @@
     to the top, to the right, etc.  */
 class Molecule {
   //  Protected_scm atom_list_;        // change to List<Atom>?
-  Killing_cons<Atom> *atom_list_;
+  Cons<Atom> *atom_list_;
   friend class Paper_outputter;
 public:
   Box dim_;
index 79f3f3ae150ee7505645d3109bf1270f82f99d41..4b42751c0b457ea5d41e246db13a40ab8b6610d5 100644 (file)
@@ -28,7 +28,6 @@ protected:
 private:
   void start_next_element ();
 
-  bool done_b_;
   int unfold_i_;
   Moment here_mom_;
   Music_iterator* repeat_iter_p_;
index 6e94b024cec738ab3ef27d342993c447eecffc3b..affb2d0c0a9b1516d23b13550f5a655b07248db4 100644 (file)
@@ -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<Rod> get_rods () const;
 };
 
index c4488caef0c4b160093aa04e8e139e2e0bcb1972..861c93fb4f8ea5a6d2b46ca6d61fbfcc61bfc9e1 100644 (file)
@@ -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<Rod> get_rods () const;
+  virtual Array<Rod> get_rods () const;
 
   Array<Offset> get_controls () const;
 };
index bb6ac3fe8917917ddc1ae28b84be354286dfdca1..dcbafb39755c466843a26141766fe99a64929e56 100644 (file)
@@ -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<char const*> cmr_init[] = {
   {"bold", "cmbx"},
   {"dynamic", "feta-din"},
   {"finger", "feta-nummer"},
+  {"typewriter", "cmtt"},
   {"italic", "cmti"},
   {"roman", "cmr"},
   {"large", "cmbx"},
index c6197016639ad77b4787e759ca28a15601022e31..9de98a4bc2b749c4169789b2df02625bdc064a8d 100644 (file)
@@ -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 <hanwen@cs.uu.nl>") + "\n";
   cout << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\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 <hanwen@cs.uu.nl>") + "\n";
   cout << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
index caffe1a74cd87c690cf087c717713cb7d68d1dcc..142a7af91cfa6bfbd6b02f3f59243b1a01ba2be5 100644 (file)
@@ -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<Atom> *  ptr = atom_list_; ptr; ptr = ptr->next_)
-    {
       ptr->car_->off_[a] += x;
-    }
+
   dim_[a] += x;
 }
 
 void
 Molecule::add_molecule (Molecule const &m)
 {
-  for (Cons<Atom> *  ptr = m.atom_list_; ptr; ptr = ptr->next_)
+  Cons_list<Atom> 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_);
 }
 
index 15f3caf3346f9252981cfdf718f4c143a1bf7fe4..80007e5b131874673eaf172fdbc812b898ed1e3a 100644 (file)
@@ -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<Repeated_music const*> (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<Repeated_music const*> (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;
 }
 
index 62cf0016ce91d97130ea40ce416ea3c1bcd366e7..d0270a4facd0b796703960a5068960c39de62182 100644 (file)
@@ -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<Offset>
@@ -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 ();
 
   /*
     <URG>
@@ -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_;
   /* </URG> */
 
   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<Rod>
 Slur::get_rods () const
@@ -337,7 +333,8 @@ Slur::get_rods () const
   Array<Rod> 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;
 }
index cf4932b47f2acc7a3da40fe81ce854dab75cc398..c2358c2cb97dafd3c3add50ad10541e504c68e1a 100644 (file)
@@ -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);
 
index 7363f07a992258e1c6778585bc5ac04f35fc7932..ce66cb52651c700ef70d4d0da0ce380126f3b018 100644 (file)
@@ -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<Bar *> (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 (file)
index 1d67bee..0000000
+++ /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 <hanwen@cs.uu.nl>
-*/
-#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
index e559e8ed0eb94800c9b64c5493ac5e5e70c3d5e5..20b63a8cf99f8399175825e2af617d51b447dfda 100644 (file)
@@ -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<Rod>
 Tie::get_rods () const
@@ -165,7 +167,7 @@ Tie::get_rods () const
   Array<Rod> 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;
 }
index aa15beff32f160572dfae3ea41bcf10bbd3e0da5..37f9b0fabcda8240db2c9f18be9922b5dce0a3c8 100644 (file)
@@ -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;
index fa80aa5853720ebd120d8a4853c39f4b7e9a0e38..cebb5eb414c85cd9ddbfb0e1d3fa4d4dfe7abc3e 100644 (file)
@@ -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
index 81f613aba68662dd75fdea8f770a9cce24a7958b..b1a52cdca6e32989831415c33f1a11aad62bd77b 100644 (file)
@@ -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
index a3108d15f9f8f18f9826005f0603bed562bf21c0..5cd36c15df179b2f14d47afbe0ff6f27e5561094 100644 (file)
@@ -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 <hanwen@cs.uu.nl>
index d8a0eebd19f020ede12d9b48cbead92e7bef7c6a..7c436a161970fe6497cc345289273d8f715892f7 100644 (file)
@@ -2,7 +2,7 @@
 
 depth = ../..
 
-examples=cadenza
+examples=cadenza
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make
index 73a0dc4ef493e2e7c1ec217c70d24dcad4653b20..378fa22ebb985ecaf139ca9b6313a233d7171190 100644 (file)
@@ -5,7 +5,7 @@
 ; (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
-(debug-enable 'backtrace)
+;(debug-enable 'backtrace)
 
 ;;; library funtions
 (define