]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.51 release/1.3.51
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 16 May 2000 09:02:27 +0000 (11:02 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 16 May 2000 09:02:27 +0000 (11:02 +0200)
======

* Item cleanups.  Copying items and rearranging pointers are done in
separate passes, which makes the code cleaner. This fixes a problem
with some items not disappearing from hara-kiri staffs.

* Use Scheme for Key_item data members.

* Don't use regex in chord-names.scm under windows; hybrid chordnames
  user+calculated will be partly broken.

1.3

46 files changed:
CHANGES
Documentation/topdocs/index.tely
VERSION
flower/polynomial.cc
input/bugs/clef.sly [deleted file]
input/bugs/die-staff.ly [new file with mode: 0644]
input/bugs/p.ly [deleted file]
input/bugs/ps.ly [deleted file]
input/test/keys.ly
lily/bezier.cc
lily/box.cc [new file with mode: 0644]
lily/boxes.cc [deleted file]
lily/clef-engraver.cc
lily/collision-engraver.cc
lily/collision.cc
lily/dots.cc
lily/gourlay-breaking.cc
lily/hara-kiri-line-group-engraver.cc [deleted file]
lily/include/bow.hh
lily/include/breathing-sign.hh
lily/include/clef-item.hh
lily/include/collision.hh
lily/include/dots.hh
lily/include/hara-kiri-vertical-group-spanner.hh
lily/include/item.hh
lily/include/key-item.hh
lily/include/local-key-item.hh
lily/include/mark-engraver.hh [deleted file]
lily/include/note-head.hh
lily/include/rest.hh
lily/include/rhythmic-head.hh
lily/include/single-malt-grouping-item.hh
lily/include/super-element.hh [deleted file]
lily/item.cc
lily/key-item.cc
lily/line-of-score.cc
lily/multi-measure-rest.cc
lily/score-element.cc
lily/separating-group-spanner.cc
lily/single-malt-grouping-item.cc
lily/spacing-spanner.cc
lily/spanner.cc
ly/params.ly
make/out/lilypond.lsm
make/out/lilypond.spec
scm/lily.scm

diff --git a/CHANGES b/CHANGES
index 28a0e7d45b12237c298c28416af8ab8aa3fae9d3..af80dfea24e52cf3b1aee8658d7bc1d01f6e827f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,11 +1,18 @@
-1.3.50.jcn1
-===========
+1.3.50
+======
+
+* Item cleanups.  Copying items and rearranging pointers are done in
+separate passes, which makes the code cleaner. This fixes a problem
+with some items not disappearing from hara-kiri staffs.
+
+* Use Scheme for Key_item data members. 
 
 * Don't use regex in chord-names.scm under windows; hybrid chordnames
   user+calculated will be partly broken.
 
-1.3.49.hwn2
-===========
+
+1.3.50
+======
 
 * Junked Shift_tuple from collision; Now it uses SCM.
 
index d8b387b2af70921102029a3472e89eee436e9c46..7b4e57eb41c0281ed1f51343b3fddbace0fd94ff 100644 (file)
@@ -67,7 +67,7 @@ almost no restrictions.  LilyPond is part of the
 The version numbers are in Linux-kernel style: even numbered versions
 are `stable'. The webpages for the stable version (1.2) reside at GNU,
 here: @uref{http://www.gnu.org/software/lilypond}. Big enhancements go
-into the latest odd numbered version (1.3); its  webpages are on 
+into the latest odd numbered version (1.3), whose webpages are on 
  @uref{http://www.cs.uu.nl/~hanwen/lilypond/,Han-Wen's site}.
 
 If want more information, you can browse the
@@ -124,7 +124,7 @@ Installing and compiling requires many additional packages, which are
 listed in the @uref{Documentation/topdocs/out-www/INSTALL.html,
 installation instructions}.
 
-There are binaries available, but alas they are not updated for every version released.
+Binaries are available, but are not updated for every version released.
 @itemize @bullet
 @item RedHat-i386 and Linuxppc RPMs:
 @uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/}
@@ -149,10 +149,10 @@ Frequently Asked Questions} first.)
     subscribe: send mail with subject "subscribe" to
     info-gnu-music-request@@gnu.org.  
 
-    As this list is moderated, normal people should ask to
+    This list is moderated; ask 
     @email{drl@@gnu.org, David R. Linn} or
-    @email{hanwen@@cs.uu.nl, Han-Wen} to forward announces instead of
-    sending it to info-gnu-music@@gnu.org
+    @email{hanwen@@cs.uu.nl, Han-Wen} to send announcements for this
+list.
 
    This list is archived at 
     @uref{http://www.mail-archive.com/info-gnu-music@@gnu.org}
diff --git a/VERSION b/VERSION
index 4be4d9c8ad5923474c24a6ac53c3e54e18cf8d00..b5601a078645337f192f4db8fa8aefe124cb2b85 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=50
-MY_PATCH_LEVEL=jcn1
+PATCH_LEVEL=51
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 4e7fd944c78b4731c3cde7d74abee41dbdafbf0b..50749f1fe4a1f99272f930a0a4d3a03fe26eb1fe 100644 (file)
@@ -276,7 +276,9 @@ Polynomial::solve_cubic()const
     {
       sol[i] -= sub;
 
+#ifdef PARANOID
       assert (fabs (eval (sol[i]) ) < 1e-8);
+#endif
     }
   
   return sol;
diff --git a/input/bugs/clef.sly b/input/bugs/clef.sly
deleted file mode 100644 (file)
index 8eb1045..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-\clef "violin"; c' c \clef "alto"; d, d 
-\clef "violin"; c' c \clef "alto"; d, d 
diff --git a/input/bugs/die-staff.ly b/input/bugs/die-staff.ly
new file mode 100644 (file)
index 0000000..026b974
--- /dev/null
@@ -0,0 +1,19 @@
+
+\score {
+  {
+    \context Staff = i {
+      \notes { a' b' c' d' }
+    }
+
+    \break
+
+    \context PianoStaff <
+      \context Staff = i {
+        \notes { a' b' c' d' }
+      }
+      \context Staff = ii {
+        \notes { \clef "bass"; a b c d }
+      }
+    >
+  }
+}
diff --git a/input/bugs/p.ly b/input/bugs/p.ly
deleted file mode 100644 (file)
index 416e641..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-
-praeludium_commands = \notes {
-  \time 4/4;
-   \key e;
-}
-
-praeludium_right =  \notes {
-  \$praeludium_commands
-  \clef violin;
-
-  % 13 -- how to type -- where to split -- this more neatly?
-  \context Staff <
-    \context Voice = I \relative c'' { \stemup r4 dis4 e4. e8 ~ |
-      \shifton e4 [d8 fis8] \shiftoff gis4 ~ [gis8 fis16 e ] |
-      fis4 ~ [fis8 e16 dis] e4 r8 e8 }
-    \context Voice = III \relative c'' { \stemup \shifton r4 bis cis \shiftoff cis |
-      a' ~ [a16 gis a b] \shifton dis,4 cis ~ |
-      [cis8 dis16 ais] bis4 cis r8 b }
-    \context Voice = IV \relative c'' {
-
-      %\stemup
-      %{
-      this is a diversion from the Griepenkerl/Keller
-       edition; a hack to avoid collisions
-      %}
-      \stemdown
-      \shifton s4 gis }
-      
-    \context Voice =  II \relative c' { \stemdown
-%      \shifton       % idem
-
-      r4 fis \shiftoff gis gis |
-      a4. cis8 gis2 |
-      fis4 gis gis r8 e8 }
-  > |
-  % 16
-}
-
-praeludium_left = \notes \relative c {
-  \$praeludium_commands
-  \clef bass;
-
-  % 13
-  \context Staff <
-    \context VoiceTwo { r4 }
-    \context VoiceOne { \stemup s4 dis' cis cis ~ |
-      [cis8 a d cis] [bis gis] cis4 |
-      dis2 cis4 r8 cis }
-    \context VoiceOne { \stemup bis2 }
-    \context VoiceThree { \stemup \shifton r4 gis ~ [gis8 gis] ~ \stemdown \shiftoff gis4 |
-      a4. fis8 gis4. a8 ~ |
-      a4 gis4 gis r8 gis }
-%    { \stemup \shifton s4 fis4 e}
-% a quick hack to avoid some collisons
-    \context VoiceFour { \stemdown \shifton s4 fis4 e}
-    \context VoiceTwo { \stemdown s4 dis4 cis4 }
-  > |
-  %16
-}
-
-praeludium_pedal = \notes \relative c{
-  \$praeludium_commands  
-  \clef bass;
-
-  %13
-  r4 fis,4-\ltoe e4.-\lheel e'8-\rheel | 
-  fis4.-\rtoe fis8-\rtoe fis4-\rtoe [e8-\ltoe a-\rtoe] | 
-  dis,4-\ltoe gis-\rtoe [cis,8-\ltoe b!-\lheel ais-\rtoe gis-\ltoe] |
-  %16
-}
-
-
-fugaII_commands = \notes{
-  \time3/4;
-  \key e;              % E-major
-}
-
-fugaII_right = \notes   \relative c''   {
-  \$fugaII_commands
-  \clef violin;
-
-  %15
-  \context Staff <
-    \context Voice = VA { \stemup [b8 fis8] b4 }
-    \context Voice = VB {  \stemdown fis2 }
-  >
-
-  % Wadieuw
-  \context Staff \notes\relative c''<
-       \context Voice=one {
-         \property Voice.horizontalNoteShift=0
-         \property Voice.verticalDirection=1 
-         e4 
-       }
-       \context Voice=two {
-         \property Voice.verticalDirection=1 
-         \property Voice.horizontalNoteShift=1
-         cis
-       }
-       \context Voice=three {
-         \property Voice.horizontalNoteShift=2
-         \property Voice.verticalDirection=1 
-         ais
-       }
-       \context Voice=four {
-         \property Voice.verticalDirection=-1 
-         \property Voice.horizontalNoteShift=-1
-         fis
-       }
-  >
-
-    %16
-    \context Staff <
-      \context VoiceOne {  dis2 dis4 |
-      cis2 cis4 |
-      b4. [cis8 dis e] }
-    \context VoiceThree {  \stemup \shifton [b8 fis] b2 ~ |
-      [b8 a!16 gis] a2 ~ |
-      a4 gis2 }
-    \context VoiceTwo {  \stemdown fis2. ~ |
-      fis ~ |
-      fis4 e2 }
-  > |
-  %19
-}
-
-fugaII_left = \notes {
-  \$fugaII_commands  
-  \clef bass;
-
-  %15
-  \context Staff < 
-    \context VoiceTwo { \stemdown b2 \stemup ais4 |
-      b2 b4 }
-    \context VoiceTwo { \stemdown s2 e4 |
-      fis2 fis4 }
-  >
-  \stemdown cis2 e4 |
-  b4. b8 b4 |
-  %19
-}
-
-fugaII_pedal = \notes \relative c {
-  \$fugaII_commands  
-  \clef bass;
-
-  %15
-  dis4.-\ltoe e8-\rtoe cis4 |
-  b4.-\lheel [cis8-\ltoe dis8-\rtoe e8-\rheel] |
-  fis4.-\rtoe [e8-\rheel dis8-\rtoe cis8-\ltoe] |
-  dis4-\rtoe e4-\rheel e,4-\ltoe |
-  %19
-}
-
-breakmusic = \notes { 
-  %\time4/4;
-  r1
-}
-
-
-% these should be two separate scores...
-\score{
-  \context Score <
-    \context PianoStaff <
-      \context Staff = treble {
-        \praeludium_right \breakmusic \fugaII_right }
-      \context Staff = bass { 
-        \praeludium_left \breakmusic \fugaII_left }
-    > 
-    \context Staff = pedal {
-      \praeludium_pedal \breakmusic \fugaII_pedal }
-  >
-
-  \paper {
-    \translator {
-    \VoiceContext
-    \name "VoiceOne";
-    verticalDirection = "1";
-    }
-    \translator {
-    \VoiceContext
-    \name "VoiceTwo";
-    verticalDirection = "-1";
-    }
-    \translator {
-    \VoiceContext
-    \name "VoiceThree";
-    verticalDirection = "1";
-    horizontalNoteShift = "1";
-    }
-    \translator {
-    \VoiceContext
-    \name "VoiceFour";
-    verticalDirection = "-1";
-    horizontalNoteShift = "1";
-    }
-   \translator { 
-     \StaffContext 
-     
-     \accepts VoiceFour;
-     \accepts VoiceThree;
-     \accepts VoiceTwo;
-     \accepts VoiceOne;
-   }
-   \translator { \OrchestralScoreContext }
-castingalgorithm = \Wordwrap;
-  }
-
-  \midi {
-    \tempo 4 =96; }
-}
diff --git a/input/bugs/ps.ly b/input/bugs/ps.ly
deleted file mode 100644 (file)
index 026b974..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-\score {
-  {
-    \context Staff = i {
-      \notes { a' b' c' d' }
-    }
-
-    \break
-
-    \context PianoStaff <
-      \context Staff = i {
-        \notes { a' b' c' d' }
-      }
-      \context Staff = ii {
-        \notes { \clef "bass"; a b c d }
-      }
-    >
-  }
-}
index 99bf45142da5302ff3d6cab9fb73cb391cdd2eb7..0d49507e5f21834a4ca0582876409cd84d9ed7ca 100644 (file)
@@ -4,9 +4,9 @@
 test key itemv breaking
 %}
 \score {
-  \notes
+  \notes \relative c''
   {
-    \key bes; c1 \key c \minor;  c1
+    \key bes; c2 \key c \minor;  c2
     \break
     \key bes \major; c1 \key d;\break c1
   }
index 72bd0e0f46aafbb9790437fdab209858fd71544a..e7f02063f6a86696162a6c0a7b5aea3b4ae499a1 100644 (file)
@@ -87,9 +87,10 @@ Bezier::curve_point (Real t)const
        one_min_tj /= (1-t);
     }
 
+#ifdef PARANOID
   assert (fabs (o[X_AXIS] - polynomial (X_AXIS).eval (t))< 1e-8);
   assert (fabs (o[Y_AXIS] - polynomial (Y_AXIS).eval (t))< 1e-8);
-
+#endif
   
   return o;
 }
diff --git a/lily/box.cc b/lily/box.cc
new file mode 100644 (file)
index 0000000..722e082
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+  box.cc -- implement Box
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "box.hh"
+#include "array.hh"
+
+void
+Box::translate (Offset o)
+{
+  for (Axis i=X_AXIS; i < NO_AXES; incr(i))
+    interval_a_[i] += o[i];
+}
+
+void
+Box::unite (Box b)
+{
+  for (Axis i=X_AXIS; i < NO_AXES; incr(i))
+    interval_a_[i].unite (b[i]);
+}
+
+/**
+  Initialize to empty.
+ */
+Box::Box()
+{        
+}
+
+void
+Box::set_empty ()
+{
+  interval_a_[X_AXIS].set_empty ();
+  interval_a_[Y_AXIS].set_empty (); 
+}
+
+Box::Box (Interval ix, Interval iy)
+{
+  x() = ix;
+  y() = iy;
+}
+
+Interval &
+Box::operator[] (Axis a)
+{
+  return interval_a_[a];
+}
+
+Interval
+Box::operator[] (Axis a)const
+{
+  return interval_a_[a];
+}
diff --git a/lily/boxes.cc b/lily/boxes.cc
deleted file mode 100644 (file)
index acc6681..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  boxes.cc -- implement Box
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "box.hh"
-#include "array.hh"
-
-void
-Box::translate (Offset o)
-{
-  for (Axis i=X_AXIS; i < NO_AXES; incr(i))
-    interval_a_[i] += o[i];
-}
-
-void
-Box::unite (Box b)
-{
-  for (Axis i=X_AXIS; i < NO_AXES; incr(i))
-    interval_a_[i].unite (b[i]);
-}
-
-/**
-  Initialize to empty.
- */
-Box::Box()
-{        
-}
-
-void
-Box::set_empty ()
-{
-  interval_a_[X_AXIS].set_empty ();
-  interval_a_[Y_AXIS].set_empty (); 
-}
-
-Box::Box (Interval ix, Interval iy)
-{
-  x() = ix;
-  y() = iy;
-}
-
-Interval &
-Box::operator[] (Axis a)
-{
-  return interval_a_[a];
-}
-
-Interval
-Box::operator[] (Axis a)const
-{
-  return interval_a_[a];
-}
index de2cb687c75b2e73412a4b44a137886a7ad55ae5..7fff19244c95730c985489eba934ba9b844bedc0 100644 (file)
@@ -217,21 +217,20 @@ Clef_engraver::do_pre_move_processing()
 {
   if (clef_p_)
     {
+      SCM vis;
       if(to_boolean (clef_p_->remove_elt_property("non-default")))
        {
-         SCM all = scm_eval (ly_symbol2scm ("all-visible"));
-         clef_p_->set_elt_property("visibility-lambda", all);
-         if (octavate_p_)
-           octavate_p_->set_elt_property("visibility-lambda", all);
+         vis = ly_symbol2scm ("all-visible");
        }
       else
-       {
-         SCM beg = scm_eval (ly_symbol2scm ("begin-of-line-visible"));
+       vis = ly_symbol2scm ("begin-of-line-visible");
+
+      vis = scm_eval (vis);
+      
+      clef_p_->set_elt_property("visibility-lambda", vis);
+      if (octavate_p_)
+       octavate_p_->set_elt_property("visibility-lambda", vis);
 
-         clef_p_->set_elt_property ("visibility-lambda", beg);
-         if (octavate_p_)
-           octavate_p_->set_elt_property ("visibility-lambda", beg);
-       }
       typeset_element (clef_p_);
       clef_p_ =0;
 
index eebb06122b2d2635ad313209ff9ccf5e869d1196..c31121dae4a70a6501bb30256508de34db4ac7ec 100644 (file)
@@ -11,6 +11,9 @@
 #include "dimension-cache.hh"
 #include "engraver.hh"
 
+/*
+  collect Note_column, and as soon as there are 2 or more, put them in
+  a collision object.  */
 class Collision_engraver : public Engraver {
   Collision* col_p_;
   Link_array<Note_column> note_column_l_arr_;
index 32ee0d69f685e985e038cfd6fde8e51ba3f30d39..e3eb69a4032a86700a18efc7adf3962f9cf1dc22 100644 (file)
@@ -28,6 +28,15 @@ Collision::add_column (Note_column* ncol_l)
 
 void
 Collision::before_line_breaking ()
+{
+  do_shifts();
+}
+
+/*
+  TODO: make callback of this.
+ */
+void
+Collision::do_shifts()
 {
   SCM autos (automatic_shift ());
   SCM hand (forced_shift ());
@@ -55,8 +64,7 @@ Collision::before_line_breaking ()
 /** This complicated routine moves note columns around horizontally to
   ensure that notes don't clash.
 
-  This should be done better, probably.
-
+  This should be put into Scheme.  
   */
 SCM
 Collision::automatic_shift ()
index 5fa59bdd50ea3f5384c90556d9e1639b70148cf3..6f098e611052b0585f801ff1ca8ed0d1119eae76 100644 (file)
@@ -39,6 +39,7 @@ Dots::after_line_breaking ()
        si.set_position (p  + directional_element (this).get ());
     }
 }
+
 Molecule  
 Dots::do_brew_molecule () const
 {
index 0425c8a118cdc97c3d56b0c11a9f79a53775932a..696a0d88a66fb0d9657f87061a27372ba3408125 100644 (file)
@@ -83,8 +83,8 @@ Gourlay_breaking::do_solve () const
        {
          Link_array<Paper_column> line = all.slice (breaks[start_idx], breaks[break_idx]+1);
   
-         line[0] = dynamic_cast<Paper_column*>(line[0]->find_broken_piece (RIGHT));
-         line.top () =  dynamic_cast<Paper_column*>(line.top ()->find_broken_piece (LEFT));
+         line[0]     = dynamic_cast<Paper_column*> (line[0]    ->find_prebroken_piece (RIGHT));
+         line.top () = dynamic_cast<Paper_column*> (line.top ()->find_prebroken_piece (LEFT));
            
          Column_x_positions cp;
          cp.cols_ = line;
diff --git a/lily/hara-kiri-line-group-engraver.cc b/lily/hara-kiri-line-group-engraver.cc
deleted file mode 100644 (file)
index 721a099..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  hara-kiri-line-group-engraver.cc -- implement Hara_kiri_line_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#include "rhythmic-head.hh"
-#include "hara-kiri-vertical-group-spanner.hh"
-#include "hara-kiri-line-group-engraver.hh"
-
-
-ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
-
-void
-Hara_kiri_line_group_engraver::create_line_spanner ()
-{
-  staffline_p_ = new Hara_kiri_group_spanner;
-  
-}
-
-void
-Hara_kiri_line_group_engraver::typeset_element(Score_element * e)
-{
-  if (Rhythmic_head *h = dynamic_cast<Rhythmic_head *> (e))
-    {
-      dynamic_cast<Hara_kiri_group_spanner*> (staffline_p_)
-       ->add_interesting_item (h);
-    }
-  Line_group_engraver_group::typeset_element (e);
-}
-
index 40770af5df78e037b73630b0cae83072b9a8761a..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -1,30 +1 @@
-/*
-  bow.hh -- declare Bow
 
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef BOW_HH
-#define BOW_HH
-
-#include "spanner.hh"
-
-/**
-  Base class for anything that looks like a slur.
-  Anybody with a better name?
-
-  UGH. Fixme.  Should junk
-
-    dy_f_drul_ , dx_f_drul_
-  
-  */
-class Bow : public Spanner
-{
-protected:
-};
-#error
-
-#endif // BOW_HH
index ca074df3fa1a7bbaed132daa9e153f4cc86c39cd..e0cda68c19b0f3e0b8bbaa1ca73a0bcece090818 100644 (file)
 #include "item.hh"
 #include "parray.hh"
 
+/*
+  breathing sign (apostrophe within staff, not the comma above staff
+  type)
+*/
 class Breathing_sign : public Item
 {
 public:
index 758e42a8a6458eadc3ccaa8b336b825a435eccec..111e41639375e75d6623d2a106b1c5f52e62f152 100644 (file)
@@ -16,7 +16,7 @@
 
   properties:
 
-  nondefault -- not set because of existence of a bar?
+  non-default -- not set because of existence of a bar?
 
   change -- is this a change clef (smaller size)?
 
index 7a7b5379f2a74d9b59ba4cafdbbe20747c966e99..4cb7b615ec8d8cec906e466999c0f6260881055c 100644 (file)
   
   TODO 
 
-  multistaff support (see Chlapik: equal noteheads should be on the
+  multistaff support (see Chlapik: equal noteheads should be on the
   same hpos.)  
+
+  * Make interface of this, similar to align-interface.
+  
+  Properties:
+
+  elements -- (see Axis_group_interface)
+
+  merge-differently-dotted -- merge black noteheads with differing dot count.
+
+  horizontal-shift -- integer that identifies ranking of note-column for horizontal shifting.
+  
+  force-hshift -- amount of collision_note_width that overides automatic collision settings.
+  Read and removed from elements.
+  
 */
 class Collision : public Item
 {
 protected:
   SCM automatic_shift ();
   SCM forced_shift ();
-  
+  void do_shifts ();  
   virtual void before_line_breaking ();
 public:
     
index 4f3ba7200bda74ac93280ecbbfca3add88aca07f..2446e1f906671f172116089da19f02c460aeda04 100644 (file)
 /**
   The dots to go with a notehead/rest.  A separate class, since they
   are a party in collision resolution.
+
+  properties:
+
+  dot-count -- number of dots.
+
+  
   */
-class Dots :
-  public Item
+class Dots :  public Item
 {
 protected:
   virtual Molecule do_brew_molecule () const;
index aeb77bf9b8386f32dd1dac29ab9eaeea03ef71d2..389223cf34f67a4a86dc6ec66063e63d82c14a10 100644 (file)
   As Vertical_group_spanner, but keep track of interesting items.  If
   we don't contain any interesting items after linebreaking, then
   gracefully commit suicide.  Objective: don't disgrace Lily by
-  typesetting empty lines in orchestral scores.  */
+  typesetting empty lines in orchestral scores.
+
+  properties:
+
+  items-worth-living -- list of interesting items. If empty in a particular system,
+    clear this line
+
+*/
 class Hara_kiri_group_spanner : public Spanner
 {
 public:
index 0f2c951ca4c51d106831eef22b5d1c4c2b7393a5..d92a67fb0458d88facc25ecb132a289c55e46689 100644 (file)
@@ -38,8 +38,6 @@ class Item : public Score_element
 {
   Drul_array<Item*> broken_to_drul_;
 
-  void do_break ();
-  void try_visibility_lambda ();
 public:
   VIRTUAL_COPY_CONS(Score_element);
   Item();
@@ -50,11 +48,12 @@ public:
   
   Direction break_status_dir () const;
   
-  Item * find_broken_piece (Direction) const;
+  Item * find_prebroken_piece (Direction) const;
   Score_element * find_broken_piece (Line_of_score*) const;    
 
   virtual Line_of_score * line_l() const;
   virtual Paper_column * column_l () const;
+  virtual void handle_prebroken_dependencies ();
 protected:
   virtual void do_breakable_col_processing();
   void copy_breakable_items();
index d8a7f295a05f5f5948b0ce5d42ec51af045d46ae..c003a3094d6fd4603093f5b211b39a00f2dcd117 100644 (file)
 #include "array.hh"
 
 
-/** An item which places accidentals at the start of the line
+/**
+  A group of  accidentals.
 
-    TODO: Schemify me.
+  Properties:
+
+  c0-position -- integer indicating the position of central C?
+
+  old-accidentals -- list of (pitch, accidental) pairs
+
+  new-accidentals -- list of (pitch, accidental) pairs
  */
 class Key_item :public  Item
 {
-  Array<int> pitch_arr_;
-  Array<int> acc_arr_;
-  Array<int> old_pitch_arr_;
-  Array<int> old_acc_arr_;
+  int calculate_position(SCM pair) const;
 
 public:
   VIRTUAL_COPY_CONS(Score_element);
@@ -28,8 +32,6 @@ public:
   void add (int pitch, int acc);
   void add_old (int pitch, int acc);
 
-  int calculate_position(int p, int a) const;
-
 protected:
   virtual Molecule do_brew_molecule() const;
 };
index 3cfb339ce193e62d316db58b586920dd204c7e4e..39ad2ccac252d838ddb5afb5f26653af67cebde6 100644 (file)
@@ -32,14 +32,8 @@ struct Local_key_cautionary_tuple
 /**
   Accidentals which can be different for each octave.
 
-  
-  TODO
-
-  Make an item for each accidental separately, and make a
-  Accidental_column to group them.
-  
+  TODO: schemify me!
  */
-
 class Local_key_item : public Item
 {
   Array<Local_key_cautionary_tuple> accidental_arr_;
diff --git a/lily/include/mark-engraver.hh b/lily/include/mark-engraver.hh
deleted file mode 100644 (file)
index 4e4da38..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-  mark-engraver.hh -- declare Mark_engraver
-
-  source file of the GNU LilyPond music typesetter
-
- (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef MARK_ENGRAVER_HH
-#define MARK_ENGRAVER_HH
-
-#error
-
-
-dendif // MARK_ENGRAVER_HH
index dcdeca9ca447689da8c252a889de832fd12c1180..3354ecfb2495a2cc6b58775154f01dcfcca61388 100644 (file)
 
   * help lines  
 
+  Properties
+
+  style -- symbol that sets note head style
+
   */
 
 class Note_head : public Rhythmic_head
index 21ab46ae038664a0a58600f2fdeff8b22aa869d8..dcd6b81628d2999e4fec1c232e10f5bfddb33866 100644 (file)
 
 #include "rhythmic-head.hh"
 
+/**
+   A pause.
+   
+   Properties
+
+   style -- string specifying glyph style
+ */
 class  Rest : public Rhythmic_head
 {
 protected:
index 4733d5f1555c5b5e46c33dcaf5ec44bc61345ef1..5d3ca3d56c839f7a41e843f5f8f46895c8e1e78b 100644 (file)
 
 #include "item.hh"
 
+/*
+  Properties
+  
+  duration-log -- 2-log of the notehead duration
+
+  dot -- reference to Dots object.
+
+*/
 class Rhythmic_head : public Item
 {
 public:
index 78c325dcf76042e1779b934f2937769c992348aa..17280a2b82cb1169e19e07a1ae6d6547cb0792c5 100644 (file)
    since these usually are in a different X_group
 
    It's 1:30 am.  Naming suggestions appreciated.
+
+   Properties:
+
+
+   elements -- list of items.
+   
+   no-spacing-rods -- read from elements: boolean that makes Single_malt_grouping_item ignore
+     this item
+   
 */
 class Single_malt_grouping_item : public Item
 {
@@ -27,6 +36,5 @@ public:
   void add_item (Item*);
 };
 
-
 #endif /* SINGLE_MALT_GROUPING_ITEM_HH */
 
diff --git a/lily/include/super-element.hh b/lily/include/super-element.hh
deleted file mode 100644 (file)
index 3ae4480..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-  super-element.hh -- declare Super_element
-
-  source file of the LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef Super_element_HH
-#define Super_element_HH
-
-#error
-#include "score-element.hh"
-
-#endif // Super_element_HH
index 1f7950658cc49cd7189e752c99d02fb8de26a6b8..8547dd9f1a3ae5228bc09193608b6de099846510 100644 (file)
@@ -22,7 +22,7 @@ Item::Item ()
 
 /**
    Item copy ctor.  Copy nothing: everything should be a elt property
-   or a special purpose poitner (such as broken_to_drul_[]) */
+   or a special purpose pointer (such as broken_to_drul_[]) */
 Item::Item (Item const &s)
   : Score_element (s)
 {
@@ -38,7 +38,7 @@ Item::breakable_b () const
     return false;
   
   Item * i  =dynamic_cast<Item*> (parent_l (X_AXIS));
-  return (i) ?  i->breakable_b () : to_boolean (get_elt_property"breakable"));
+  return (i) ?  i->breakable_b () : to_boolean (get_elt_property ("breakable"));
 }
 
 Line_of_score *
@@ -63,35 +63,8 @@ Item::copy_breakable_items()
     }
   while (flip(&i) != LEFT);
   broken_to_drul_= new_copies;
-
-  do 
-    {
-       broken_to_drul_[i]->handle_prebroken_dependencies();
-       broken_to_drul_[i]->try_visibility_lambda();
-    }
-  while (flip(&i) != LEFT);
 }
 
-void
-Item::try_visibility_lambda ()
-{
-  SCM vis = remove_elt_property ("visibility-lambda");
-  if (gh_procedure_p (vis))
-    {
-      SCM args = scm_listify (gh_int2scm (break_status_dir ()), SCM_UNDEFINED);
-      SCM result = gh_apply (vis, args);
-      bool trans = gh_scm2bool (gh_car (result));
-      bool empty = gh_scm2bool (gh_cdr (result));
-
-      if (empty)
-       {
-         set_extent_callback (0, X_AXIS);
-         set_extent_callback (0,  Y_AXIS);
-       }
-      if (trans)
-       set_elt_property ("transparent", SCM_BOOL_T);
-    }
-}
 
 bool
 Item::broken_b () const
@@ -100,33 +73,13 @@ Item::broken_b () const
 }
 
 void
-Item::do_break ()
+Item::do_breakable_col_processing()
 {
   if (broken_b ())
     return;
 
   if (breakable_b ())
-    {
-      copy_breakable_items();
-      handle_prebroken_dependencies();
-  
-      /*
-    Otherwise the broken items won't be pre_process()'ed.
-  */
-  
-      if (broken_to_drul_[LEFT])
-       {
-         add_dependency (broken_to_drul_[LEFT]);
-         add_dependency (broken_to_drul_[RIGHT]);
-       }
-    }
-  try_visibility_lambda ();    // ugh.
-}
-
-void
-Item::do_breakable_col_processing()
-{
-  do_break ();
+    copy_breakable_items();
 }
 
 Score_element*
@@ -137,7 +90,7 @@ Item::find_broken_piece (Line_of_score*l) const
 
   Direction d = LEFT;
   do {
-    Score_element *s = find_broken_piece (d);
+    Score_element *s = broken_to_drul_[d];
     if (s && s->line_l () == l)
       return s;
   }
@@ -146,19 +99,14 @@ Item::find_broken_piece (Line_of_score*l) const
   return 0;
 }
 
+
 Item*
-Item::find_broken_piece (Direction d) const
+Item::find_prebroken_piece (Direction d) const
 {
   Item * me = (Item *) (this); 
   if (!d)
     return me;
-  else if (breakable_b ())
-    {
-      me->do_break ();
-      return dynamic_cast<Item*> (broken_to_drul_[d]);
-    }
-  else
-    return 0;
+  return dynamic_cast<Item*> (broken_to_drul_[d]);
 }
 
 Paper_column *
@@ -180,4 +128,34 @@ Item::break_status_dir () const
     return CENTER;
 }
 
+void
+Item::handle_prebroken_dependencies ()
+{
+  if (original_l_)
+    {
+      element_property_alist_
+       = handle_broken_smobs (original_l_->element_property_alist_,
+                              gh_int2scm (break_status_dir ()));
+    }
+  
+  /*
+    Can't do this earlier, because try_visibility_lambda () might set
+    the elt property transparent, which would then be copied.
+  */
+  SCM vis = remove_elt_property ("visibility-lambda");
+  if (gh_procedure_p (vis))
+    {
+      SCM args = scm_listify (gh_int2scm (break_status_dir ()), SCM_UNDEFINED);
+      SCM result = gh_apply (vis, args);
+      bool trans = gh_scm2bool (gh_car (result));
+      bool empty = gh_scm2bool (gh_cdr (result));
 
+      if (empty)
+       {
+         set_extent_callback (0, X_AXIS);
+         set_extent_callback (0,  Y_AXIS);
+       }
+      if (trans)
+       set_elt_property ("transparent", SCM_BOOL_T);
+    }
+}
index e6b8df7b4493e1f14fea0f5f2df3e7c5d41775f3..72380e73116a65a26c25e769f05594a1b9ef429c 100644 (file)
@@ -8,13 +8,11 @@
   keyplacement by Mats Bengtsson
 */
 
+#include "group-interface.hh" 
 #include "key-item.hh"
-#include "key.hh"
-#include "debug.hh"
 #include "molecule.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
-#include "musical-pitch.hh"
 #include "staff-symbol-referencer.hh"
 
 const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */
@@ -24,26 +22,32 @@ Key_item::Key_item ()
 {
   set_elt_property ("breakable", SCM_BOOL_T);
   set_elt_property ("c0-position", gh_int2scm (0));
+
+  set_elt_property ("old-accidentals", SCM_EOL);
+  set_elt_property ("new-accidentals", SCM_EOL);
 }
 
 void
 Key_item::add (int p, int a)
 {
-  pitch_arr_.push (p);
-  acc_arr_.push (a);
+  SCM pair = gh_cons (gh_int2scm (p),gh_int2scm (a));
+  Group_interface (this, "new-accidentals").add_thing (pair);
 }
 
 void
 Key_item::add_old (int p, int a)
 {
-  old_pitch_arr_.push (p);
-  old_acc_arr_.push (a);
+  SCM pair = gh_cons (gh_int2scm (p),gh_int2scm (a));  
+  Group_interface (this, "old-accidentals").add_thing (pair);
 }
 
 
 int
-Key_item::calculate_position(int p, int a) const
+Key_item::calculate_position(SCM pair) const
 {
+  int p = gh_scm2int (gh_car (pair));
+  int a = gh_scm2int (gh_cdr (pair));  
+  
   if (to_boolean (get_elt_property ("multi-octave")))
     {
       return p + gh_scm2int (get_elt_property ("c0-position"));
@@ -62,9 +66,10 @@ Key_item::calculate_position(int p, int a) const
       {
        p -= 7; /* Typeset below c_position */
       }
-    /* Provide for the four cases in which there's a glitch */
-    /* it's a hack, but probably not worth */
-    /* the effort of finding a nicer solution. dl. */
+    /* Provide for the four cases in which there's a glitch 
+       it's a hack, but probably not worth  
+       the effort of finding a nicer solution.
+       --dl. */
     if (c0==2 && a>0 && p==3)
       p -= 7;
     if (c0==-3 && a>0 && p==-1)
@@ -81,8 +86,11 @@ Key_item::calculate_position(int p, int a) const
 /*
   TODO
   - space the `natural' signs wider
-  - dehair this
+
+  
+  
  */
+
 Molecule 
 Key_item::do_brew_molecule() const
 {
@@ -91,27 +99,23 @@ Key_item::do_brew_molecule() const
   Staff_symbol_referencer_interface si (this);
   Real inter = si.staff_space ()/2.0;
   
-  int j;
-  if ((break_status_dir () == LEFT || break_status_dir () == CENTER)
-      || old_pitch_arr_.size ())
-    {
-      for (int i =0; i < old_pitch_arr_.size(); i++) 
-        {
-          for (j =0; (j < pitch_arr_.size())
-                && (old_pitch_arr_[i] != pitch_arr_[j]); j++) 
-           ;
-         
-          if (j == pitch_arr_.size()
-             || (old_pitch_arr_[i] == pitch_arr_[j]
-                 && old_acc_arr_[i] != acc_arr_[j]))
-            {
-              Molecule m =lookup_l ()->afm_find ("accidentals-0");
-
-              m.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS);
-              mol.add_at_edge (X_AXIS, RIGHT, m,0);    
-            }
-        }
+  SCM newas = get_elt_property ("new-accidentals");  
 
+  /*
+    SCM lists are stacks, so we work from right to left, ending with
+    the cancellation signature.
+  */
+  for (SCM s = newas; gh_pair_p (s); s = gh_cdr (s))
+    {
+      int a = gh_scm2int (gh_cdar (s));
+      Molecule m = lookup_l ()->afm_find ("accidentals-" + to_str (a));
+      m.translate_axis (calculate_position(gh_car (s)) * inter, Y_AXIS);
+      mol.add_at_edge (X_AXIS, LEFT, m, 0);
+    }
+  
+  if (break_status_dir () != RIGHT)
+    {
+      SCM old = get_elt_property ("old-accidentals");
       /*
        Add half a space between  cancellation and key sig.
 
@@ -120,15 +124,31 @@ Key_item::do_brew_molecule() const
       Interval x(0, inter);
       Interval y(0,0);
 
-      mol.add_at_edge (X_AXIS, RIGHT, lookup_l()->blank (Box(x,y)),0);
+      mol.add_at_edge (X_AXIS, LEFT, lookup_l()->blank (Box(x,y)),0);
+      
+      for (; gh_pair_p (old); old = gh_cdr (old))
+        {
+         SCM found = SCM_EOL;
+
+         /*
+           find correspondences in pitches 
+          */
+          for (SCM s = newas; gh_pair_p (s); s = gh_cdr (s))
+           if (gh_caar(s) == gh_caar (old))
+             found  = gh_car (s);
+               
+         if (found == SCM_EOL || gh_cdr (found) != gh_cdar (old))
+           {
+              Molecule m =lookup_l ()->afm_find ("accidentals-0");
+
+              m.translate_axis (calculate_position(gh_car(old)) * inter, Y_AXIS);
+              mol.add_at_edge (X_AXIS, LEFT, m,0);     
+            }
+        }
+
+
     }
  
-  for (int i =0; i < pitch_arr_.size(); i++) 
-    {
-      Molecule m = lookup_l ()->afm_find ("accidentals-" + to_str (acc_arr_[i]));
-      m.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
-      mol.add_at_edge (X_AXIS, RIGHT, m, 0);
-    }
 
   return mol;
 }
index 18596d017d1f91842977635a3902bab13413a6ec..5ca3685dee659a8643a3728510773252a9dc255d 100644 (file)
@@ -212,6 +212,8 @@ Line_of_score::pre_processing ()
 {
   for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     unsmob_element (gh_car (s))->do_breakable_col_processing ();
+  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+    unsmob_element (gh_car (s))->handle_prebroken_dependencies ();
   
   fixup_refpoints (get_elt_property ("all-elements"));
   
index 6001e531bf384cb552bd253c7da195321a21448d..0d360c945b06029706bb9f1c0527e8cd3d17f38f 100644 (file)
@@ -183,8 +183,8 @@ Multi_measure_rest::get_rods () const
 
   Item * l = get_bound (LEFT)->column_l ();
   Item * r = get_bound (RIGHT)->column_l ();
-  Item * lb = l->find_broken_piece (RIGHT);
-  Item * rb = r->find_broken_piece (LEFT);      
+  Item * lb = l->find_prebroken_piece (RIGHT);
+  Item * rb = r->find_prebroken_piece (LEFT);      
   
   Item* combinations[4][2]={{l,r}, {lb,r}, {l,rb},{lb,rb}};
   for (int i=0; i < 4; i++)
index 891f67e09272121f71a0fa2a24e484c82fe4bd0e..48dd8be722e941476e21303b98a4c3b886eb2305 100644 (file)
@@ -27,6 +27,7 @@
 #include "dimension-cache.hh"
 #include "side-position-interface.hh"
 #include "item.hh"
+
 /*
 TODO:
 
@@ -291,7 +292,9 @@ Score_element::do_add_processing()
 }
 
 
-
+/*
+  ugh.
+ */  
 Molecule 
 Score_element::do_brew_molecule() const
 {
@@ -353,18 +356,17 @@ Score_element::handle_broken_smobs (SCM src, SCM criterion)
          Direction d = to_dir (criterion);
          if (i && i->break_status_dir () != d)
            {
-             Item *br = i->find_broken_piece (d);
+             Item *br = i->find_prebroken_piece (d);
              return  (br) ? br->self_scm_ : SCM_UNDEFINED;
            }
        }
       else
        {
-
          Line_of_score * line = dynamic_cast<Line_of_score*> (unsmob_element ( criterion));
-        Line_of_score * dep_line = sc->line_l ();
+         Line_of_score * dep_line = sc->line_l ();
          if (dep_line != line)
            {
-           Score_element * br = sc->find_broken_piece (line);
+             Score_element * br = sc->find_broken_piece (line);
              return  (br) ?  br->self_scm_ : SCM_UNDEFINED;
            }
          if (!dep_line)
@@ -393,7 +395,8 @@ Score_element::handle_broken_smobs (SCM src, SCM criterion)
            
            return handle_broken_smobs (cdr, criterion);
 
-           We don't want to rely on the compiler to do this.  */
+           We don't want to rely on the compiler to do this.  Without
+           tail-recursion, this easily crashes with a stack overflow.  */
          src =  cdr;   
          goto again;
        }
@@ -439,34 +442,19 @@ Score_element::handle_broken_dependencies()
       /*
        This element is `invalid'; it has been removed from all dependencies, so
        let's junk the element itself.
-
       */
       element_property_alist_ = SCM_EOL;
       set_extent_callback (0, Y_AXIS);
       set_extent_callback (0, X_AXIS);
     }
-
-
 }
 
-
-/*
-  TODO: cleanify.
- */
 void
 Score_element::handle_prebroken_dependencies()
 {
-  if (Item*i =dynamic_cast<Item*> (this))
-    {
-      if (original_l_)
-       {
-         element_property_alist_
-           = handle_broken_smobs (original_l_->element_property_alist_,
-                              gh_int2scm (i->break_status_dir ()));
-       }
-    }
 }
 
+
 bool
 Score_element::linked_b() const
 {
@@ -625,7 +613,7 @@ Score_element::fixup_refpoint ()
              Direction  my_dir = i->break_status_dir () ;
              if (my_dir!= parenti->break_status_dir())
                {
-                 Item *newparent =  parenti->find_broken_piece (my_dir);
+                 Item *newparent =  parenti->find_prebroken_piece (my_dir);
                  set_parent (newparent, ax);
                }
            }
@@ -639,7 +627,6 @@ Score_element::fixup_refpoint ()
   SMOB funcs
  ****************************************************/
 
-
 #include "ly-smobs.icc"
 
 IMPLEMENT_UNSMOB(Score_element, element);
index c00bfd8e13368ee3a3e2c46d60c5bfd90aace86c..43e7d0d8c0ffc79e387e6d0ca52ee1af23de7ef3 100644 (file)
@@ -52,10 +52,10 @@ Separating_group_spanner::get_rods () const
        continue;
       
       Single_malt_grouping_item *lb
-       = dynamic_cast<Single_malt_grouping_item*>(l->find_broken_piece (RIGHT));
+       = dynamic_cast<Single_malt_grouping_item*>(l->find_prebroken_piece (RIGHT));
 
       Single_malt_grouping_item *rb
-       = dynamic_cast<Single_malt_grouping_item*>(r->find_broken_piece (LEFT));
+       = dynamic_cast<Single_malt_grouping_item*>(r->find_prebroken_piece (LEFT));
       
       a.push (make_rod(l,  r));
       if (lb)
index b017addc21d4f99f1fb77f77fa007817f65e9ab9..3ab74cdc25cf5268115ff732da3706fb31b05c2f 100644 (file)
@@ -44,8 +44,6 @@ Single_malt_grouping_item::my_width () const
       SCM elt = gh_car (s);
       if (!SMOB_IS_TYPE_B(Score_element, elt))
        continue;
-
-      
       
       Item *il = dynamic_cast<Item*> (SMOB_TO_TYPE (Score_element, elt));
       if (pc != il->column_l ())
index d8cf62c2ac99ec2af4fc75a0733b59201e1bff4f..6ad6b1a06c6d5e92bc1b5599619755b22f1e1b39 100644 (file)
@@ -67,8 +67,8 @@ Spacing_spanner::do_measure (Link_array<Paper_column> cols) const
     {
       Item * l = cols[i];
       Item * r = cols[i+1];
-      Item * lb = l->find_broken_piece (RIGHT);
-      Item * rb = r->find_broken_piece (LEFT);      
+      Item * lb = l->find_prebroken_piece (RIGHT);
+      Item * rb = r->find_prebroken_piece (LEFT);      
 
       Item* combinations[4][2]={{l,r}, {lb,r}, {l,rb},{lb,rb}};
 
index 9a8ed71038379a4cc4de36abed5e67c7144d7153..d3623668e1cd876893dbe7ffacd15ce285b40e5f 100644 (file)
@@ -63,7 +63,7 @@ Spanner::do_break_processing ()
       Direction d = LEFT;
       do
        {
-         Item* bound = left->find_broken_piece (d);
+         Item* bound = left->find_prebroken_piece (d);
          if (bound->line_l ())
            {
              Spanner * span_p = dynamic_cast<Spanner*>( clone ());
@@ -94,7 +94,7 @@ Spanner::do_break_processing ()
            {
              Item *&pc_l = bounds[d] ;
              if (!pc_l->line_l())
-               pc_l =  pc_l->find_broken_piece(- d);
+               pc_l =  pc_l->find_prebroken_piece(- d);
          
              assert (pc_l);
            }
@@ -122,7 +122,7 @@ Spanner::set_my_columns()
   do 
     {
       if (!spanned_drul_[i]->line_l())
-       set_bound(i,spanned_drul_[i]->find_broken_piece((Direction) -i));
+       set_bound(i,spanned_drul_[i]->find_prebroken_piece((Direction) -i));
     } 
   while (flip(&i) != LEFT);
 }       
index 6b0629c7ce0038b844a09c3b5fe4697067698051..cd799fdb76e1ee53f3298c02a31df2e23ea57e86 100644 (file)
@@ -70,10 +70,16 @@ arithmetic_multiplier = 0.9 * \quartwidth ;
 arithmetic_basicspace = 2.0;
 
 
+
+
 #'Stem_tremolo::beam-width = 1.5 * \quartwidth ; 
 
 #'Left_edge_item::visibility-lambda = #begin-of-line-visible
 
+% 
+% UGH; junk these!
+%
+
 #'Key_item::visibility-lambda = #begin-of-line-visible
 #'Breathing_sign::visibility-lambda = #begin-of-line-invisible
 
index d435d4218d62e8fc34690c130e91bae7c14343bf..38df7ada1237c264f1d47c0e8fce204a32c2bb93 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.50
-Entered-date: 12MAY00
+Version: 1.3.51
+Entered-date: 16MAY00
 Description: 
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.uu.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
-       1000k lilypond-1.3.50.tar.gz 
+       1000k lilypond-1.3.51.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.50.tar.gz 
+       1000k lilypond-1.3.51.tar.gz 
 Copying-policy: GPL
 End
index 8d9bad92f09bd52c28cf05b16a3f9a310b9acc7f..9be3cbd233cad56090b6c4bb137b5c3c327e20a1 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.50
+Version: 1.3.51
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.50.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.51.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif
index fec2be9cfe43ce1edab9411f3f7657a275044fc8..2f237ac73acb0fdb2a335ae6ff7cbc34a24e67d8 100644 (file)
    ((none Instrument_name) . (extra-space 1.0))
    ((Instrument_name Left_edge_item) . (extra-space 1.0))
    ((Left_edge_item Clef_item) . (extra-space 1.0))
+   ((Left_edge_item Key_item) . (extra-space 0.0))   
    ((none Left_edge_item) . (extra-space 0.0))
    ((Left_edge_item Staff_bar) . (extra-space 0.0))
 ;   ((none Left_edge_item) . (extra-space -15.0))