]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.3.50 release/1.3.50
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 12 May 2000 14:00:04 +0000 (16:00 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 12 May 2000 14:00:04 +0000 (16:00 +0200)
===========

* Junked Shift_tuple from collision; Now it uses SCM.

* Bugfix of documentation and test-file of tuplet.

* Bugfix type string of repeated music is copied. This fixes declared
tremolos.

* Junked various cruft from lily.scm

* Use interfaces symbols instead of C++ class-name for assigning generic
element properties.

* Junked Dictionary from Piano_pedal_engraver and
Piano_pedal_performer.

* Introduced boolean element property no-spacing-rods: ignore this
item for hard constraints.

* Bugfix: added sanitised TeX fragment in faq.texi

* Bugfix: merge equal Bar_reqs

1.3.48.

30 files changed:
CHANGES
Documentation/user/properties.itely
VERSION
flower/include/tuple.hh
input/bugs/repbar.ly [deleted file]
input/bugs/slur.ly [new file with mode: 0644]
input/test/pedal.ly
input/test/tuplet.ly
lily/beam.cc
lily/breathing-sign.cc
lily/chord-name.cc
lily/clef-item.cc
lily/collision-engraver.cc
lily/collision.cc
lily/include/collision-engraver.hh [deleted file]
lily/include/collision.hh
lily/note-column.cc
lily/piano-pedal-engraver.cc
lily/property-engraver.cc
lily/repeated-music.cc
lily/score-element-callback.cc
lily/score-element.cc
lily/slur.cc
lily/spacing-spanner.cc
lily/span-bar-engraver.cc
lily/timing-engraver.cc
make/out/lilypond.lsm
make/out/lilypond.spec
scm/generic-property.scm
scm/lily.scm

diff --git a/CHANGES b/CHANGES
index 3335da4946ce469924cead550a64cf72d7b30ad6..2be8dd6bfb28f44389ad17eeec463fee94e49267 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,22 +1,28 @@
---- ../lilypond-1.3.49/CHANGES Thu May 11 15:31:37 2000
-++ b/CHANGES   Thu May 11 22:01:01 2000
-@@ -1,3 +1,13 @@
-1.3.49.hwn1
+
+1.3.49.hwn2
 ===========
 
+* Junked Shift_tuple from collision; Now it uses SCM.
+
+* Bugfix of documentation and test-file of tuplet.
+
+* Bugfix type string of repeated music is copied. This fixes declared
+tremolos.
+
+* Junked various cruft from lily.scm
+
+* Use interfaces symbols instead of C++ class-name for assigning generic
+element properties.
+
 * Junked Dictionary from Piano_pedal_engraver and
-Piano_pedal_performer.  Marked kerning as TODO.
+Piano_pedal_performer.
 
 * Introduced boolean element property no-spacing-rods: ignore this
 item for hard constraints.
 
+* Bugfix: added sanitised TeX fragment in faq.texi
 
- 1.3.48.uu1
- ==========
- 1.3.49.jcn1
-==========
-
-* Made silly faq.texi fixes (time to get my verbatim patch in :-)
+* Bugfix: merge equal Bar_reqs
 
 1.3.48.uu1
 ==========
@@ -136,7 +142,7 @@ puts alignment in function again
 
 * Fixed StaffGroup + GrandStaff combination.
 
-* Music is now mandatory as the first tihng in a \score{} block
+* Music is now mandatory as the first thing in a \score{} block
 
 1.3.45
 ======
index 52af602fee4029054a7132329043c9d3db525d10..4bb6362dfd4dba74622731cdee1be9fe935a1108 100644 (file)
@@ -368,7 +368,7 @@ number respectively. Setting it to false will prevent printing of the
 associated element. Setting the property to 'if-no-beam will make it
 print only if there is no beam associated with this tuplet bracket.
 
-[fixme examples]
+@mudelafile[verbatim]{tuplet.ly}
 
   @item @code{tupletInvisible}@indexcode{tupletInvisible} @propertytype{boolean}
 
diff --git a/VERSION b/VERSION
index 308d07ced0a9aa763cd0e456f03dc79ce9c29007..c03a84f994da13c4c4c31ef7902bd0219e3f229f 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,8 +1,8 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=49
-MY_PATCH_LEVEL=hwn1
+PATCH_LEVEL=50
+MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 251eca1afd2dc36ba6c2b387818e24b108607cb7..1adf194f1a90377a6ab4070963c13b089e200dd0 100644 (file)
@@ -9,6 +9,7 @@
 
 #ifndef TUPLET_HH
 #define TUPLET_HH
+#error
 
 
 template<class T, class U>
diff --git a/input/bugs/repbar.ly b/input/bugs/repbar.ly
deleted file mode 100644 (file)
index f51ae90..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-foo = \notes { \context Voice { \relative c'' {
-\repeat volta 3 { e c d e } \break
-\repeat volta 3 { e c d e }
-}
-}
-}
-\score {
-\context PianoStaff <
-\context Staff = one \foo
-\context Staff = two \foo
->
-\midi{}
-\paper{}
-}
-foo = \notes { \context Voice { \relative c'' {
-\repeat volta 3 { e c d e } \break
-\repeat volta 3 { e c d e }
-}
-}
-}
-\score {
-\context PianoStaff <
-\context Staff = one \foo
-\context Staff = two \foo
->
-       \paper {        linewidth = 17.0\cm;
-                       \translator  {
-                               \OrchestralScoreContext
-                               minVerticalAlign = 2.5*\staffheight;
-                       }
-                       \translator {
-                               \StaffContext
-                               \consists Instrument_name_engraver;
-                       }
-       }
-\midi{}
-}
diff --git a/input/bugs/slur.ly b/input/bugs/slur.ly
new file mode 100644 (file)
index 0000000..c2a8552
--- /dev/null
@@ -0,0 +1,5 @@
+
+ \score {
+       \notes \relative c' {
+       c2(  c  \break c c  c  c  \break c 
+}}
index 40410a32f6e12364bc1c9f4d3df4c5fd314c74de..a30ab93a09f95894e0e3d8716092494ca3e1280a 100644 (file)
@@ -1,7 +1,7 @@
 \score{
 \context Staff \notes\relative c'{
-c\sustaindown d e f\sustainup g\sustaindown b c
-c,\sustainup\sustaindown d e f \sustainup g\sustaindown b c
+c4\sustaindown d e f\sustainup g\sustaindown b c
+c, [d16 \sustainup \sustaindown c  c c] [e e \sustainup \sustaindown e e ] f4 \sustainup g\sustaindown b c
 \property Staff.stopStartSustain = #"-P"
 \property Staff.startSustain = #"P"
 c,\sustainup\sustaindown d e f \sustainup g\sustaindown b c
index 68e2768fd3b66a99bd7a8df0c431e660e3702b1d..d39c302143905d3e36f3164aa5743ae6c45a8621 100644 (file)
@@ -1,50 +1,15 @@
+\version "1.3.47"
+
 \score { 
-  \context Voice \notes\relative c {
-    \property Voice.textEmptyDimension = 1
-       \property Voice.textScriptPadding = 10
-       \property Voice.tupletVisibility = 0
-       \times2/3{c'4^"tupletVisibility = 0" d e} \times2/3{[f8 g a]} 
-         \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 1
-       \times2/3{c,4^"tupletVisibility = 1" d e} \times2/3{[f8 g a]} 
-         \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 2
-       \times2/3{c,4^"tupletVisibility = 2" d e} \times2/3{[f8 g a]} 
-         \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 3
-       \times2/3{c,4^"tupletVisibility = 3" d e} \times2/3{[f8 g a]} 
-         \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 4
-       \times2/3{c,4^"tupletVisibility = 4" d e} \times2/3{[f8 g a]} 
-         \times2/3{b16 c d} c8 | \break
-       
-       \property Voice.tupletDirection = \down
-       \property Voice.tupletVisibility = 0
-       \times2/3{c,4^"tupletDirection = down" d e} 
-         \times2/3{[[f8 g a]]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 1
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 2
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 3
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 4
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |\break
-       
-       \property Voice.tupletDirection = \up
-       \property Voice.tupletVisibility = 0
-       \times2/3{c,4^"tupletDirection = up" d e} 
-         \times2/3{[[f8 g a]]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 1
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 2
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 3
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       \property Voice.tupletVisibility = 4
-       \times2/3{c,4 d e} \times2/3{[f8 g a]} \times2/3{b16 c d} c8 |
-       
-  }
-  \paper { }  
-  \midi { }
-}
\ No newline at end of file
+  \context Voice \notes\relative c'' {
+
+  \times 2/3 { [c8 c c]  }
+  \times 2/3 { c8 [c c]  }
+
+  \property Voice .tupletBracketVisibility = #'if-no-beam  
+  \times 2/3 { [c8 c c]  }
+  \property Voice .tupletDirection = #1
+  \property Voice .tupletNumberVisibility = ##f
+  \times 2/3 { c8 [c c]  }
+}
+}
index 027a08d70f0499b37ee6b50296c2fe31d8260470..e19a82270b5e79b6a323d3e826d11cd0af0fc201 100644 (file)
     * less hairy code
     * move paper vars to scm
 
-
     remove *-hs variables.
-    
 */
 
 
-#include <math.h>              // tanh.
+#include <math.h> // tanh.
 #include "directional-element-interface.hh"
 #include "beaming.hh"
 #include "dimensions.hh"
index 2c1f5152491c973f261c2823915eebed4e5502df..64e588f727149c9c427d58f1040349fedd001ea7 100644 (file)
@@ -8,9 +8,9 @@
   TODO: --> see breathing-sign-engraver.cc
 
 */
+
 #include "staff-symbol-referencer.hh"
 #include "directional-element-interface.hh"
-
 #include "breathing-sign.hh"
 #include "string.hh"
 #include "molecule.hh"
@@ -32,6 +32,8 @@ Breathing_sign::do_brew_molecule () const
   Staff_symbol_referencer_interface si (this);
   
   Real space = si.staff_space();
+
+  // todo: cfg'able.
   Interval i1(0, space / 6), i2(-space / 2, space / 2);
   Box b(i1, i2);
 
index 3bc56b107e10252c2d8faa0ce169e8582f2a8f21..7a05a08844b7eec3958193e9a7ba8ea44a08bc27 100644 (file)
@@ -25,8 +25,9 @@
    "text"
    ("style" . "text")
  */
+
 /*
-  UGH. remove Dictionary< >
+  UGH. remove Dictionary< > and use Scheme_hash_table
  */
 Molecule
 Chord_name::ly_word2molecule (SCM word) const
index f0a8b8566f9d8175ae8bd1b423f2a4798ca33873..21d97d80754d74e0a6d733e219f447ce4ce94e16 100644 (file)
 #include "clef-item.hh"
 #include "string.hh"
 #include "molecule.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
 #include "text-item.hh"
-#include "paper-score.hh"
-#include "dimension-cache.hh"
-#include "side-position-interface.hh"
-#include "warn.hh"
-#include "line-of-score.hh"
 
 void
 Clef_item::before_line_breaking ()
index 16d0bf30eae44a5f91955d715d662336b5783e05..eebb06122b2d2635ad313209ff9ccf5e869d1196 100644 (file)
@@ -7,16 +7,29 @@
 */
 
 #include "note-column.hh"
-#include "collision-engraver.hh"
 #include "collision.hh"
 #include "dimension-cache.hh"
+#include "engraver.hh"
+
+class Collision_engraver : public Engraver {
+  Collision* col_p_;
+  Link_array<Note_column> note_column_l_arr_;
+
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing();
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  Collision_engraver();
+};
+
 
 void
 Collision_engraver::process_acknowledged ()
 {
-   
   if (col_p_ || note_column_l_arr_.size () < 2)
-      return ;
+    return ;
   if (!col_p_) 
     {
       col_p_ = new Collision;
index c25f45d05c728d8ed5c2f24dc261af92defe695b..32ee0d69f685e985e038cfd6fde8e51ba3f30d39 100644 (file)
@@ -26,28 +26,29 @@ Collision::add_column (Note_column* ncol_l)
   add_dependency (ncol_l);
 }
 
-/*
-  UGH.  junk Shift_tup .
- */
-
 void
 Collision::before_line_breaking ()
 {
-  Array<Shift_tup> autos (automatic_shift ());
-  Array<Shift_tup> hand (forced_shift ());
+  SCM autos (automatic_shift ());
+  SCM hand (forced_shift ());
   Link_array<Score_element> done;
   
   Real wid = paper_l ()->get_var ("collision_note_width");
-  for (int i=0; i < hand.size (); i++)
+  for (; gh_pair_p (hand); hand =gh_cdr (hand))
     {
-      hand[i].e1_->translate_axis (hand[i].e2_ *wid, X_AXIS);
-      done.push (hand[i].e1_);
+      Score_element * s = unsmob_element (gh_caar (hand));
+      Real amount = gh_scm2double (gh_cdar (hand));
+      
+      s->translate_axis (amount *wid, X_AXIS);
+      done.push (s);
     }
-
-  for (int i=0; i < autos.size (); i++)
+  for (; gh_pair_p (autos); autos =gh_cdr (autos))
     {
-      if (!done.find_l (autos[i].e1_))
-       autos[i].e1_->translate_axis (autos[i].e2_ * wid, X_AXIS);
+      Score_element * s = unsmob_element (gh_caar (autos));
+      Real amount = gh_scm2double (gh_cdar (autos));
+      
+      if (!done.find_l (s))
+       s->translate_axis (amount * wid, X_AXIS);
     }
 }
 
@@ -57,13 +58,12 @@ Collision::before_line_breaking ()
   This should be done better, probably.
 
   */
-Array< Shift_tup >
+SCM
 Collision::automatic_shift ()
 {
   Drul_array<Link_array<Note_column> > clash_groups;
   Drul_array<Array<int> > shifts;
-  Array<Shift_tup>  tups;
-
+  SCM  tups = SCM_EOL;
 
   SCM s = get_elt_property ("elements");
   for (; gh_pair_p (s); s = gh_cdr (s))
@@ -151,8 +151,8 @@ Collision::automatic_shift ()
       Note_head * nu_l= cu_l->first_head();
       Note_head * nd_l = cd_l->first_head();
       
-      int downpos =    cd_l->head_positions_interval ()[BIGGER];
-      int uppos =      cu_l->head_positions_interval ()[SMALLER];      
+      int downpos = cd_l->head_positions_interval ()[BIGGER];
+      int uppos = cu_l->head_positions_interval ()[SMALLER];      
       
       bool merge  =
        downpos == uppos
@@ -179,17 +179,18 @@ Collision::automatic_shift ()
   do
     {
       for (int i=0; i < clash_groups[d].size (); i++)
-       tups.push (Shift_tup (clash_groups[d][i], offsets[d][i]));
+       tups = gh_cons (gh_cons (clash_groups[d][i]->self_scm_, gh_double2scm (offsets[d][i])),
+                                tups);
     }
   while (flip (&d) != UP);
   return tups;
 }
 
 
-Array <Shift_tup>
+SCM
 Collision::forced_shift ()
 {
-  Array<Shift_tup> tups;
+  SCM tups = SCM_EOL;
   
   SCM s = get_elt_property ("elements");
   for (; gh_pair_p (s); s = gh_cdr (s))
@@ -199,7 +200,8 @@ Collision::forced_shift ()
       SCM force =  se->remove_elt_property ("force-hshift");
       if (gh_number_p (force))
        {
-         tups. push (Shift_tup (se, gh_scm2double (force)));
+         tups = gh_cons (gh_cons (se->self_scm_, force),
+                         tups);
        }
     }
   return tups;
diff --git a/lily/include/collision-engraver.hh b/lily/include/collision-engraver.hh
deleted file mode 100644 (file)
index ec46aea..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  collision-engraver.hh -- declare Collision_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef COLLISION_GRAV_HH
-#define COLLISION_GRAV_HH
-
-#include "engraver.hh"
-
-class Collision_engraver : public Engraver {
-  Collision* col_p_;
-  Link_array<Note_column> note_column_l_arr_;
-
-protected:
-  virtual void acknowledge_element (Score_element_info);
-  virtual void process_acknowledged ();
-  virtual void do_pre_move_processing();
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  Collision_engraver();
-  
-};
-#endif // COLLISION_GRAV_HH
index 64052db5e013f9415145a2ae5b5e0d0d47f6d11c..7a7b5379f2a74d9b59ba4cafdbbe20747c966e99 100644 (file)
 #define COLLISION_HH
 #include "lily-proto.hh"
 #include "item.hh"
-#include "tuple.hh"
 
-//junkme, use SCM conses.
-typedef Tuple<Score_element*, Real> Shift_tup;
 
 /**
   Resolve conflicts between various Note_columns (chords).
@@ -27,8 +24,8 @@ typedef Tuple<Score_element*, Real> Shift_tup;
 class Collision : public Item
 {
 protected:
-  Array<Shift_tup> automatic_shift ();
-  Array<Shift_tup> forced_shift ();
+  SCM automatic_shift ();
+  SCM forced_shift ();
   
   virtual void before_line_breaking ();
 public:
index 909629921cf1781571166e685764e92c8d7543c0..1f424860feaaaab8a140d1625bd20a6a43f45549 100644 (file)
@@ -44,6 +44,7 @@ Note_column::Note_column()
   set_elt_property ("note-heads", SCM_EOL);  
   Axis_group_interface (this).set_interface ();
   Axis_group_interface (this).set_axes (X_AXIS, Y_AXIS);
+  Group_interface (this, "interfaces").add_thing (ly_symbol2scm ("Note_column"));
 }
 
 Stem *
index 3fdbf0352a9b54ba7adc20ffed5428c4ff31b97f..be57de3d8b305ec79ac2c2f8336ff1e4ac46f5bd 100644 (file)
@@ -18,6 +18,7 @@
 #include "staff-symbol-referencer.hh"
 #include "text-item.hh"
 #include "sustain-pedal.hh"
+
 /*
    TODO:
      * it would be really cool if an engraver could be initialised with a
           Piano_pedal_engraver::"sustain"
           Piano_pedal_engraver::"una-chorda"
 
-
-
  */
 
 /*
   Would it? The semantics are unclear, and real benefits are muddy
-  too.  --hwn */
+  too.  --hwn
+*/
 
 
 
@@ -199,11 +199,6 @@ Piano_pedal_engraver::do_process_music ()
          Side_position_interface si (p->item_p_);
          si.set_axis (Y_AXIS);
 
-         /* Hmm,
-            If set to empty, it can't be centred
-            Howto centre non-fat text?
-            p->item_p_->set_empty (X_AXIS);
-         */
          p->item_p_->set_elt_property ("no-spacing-rods"  , SCM_BOOL_T);
          p->item_p_->set_elt_property ("self-alignment-X", gh_int2scm (0));
          p->item_p_->add_offset_callback (Side_position_interface::aligned_on_self, X_AXIS);
index 07eff6b44153545a5f76223702a7eb20f8d34c2c..b60416ef421ab853cc2ab1765ded1642530c2dfb 100644 (file)
 #include "protected-scm.hh"
 #include "dictionary.hh"
 #include "score-element.hh"
+#include "scm-hash.hh"
 
 class Property_engraver : public Engraver
 {
   /*
     UGH. Junk Dictionary
   */
-  Dictionary<Protected_scm> prop_dict_;        // junkme
+  Scheme_hash_table prop_dict_;        // junkme
   void apply_properties (SCM, Score_element*);
 
 protected:
@@ -32,24 +33,29 @@ void
 Property_engraver::do_creation_processing ()
 {
   SCM plist = get_property ("Generic_property_list");
-  for (; SCM_NIMP (plist); plist = gh_cdr (plist))
+  for (; gh_pair_p (plist); plist = gh_cdr (plist))
     {
       SCM elt_props = gh_car (plist);
-      prop_dict_[ly_scm2string (gh_car (elt_props))] = gh_cdr (elt_props);
+      prop_dict_.set (gh_car (elt_props), gh_cdr (elt_props));
     }
 }
 
 void
 Property_engraver::acknowledge_element (Score_element_info i)
 {
-  if (prop_dict_.elem_b (i.elem_l_->name()))
-    {
-      SCM p = prop_dict_[i.elem_l_->name()];
-      apply_properties (p,i.elem_l_);
+  SCM ifs = i.elem_l_->get_elt_property ("interfaces");
+  SCM props;
+  for (; gh_pair_p (ifs); ifs = gh_cdr (ifs))
+    {      
+      if (prop_dict_.try_retrieve (gh_car (ifs), &props))
+       {
+         apply_properties (props,i.elem_l_);
+       }
     }
-  if (prop_dict_.elem_b ("all"))
+
+  if (prop_dict_.try_retrieve (ly_symbol2scm ("all"), &props))
     {
-      apply_properties (prop_dict_["all"], i.elem_l_);
+      apply_properties (props, i.elem_l_);
     }
 }
 
@@ -83,7 +89,8 @@ Property_engraver::apply_properties (SCM p, Score_element *e)
               == SCM_BOOL_T)   // defined and  right type: do it
        e->set_elt_property (ly_symbol2string (elt_prop_sym), val);
       else
- /*
+
+       /*
            we don't print a warning if VAL == #f, because we would
            get lots of warnings when we restore stuff to default, eg.
 
@@ -92,20 +99,20 @@ Property_engraver::apply_properties (SCM p, Score_element *e)
            should not cause "type error: slurDash expects number not
            boolean"
 
-         */
+       */
        if (val != SCM_BOOL_F)
-       {                       // not the right type: error message.
-         SCM errport = scm_current_error_port ();
-         warning (_("Wrong type for property"));
-         scm_display (prop_sym, errport);
-         scm_puts (", type predicate: ", errport);
-         scm_display (type_p, errport);
-         scm_puts (", value found: ", errport);
-         scm_display (val, errport);
-         scm_puts (" type: ", errport);
-         scm_display (ly_type (val), errport);
-         scm_puts ("\n", errport);
-       }
+         {                     // not the right type: error message.
+           SCM errport = scm_current_error_port ();
+           warning (_("Wrong type for property"));
+           scm_display (prop_sym, errport);
+           scm_puts (", type predicate: ", errport);
+           scm_display (type_p, errport);
+           scm_puts (", value found: ", errport);
+           scm_display (val, errport);
+           scm_puts (" type: ", errport);
+           scm_display (ly_type (val), errport);
+           scm_puts ("\n", errport);
+         }
     }
 }
 
index bf6b9908d52df87f932d62d000d0cf597846af94..acdccf98f102c3b3b4488b39f787ec5474034a81 100644 (file)
@@ -29,7 +29,7 @@ Repeated_music::Repeated_music (Repeated_music const &s)
   repeats_i_ = s.repeats_i_;
   fold_b_ = s.fold_b_;
   volta_fold_b_ = s.volta_fold_b_;
-  
+  type_ = s.type_;
   repeat_body_p_ = s.repeat_body_p_ ? s.repeat_body_p_->clone () : 0;
   alternatives_p_ = s.alternatives_p_
     ? dynamic_cast<Music_sequence*> (s.alternatives_p_->clone ()):0;
index f0cf1234ffb2ebed2023c7af5b15dac42b0b1bf3..9e81fe5aa06f9b57aefc50ce812b559abc8416c7 100644 (file)
@@ -43,7 +43,8 @@ void start_callback_smobs()
 }
 
 
-SCM smobify_callback (Score_element_callback cb )
+SCM
+smobify_callback (Score_element_callback cb )
 {
   SCM z;
   
index c8307754ce4d79021aa0f7c3f27e1172f5631219..891f67e09272121f71a0fa2a24e484c82fe4bd0e 100644 (file)
@@ -209,24 +209,6 @@ Score_element::add_processing()
     return;
   status_i_ ++;
 
-#if 0
-    /*
-    UGH. UGH. UGH.
-   */
-  if (get_elt_property ("self-alignment-X") != SCM_UNDEFINED
-      && !dim_cache_[X_AXIS]->off_callback_l_)
-    {
-      add_offset_callback (Side_position_interface::aligned_on_self,X_AXIS);
-    }
-  
-  if (get_elt_property ("self-alignment-Y") != SCM_UNDEFINED
-      && !dim_cache_[X_AXIS]->off_callback_l_)
-      
-    {
-      add_offset_callback (Side_position_interface::aligned_on_self, Y_AXIS);
-    }
-#endif
-  
   do_add_processing();
 }
 
index 9b16216728c99ba1aef006bd1d54456c6de0c8fd..13b2c7b7c8e6e77736f6727bae02ebfd6e28984a 100644 (file)
@@ -223,14 +223,6 @@ Slur::Slur ()
 
   set_elt_property ("note-columns", SCM_EOL);
   set_elt_property ("control-points", SCM_EOL);
-
-#if 0
-  /*
-    I still don't understand the merits of this Group_interface.
-   */
-  Group_interface c (this, "control-points");
-  c.set_interface ();
-#endif
 }
 
 void
@@ -240,8 +232,7 @@ Slur::add_column (Note_column*n)
     warning (_ ("Putting slur over rest.  Ignoring."));
   else
     {
-      Group_interface gi (this, "note-columns");
-      gi.add_element (n);
+      Group_interface (this, "note-columns").add_element (n);
       add_dependency (n);
     }
 }
index 4379429a68ea939ddcf704961502c8a5cd54d9ed..d8cf62c2ac99ec2af4fc75a0733b59201e1bff4f 100644 (file)
@@ -24,10 +24,6 @@ Spacing_spanner::Spacing_spanner ()
 }
 
 /*
-  cut 'n paste from spring-spacer.cc
-
-  generate springs between columns.
-
 
   The algorithm is partly taken from :
 
@@ -36,6 +32,8 @@ Spacing_spanner::Spacing_spanner ()
   Science, The Ohio State University, 1987.
 
   TOO HAIRY.
+
+  TODO: write comments 
   
  */
 Array<Spring>
index 10d2c345a853de9d7f374b92fc8883ca15c117d8..6b9db20f74142704b2a4e07193a918dc28bdc475 100644 (file)
@@ -62,13 +62,9 @@ Span_bar_engraver::acknowledge_element (Score_element_info i)
          spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
          spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
 
-         /*
-           UGH. UGH UUHGK GUHG G
-          */
-         String visnam =  String(name()) + "-visibility";
-
-         spanbar_p_->set_elt_property ("visibility-lambda",
-                                       scm_eval (ly_symbol2scm (visnam.ch_C())));
+         SCM v = bar_l_arr_[0]->get_elt_property ("visibility-lambda");
+         if (gh_procedure_p (v))
+           spanbar_p_->set_elt_property ("visibility-lambda",v);
 
          spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
          announce_element (Score_element_info (spanbar_p_,0));
index aa5a4e697344efd3879e1e9c4643a98daae61e1f..00965fe5823d8ac2bf759b353d8f0f51f6689d57 100644 (file)
@@ -27,7 +27,7 @@ Timing_engraver::do_try_music (Music*m)
 {
   if (Bar_req  * b= dynamic_cast <Bar_req *> (m))
     {
-      if (bar_req_l_ && bar_req_l_->equal_b (b)) // huh?
+      if (bar_req_l_ && !bar_req_l_->equal_b (b)) // huh?
        return false;
       
       bar_req_l_ = b;
index eb1af95717eef09d4f1ab9b9e027edcaee32dc28..d435d4218d62e8fc34690c130e91bae7c14343bf 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title: LilyPond
-Version: 1.3.49
-Entered-date: 11MAY00
+Version: 1.3.50
+Entered-date: 12MAY00
 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.49.tar.gz 
+       1000k lilypond-1.3.50.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.3.49.tar.gz 
+       1000k lilypond-1.3.50.tar.gz 
 Copying-policy: GPL
 End
index ec14eb22b0a7e465be55b40f0d68dcc1b89d739f..8d9bad92f09bd52c28cf05b16a3f9a310b9acc7f 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.3.49
+Version: 1.3.50
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.49.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.50.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 # Icon: lilypond-icon.gif
index 57ef8859ba40faaa66deba9e753b733bc648b2e4..ac38879b5545309e4f89eef4980cbfaf6e389dc8 100644 (file)
@@ -1,7 +1,7 @@
 
 ;
 ; Format: 
-; (cons "Type name"
+; (cons 'Type name
 ;    (list PROPERTYDESCRIPTIONS))
 ; 
 ; where
@@ -15,7 +15,7 @@
 
 
 (define generic-beam-properties
-  (cons "Beam"
+  (cons 'Beam
        (list
         (list 'beamSlopeDamping number? 'damping)
         (list 'autoKneeGap number? 'auto-knee-gap)
@@ -29,7 +29,7 @@
 
 
 (define generic-stem-properties
-  (cons "Stem"
+  (cons 'Stem
        (list
         (list 'stemVerticalDirection dir? 'direction)
         (list 'verticalDirection dir? 'direction)       
   )
 
 (define generic-dot-properties
-  (cons "Dots" (list
+  (cons 'Dots
+       (list
                (list 'dotDirection dir? 'direction)
                (list 'verticalDirection dir? 'direction)
                )
        ))
 
 (define generic-script-properties
-  (cons "Script" (list
+  (cons 'Script (list
                  (list 'articulationScriptVerticalDirection dir? 'direction)
                  (list 'articulationScriptPadding number? 'padding)
 
@@ -59,7 +60,7 @@
 
 
 (define generic-text-properties
-  (cons "Text_item" (list
+  (cons 'Text_item (list
                     (list 'textStyle string? 'style)
                     (list 'textScriptPadding number? 'padding)
                     (list 'textVerticalAlignment dir? 'self-alignment-Y)
        ))
 
 (define generic-sustain-pedal-properties
-  (cons "Sustain_pedal" (list
+  (cons 'Sustain_pedal (list
                         (list 'textScriptPadding number? 'padding)
                         (list 'sustainPedalPadding number? 'padding))))
 
 (define generic-chord-name-properties
-  (cons "Chord_name" (list
+  (cons 'Chord_name (list
                      (list 'textScriptWordSpace number? 'word-space)
                      (list 'chordNameWordSpace number? 'word-space)
                      (list 'chordNameStyle string? 'style))))
 
 (define generic-crescendo-properties
-  (cons "Crescendo" (list
+  (cons 'Crescendo (list
                     (list 'dynamicDirection dir? 'direction)
                     (list 'verticalDirection dir? 'direction)
                     (list 'dynamicPadding number? 'padding) 
@@ -88,7 +89,7 @@
                     )))
   
 (define generic-dynamic-line-spanner-properties
-  (cons "Dynamic_line_spanner" (list
+  (cons 'Dynamic_line_spanner (list
                     (list 'dynamicDirection dir? 'direction)
                     (list 'verticalDirection dir? 'direction)
                     (list 'dynamicPadding number? 'padding) 
                     )))
   
 (define generic-volta-spanner-properties
-  (cons "Volta_spanner" (list
+  (cons 'Volta_spanner (list
                     (list 'voltaVerticalDirection dir? 'direction)
                     (list 'voltaPadding number? 'padding) 
                     (list 'voltaMinimumSpace number? 'minimum-space) 
                     )))
   
 (define generic-bar-properties
-  (cons "Staff_bar" (list
+  (cons 'Staff_bar (list
                     (list 'barSize number? 'bar-size))
        )
   )    
 
 ; don't do this yet. Depends on whennn the staff is really announced
 (define generic-staff-symbol-properties
-  (cons "Staff_symbol" (list
+  (cons 'Staff_symbol (list
                        )
        )
   )
 
 (define generic-breathing-sign-properties
-  (cons "Breathing_sign"
+  (cons 'Breathing_sign
        (list
         (list 'breathingSignVerticalDirection dir? 'direction)
         (list 'verticalDirection dir? 'direction)
         )))
 
 (define generic-clef-properties
-  (cons "Clef_item"
+  (cons 'Clef_item
        (list
         (list 'clefStyle string? 'style))
        )
   )
 
 (define generic-All-properties
-  (cons "all"  (list (list 'fontSize number? 'fontsize))))
+  (cons 'all  (list (list 'fontSize number? 'fontsize))))
 
 
 (define generic-notehead-properties
-  (cons "Note_head" (list (list 'noteHeadStyle symbol? 'style))))
+  (cons 'Note_head
+       (list (list 'noteHeadStyle symbol? 'style))))
 
 
 (define generic-rest-properties
-  (cons "Rest" (list (list 'restStyle string? 'reststyle))))
+  (cons 'Rest
+       (list (list 'restStyle string? 'reststyle))))
 
 (define generic-rest-collision-properties
-  (cons "Rest_collision" (list (list 'maximumRestCount number? 'maximum-rest-count))))
+  (cons 'Rest_collision
+       (list (list 'maximumRestCount number? 'maximum-rest-count))))
 
 (define generic-tie-properties
-  (cons "Tie" (list
+  (cons 'Tie (list
               (list 'tieVerticalDirection dir? 'direction)
               (list 'verticalDirection dir? 'direction)
 (list 'tieDash number? 'dashed)
   )))
 
 (define generic-tie-column-properties
-  (cons "Tie_column" (list
+  (cons 'Tie_column (list
                      (list 'tieVerticalDirection dir? 'direction)
                      (list 'verticalDirection dir? 'direction)
   )))
 
 (define generic-note-column-properties
-  (cons "Note_column"
+  (cons 'Note_column
        (list
         (list 'horizontalNoteShift number? 'horizontal-shift)
         (list 'forceHorizontalShift number? 'force-hshift)
         )))
 
 (define generic-collision-properties
-  (cons "Collision"
+  (cons 'Collision
        (list
         (list 'collisionMergeDotted boolean? 'merge-differently-dotted)
         )
   )
   
 (define generic-slur-properties
-  (cons "Slur"
+  (cons 'Slur
        (list
         (list 'slurVerticalDirection dir? 'direction)
         (list 'verticalDirection dir? 'direction)       
         (list 'slurDash number? 'dashed))))
 
 (define generic-timesig-properties
-  (cons "Time_signature"
+  (cons 'Time_signature
        (list
         (list 'timeSignatureStyle string? 'style))))
 
   (or (boolean? s) (symbol? s)))
 
 (define generic-tuplet-spanner-properties
-  (cons "Tuplet_spanner"
+  (cons 'Tuplet_spanner
        (list
+        (list 'tupletDirection dir? 'direction)
         (list 'tupletNumberVisibility symbol-or-boolean? 'tuplet-number-visibility)
         (list 'tupletBracketVisibility symbol-or-boolean? 'tuplet-bracket-visibility)
        ))
index d2e5b83c01b3613a4d0fdc89a6cde5d3b3d2f7c8..fec2be9cfe43ce1edab9411f3f7657a275044fc8 100644 (file)
@@ -7,7 +7,7 @@
 
 ;
 ; This file contains various routines in Scheme that are easier to 
-; do here than in C++.  At present it is a unorganised mess. Sorry. 
+; do here than in C++.  At present it is an unorganised mess. Sorry. 
 ;
 
 
@@ -90,9 +90,6 @@
 (define (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
 
 
-;; Score_span_bars are only visible at start of line
-;; i.e. if break_dir == RIGHT == 1
-(define Span_bar_engraver-visibility begin-of-line-invisible)
 (define mark-visibility end-of-line-invisible)
 
 ;; Spacing constants for prefatory matter.
 
 (define (scm-as-output)
   (eval (as-scm 'all-definitions)))
-                               
-; Russ McManus, <mcmanus@IDT.NET>  
-; 
-; I use the following, which should definitely be provided somewhere
-; in guile, but isn't, AFAIK:
-; 
-; 
-
-(define (hash-table-for-each fn ht)
-  (do ((i 0 (+ 1 i)))
-      ((= i (vector-length ht)))
-    (do ((alist (vector-ref ht i) (cdr alist)))
-       ((null? alist) #t)
-      (fn (car (car alist)) (cdr (car alist))))))
-
-(define (hash-table-map fn ht)
-  (do ((i 0 (+ 1 i))
-       (ret-ls '()))
-      ((= i (vector-length ht)) (reverse ret-ls))
-    (do ((alist (vector-ref ht i) (cdr alist)))
-       ((null? alist) #t)
-      (set! ret-ls (cons (fn (car (car alist)) (cdr (car alist))) ret-ls)))))
-
-
-
+       
 (define (index-cell cell dir)
   (if (equal? dir 1)
       (cdr cell)
      )
    )
      
-
-(define (slur-ugly ind ht)
-  (if (and
-;       (< ht 4.0)
-       (< ht (* 4 ind))
-       (> ht (* 0.4 ind))
-       (> ht (+ (* 2 ind) -4))
-       (< ht (+ (* -2 ind) 8)))
-      #f
-      (cons ind  ht)
-  ))