]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.110
authorfred <fred>
Wed, 27 Mar 2002 00:33:28 +0000 (00:33 +0000)
committerfred <fred>
Wed, 27 Mar 2002 00:33:28 +0000 (00:33 +0000)
137 files changed:
CHANGES
Documentation/topdocs/index.tely
VERSION
lily/a2-engraver.cc
lily/align-interface.cc
lily/align-note-column-engraver.cc
lily/arpeggio.cc
lily/auto-beam-engraver.cc
lily/axis-group-engraver.cc
lily/axis-group-interface.cc
lily/bar-engraver.cc
lily/bar-number-engraver.cc
lily/bar.cc
lily/beam-engraver.cc
lily/beam.cc
lily/break-align-engraver.cc
lily/break-align-item.cc
lily/breathing-sign-engraver.cc
lily/breathing-sign.cc
lily/chord-name-engraver.cc
lily/chord-name.cc
lily/chord-tremolo-engraver.cc
lily/clef-engraver.cc
lily/clef-item.cc
lily/collision.cc
lily/command-request.cc
lily/crescendo.cc
lily/custos-engraver.cc
lily/custos.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dots.cc
lily/dynamic-engraver.cc
lily/dynamic-performer.cc
lily/extender-engraver.cc
lily/grace-align-item.cc
lily/grace-engraver-group.cc
lily/grace-performer-group.cc
lily/grace-position-engraver.cc
lily/grob.cc
lily/hara-kiri-group-spanner.cc
lily/hyphen-engraver.cc
lily/hyphen-spanner.cc
lily/include/command-request.hh
lily/include/custos.hh
lily/include/grace-engraver-group.hh
lily/include/grace-performer-group.hh
lily/include/grob.hh
lily/include/group-interface.hh
lily/include/line-group-group-engraver.hh
lily/include/lyric-phrasing-engraver.hh
lily/include/musical-request.hh
lily/include/score-engraver.hh
lily/include/score-performer.hh
lily/include/slur.hh
lily/include/timing-translator.hh
lily/include/translator-group.hh
lily/include/translator.hh
lily/include/transposed-music.hh
lily/key-engraver.cc
lily/key-item.cc
lily/line-group-group-engraver.cc
lily/line-of-score.cc
lily/local-key-engraver.cc
lily/local-key-item.cc
lily/lyric-engraver.cc
lily/lyric-extender.cc
lily/lyric-phrasing-engraver.cc
lily/mark-engraver.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music-output-def.cc
lily/note-column.cc
lily/note-head.cc
lily/note-heads-engraver.cc
lily/note-name-engraver.cc
lily/parser.yy
lily/piano-pedal-engraver.cc
lily/piano-pedal-performer.cc
lily/property-engraver.cc
lily/relative-octave-music.cc
lily/repeat-acknowledge-engraver.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rest.cc
lily/rhythmic-head.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/script-column-engraver.cc
lily/script-column.cc
lily/script-engraver.cc
lily/script.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/separation-item.cc
lily/side-position-interface.cc
lily/simple-spacer.cc
lily/slur-engraver.cc
lily/slur.cc
lily/spacing-engraver.cc
lily/spacing-spanner.cc
lily/span-bar.cc
lily/span-dynamic-performer.cc
lily/spanner.cc
lily/staff-performer.cc
lily/staff-symbol-engraver.cc
lily/staff-symbol-referencer.cc
lily/staff-symbol.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/sustain-pedal.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-delimiter.cc
lily/tempo-performer.cc
lily/text-engraver.cc
lily/text-item.cc
lily/text-spanner-engraver.cc
lily/text-spanner.cc
lily/tie-column.cc
lily/tie-engraver.cc
lily/tie-performer.cc
lily/tie.cc
lily/time-scaled-music.cc
lily/time-signature-engraver.cc
lily/time-signature.cc
lily/timing-engraver.cc
lily/timing-translator.cc
lily/translator-group.cc
lily/translator.cc
lily/transposed-music.cc
lily/tuplet-engraver.cc
lily/tuplet-spanner.cc
lily/vertical-align-engraver.cc
lily/volta-engraver.cc
lily/volta-spanner.cc
scm/element-descriptions.scm
scm/slur.scm

diff --git a/CHANGES b/CHANGES
index 07c400599bd868f7c6416e8c771d1b418be4f1d5..4b678c90888c0ff7af7f735da58ad27ff483810e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,36 @@
-1.3.108.uu1
-===========
+1.3.109.jcn2
+============
+
+* Fixed a mysterious typo in toplevel index.
+
+* Enabled property-engraver.
+
+* Cleanup in Auto-beam-engraver (still broken, because timings are off?)
+
+* Collapsed all ``void Foo::create_grobs () { deprecated_process_music
+(); }'' occurences, and reactivated some disabled code (note-name,
+chord-name, custos, lyrics).  Reactivated Timing_translator using
+process_music ().
+
+1.3.109.hwn1
+============
+
+* unsmob_element -> unsmob_grob
+
+* Make a Slur::height callback, to prevent early brew_molecule
+call. This fixes cross-staff slurs.
+
+* Bugfix: custodes style must be symbol, not string.
+
+* do_creation_processing () -> initialize (), do_removal_processing ()
+-> finalize ().  Remove (do_)add_processing.
+
+* Move Relative_octave_music::last_pitch_ into SCM, junk
+Transposed_music::to_pitch_, junked Time_scaled_music::{den_i_,
+num_i_}, Rhythmic_req::duration_, Melodic_req::pitch_
+
+1.3.109
+=======
 
 * Bugfix: resurrected point-and-click. 
 
@@ -21,8 +52,8 @@ various XXXX functions as wrapper for do_XXX functions.
 {pre,post}_move_processing -> {stop,start}_translation_timestep,
 do_try_music -> try_music.
 
-1.3.107.jcn3
-============
+1.3.108
+=======
 
 * Dropped ly_lists_equal for gh_equal_
 
index 50be2f66d7c2c5bcf130fdd7cbee19a22df2a7a3..ce7638836551d9dc69e5ecc974d09f9c86d475ad 100644 (file)
@@ -16,7 +16,7 @@
 
 @unnumberedsec What is LilyPond?
 
-LilyPond is a music typesetting.  It produces beautiful sheet music
+LilyPond is a music typesetter.  It produces beautiful sheet music
 using a high level description file as input. It excels at typesetting
 classical music, but you can also print pop-songs.  With LilyPond we
 hope to make music publication software available to anyone on the
@@ -73,15 +73,6 @@ examples} and @uref{long-examples.html,longer examples}. The
 examples include sound bites  in MIDI, pictures in PNG, printable scores
 in PostScript, and LilyPond input. Others use LilyPond too, and have put
 scores on the web. Head over to @uref{http://appel.lilypond.org/wiki/index.php?DownloadLilyPondScores}
-@uref{http://www.geocities.com/Vienna/Studio/1714/harpsichord.html,John
-Sankey}, harpsichordist to the internet, is typesetting the complete
-@uref{http://www.geocities.com/Vienna/Studio/1714/scarlattidwn.html,sonatas
-by Scarlatti}. Jeff Covey, guitar player and overall nice guy, is
-putting @uref{http://www4.smart.net/~jcovey/scores/,guitar music} on the
-net. The @uref{http://sca.uwaterloo.ca/Mutopia/,Mutopia project} is an
-archive of public domain sheet music under construction. Dirk Lattermann
-also put some works @uref{http://www.alqualonde.de/lilypond.html,on the
-web}.
 
 @html
 <a name="download-source">
diff --git a/VERSION b/VERSION
index b235fa36fab8f5b712b09e9e0d5ee972d580898c..8dbf13f805602e9c145ea6ed48fec969ea9262fb 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
-PATCH_LEVEL=109
+PATCH_LEVEL=110
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index b59595a5aadcc331e8d7494629821f9bd7e31004..d2f56c2ef34128a3b42f05ee590faa65927a16af 100644 (file)
@@ -22,7 +22,6 @@ public:
   VIRTUAL_COPY_CONS (Translator);
   
 protected:
-  void deprecated_process_music ();
   virtual void acknowledge_grob (Grob_info);
 
   virtual void create_grobs ();
@@ -43,7 +42,7 @@ A2_engraver::A2_engraver ()
 
 
 void
-A2_engraver::deprecated_process_music ()
+A2_engraver::create_grobs ()
 {
   if (!to_boolean (get_property ("combineParts")))
     return ;
@@ -161,12 +160,6 @@ A2_engraver::acknowledge_grob (Grob_info i)
     }
 }
 
-void
-A2_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
 void 
 A2_engraver::stop_translation_timestep ()
 {
index dfb50d7d265296628458a0d1591069d289c58e35..db7963ad2150ebca75562e6d076449c294b51d3d 100644 (file)
@@ -21,7 +21,7 @@ MAKE_SCHEME_CALLBACK(Align_interface,alignment_callback,2);
 SCM
 Align_interface::alignment_callback (SCM element_smob, SCM axis)
 {
-  Grob * me = unsmob_element (element_smob);
+  Grob * me = unsmob_grob (element_smob);
   Axis ax = (Axis )gh_scm2int (axis);
   Grob * par = me->parent_l (ax);
   if (par && !to_boolean (par->get_grob_property ("alignment-done")))
index b3dc85e8595f1e708a1b21caea7f3a6cfe976b0d..5904c223e7420cdee41cf506c167f7358dd9fc94 100644 (file)
@@ -28,8 +28,8 @@ class Align_note_column_engraver: public Engraver
 
   virtual void create_grobs ();
   virtual void start_translation_timestep ();
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
+  virtual void initialize ();
+  virtual void finalize ();
   virtual void acknowledge_grob (Grob_info);
 public:
   VIRTUAL_COPY_CONS(Translator);
@@ -44,7 +44,7 @@ Align_note_column_engraver::Align_note_column_engraver()
 }
 
 void
-Align_note_column_engraver::do_creation_processing ()
+Align_note_column_engraver::initialize ()
 {
   align_item_p_ = new Item (get_property ("GraceAlignment"));
   Grace_align_item::set_interface (align_item_p_);
@@ -56,7 +56,7 @@ Align_note_column_engraver::do_creation_processing ()
 }
 
 void
-Align_note_column_engraver::do_removal_processing ()
+Align_note_column_engraver::finalize ()
 {
   SCM al = get_property ("graceAlignPosition");
   if (isdir_b (al))
index 8802cb71f3d90a76133f2c2ac323dc6434c0f756..ba1e4d28baf799490f2acf98abf78f204fff9f19 100644 (file)
@@ -26,12 +26,12 @@ MAKE_SCHEME_CALLBACK (Arpeggio, brew_molecule, 1);
 SCM 
 Arpeggio::brew_molecule (SCM smob) 
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   
   Grob * common = me;
   for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * stem =  unsmob_element (gh_car (s));
+      Grob * stem =  unsmob_grob (gh_car (s));
       common =  common->common_refpoint (Staff_symbol_referencer::staff_symbol_l (stem),
                                 Y_AXIS);
     }
@@ -49,7 +49,7 @@ Arpeggio::brew_molecule (SCM smob)
       
   for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * stem = unsmob_element (gh_car (s));
+      Grob * stem = unsmob_grob (gh_car (s));
       Grob * ss = Staff_symbol_referencer::staff_symbol_l (stem);
       Interval iv =Stem::head_positions (stem);
       iv *= Staff_symbol::staff_space (ss)/2.0;
@@ -90,7 +90,7 @@ MAKE_SCHEME_CALLBACK(Arpeggio, width_callback,2);
 SCM
 Arpeggio::width_callback (SCM smob, SCM axis)
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
   Axis a = (Axis)gh_scm2int (axis);
   assert (a == X_AXIS);
   Molecule arpeggio = Font_interface::get_default_font (me)->find_by_name ("scripts-arpeggio");
index ff73ee4c72fad2fa42e5f81d045a80b3463b790f..d5af0fcf66dcdcd958ce2f1b7a25bce26b2d97d6 100644 (file)
@@ -33,14 +33,16 @@ public:
 protected:
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void acknowledge_grob (Grob_info);
   virtual void create_grobs ();
 
 private:
-  void begin_beam ();
-  void consider_end_and_begin (Moment test_mom);
+  bool test_moment (Direction, Moment);
+  void consider_begin (Moment);
+  void consider_end (Moment);
   Spanner* create_beam_p ();
+  void begin_beam ();
   void end_beam ();
   void junk_beam ();
   bool same_grace_state_b (Grob* e);
@@ -54,7 +56,7 @@ private:
   Link_array<Item>* stem_l_arr_p_;
 
 
-  bool first_b_;
+  bool count_i_;
   Moment last_add_mom_;
 
   /*
@@ -73,7 +75,7 @@ ADD_THIS_TRANSLATOR (Auto_beam_engraver);
 
 Auto_beam_engraver::Auto_beam_engraver ()
 {
-  first_b_ = true;
+  count_i_ = 0;
   stem_l_arr_p_ = 0;
   shortest_mom_ = Moment (1, 8);
   finished_beam_p_ = 0;
@@ -82,14 +84,38 @@ Auto_beam_engraver::Auto_beam_engraver ()
 }
 
 /*
-  rename me: consider_end_or_begin () ? 
- */
-void
-Auto_beam_engraver::consider_end_and_begin (Moment test_mom)
+  Determine end moment for auto beaming (or begin moment, but mostly
+  0==anywhere) In order of increasing priority:
+  
+  i.   begin anywhere, end at every beat
+  ii.  end   *    <num> <den>
+  iii. end <type> <num> <den>
+  
+  iv.  end   *      *     *
+  v.   end <type>   *     *
+  
+  
+  Rationale:
+  
+  [to be defined in config file]
+  i.   easy catch-all rule
+  ii.  exceptions for time signature
+  iii. exceptions for time signature, for specific duration type
+  
+  [user override]
+  iv.  generic override
+  v.   override for specific duration type
+  
+*/
+bool
+Auto_beam_engraver::test_moment (Direction dir, Moment test_mom)
 {
   SCM wild = gh_list (ly_symbol2scm ("*"), ly_symbol2scm ("*"), SCM_UNDEFINED);
-  SCM b = gh_list (ly_symbol2scm ("begin"), SCM_UNDEFINED);
-  SCM e = gh_list (ly_symbol2scm ("end"), SCM_UNDEFINED);
+  SCM function;
+  if (dir == START)
+    function = gh_list (ly_symbol2scm ("begin"), SCM_UNDEFINED);
+  else
+    function = gh_list (ly_symbol2scm ("end"), SCM_UNDEFINED);
 
   Moment one_beat = *unsmob_moment( get_property ("beatLength"));
   int num = *unsmob_moment (get_property("measureLength")) / one_beat;
@@ -101,112 +127,82 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom)
 
   SCM settings = get_property ("autoBeamSettings");
   
-  /*
-    Determine end moment for auto beaming (and begin, mostly 0==anywhere) 
-    In order of increasing priority:
-
-    i.   every beat
-    ii.  end   *    <num> <den>
-    iii. end <type> <num> <den>
-
-    iv.  end   *      *     *
-    v.   end <type>   *     *
-
-
-    Rationale:
-
-    [to be defined in config file]
-    i.   easy catch-all rule
-    ii.  exceptions for time signature
-    iii. exceptions for time signature, for specific duration type
-
-    [user override]
-    iv.  generic override
-    v.   override for specific duration type
-
-  */
+  /* first guess */
   
-
-  /*
-    first guess: begin beam at any position
-  */
-  Moment begin_mom (0);
-  /*
-    first guess: end beam at end of beat
-  */
-  SCM one (get_property ("beatLength"));
-
-  Moment end_mom;
-  if (unsmob_moment (one))
-    end_mom = *unsmob_moment (one);
-
-  /*
-    second guess: property generic time exception
-  */
-  SCM begin = gh_assoc (gh_append3 (b, wild, time), settings);
+  /* begin beam at any position
+   (and fallback for end) */
+  Moment moment (0);
   
-  if (begin != SCM_BOOL_F && unsmob_moment (gh_cdr (begin)))
-    begin_mom = * unsmob_moment (gh_cdr (begin));
-
-  SCM end = gh_assoc (gh_append3 (e, wild, time), settings);
-  if (end != SCM_BOOL_F && unsmob_moment (gh_cdr (end)))
-    end_mom = * unsmob_moment (gh_cdr (end));
+  /* end beam at end of beat */
+  if (dir == STOP)
+    {
+      SCM beat (get_property ("beatLength"));
+      
+      if (unsmob_moment (beat))
+       moment = *unsmob_moment (beat);
+    }
 
-  /*
-    third guess: property time exception, specific for duration type
-  */
-  SCM begin_mult = gh_assoc (gh_append3 (b, type, time), settings);
-  if (begin_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (begin_mult)))
-    begin_mom = * unsmob_moment (gh_cdr (begin_mult));
+  /* second guess: property generic time exception */
+  SCM m = gh_assoc (gh_append3 (function, wild, time), settings);
   
-  SCM end_mult = gh_assoc (gh_append3 (e, type, time), settings);
-  if (end_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (end_mult)))
-    end_mom = * unsmob_moment (gh_cdr (end_mult));
-
-  /*
-    fourth guess [user override]: property plain generic
-  */
-  begin = gh_assoc (gh_append3 (b, wild, wild), settings);
-  if (begin != SCM_BOOL_F && unsmob_moment (gh_cdr (begin)))
-    begin_mom = * unsmob_moment (gh_cdr (begin));
-
-  end = gh_assoc (gh_append3 (e, wild, wild), settings);
-  if (end != SCM_BOOL_F && unsmob_moment (gh_cdr (end)))
-    end_mom = * unsmob_moment (gh_cdr (end));
-
-  /*
-    fifth guess [user override]: property plain, specific for duration type
-  */
-  begin_mult = gh_assoc (gh_append3 (b, type, wild), settings);
-  if (begin_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (begin_mult)))
-    begin_mom = * unsmob_moment (gh_cdr (begin_mult));
+  if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m)))
+    moment = * unsmob_moment (gh_cdr (m));
+
+  /* third guess: property time exception, specific for duration type */
+  m = gh_assoc (gh_append3 (function, type, time), settings);
+  if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m)))
+    moment = * unsmob_moment (gh_cdr (m));
+
+  /* fourth guess [user override]: property plain generic */
+  m = gh_assoc (gh_append3 (function, wild, wild), settings);
+  if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m)))
+    moment = * unsmob_moment (gh_cdr (m));
+
+  /* fifth guess [user override]: property plain, specific for duration type */
+  m = gh_assoc (gh_append3 (function, type, wild), settings);
+  if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m)))
+    moment = * unsmob_moment (gh_cdr (m));
   
-  end_mult = gh_assoc (gh_append3 (e, type, wild), settings);
-  if (end_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (end_mult)))
-    end_mom = * unsmob_moment (gh_cdr (end_mult));
-
   Rational r;
-  if (end_mom)
-    r = unsmob_moment (get_property ("measurePosition"))->mod_rat (end_mom);
+  if (moment)
+    r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment);
   else
-    r = Moment (1);
-
-  if (stem_l_arr_p_ && stem_l_arr_p_->size () > 1 && !r)
-    end_beam ();
+    {
+      if (dir == START)
+       /* if undefined, starting is ok */
+       r = 0;
+      else
+       /* but ending is not */
+       r = 1;
+    }
+  return !r;
+}
 
-  /*
-    Allow already started autobeam to end
-   */
-  SCM on = get_property ("noAutoBeaming");
-  if (to_boolean (on))
-    return;
+void
+Auto_beam_engraver::consider_begin (Moment test_mom)
+{
+  bool off = to_boolean (get_property ("noAutoBeaming"));
+  if (!stem_l_arr_p_ && ! off)
+    {
+      bool b = test_moment (START, test_mom);
+      if (b)
+       begin_beam ();
+    }
+}
 
-  if (begin_mom)
-    r = unsmob_moment (get_property ("measurePosition"))->mod_rat (begin_mom);
-  if (!stem_l_arr_p_ && (!begin_mom || !r))
-    begin_beam ();
+void
+Auto_beam_engraver::consider_end (Moment test_mom)
+{
+  if (stem_l_arr_p_ && stem_l_arr_p_->size () > 1)
+    {
+      /* Allow already started autobeam to end:
+        don't check for noAutoBeaming */
+      bool b = test_moment (STOP, test_mom);
+      if (b)
+       end_beam ();
+    }
 }
-      
+
 Spanner*
 Auto_beam_engraver::create_beam_p ()
 {
@@ -292,7 +288,7 @@ Auto_beam_engraver::typeset_beam ()
 void
 Auto_beam_engraver::start_translation_timestep ()
 {
-  first_b_ =true;
+  count_i_ = 0;
   /*
     don't beam over skips
    */
@@ -314,7 +310,7 @@ Auto_beam_engraver::stop_translation_timestep ()
 }
 
 void
-Auto_beam_engraver::do_removal_processing ()
+Auto_beam_engraver::finalize ()
 {
   /* finished beams may be typeset */
   typeset_beam ();
@@ -390,26 +386,36 @@ Auto_beam_engraver::acknowledge_grob (Grob_info info)
          return;
        }
 
-      /*
-       if shortest duration would change
-       reconsider ending/starting beam first.
-      */
       Moment dur = unsmob_duration (rhythmic_req->get_mus_property ("duration"))->length_mom ();
-      consider_end_and_begin (dur);
-      if (!stem_l_arr_p_)
-       return;
+      /* FIXME:
+
+       This comment has been here since long:
+
+          if shortest duration would change
+           consider ending and beginning beam first. 
+
+       but the code didn't match: */
+#if 1
       
+      consider_end (dur);
+      consider_begin (dur);
+
+      if (dur < shortest_mom_)
+       shortest_mom_ = dur;
+#else
+      /* I very much suspect that we wanted: */
+
+      consider_end (shortest_mom_);
       if (dur < shortest_mom_)
        {
          shortest_mom_ = dur;
-         if (stem_l_arr_p_->size ())
-           {
-             shortest_mom_ = dur;
-             consider_end_and_begin (shortest_mom_);
-             if (!stem_l_arr_p_)
-               return;
-           }
+         consider_end (shortest_mom_);
        }
+      consider_begin (shortest_mom_);
+#endif
+
+      if (!stem_l_arr_p_)
+       return;
       
       Moment now = now_mom ();
       
@@ -424,12 +430,12 @@ Auto_beam_engraver::acknowledge_grob (Grob_info info)
 void
 Auto_beam_engraver::create_grobs ()
 {
-  if (first_b_)
+  if (!count_i_)
     {
-      first_b_ = false;
-      consider_end_and_begin (shortest_mom_);
+      consider_end (shortest_mom_);
+      consider_begin (shortest_mom_);
     }
-  else
+  else if (count_i_ > 1)
     {
       if (stem_l_arr_p_)
        {
@@ -444,5 +450,11 @@ Auto_beam_engraver::create_grobs ()
              junk_beam ();
            }
        }    
-    }  
+    }
+
+  /*
+    count_i_++ -> 
+
+        auto-beam-engraver.cc:459: warning: value computed is not used (gcc: 2.96) */
+  count_i_ = count_i_ + 1;
 }
index 2c0e62a630c4b7d8a338f6db73346dfc2d0b5fe2..38142ee4e99279e364c154e9d1de2c3edc0ac9ca 100644 (file)
@@ -21,8 +21,8 @@ class Axis_group_engraver : public Engraver
 protected:
   Spanner *staffline_p_;
   Link_array<Grob> elts_;
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
+  virtual void initialize();
+  virtual void finalize();
   virtual void acknowledge_grob (Grob_info);
   virtual void create_grobs ();
   virtual Spanner* get_spanner_p () const;
@@ -40,13 +40,13 @@ Axis_group_engraver::Axis_group_engraver ()
 }
 
 void
-Axis_group_engraver::do_creation_processing ()
+Axis_group_engraver::initialize ()
 {
   staffline_p_ = get_spanner_p ();
   Axis_group_interface::set_interface (staffline_p_);
   Axis_group_interface::set_axes (staffline_p_, Y_AXIS, Y_AXIS);
 
-  Grob *  it = unsmob_element (get_property ("currentCommandColumn"));
+  Grob *  it = unsmob_grob (get_property ("currentCommandColumn"));
 
   staffline_p_->set_bound(LEFT,it);
 
@@ -60,7 +60,7 @@ Axis_group_engraver::get_spanner_p () const
 }
 
 void
-Axis_group_engraver::do_removal_processing ()
+Axis_group_engraver::finalize ()
 {
   String type = daddy_grav_l ()->type_str_ ;
   SCM dims = get_property ((type  + "VerticalExtent").ch_C());
@@ -82,7 +82,7 @@ Axis_group_engraver::do_removal_processing ()
       && gh_number_p (gh_cdr (dims)))
     staffline_p_->set_grob_property ("extra-extent-Y", dims);
 
-  Grob *  it = unsmob_element (get_property ("currentCommandColumn"));
+  Grob *  it = unsmob_grob (get_property ("currentCommandColumn"));
 
 
   staffline_p_->set_bound(RIGHT,it);
index 4c2b849aea96181b226157706cb32ff5000243fb..67beabd1c71556f641f5fc8eebe99be51d1a1705 100644 (file)
@@ -43,7 +43,7 @@ Axis_group_interface::relative_group_extent (Axis a, Grob *common, SCM elts)
   Interval r;
   for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * se = unsmob_element (gh_car (s));
+      Grob * se = unsmob_grob (gh_car (s));
       Interval dims = se->extent (common, a);
       if (!dims.empty_b ())
        r.unite (dims);
@@ -55,14 +55,14 @@ MAKE_SCHEME_CALLBACK(Axis_group_interface,group_extent_callback,2);
 SCM
 Axis_group_interface::group_extent_callback (SCM element_smob, SCM scm_axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (scm_axis);
 
   Grob * common =(Grob*) me;
 
   for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * se = unsmob_element (gh_car (s));
+      Grob * se = unsmob_grob (gh_car (s));
       common = se->common_refpoint (common, a);
     }
 
@@ -118,7 +118,7 @@ Axis_group_interface::get_children (Grob*me)
   
   for (SCM ep = me->get_grob_property ("elements"); gh_pair_p (ep); ep = gh_cdr (ep))
     {
-      Grob* e = unsmob_element (gh_car (ep));
+      Grob* e = unsmob_grob (gh_car (ep));
       if (e)
        childs.concat (Axis_group_interface::get_children (e));
     }
index 4fad1f37c55542258f6147f20b7d9a291c35b723..32bd40368e2b6164b872028c577ddfea04349b87 100644 (file)
@@ -27,8 +27,7 @@ public:
   void request_bar (String type_str);
     
 protected:
-  virtual void do_removal_processing ();
-  void deprecated_process_music();
+  virtual void finalize ();
   virtual void stop_translation_timestep();
   virtual void create_grobs ();
 
@@ -60,7 +59,7 @@ Bar_engraver::create_bar ()
 }
 
 void
-Bar_engraver::do_removal_processing ()
+Bar_engraver::finalize ()
 {
   typeset_bar ();
 }
@@ -70,7 +69,7 @@ Bar_engraver::do_removal_processing ()
   modify whichBar in  deprecated_process_music () be typeset
 */
 void
-Bar_engraver::deprecated_process_music()
+Bar_engraver::create_grobs ()
 {
   if (!bar_p_ && gh_string_p (get_property ("whichBar")))
     {
@@ -78,12 +77,6 @@ Bar_engraver::deprecated_process_music()
     }
 }
 
-void
-Bar_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
 void
 Bar_engraver::typeset_bar ()
 {
index 5a32db34813848a62fb92c47c1900d3c32e59e02..ce129ffd9b18e525fe368d29ae4bfffc5a426eaa 100644 (file)
@@ -26,17 +26,17 @@ protected:
 protected:
   virtual void stop_translation_timestep ();
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual void create_grobs ();
   void create_items();
-  void  deprecated_process_music ();
+
 public:
   VIRTUAL_COPY_CONS(Translator);
   Bar_number_engraver();
 };
 
 void
-Bar_number_engraver::deprecated_process_music ()
+Bar_number_engraver::create_grobs ()
 {
   // todo include (&&!time->cadenza_b_ )
   SCM bn = get_property("currentBarNumber");
@@ -54,13 +54,6 @@ Bar_number_engraver::deprecated_process_music ()
     }
 }
 
-void
-Bar_number_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-
 ADD_THIS_TRANSLATOR(Bar_number_engraver);
 
 Bar_number_engraver::Bar_number_engraver ()
@@ -69,7 +62,7 @@ Bar_number_engraver::Bar_number_engraver ()
 }
 
 void
-Bar_number_engraver::do_creation_processing ()
+Bar_number_engraver::initialize ()
 {
   /*
     ugh: need to share code with mark_engraver
index 6923ad91800a09ad2b7da9afd40b790d7f33eb06..b74122d0725705f5c400b85d610512884c2fd4cb 100644 (file)
@@ -26,7 +26,7 @@ MAKE_SCHEME_CALLBACK(Bar,brew_molecule,1);
 SCM 
 Bar::brew_molecule (SCM smob) 
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
 
   SCM s = me->get_grob_property ("glyph");
   SCM barsiz_proc = me->get_grob_property ("barsize-procedure");
@@ -128,7 +128,7 @@ MAKE_SCHEME_CALLBACK(Bar,before_line_breaking ,1);
 SCM
 Bar::before_line_breaking  (SCM smob)
 {
-  Grob*me=unsmob_element (smob);
+  Grob*me=unsmob_grob (smob);
   Item * item = dynamic_cast<Item*> (me);
   
   SCM g = me->get_grob_property ("glyph");
@@ -192,7 +192,7 @@ MAKE_SCHEME_CALLBACK(Bar,get_staff_bar_size,1);
 SCM
 Bar::get_staff_bar_size (SCM smob) 
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
   Real ss = Staff_symbol_referencer::staff_space (me);
   SCM size = me->get_grob_property ("bar-size");
   if (gh_number_p (size))
index a49a2bb1f4737360e2dad20ba14dd04342fa4b2f..80b812b9513ea096970d35db07ca834b03f1667e 100644 (file)
@@ -44,11 +44,11 @@ class Beam_engraver : public Engraver
 protected:
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void create_grobs ();
   virtual void acknowledge_grob (Grob_info);
   virtual bool try_music (Music*);
-  void deprecated_process_music ();
+
 public:
   Beam_engraver ();
   VIRTUAL_COPY_CONS (Translator);
@@ -116,7 +116,7 @@ Beam_engraver::set_melisma (bool m)
 
 
 void
-Beam_engraver::deprecated_process_music ()
+Beam_engraver::create_grobs ()
 {
   if (reqs_drul_[STOP])
     {
@@ -211,7 +211,7 @@ Beam_engraver::stop_translation_timestep ()
 }
 
 void
-Beam_engraver::do_removal_processing ()
+Beam_engraver::finalize ()
 {
   typeset_beam ();
   if (beam_p_)
@@ -228,13 +228,6 @@ Beam_engraver::do_removal_processing ()
     }
 }
 
-void
-Beam_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-
 void
 Beam_engraver::acknowledge_grob (Grob_info info)
 {
index 94dad6e6e56302e54fb0883f1f8c27453405c555..25f90cb6eb3e09ddbf428b817cfc2f5f2442d325 100644 (file)
@@ -55,7 +55,7 @@ Beam::get_multiplicity (Grob*me)
   int m = 0;
   for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * sc = unsmob_element (gh_car (s));
+      Grob * sc = unsmob_grob (gh_car (s));
 
       if (Stem::has_interface (sc))
        m = m >? Stem::beam_count (sc,LEFT) >? Stem::beam_count (sc,RIGHT);
@@ -75,7 +75,7 @@ MAKE_SCHEME_CALLBACK(Beam,before_line_breaking,1);
 SCM
 Beam::before_line_breaking (SCM smob)
 {
-  Grob * me =  unsmob_element (smob);
+  Grob * me =  unsmob_grob (smob);
 
   // Why?
   if (visible_stem_count (me) < 2)
@@ -274,7 +274,7 @@ MAKE_SCHEME_CALLBACK(Beam,after_line_breaking,1);
 SCM
 Beam::after_line_breaking (SCM smob)
 {
-  Grob * me =  unsmob_element (smob);
+  Grob * me =  unsmob_grob (smob);
 
   /* first, calculate y, dy */
   Real y, dy;
@@ -766,7 +766,7 @@ MAKE_SCHEME_CALLBACK(Beam,brew_molecule,1);
 SCM
 Beam::brew_molecule (SCM smob)
 {
-  Grob * me =unsmob_element (smob);
+  Grob * me =unsmob_grob (smob);
 
   Molecule mol;
   if (!gh_pair_p (me->get_grob_property ("stems")))
@@ -890,16 +890,16 @@ MAKE_SCHEME_CALLBACK(Beam,rest_collision_callback,2);
 SCM
 Beam::rest_collision_callback (SCM element_smob, SCM axis)
 {
-  Grob *rest = unsmob_element (element_smob);
+  Grob *rest = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   
   assert (a == Y_AXIS);
 
-  Grob * st = unsmob_element (rest->get_grob_property ("stem"));
+  Grob * st = unsmob_grob (rest->get_grob_property ("stem"));
   Grob * stem = st;
   if (!stem)
     return gh_double2scm (0.0);
-  Grob * beam = unsmob_element (stem->get_grob_property ("beam"));
+  Grob * beam = unsmob_grob (stem->get_grob_property ("beam"));
   if (!beam || !Beam::has_interface (beam) || !Beam::visible_stem_count (beam))
     return gh_double2scm (0.0);
 
index aee231f3cc06adf847017e0348ba03db42d5b13a..1fdf8ea46e58629552c8e077569568460aa5e623 100644 (file)
@@ -19,7 +19,7 @@ class Break_align_engraver : public Engraver
   Item *align_l_;
   Protected_scm column_alist_;
 protected:
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void acknowledge_grob(Grob_info i);
   virtual void stop_translation_timestep ();
   void add_column (SCM);
@@ -36,13 +36,13 @@ ADD_THIS_TRANSLATOR(Break_align_engraver);
 void
 Break_align_engraver::add_column (SCM smob)
 {
-  Grob * e = unsmob_element (smob);
+  Grob * e = unsmob_grob (smob);
   Break_align_interface::add_element (align_l_,e);
   typeset_grob (e);
 }
 
 void
-Break_align_engraver::do_removal_processing ()
+Break_align_engraver::finalize ()
 {
   column_alist_ = SCM_EOL;
 }
@@ -137,7 +137,7 @@ Break_align_engraver::acknowledge_grob (Grob_info inf)
 
       if (s != SCM_BOOL_F)
        {
-         Grob *e =  unsmob_element (gh_cdr(s));
+         Grob *e =  unsmob_grob (gh_cdr(s));
          group = dynamic_cast<Item*> (e);
        }
       else
index b900f601b7b0b790f4b8153043ae1964b7a746cf..38705e1d74ae19941a8c30f85b62de3e117dacee 100644 (file)
@@ -26,7 +26,7 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,before_line_breaking,1);
 SCM
 Break_align_interface::before_line_breaking (SCM smob)
 {
-  Grob* me = unsmob_element (smob);
+  Grob* me = unsmob_grob (smob);
   do_alignment (me);
   return SCM_UNSPECIFIED;
 }
@@ -35,7 +35,7 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,alignment_callback,2);
 SCM
 Break_align_interface::alignment_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
 
   assert (a == X_AXIS);
@@ -53,7 +53,7 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,self_align_callback,2);
 SCM
 Break_align_interface::self_align_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == X_AXIS);
   
index 5a24b9c6c9f3513c321205e1f79843c09e64a39d..5e1c08fa2f6b29dac566f005b5e309dd309c2825 100644 (file)
@@ -29,8 +29,7 @@ public:
   
 protected:
   virtual bool try_music (Music *req_l);
-  void deprecated_process_music();
-
+  virtual void create_grobs ();
   virtual void stop_translation_timestep();
   virtual void start_translation_timestep();
 
@@ -58,7 +57,7 @@ Breathing_sign_engraver::try_music (Music*r_l)
 }
 
 void
-Breathing_sign_engraver::deprecated_process_music()
+Breathing_sign_engraver::create_grobs ()
 {
   if(breathing_sign_req_l_ && ! breathing_sign_p_)
     {
@@ -68,6 +67,7 @@ Breathing_sign_engraver::deprecated_process_music()
       Breathing_sign::set_interface (breathing_sign_p_);
 
       announce_grob (breathing_sign_p_, breathing_sign_req_l_);
+      breathing_sign_req_l_ = 0;
     }
 }
 
index 2f131e5be85b45810197b5538ba17013c740d451..06be981cf17b23889f3d52f4c4d381a2c2623ce9 100644 (file)
@@ -24,7 +24,7 @@ MAKE_SCHEME_CALLBACK(Breathing_sign,brew_molecule,1);
 SCM 
 Breathing_sign::brew_molecule (SCM smob)
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
   Real space = Staff_symbol_referencer::staff_space (me);
 
   // todo: cfg'able.
@@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Breathing_sign,offset_callback,2);
 SCM
 Breathing_sign::offset_callback (SCM element_smob, SCM )
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   
   Direction d = Directional_element_interface::get (me);
   if (!d)
index 7b72e3bc26464a322cf0840730681711492b3ddc..a8143f1845fd267b6d04a2411a05bbcf7179db7a 100644 (file)
@@ -28,7 +28,7 @@ public:
 protected:
   virtual void stop_translation_timestep ();
   virtual void acknowledge_grob (Grob_info i);
-  void deprecated_process_music ();
+  virtual void create_grobs ();
   virtual bool try_music (Music *);
 
 private:
@@ -77,24 +77,6 @@ Chord_name_engraver::try_music (Music* m)
   return false;
 }
 
-/* Uh, if we do acknowledge_grob, shouldn't we postpone
-  deprecated_process_music until do_process_acknowlegded?
-
-   Sigh, I can *never* remember how this works, can't we
-   possibly-please just number these functions:
-
-     do_creation0
-     
-     post_move1
-     try_music2
-  deprecated_process_music3 (or is it acknowledge_grob3 ?)
-     acknowledge_grob4
-  
-     do_pre_move9
-     
-     do_removal99
-
-  and what was the deal with this ``do'' prefix again? */
 void
 Chord_name_engraver::acknowledge_grob (Grob_info i)
 {
@@ -103,23 +85,10 @@ Chord_name_engraver::acknowledge_grob (Grob_info i)
 }
 
 void
-Chord_name_engraver::deprecated_process_music ()
+Chord_name_engraver::create_grobs ()
 {
   if (!chord_name_p_ && gh_car (chord_) != SCM_EOL)
     {
-#if 0
-      bool find_inversion_b = false;
-      SCM chord_inversion = get_property ("chordInversion");
-      if (gh_boolean_p (chord_inversion))
-       find_inversion_b = gh_scm2bool (chord_inversion);
-
-      chord_ = Chord::pitches_and_requests_to_chord (pitches_,
-                                                    inversion_,
-                                                    bass_,
-                                                    find_inversion_b);
-
-#endif
-      
       chord_name_p_ = new Item (get_property ("ChordName"));
       chord_name_p_->set_grob_property ("chord", chord_);
       announce_grob (chord_name_p_, 0);
index 804b3fb2c8019c004c71ab016e89a2fda210ff55..dd06b0bbdf76bdf767f67915dea053b215e51f0a 100644 (file)
@@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK (Chord_name,after_line_breaking,1);
 SCM
 Chord_name::after_line_breaking (SCM smob)
 {
-  Item* me = dynamic_cast<Item*> (unsmob_element (smob));
+  Item* me = dynamic_cast<Item*> (unsmob_grob (smob));
   assert (me);
     
   SCM s = me->get_grob_property ("begin-of-line-visible");
@@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK (Chord_name,brew_molecule,1);
 SCM
 Chord_name::brew_molecule (SCM smob) 
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   SCM style = me->get_grob_property ("style");
 
   if (!gh_symbol_p (style))
index a71c7f104156b153d4edfc850c2b52cdf4f6caab..4c9a9e01a1d28045effaf18e617b3700f94101fc 100644 (file)
@@ -57,8 +57,7 @@ protected:
   Spanner * finished_beam_p_;
   
 protected:
-  virtual void do_removal_processing();
-  void deprecated_process_music();
+  virtual void finalize();
   virtual bool try_music (Music*);
   virtual void acknowledge_grob (Grob_info);
   virtual void stop_translation_timestep();
@@ -95,12 +94,6 @@ Chord_tremolo_engraver::try_music (Music * m)
 
 void
 Chord_tremolo_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Chord_tremolo_engraver::deprecated_process_music ()
 {
   if (repeat_ && !beam_p_)
     {
@@ -118,7 +111,7 @@ Chord_tremolo_engraver::deprecated_process_music ()
 
 
 void
-Chord_tremolo_engraver::do_removal_processing ()
+Chord_tremolo_engraver::finalize ()
 {
   typeset_beam ();
   if (beam_p_)
index b0e1408229b634bb5dd6d774691049160f32bd8d..06758d262902a0758f9e731f92f5f53be35b1669 100644 (file)
@@ -33,9 +33,7 @@ public:
   Direction octave_dir_;
 
 protected:
-  void deprecated_process_music ();
   virtual void stop_translation_timestep ();
-  virtual void do_creation_processing ();
   virtual void start_translation_timestep ();
   virtual void create_grobs ();
   virtual void acknowledge_grob (Grob_info);
@@ -114,7 +112,7 @@ Clef_engraver::set_glyph ()
 void
 Clef_engraver::acknowledge_grob (Grob_info info)
 {
-  deprecated_process_music ();
+  create_grobs ();
   Item * item =dynamic_cast <Item *> (info.elem_l_);
   if (item)
     {
@@ -145,13 +143,6 @@ Clef_engraver::acknowledge_grob (Grob_info info)
     } 
 }
 
-void
-Clef_engraver::do_creation_processing ()
-{
-}
-
-
-
 void
 Clef_engraver::create_clef ()
 {
@@ -185,12 +176,6 @@ Clef_engraver::create_clef ()
 
 void
 Clef_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Clef_engraver::deprecated_process_music ()
 {
   SCM glyph = get_property ("clefGlyph");
   SCM clefpos = get_property ("clefPosition");
index 528fc7dbf7aca4dc2f4d869d3870a1ac6779071d..0481d0b74b3b7b5030ed3322a7879ecb0250e847 100644 (file)
@@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK(Clef,before_line_breaking,1);
 SCM
 Clef::before_line_breaking (SCM smob)
 {
-  Item * s = dynamic_cast<Item*> (unsmob_element (smob));
+  Item * s = dynamic_cast<Item*> (unsmob_grob (smob));
 
   SCM glyph = s->get_grob_property ("glyph");
   
@@ -62,7 +62,7 @@ MAKE_SCHEME_CALLBACK(Clef,brew_molecule,1)
 SCM
 Clef::brew_molecule (SCM smob) 
 {
-  Grob * sc = unsmob_element (smob);
+  Grob * sc = unsmob_grob (smob);
   SCM glyph = sc->get_grob_property ("glyph");
   if (gh_string_p (glyph))
     {
index 8bd1bc186cb225e8abf6b403b6dfc4d9bd6ff3ba..8d5448b1287b2bfac2e4e9f2be0eb04fe6f95541 100644 (file)
@@ -18,7 +18,7 @@ MAKE_SCHEME_CALLBACK(Collision,force_shift_callback,2);
 SCM
 Collision::force_shift_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == X_AXIS);
   
@@ -26,7 +26,7 @@ Collision::force_shift_callback (SCM element_smob, SCM axis)
   /*
     ugh. the way DONE is done is not clean
    */
-  if (!unsmob_element (me->get_grob_property ("done")))
+  if (!unsmob_grob (me->get_grob_property ("done")))
     {
       me->set_grob_property ("done", me->self_scm ());
       do_shifts (me);
@@ -51,7 +51,7 @@ Collision::do_shifts(Grob* me)
   
   for (; gh_pair_p (hand); hand =gh_cdr (hand))
     {
-      Grob * s = unsmob_element (gh_caar (hand));
+      Grob * s = unsmob_grob (gh_caar (hand));
       Real amount = gh_scm2double (gh_cdar (hand));
       
       s->translate_axis (amount *wid, X_AXIS);
@@ -59,7 +59,7 @@ Collision::do_shifts(Grob* me)
     }
   for (; gh_pair_p (autos); autos =gh_cdr (autos))
     {
-      Grob * s = unsmob_element (gh_caar (autos));
+      Grob * s = unsmob_grob (gh_caar (autos));
       Real amount = gh_scm2double (gh_cdar (autos));
       
       if (!done.find_l (s))
@@ -84,7 +84,7 @@ Collision::automatic_shift (Grob *me)
     {
       SCM car = gh_car (s);
 
-      Grob * se = unsmob_element (car);
+      Grob * se = unsmob_grob (car);
       if (Note_column::has_interface (se))
        clash_groups[Note_column::dir (se)].push (se);
     }
@@ -209,7 +209,7 @@ Collision::forced_shift (Grob *me)
   SCM s = me->get_grob_property ("elements");
   for (; gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * se = unsmob_element (gh_car (s));
+      Grob * se = unsmob_grob (gh_car (s));
 
       SCM force =  se->remove_grob_property ("force-hshift");
       if (gh_number_p (force))
index 0b615681a44bb9ebb011ed158a5f062d2b23bd14..d292d55027c5242b920d27ed7e0682b4cc067900 100644 (file)
@@ -33,7 +33,7 @@ Tempo_req::do_equal_b (Request const *r) const
 {
   Tempo_req const *t = dynamic_cast <Tempo_req const*> (r);
 
-  return t&& t->dur_.length_mom ()== dur_.length_mom ();
+  return t; //  && t->dur_.length_mom ()== dur_.length_mom ();
   // && metronome_i_ == t->metronome_i_;
 }
 
index c578c323c3ed8fe3a694a7697fd8407eceecb5a9..897f6861d64fbc94558c1cd474946b90fa211120 100644 (file)
@@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK (Hairpin, brew_molecule, 1);
 SCM
 Hairpin::brew_molecule (SCM smob) 
 {
-  Grob *me= unsmob_element (smob);
+  Grob *me= unsmob_grob (smob);
   Spanner *span = dynamic_cast<Spanner*>(me);
 
   Real line = me->paper_l ()->get_var ("stafflinethickness");  
index 63ae946016b860d42fdbb708b95a4c472d61ca15..aed720a86fb33b1c89fe05426e508011bdb8ebd7 100644 (file)
@@ -26,10 +26,9 @@ public:
   Custos_engraver();
   virtual void start_translation_timestep();
   virtual void acknowledge_grob(Grob_info);
-  void deprecated_process_music ();
   virtual void create_grobs ();
   virtual void stop_translation_timestep ();
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   VIRTUAL_COPY_CONS(Translator);
 
 private:
@@ -67,16 +66,6 @@ Custos_engraver::start_translation_timestep ()
 }
 
 
-/*
-  TODO check if this works with forced bar lines?
- */
-void
-Custos_engraver::deprecated_process_music ()
-{
-  if (gh_string_p (get_property( "whichBar")))
-    custos_permitted = true;
-}
-
 void
 Custos_engraver::acknowledge_grob (Grob_info info)
 {
@@ -106,8 +95,9 @@ Custos_engraver::acknowledge_grob (Grob_info info)
 void
 Custos_engraver::create_grobs ()
 {
-  deprecated_process_music ();
-
+  if (gh_string_p (get_property( "whichBar")))
+    custos_permitted = true;
+  
   if (custos_permitted)
     {
       for (int i = pitches_.size (); i--;)
@@ -136,7 +126,7 @@ Custos_engraver::create_custos()
 }
 
 void
-Custos_engraver::do_removal_processing ()
+Custos_engraver::finalize ()
 {
   for (int i = custos_arr_.size (); i--;)
     {
index e71808590617b8e14ec91e86f6e0ca92bde94d8b..ef3399d7ec6199bfc3bdb048d28bc3326684a77c 100644 (file)
@@ -70,7 +70,8 @@
  *
  * (3) The thickness of the ledger line is fixed (limitation).
  */
-Molecule create_ledger_line (Interval x_extent, Grob *me) 
+Molecule
+Custos::create_ledger_line (Interval x_extent, Grob *me) 
 {
   Molecule line;
   Molecule slice = Font_interface::get_default_font (me)->find_by_name ("noteheads-ledgerending");
@@ -105,7 +106,8 @@ Molecule create_ledger_line (Interval x_extent, Grob *me)
   return line;
 }
 
-void add_streepjes(Grob* me,
+void
+Custos::add_streepjes(Grob* me,
                   int pos,
                   int interspaces,
                   Molecule* custos_p_)
@@ -139,7 +141,7 @@ MAKE_SCHEME_CALLBACK(Custos,brew_molecule,1);
 SCM
 Custos::brew_molecule (SCM smob)
 {
-  Item *me = (Item *)unsmob_element (smob);
+  Item *me = (Item *)unsmob_grob (smob);
   SCM scm_style = me->get_grob_property ("style");
 
   if (gh_symbol_p (scm_style))
index fa740047680db4f2b1a96660a2da9a67b1395c7c..ca52e1273a76792015984a616ea7ca890d725330 100644 (file)
@@ -46,7 +46,7 @@ Dot_column_engraver::stop_translation_timestep ()
 void
 Dot_column_engraver::acknowledge_grob (Grob_info info)
 {
-  Grob *d = unsmob_element (info.elem_l_->get_grob_property ("dot"));
+  Grob *d = unsmob_grob (info.elem_l_->get_grob_property ("dot"));
   if (d)
     {
       if (!dotcol_p_)
index 8c4e900eb3ec28aab585bd3ac0b78c718b86e0f5..014af080bf1f3f62e394fab62a6b8ff8a0eecf54 100644 (file)
@@ -50,7 +50,7 @@ MAKE_SCHEME_CALLBACK(Dot_column,force_shift_callback,2);
 SCM
 Dot_column::force_shift_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == Y_AXIS);
  me = me->parent_l (X_AXIS);
@@ -65,7 +65,7 @@ Dot_column::do_shifts (SCM l)
   Link_array<Grob> dots;
   while (gh_pair_p (l))
     {
-      dots.push (unsmob_element (gh_car (l)));
+      dots.push (unsmob_grob (gh_car (l)));
       l = gh_cdr (l);
     }
   
@@ -121,7 +121,7 @@ Dot_column::has_interface (Grob*m)
 void
 Dot_column::add_head (Grob * me, Grob *rh)
 {
-  Grob * d = unsmob_element (rh->get_grob_property ("dot"));
+  Grob * d = unsmob_grob (rh->get_grob_property ("dot"));
   if (d)
     {
       Side_position::add_support (me,rh);
index 1a695c1a123275183a08f0c5593b8f66b0c6ac3d..4dc6ab4877a7e373f86486a25ba8830e9ee2290c 100644 (file)
@@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK(Dots,quantised_position_callback,2);
 SCM
 Dots::quantised_position_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == Y_AXIS);
     
@@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Dots,brew_molecule,1);
 SCM  
 Dots::brew_molecule (SCM d)
 {
-  Grob *sc = unsmob_element (d);
+  Grob *sc = unsmob_grob (d);
   Molecule mol;
   
   SCM c = sc->get_grob_property ("dot-count");
index 881eb90e572ea40fb803d7e9d0ab09b86af67381..7b5b5361137a4c6cda6d40bab43e2268af44ec57 100644 (file)
@@ -54,10 +54,9 @@ public:
   Dynamic_engraver ();
   
 protected:
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void acknowledge_grob (Grob_info);
   virtual bool try_music (Music *req_l);
-  void deprecated_process_music ();
   virtual void stop_translation_timestep ();
   virtual void create_grobs ();
   virtual void start_translation_timestep ();
@@ -122,7 +121,7 @@ Dynamic_engraver::try_music (Music * m)
 }
 
 void
-Dynamic_engraver::deprecated_process_music ()
+Dynamic_engraver::create_grobs ()
 {
   if (accepted_spanreqs_drul_[START] || accepted_spanreqs_drul_[STOP] || script_req_l_)
     
@@ -206,7 +205,7 @@ Dynamic_engraver::deprecated_process_music ()
       else
        {
          assert (!finished_cresc_p_);
-         Grob* cc = unsmob_element (get_property ("currentMusicalColumn"));
+         Grob* cc = unsmob_grob (get_property ("currentMusicalColumn"));
          
          cresc_p_->set_bound (RIGHT, cc);
 
@@ -269,7 +268,7 @@ Dynamic_engraver::deprecated_process_music ()
            }
          cresc_p_->set_bound (LEFT, script_p_
                               ? script_p_
-                              : unsmob_element (get_property ("currentMusicalColumn")));
+                              : unsmob_grob (get_property ("currentMusicalColumn")));
          
          Axis_group_interface::add_element (line_spanner_, cresc_p_);
          announce_grob (cresc_p_, accepted_spanreqs_drul_[START]);
@@ -287,13 +286,7 @@ Dynamic_engraver::stop_translation_timestep ()
 }
 
 void
-Dynamic_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Dynamic_engraver::do_removal_processing ()
+Dynamic_engraver::finalize ()
 {
   typeset_all ();
   if (line_spanner_)
@@ -317,7 +310,7 @@ Dynamic_engraver::typeset_all ()
     {
       finished_cresc_p_->set_bound (RIGHT, script_p_
                           ? script_p_
-                          : unsmob_element (get_property ("currentMusicalColumn")));
+                          : unsmob_grob (get_property ("currentMusicalColumn")));
                
       typeset_grob (finished_cresc_p_);
       finished_cresc_p_ =0;
index 552a76982645fd1a89a3086e02da4496cec131a1..d69c38f0f5a77c24f1476c026f449bb01b645436 100644 (file)
@@ -25,11 +25,9 @@ public:
   VIRTUAL_COPY_CONS (Translator);
   
   Dynamic_performer ();
-  ~Dynamic_performer ();
 
 protected:
   virtual bool try_music (Music* req_l);
-  void deprecated_process_music ();
   virtual void stop_translation_timestep ();
   virtual void create_grobs ();
 
@@ -46,13 +44,8 @@ Dynamic_performer::Dynamic_performer ()
   audio_p_ = 0;
 }
 
-Dynamic_performer::~Dynamic_performer ()
-{
-}
-
-
 void
-Dynamic_performer::deprecated_process_music ()
+Dynamic_performer::create_grobs ()
 {
   if (script_req_l_)
     {
@@ -119,12 +112,6 @@ Dynamic_performer::deprecated_process_music ()
     }
 }
 
-void
-Dynamic_performer::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
 void
 Dynamic_performer::stop_translation_timestep ()
 {
index 8128598f6bf5783d16b717b4ae240840f6666710..a365c25d0d6dd4860e85fc1e8cca554dc9eaca50 100644 (file)
@@ -38,8 +38,7 @@ public:
 
 protected:
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_removal_processing();
-  void deprecated_process_music();
+  virtual void finalize();
   virtual bool try_music (Music*);
   virtual void stop_translation_timestep();
   virtual void start_translation_timestep ();
@@ -92,23 +91,17 @@ Extender_engraver::try_music (Music* r)
 }
 
 void
-Extender_engraver::do_removal_processing ()
+Extender_engraver::finalize ()
 {
   if (extender_p_)
     {
       req_l_->origin ()->warning (_ ("unterminated extender"));
-      extender_p_->set_bound(RIGHT, unsmob_element (get_property ("currentCommandColumn")));
+      extender_p_->set_bound(RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
     }
 }
 
 void
 Extender_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Extender_engraver::deprecated_process_music ()
 {
   if (req_l_ && ! extender_p_)
     {
index f671784ac9416e6ec4773b9f3fd8aa996696d416..901953cce1b530a1413e0e86415502365b9d37e5 100644 (file)
@@ -17,7 +17,7 @@ MAKE_SCHEME_CALLBACK(Grace_align_item,before_line_breaking,1);
 SCM
 Grace_align_item::before_line_breaking (SCM smob)
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
 
   SCM space = me->get_grob_property ("horizontal-space");
   me->set_grob_property ("threshold",
index 1d62fabcde3edf779ad6e1a9277494656c4b6d37..0f484ae35a03545303da8f455f588fc92e391524 100644 (file)
@@ -38,9 +38,9 @@ Grace_engraver_group::finish ()
 }
 
 void
-Grace_engraver_group::do_removal_processing ()
+Grace_engraver_group::finalize ()
 {
-  Engraver_group_engraver::do_removal_processing ();
+  Engraver_group_engraver::finalize ();
 }
 
 void
@@ -118,9 +118,9 @@ Grace_engraver_group::pass_to_top_b (Music *m) const
 }
 
 void
-Grace_engraver_group::do_creation_processing ()
+Grace_engraver_group::initialize ()
 {
   calling_self_b_ = true;
-  Engraver_group_engraver::do_creation_processing ();
+  Engraver_group_engraver::initialize ();
   calling_self_b_ = false;  
 }
index 9791c35e05b9c2a88104455a39fff3c37697ac7a..e1fc4503a8c4359f27b40d5395f286811233d985 100644 (file)
@@ -39,9 +39,9 @@ Grace_performer_group::finish ()
 }
 
 void
-Grace_performer_group::do_removal_processing ()
+Grace_performer_group::finalize ()
 {
-  Performer_group_performer::do_removal_processing ();
+  Performer_group_performer::finalize ();
 }
 
 void
index 45778f035089c00b7204da8eaaaab7b7da57f277..1e1d4ec8c393205033b65e185a5d8c48eedc5e94 100644 (file)
@@ -97,7 +97,7 @@ Grace_position_engraver::stop_translation_timestep ()
       Axis_group_interface::add_element (last_musical_col_l_, align_l_);
     }
 
-  last_musical_col_l_ = dynamic_cast<Paper_column*>( unsmob_element (get_property ("currentMusicalColumn")));
+  last_musical_col_l_ = dynamic_cast<Paper_column*>( unsmob_grob (get_property ("currentMusicalColumn")));
 }
 
 void
index c36942d55f1997c19b629ae8ee31a3b59449df12..ac075aba96851424bac3e0a22e19562a18abb43c 100644 (file)
@@ -179,7 +179,7 @@ MAKE_SCHEME_CALLBACK(Grob,molecule_extent,2);
 SCM
 Grob::molecule_extent (SCM element_smob, SCM scm_axis)
 {
-  Grob *s = unsmob_element (element_smob);
+  Grob *s = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (scm_axis);
 
   Molecule *m = s->get_molecule ();
@@ -194,7 +194,7 @@ MAKE_SCHEME_CALLBACK(Grob,preset_extent,2);
 SCM
 Grob::preset_extent (SCM element_smob, SCM scm_axis)
 {
-  Grob *s = unsmob_element (element_smob);
+  Grob *s = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (scm_axis);
 
   SCM ext = s->get_grob_property ((a == X_AXIS)
@@ -237,7 +237,7 @@ Grob::calculate_dependencies (int final, int busy, SCM funcname)
 
   for (SCM d=  get_grob_property ("dependencies"); gh_pair_p (d); d = gh_cdr (d))
     {
-      unsmob_element (gh_car (d))
+      unsmob_grob (gh_car (d))
        ->calculate_dependencies (final, busy, funcname);
     }
 
@@ -257,10 +257,20 @@ Grob::get_molecule ()  const
   SCM mol = get_grob_property ("molecule");
   if (unsmob_molecule (mol))
     return unsmob_molecule (mol);
+
+  mol =  get_uncached_molecule ();
+  
+  Grob *me = (Grob*)this;
+  me->set_grob_property ("molecule", mol);
   
+  return unsmob_molecule (mol);  
+}
+SCM
+Grob::get_uncached_molecule ()const
+{
   SCM proc = get_grob_property ("molecule-callback");
 
-  mol = SCM_EOL;
+  SCM  mol = SCM_EOL;
   if (gh_procedure_p (proc)) 
     mol = gh_apply (proc, gh_list (this->self_scm (), SCM_UNDEFINED));
 
@@ -294,14 +304,9 @@ Grob::get_molecule ()  const
   if (m && to_boolean (get_grob_property ("transparent")))
     mol = Molecule (m->extent_box (), SCM_EOL).smobbed_copy ();
 
-  Grob *me = (Grob*)this;
-  me->set_grob_property ("molecule", mol);
-  
-  m = unsmob_molecule (mol);  
-  return m;
+  return mol;
 }
 
-
 /*
   
   VIRTUAL STUBS
@@ -347,7 +352,7 @@ SCM
 Grob::handle_broken_smobs (SCM src, SCM criterion)
 {
  again:
-  Grob *sc = unsmob_element (src);
+  Grob *sc = unsmob_grob (src);
   if (sc)
     {
       if (gh_number_p (criterion))
@@ -363,7 +368,7 @@ Grob::handle_broken_smobs (SCM src, SCM criterion)
       else
        {
          Line_of_score * line
-           = dynamic_cast<Line_of_score*> (unsmob_element (criterion));
+           = dynamic_cast<Line_of_score*> (unsmob_grob (criterion));
          if (sc->line_l () != line)
            {
              sc = sc->find_broken_piece (line);
@@ -647,7 +652,7 @@ Grob::common_refpoint (SCM elist, Axis a) const
   Grob * common = (Grob*) this;
   for (; gh_pair_p (elist); elist = gh_cdr (elist))
     {
-      Grob * s = unsmob_element (gh_car (elist));
+      Grob * s = unsmob_grob (gh_car (elist));
       if (s)
        common = common->common_refpoint (s, a);
     }
@@ -709,7 +714,7 @@ MAKE_SCHEME_CALLBACK(Grob,fixup_refpoint,1);
 SCM
 Grob::fixup_refpoint (SCM smob)
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   for (int a = X_AXIS; a < NO_AXES; a ++)
     {
       Axis ax = (Axis)a;
@@ -749,7 +754,7 @@ Grob::fixup_refpoint (SCM smob)
  ****************************************************/
 
 
-IMPLEMENT_UNSMOB(Grob, element);
+IMPLEMENT_UNSMOB(Grob, grob);
 IMPLEMENT_SMOBS(Grob);
 IMPLEMENT_DEFAULT_EQUAL_P(Grob);
 
@@ -801,7 +806,7 @@ Grob::do_derived_mark ()
 SCM
 ly_set_grob_property (SCM elt, SCM sym, SCM val)
 {
-  Grob * sc = unsmob_element (elt);
+  Grob * sc = unsmob_grob (elt);
 
   if (!gh_symbol_p (sym))
     {
@@ -827,7 +832,7 @@ ly_set_grob_property (SCM elt, SCM sym, SCM val)
 SCM
 ly_get_grob_property (SCM elt, SCM sym)
 {
-  Grob * sc = unsmob_element (elt);
+  Grob * sc = unsmob_grob (elt);
   
   if (sc)
     {
@@ -852,7 +857,7 @@ Grob::discretionary_processing()
 SCM
 spanner_get_bound (SCM slur, SCM dir)
 {
-  return dynamic_cast<Spanner*> (unsmob_element (slur))->get_bound (to_dir (dir))->self_scm ();
+  return dynamic_cast<Spanner*> (unsmob_grob (slur))->get_bound (to_dir (dir))->self_scm ();
 }
 
 
index 3c75ae45a3d22260f971ee4153fd305eabd8e7c0..ae50f446850f800cf90ba1d9785f4b4c705aac22 100644 (file)
@@ -18,7 +18,7 @@ MAKE_SCHEME_CALLBACK(Hara_kiri_group_spanner,y_extent,2);
 SCM
 Hara_kiri_group_spanner::y_extent (SCM element_smob, SCM scm_axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (scm_axis);
 
   assert (a == Y_AXIS);
@@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Hara_kiri_group_spanner,force_hara_kiri_callback,2);
 SCM
 Hara_kiri_group_spanner::force_hara_kiri_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == Y_AXIS);
   consider_suicide (me);
@@ -67,7 +67,7 @@ MAKE_SCHEME_CALLBACK(Hara_kiri_group_spanner,force_hara_kiri_in_parent_callback,
 SCM
 Hara_kiri_group_spanner::force_hara_kiri_in_parent_callback (SCM element_smob, SCM axis)
 {
-  Grob *daughter = unsmob_element (element_smob);
+  Grob *daughter = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == Y_AXIS);
   force_hara_kiri_callback (daughter->parent_l (a)->self_scm (), axis);
index ebb56587badf27a00b5806e5a647c808f32677e0..44eb9298053fe18fbb10a5f31fd674740caef1f1 100644 (file)
@@ -32,8 +32,7 @@ public:
 
 protected:
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_removal_processing();
-  void deprecated_process_music();
+  virtual void finalize();
   virtual bool try_music (Music*);
   virtual void stop_translation_timestep();
   virtual void start_translation_timestep ();
@@ -84,23 +83,17 @@ Hyphen_engraver::try_music (Music* r)
 }
 
 void
-Hyphen_engraver::do_removal_processing ()
+Hyphen_engraver::finalize ()
 {
   if (hyphen_p_)
     {
       req_l_->origin ()->warning (_ ("unterminated hyphen"));
-      hyphen_p_->set_bound(RIGHT, unsmob_element (get_property ("currentCommandColumn")));
+      hyphen_p_->set_bound(RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
     }
 }
 
 void
 Hyphen_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Hyphen_engraver::deprecated_process_music ()
 {
   if (req_l_ &&! hyphen_p_)
     {
index b4a8e1738ad05a9cf57f451d760fb133607d82d4..6c0dd240ae409ed10560ce13a893c49b4581edcd 100644 (file)
@@ -24,7 +24,7 @@ MAKE_SCHEME_CALLBACK(Hyphen_spanner,brew_molecule,1)
 SCM 
 Hyphen_spanner::brew_molecule (SCM smob)
 {
-  Spanner * sp = dynamic_cast<Spanner*> (unsmob_element (smob));
+  Spanner * sp = dynamic_cast<Spanner*> (unsmob_grob (smob));
 
   Grob * common = sp;
   Direction d = LEFT;
index 5415808e58e8c03d3dca1b0accbe596694691c7b..b1a28f4350d17d32d0aed4af3d5b6ee60ba9c276 100644 (file)
@@ -37,9 +37,6 @@ public:
 class Tempo_req : public Request
 {
 public:
-  Duration dur_;
-
-
   Tempo_req();
 protected:
 
index 707df6ec4f53baaa2c701fbc2c5550a54cd285bd..028982f18f0dca6ff0c132bd97da20d20475059c 100644 (file)
@@ -15,6 +15,11 @@ struct Custos
 {
   DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM ));
   static bool has_interface (Grob*);
+
+private:
+  static void add_streepjes(Grob* me, int pos, int interspaces, Molecule* custos_p_);
+  static Molecule create_ledger_line (Interval x_extent, Grob *me) ;
+
 };
 
 #endif // CUSTOS_HH
index aefbdf8437593be7841de331222b9f7ef85f036d..dfc0eb2ceb97849cf127d16c5d24f00161945daf 100644 (file)
@@ -23,13 +23,13 @@ public:
   VIRTUAL_COPY_CONS(Translator);
   Grace_engraver_group ();
 protected:
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual void announce_grob (Grob_info);
   virtual void start ();
   virtual void finish ();
   virtual void process ();
   virtual void each (Method_pointer);
-  virtual void do_removal_processing () ;
+  virtual void finalize () ;
   virtual void typeset_grob (Grob*);
   virtual bool try_music (Music *m);
 };
index d6805d514eaf4b8e317cb1cfecbdff25ecbfa2c1..be96df4ce1e749c9378675e2b8e44391c643a2d7 100644 (file)
@@ -27,7 +27,7 @@ protected:
   virtual void finish ();
   virtual void process ();
   virtual void each (Method_pointer);
-  virtual void do_removal_processing () ;
+  virtual void finalize () ;
   virtual void play_element (Audio_element*);
   virtual bool try_music (Music *m);
 };
index 96bf9be791ee5e6377eed2d4af76e842cb0dbc2f..86ef255b4f7cd93a7c8af6873890d844d8e36d8e 100644 (file)
@@ -104,6 +104,8 @@ public:
   virtual SCM do_derived_mark ();
 
   Molecule * get_molecule () const;
+  SCM get_uncached_molecule () const;
+  
   void suicide ();
   
   DECLARE_SCHEME_CALLBACK(preset_extent, (SCM smob, SCM axis));
@@ -172,7 +174,7 @@ public:
   DECLARE_SCHEME_CALLBACK(fixup_refpoint, (SCM));
 };
 
-Grob * unsmob_element (SCM);
+Grob * unsmob_grob (SCM);
 
 #endif // STAFFELEM_HH
 
index 88f608a7efa165987b86639ae409169c11922cb9..c9fcde7aeece72c79c033d1d0d95df5872a53439 100644 (file)
@@ -46,7 +46,7 @@ Pointer_group_interface__extract_elements (Grob const *elt, T *, const char* nam
   for (SCM s = elt->get_grob_property (name); gh_pair_p (s); s = gh_cdr (s))
     {
       SCM e = gh_car (s);
-      arr.push (dynamic_cast<T*> (unsmob_element (e)));
+      arr.push (dynamic_cast<T*> (unsmob_grob (e)));
     }
 
   arr.reverse ();
index 1c4d0e3b0f1df02f77d9383cfdebb6062b6b2e6a..4f8ca20aafd771df2e61f9035895bb62664811ad 100644 (file)
@@ -23,8 +23,8 @@ protected:
   Spanner *staffline_p_;   
 
   virtual void create_line_spanner ();
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
+  virtual void initialize();
+  virtual void finalize();
   virtual void typeset_grob (Grob*);
 public:
   VIRTUAL_COPY_CONS(Translator);
index 263ae2404816573e1e7b7dd0ddf310d92b5ac878..f0e02bcfe79d4b90ee3fe3629ac6e5192132d901 100644 (file)
@@ -65,7 +65,7 @@ protected:
   virtual void acknowledge_grob(Grob_info);
   virtual void create_grobs ();
   virtual void stop_translation_timestep();
-  virtual void do_removal_processing ();  
+  virtual void finalize ();  
 private:
   void record_notehead(const String &context_id, Grob * notehead);
   void record_lyric(const String &context_id, Grob * lyric);
index a19a427aa6939600ab99b16b4f3103c51e847423..4b8eecd87728bc754ef3eb179deb1bfe44b67bda 100644 (file)
@@ -21,8 +21,6 @@
  */
 class Rhythmic_req  : public virtual Request  {
 public:
-  Duration duration_;
-
   bool do_equal_b (Request const*) const;
   void compress (Moment);
   virtual Moment length_mom () const;
@@ -76,8 +74,6 @@ protected:
 /// request which has some kind of pitch
 struct Melodic_req :virtual Request
 {
-  Pitch pitch_;
-
   static int compare (Melodic_req const&,Melodic_req const&);
   
 protected:
index 5cbe10b56c5fad1ad7b62470ddb2b03150572dca..56618c79347451d11ecc7202e2a7cce3772f3e23 100644 (file)
@@ -47,14 +47,14 @@ protected:
   /* Engraver_group_engraver interface */
 
   virtual bool try_music (Music*);
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
+  virtual void initialize();
+  virtual void finalize();
   virtual void announce_grob (Grob_info);
   virtual void do_announces();
   virtual void typeset_grob (Grob*elem_p);
 
   virtual void stop_translation_timestep();
-  virtual void do_add_processing ();
+
 };
 
 #endif // SCORE_GRAV_HH
index 4c71b7b8f797a3ffc748ecafae9384f65ce54a66..3abe6f1d99a0d77b23190a18c26f748166c533c8 100644 (file)
@@ -29,7 +29,7 @@ protected:
   virtual void prepare (Moment mom);
   virtual void process();
   virtual void start();
-  virtual void do_add_processing ();
+  virtual void initialize ();
   virtual void announce_element (Audio_element_info);
   virtual int get_tempo_i() const;
   virtual void play_element (Audio_element* p);
index 9c20697a3e6b0233d49a9af7e401661937efd53c..62c7f770cfe9aff6543b42f9f48f116e8c1fac07 100644 (file)
@@ -23,7 +23,7 @@ public:
   static Direction get_default_dir (Grob *me);
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
   DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM ));
-
+  DECLARE_SCHEME_CALLBACK (height, (SCM,SCM));
 private:  
   static Real get_first_notecolumn_y (Grob *me, Direction dir);
   static Offset broken_trend_offset (Grob *me, Direction dir);
index d78dce109f10bb5ed8504c151ec97070ea34c4aa..cdd9143900605debf0a2360149f1e53454a68097 100644 (file)
@@ -25,11 +25,11 @@ public:
   Music *check_;
 
 protected: 
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual bool try_music (Music *req_l);
-  void deprecated_process_music();
-  virtual void stop_translation_timestep();
-  virtual void start_translation_timestep();
+  virtual void process_music ();
+  virtual void stop_translation_timestep ();
+  virtual void start_translation_timestep ();
 
 public:
   Moment measure_position () const;
index 411710343c4a27ed5bcdcca5e48275a6715b3a11..ebda8bdfec827f709854d1c518120ccac8fd2b95 100644 (file)
@@ -70,12 +70,11 @@ public:
   bool try_music_on_nongroup_children (Music *m);
   
   virtual void do_announces ();
-  virtual void do_add_processing ();
   virtual bool try_music (Music* req_l);       
   virtual void stop_translation_timestep();
   virtual void start_translation_timestep();   
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
+  virtual void initialize();
+  virtual void finalize();
   virtual void each (Method_pointer);
 
 };
index 7680a5d3944265f19f196f1929426aff79c24f6f..019ea273ef902988c09e707923631f265809694e 100644 (file)
@@ -39,7 +39,6 @@ public:
  
 
   void pre_move_processing();
-  void add_processing ();
   void announces();
   void post_move_processing();
   void removal_processing();
@@ -64,7 +63,6 @@ public:
   DECLARE_SMOBS(Translator, dummy);
 public:
 
-  virtual void do_add_processing ();
     /**
     try to fit the request in this engraver
 
@@ -78,8 +76,8 @@ public:
   virtual void stop_translation_timestep();
   virtual void start_translation_timestep();
   virtual void do_announces () ;
-  virtual void do_creation_processing() ;
-  virtual void do_removal_processing();
+  virtual void initialize() ;
+  virtual void finalize();
 };
 
 
index 1c3defee062ae404a8aa5b326f49df6a5f348bdf..55ff38ff8dcfb26358c5b9f979683cd59765ac0b 100644 (file)
@@ -16,9 +16,6 @@
 class Transposed_music : public Music_wrapper
 {
 public:
-  Pitch transpose_to_pitch_;
-
-
   Transposed_music (Music*, Pitch);
   
   VIRTUAL_COPY_CONS(Music);
index ebe26164e4c0375ae82315b7c59e460a6ccaee4e..35c4af6a35ebc509ab9f134ebd2eb9d28f3b9e71 100644 (file)
@@ -37,10 +37,9 @@ public:
   Protected_scm old_accs_;     // ugh. -> property
     
 protected:
-  virtual void do_creation_processing();
-  virtual void do_removal_processing ();
+  virtual void initialize();
+  virtual void finalize ();
   virtual bool try_music (Music *req_l);
-  void deprecated_process_music();
   virtual void stop_translation_timestep();
   virtual void start_translation_timestep();
   virtual void create_grobs ();
@@ -49,7 +48,7 @@ protected:
 
 
 void
-Key_engraver::do_removal_processing ()
+Key_engraver::finalize ()
 {
   old_accs_ = SCM_EOL;         // unprotect can not  be called from dtor.
 }
@@ -130,12 +129,6 @@ Key_engraver::acknowledge_grob (Grob_info info)
 
 void
 Key_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Key_engraver::deprecated_process_music ()
 {
   if (keyreq_l_ || old_accs_ != get_property ("keySignature"))
     {
@@ -187,7 +180,7 @@ Key_engraver::start_translation_timestep ()
 }
 
 void
-Key_engraver::do_creation_processing ()
+Key_engraver::initialize ()
 {
   daddy_trans_l_->set_property ("keySignature", SCM_EOL);
   old_accs_ = SCM_EOL;
index b3fe56c1956d449afb892d4aeefa23eda6608332..a23b92eac8de35e824d4d4afc9bf24d1ab50d2c3 100644 (file)
@@ -76,7 +76,7 @@ MAKE_SCHEME_CALLBACK(Key_item,brew_molecule,1);
 SCM
 Key_item::brew_molecule (SCM smob)
 {
-  Grob*me =unsmob_element (smob);
+  Grob*me =unsmob_grob (smob);
 
 
   Real inter = Staff_symbol_referencer::staff_space (me)/2.0;
index 3bd6c2df5473f5652853c7f969e1fff90653cabd..8d0383c705fb0bfcb5fa4f05b93d50eb5894e729 100644 (file)
@@ -31,11 +31,11 @@ Line_group_engraver_group::typeset_grob (Grob *elem)
 
 
 void
-Line_group_engraver_group::do_removal_processing()
+Line_group_engraver_group::finalize()
 {
-  Engraver_group_engraver::do_removal_processing ();
+  Engraver_group_engraver::finalize ();
   Grob *  it
-    = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn")));
+    = unsmob_grob (get_property (ly_symbol2scm ("currentCommandColumn")));
 
   staffline_p_->set_bound(RIGHT,it);
   Engraver_group_engraver::typeset_grob (staffline_p_);
@@ -43,11 +43,11 @@ Line_group_engraver_group::do_removal_processing()
 }
 
 void
-Line_group_engraver_group::do_creation_processing()
+Line_group_engraver_group::initialize()
 {
   create_line_spanner ();
   Grob *  it
-    = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn"))); 
+    = unsmob_grob (get_property (ly_symbol2scm ("currentCommandColumn"))); 
   staffline_p_->set_bound(LEFT,it);
   
   Engraver::announce_grob (staffline_p_,0);
index 9121d4c0fbd24dfc9ec3718c69689d7b502cfc6e..99713d7d399bf152beec937dce29b1bba8624a5d 100644 (file)
@@ -61,7 +61,7 @@ Line_of_score::output_lines ()
   for (SCM s = get_grob_property ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
-      unsmob_element (gh_car (s))->do_break_processing ();
+      unsmob_grob (gh_car (s))->do_break_processing ();
     }
   /*
     fixups must be done in broken line_of_scores, because new elements
@@ -88,7 +88,7 @@ Line_of_score::output_lines ()
   for (SCM s = get_grob_property ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
-      unsmob_element (gh_car (s))->handle_broken_dependencies ();
+      unsmob_grob (gh_car (s))->handle_broken_dependencies ();
     }
   handle_broken_dependencies ();
 
@@ -113,7 +113,7 @@ Line_of_score::output_lines ()
       if (i < broken_into_l_arr_.size () - 1)
        {
          SCM lastcol =  gh_car (line_l->get_grob_property ("columns"));
-         Grob*  e = unsmob_element (lastcol);
+         Grob*  e = unsmob_grob (lastcol);
          SCM inter = e->get_grob_property ("between-system-string");
          if (gh_string_p (inter))
            {
@@ -229,7 +229,7 @@ Line_of_score::add_column (Paper_column*p)
 {
   Grob *me = this;
   SCM cs = me->get_grob_property ("columns");
-  Grob * prev =  gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0;
+  Grob * prev =  gh_pair_p (cs) ? unsmob_grob (gh_car (cs)) : 0;
 
   p->rank_i_ = prev ? Paper_column::rank_i (prev) + 1 : 0; 
 
@@ -249,27 +249,27 @@ void
 Line_of_score::pre_processing ()
 {
   for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
-    unsmob_element (gh_car (s))->discretionary_processing ();
+    unsmob_grob (gh_car (s))->discretionary_processing ();
 
   if(verbose_global_b)
     progress_indication ( _f("Element count %d ",  element_count ()));
 
   
   for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
-    unsmob_element (gh_car (s))->handle_prebroken_dependencies ();
+    unsmob_grob (gh_car (s))->handle_prebroken_dependencies ();
   
   fixup_refpoints (get_grob_property ("all-elements"));
   
   for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob* sc = unsmob_element (gh_car (s));
+      Grob* sc = unsmob_grob (gh_car (s));
       sc->calculate_dependencies (PRECALCED, PRECALCING, ly_symbol2scm ("before-line-breaking-callback"));
     }
   
   progress_indication ("\n" + _ ("Calculating column positions...") + " " );
   for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * e = unsmob_element (gh_car (s));
+      Grob * e = unsmob_grob (gh_car (s));
       SCM proc = e->get_grob_property ("spacing-procedure");
       if (gh_procedure_p (proc))
        gh_call1 (proc, e->self_scm ());
@@ -282,7 +282,7 @@ Line_of_score::post_processing (bool last_line)
   for (SCM s = get_grob_property ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob* sc = unsmob_element (gh_car (s));
+      Grob* sc = unsmob_grob (gh_car (s));
       sc->calculate_dependencies (POSTCALCED, POSTCALCING,
                                  ly_symbol2scm ("after-line-breaking-callback"));
     }
@@ -306,7 +306,7 @@ Line_of_score::post_processing (bool last_line)
     (ugh. This is not very memory efficient.)  */
   for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      unsmob_element (gh_car (s))->get_molecule ();
+      unsmob_grob (gh_car (s))->get_molecule ();
     }
   /*
     font defs;
@@ -328,7 +328,7 @@ Line_of_score::post_processing (bool last_line)
    */ 
   for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob *sc = unsmob_element (gh_car (s));
+      Grob *sc = unsmob_grob (gh_car (s));
       Molecule *m = sc->get_molecule ();
       if (!m)
        continue;
@@ -373,7 +373,7 @@ Line_of_score::broken_col_range (Item const*l, Item const*r) const
   
   while (gh_pair_p (s) && gh_car (s) != l->self_scm ())
     {
-      Paper_column*c = dynamic_cast<Paper_column*> ( unsmob_element (gh_car (s)));
+      Paper_column*c = dynamic_cast<Paper_column*> ( unsmob_grob (gh_car (s)));
       if (Item::breakable_b (c) && !c->line_l_)
        ret.push (c);
 
index 899dc22996403c21ccdb434cd22508d0d20610fa..8156cecba00c3bcd1e91dc053353552d96735d4a 100644 (file)
@@ -34,9 +34,9 @@ protected:
   void deprecated_process_music();
   virtual void acknowledge_grob (Grob_info);
   virtual void stop_translation_timestep();
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual void create_grobs ();
-  virtual void do_removal_processing ();
+  virtual void finalize ();
 public:
 
   // todo -> property
@@ -65,7 +65,7 @@ Local_key_engraver::Local_key_engraver()
 }
 
 void
-Local_key_engraver::do_creation_processing ()
+Local_key_engraver::initialize ()
 {
   last_keysig_ = get_property ("keySignature");
   daddy_trans_l_->set_property ("localKeySignature",  last_keysig_);  
@@ -176,7 +176,7 @@ Local_key_engraver::create_grobs ()
 }
 
 void
-Local_key_engraver::do_removal_processing ()
+Local_key_engraver::finalize ()
 {
   // TODO: if grace ? signal accidentals to Local_key_engraver the 
 }
index 26ea3f2ec70320ec3068f15ec977eb88b151c82c..6fb078eda2fb14a918cc26e442bf81e815950292 100644 (file)
@@ -69,7 +69,7 @@ MAKE_SCHEME_CALLBACK(Local_key_item,brew_molecule,1);
 SCM
 Local_key_item::brew_molecule (SCM smob)
 {
-  Grob* me = unsmob_element (smob);
+  Grob* me = unsmob_grob (smob);
   
   Molecule mol;
 
index 5c1117637ccff19369c6279a3ba2d63aa532a98d..9fff756edeb8fe086a349e49ab41d00422545f2c 100644 (file)
@@ -7,13 +7,34 @@
   Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "lyric-engraver.hh"
+#include "engraver.hh"
 #include "musical-request.hh"
 #include "item.hh"
 #include "paper-def.hh"
 #include "font-metric.hh"
 #include "side-position-interface.hh"
 
+/**
+   Generate texts for lyric syllables.  We only do one lyric at a time.  
+   Multiple copies of this engraver should be used to do multiple voices.
+ */
+class Lyric_engraver : public Engraver 
+{
+protected:
+  virtual void stop_translation_timestep();
+  virtual bool try_music (Music *);
+  virtual void create_grobs ();
+  virtual void start_translation_timestep ();
+  
+public:
+  Lyric_engraver ();
+  VIRTUAL_COPY_CONS (Translator);
+
+private:
+  Lyric_req * req_l_;
+  Item* text_p_;
+};
+
 ADD_THIS_TRANSLATOR (Lyric_engraver);
 
 
@@ -37,7 +58,7 @@ Lyric_engraver::try_music (Music*r)
 }
 
 void
-Lyric_engraver::deprecated_process_music()
+Lyric_engraver::create_grobs ()
 {
   if (req_l_)
     {
index 3deeb0e24b6ee1d4655d5cbb38cdc11aa612e689..1e5e7555fce7375c2f0bf3e80b723c9f87c051ce 100644 (file)
@@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK(Lyric_extender,brew_molecule,1)
 SCM 
 Lyric_extender::brew_molecule (SCM smob) 
 {
-  Spanner *sp = dynamic_cast<Spanner*> (unsmob_element (smob));
+  Spanner *sp = dynamic_cast<Spanner*> (unsmob_grob (smob));
 
   // ugh: refp
   Real leftext = sp->get_bound (LEFT)->extent (sp->get_bound (LEFT),
index 958655daad99358cddc329fb384260afcdd9a276..045d86ead8bc5624c52f1f78b349c936c565d2c2 100644 (file)
@@ -60,7 +60,7 @@ Lyric_phrasing_engraver::~Lyric_phrasing_engraver()
 }
 
 void
-Lyric_phrasing_engraver::do_removal_processing ()
+Lyric_phrasing_engraver::finalize ()
 {
   /*
     but do need to unprotect alist_, since Engravers are gc'd now.
index d872f5cc53c05d47456e4e9447c5933f52a657d8..2d498222d4a2e055f42847a9a26dd1ae7700a5c9 100644 (file)
@@ -38,9 +38,8 @@ protected:
   virtual void acknowledge_grob (Grob_info);
   void create_items(Request*);
   virtual bool try_music (Music *req_l);
-  void deprecated_process_music ();
   virtual void start_translation_timestep ();
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual void create_grobs ();
   
 private:
@@ -58,7 +57,7 @@ Mark_engraver::Mark_engraver ()
 }
 
 void
-Mark_engraver::do_creation_processing ()
+Mark_engraver::initialize ()
 {
   daddy_trans_l_->set_property ("staffsFound", SCM_EOL); // ugh: sharing with barnumber grav.
 }
@@ -138,12 +137,6 @@ Mark_engraver::try_music (Music* r_l)
 
 void
 Mark_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Mark_engraver::deprecated_process_music ()
 {
   if (mark_req_l_)
     {
index 581b4453e84b15498ad504cfc4e8bc53d0c9a97a..75f2bc58928b0d29ffdd48212097ccb36ab4fad6 100644 (file)
@@ -30,11 +30,10 @@ public:
 
 protected:
   virtual void acknowledge_grob (Grob_info i);
-  void deprecated_process_music ();
   virtual bool try_music (Music*);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void create_grobs ();
 
 private:
@@ -95,13 +94,6 @@ Multi_measure_rest_engraver::try_music (Music* req_l)
 
 void
 Multi_measure_rest_engraver::create_grobs ()
-{  
-  deprecated_process_music ();
-}
-
-
-void
-Multi_measure_rest_engraver::deprecated_process_music ()
 {
   if (new_req_l_ && stop_req_l_)
     stop_req_l_ = 0;
@@ -181,7 +173,7 @@ Multi_measure_rest_engraver::start_translation_timestep ()
 
 
 void
-Multi_measure_rest_engraver::do_removal_processing ()
+Multi_measure_rest_engraver::finalize ()
 {
   if (mmrest_p_)
     typeset_grob (mmrest_p_);
index 4eccf4074bb9b58dea62b16b5078f42f3b63b333..9cb9063a6b595637fcf7498da607863a40432a61 100644 (file)
@@ -40,7 +40,7 @@ MAKE_SCHEME_CALLBACK(Multi_measure_rest,brew_molecule,1);
 SCM
 Multi_measure_rest::brew_molecule (SCM smob) 
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   Spanner * sp = dynamic_cast<Spanner*> (me);
 
   SCM alist_chain = Font_interface::font_alist_chain (me);
@@ -170,7 +170,7 @@ MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_spacing_rods,1);
 SCM
 Multi_measure_rest::set_spacing_rods (SCM smob)
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
 
   Spanner*sp = dynamic_cast<Spanner*> (me);
   if (!(sp->get_bound (LEFT) && sp->get_bound (RIGHT)))
index 098a86ab39ff04ce50d9438b1b40326c0eea31dc..976c41767d85452d4e3667bc64ad4ae0c16ad349 100644 (file)
@@ -73,8 +73,7 @@ Music_output_def::get_global_translator_p ()
 
   Translator_group * tg = t->instantiate (this);
   
-  tg->add_processing ();
-  tg->do_creation_processing ();
+  tg->initialize ();
   
   return dynamic_cast <Global_translator *> (tg);
 }
index 142b5ea769af60380a6cab8ccb026d0324ea126a..81f90310ba54e73674b7aca252165dbd4ad99e62 100644 (file)
@@ -20,7 +20,7 @@
 bool
 Note_column::rest_b (Grob*me) 
 {
-  return unsmob_element (me->get_grob_property ("rest"));
+  return unsmob_grob (me->get_grob_property ("rest"));
 }
 
 int
@@ -48,7 +48,7 @@ Item *
 Note_column::stem_l (Grob*me) 
 {
   SCM s = me->get_grob_property ("stem");
-  return  dynamic_cast<Item*>(unsmob_element (s));
+  return  dynamic_cast<Item*>(unsmob_grob (s));
 }
   
 Slice
@@ -61,7 +61,7 @@ Note_column::head_positions_interval(Grob *me)
   SCM h = me->get_grob_property ("note-heads");
   for (; gh_pair_p (h); h = gh_cdr (h))
     {
-      Grob *se = unsmob_element (gh_car (h));
+      Grob *se = unsmob_grob (gh_car (h));
       
       int j = int (Staff_symbol_referencer::position_f (se));
       iv.unite (Slice (j,j));
@@ -72,7 +72,7 @@ Note_column::head_positions_interval(Grob *me)
 Direction
 Note_column::dir (Grob*  me)
 {
-  Grob *stem = unsmob_element (me->get_grob_property ("stem"));
+  Grob *stem = unsmob_grob (me->get_grob_property ("stem"));
   if (stem && Stem::has_interface (stem))
     return Stem::get_direction (stem);
   else if (gh_pair_p (me->get_grob_property ("note-heads")))
@@ -111,7 +111,7 @@ Note_column::add_head (Grob*me,Grob *h)
 void
 Note_column::translate_rests (Grob*me,int dy_i)
 {
-  Grob * r = unsmob_element (me->get_grob_property ("rest"));
+  Grob * r = unsmob_grob (me->get_grob_property ("rest"));
   if (r)
     {
       r->translate_axis (dy_i * Staff_symbol_referencer::staff_space (r)/2.0, Y_AXIS);
index 7c399f9d85c4e034eda57d305cb72a7aeeeb6568..9af3c41f2a26d6636e7f323b7aca72602a53904b 100644 (file)
@@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Note_head,brew_molecule,1);
 SCM
 Note_head::brew_molecule (SCM smob)  
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
 
   
   Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
index 4b009d608135e91e2acce23c4813766cc01b4d9e..b791c222ff2e269052ced29881b32c4dbf06e9a9 100644 (file)
@@ -25,25 +25,16 @@ class Note_heads_engraver : public Engraver
   Moment note_end_mom_;
 public:
   VIRTUAL_COPY_CONS(Translator);
-  Note_heads_engraver();
   
 protected:
   virtual void start_translation_timestep ();
   virtual bool try_music (Music *req_l) ;
   virtual void create_grobs ();
   virtual void acknowledge_grob (Grob_info) ;
-  void deprecated_process_music();
   virtual void stop_translation_timestep();
 };
 
 
-
-
-
-Note_heads_engraver::Note_heads_engraver()
-{
-}
-
 bool
 Note_heads_engraver::try_music (Music *m) 
 {
@@ -62,20 +53,14 @@ Note_heads_engraver::try_music (Music *m)
   
 }
 
-void
-Note_heads_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
 void
 Note_heads_engraver::acknowledge_grob (Grob_info)
 {
-  //deprecated_process_music ();
+  //create_grobs ();
 }
 
 void
-Note_heads_engraver::deprecated_process_music()
+Note_heads_engraver::create_grobs ()
 {
   if (note_p_arr_.size ())
     return ;
index 3a76ba6ae065efa21b9a3401eecb7036f3964f25..ed76699feb36fd0f87c57abeef760ba97e02a6cb 100644 (file)
@@ -18,7 +18,7 @@ public:
   Link_array<Note_req> req_l_arr_;
   Link_array<Item> texts_;
   virtual bool  try_music (Music*m);
-  void deprecated_process_music ();
+  virtual void create_grobs ();
   virtual void stop_translation_timestep ();
 };
 
@@ -33,9 +33,8 @@ Note_name_engraver::try_music (Music *m)
   return false;
 }
 
-
 void
-Note_name_engraver::deprecated_process_music ()
+Note_name_engraver::create_grobs ()
 {
   if (texts_.size ())
     return;
index 6f6b260081854f7136953215f49c5c6808a57c2c..50b08cb8e3cc61be132ffd733dac070cdb75f490 100644 (file)
@@ -604,8 +604,9 @@ music_output_def_body:
                        junk this ? there already is tempo stuff in
                        music.
                */
-               int m = gh_scm2int ( $2->get_mus_property ("metronome-count")); 
-               dynamic_cast<Midi_def*> ($$)->set_tempo ($2->dur_.length_mom (), m);
+               int m = gh_scm2int ( $2->get_mus_property ("metronome-count"));
+               Duration *d = unsmob_duration ($2->get_mus_property ("duration"));
+               dynamic_cast<Midi_def*> ($$)->set_tempo (d->length_mom (), m);
        }
        | music_output_def_body error {
 
index dd85bb6370ac370e1c26cc00c74288f37057a115..9d76fb4c5df0fb41468475d478823c8d2f5589f2 100644 (file)
@@ -31,7 +31,7 @@ public:
   Piano_pedal_engraver ();
   ~Piano_pedal_engraver ();
 protected:
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual bool try_music (Music*);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
@@ -58,7 +58,7 @@ Piano_pedal_engraver::Piano_pedal_engraver ()
   info_list_ = 0;
 }
 void
-Piano_pedal_engraver::do_creation_processing()
+Piano_pedal_engraver::initialize()
 {
   info_list_ = new Pedal_info[4];
   Pedal_info *p = info_list_;
index 0617db14f264ddf82f2a70a74519aefcb6eccd50..f5837a110b13ab63cceb991546c30d097d7f5416 100644 (file)
@@ -31,7 +31,7 @@ public:
   ~Piano_pedal_performer ();
   
 protected:
-  virtual void do_creation_processing ();
+  virtual void initialize ();
   virtual bool try_music (Music*);
   virtual void create_grobs ();
   virtual void stop_translation_timestep ();
@@ -55,7 +55,7 @@ Piano_pedal_performer::~Piano_pedal_performer()
 }
 
 void
-Piano_pedal_performer::do_creation_processing ()
+Piano_pedal_performer::initialize ()
 {
   info_alist_ = new Pedal_info[4];
   Pedal_info *p = info_alist_;
index 0ee977d8879ec12f037cc9facceea84c07b54ad0..e327679c016ead5534f4add87c14c617fbc8be15 100644 (file)
@@ -28,8 +28,8 @@ class Property_engraver : public Engraver
 
 protected:
   virtual void acknowledge_grob (Grob_info ei);
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
+  virtual void initialize ();
+  virtual void finalize ();
 public:
   ~Property_engraver();
   Property_engraver();
@@ -43,7 +43,7 @@ Property_engraver::Property_engraver()
   prop_dict_ = 0;
 }
 void
-Property_engraver::do_removal_processing()
+Property_engraver::finalize()
 {
   
 }
@@ -55,7 +55,7 @@ Property_engraver::~Property_engraver ()
 }
 
 void
-Property_engraver::do_creation_processing ()
+Property_engraver::initialize ()
 {
   prop_dict_ = new Scheme_hash_table;
 
@@ -70,9 +70,7 @@ Property_engraver::do_creation_processing ()
 void
 Property_engraver::acknowledge_grob (Grob_info i)
 {
-  /////////
-  return;
-  SCM ifs = i.elem_l_->get_grob_property ("interfaces");
+ SCM ifs = i.elem_l_->get_grob_property ("interfaces");
   SCM props;
   for (; gh_pair_p (ifs); ifs = gh_cdr (ifs))
     {      
index 2c7480bdc9ec76ba8823bcb78f404990da0932e0..33a85917bc5e524c2131a9535b97cdeb60050a85 100644 (file)
 Pitch
 Relative_octave_music::to_relative_octave (Pitch)
 {
-  return last_pitch_;
+  return * unsmob_pitch (get_mus_property ("last-pitch"));
 }
 
 
 Relative_octave_music::Relative_octave_music(Music*p,Pitch def)
   : Music_wrapper (p)
 {
-  last_pitch_ = element ()->to_relative_octave (def);
+  set_mus_property ("last-pitch", element ()->to_relative_octave (def).smobbed_copy ());
   set_mus_property ("type", ly_symbol2scm ("relative-octave-music"));  
 }
 
index de7930f01eb7ed6a9eb1fb193222e868d4fb2020..2443dfd81a8611561a77f6770024f8b2078f0032 100644 (file)
@@ -30,13 +30,13 @@ public:
 
   virtual void start_translation_timestep ();
   virtual void process_music ();
-  virtual void do_creation_processing ();
+  virtual void initialize ();
 
   bool first_b_;
 };
 
 void
-Repeat_acknowledge_engraver::do_creation_processing ()
+Repeat_acknowledge_engraver::initialize ()
 {
   first_b_ = true;
   daddy_trans_l_->set_property ("repeatCommands", SCM_EOL);
index 6252f008666c8e413810fd396738f2a008eb60ac..a8f2b3ea907f7b2c151451c5bd418f0f549831dc 100644 (file)
@@ -23,11 +23,11 @@ MAKE_SCHEME_CALLBACK(Rest_collision,force_shift_callback,2);
 SCM
 Rest_collision::force_shift_callback (SCM element_smob, SCM axis)
 {
-  Grob *them = unsmob_element (element_smob);
+  Grob *them = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == Y_AXIS);
 
-  Grob * rc = unsmob_element (them->get_grob_property ("rest-collision"));
+  Grob * rc = unsmob_grob (them->get_grob_property ("rest-collision"));
 
   if (rc)
     {
@@ -65,7 +65,7 @@ Rest_collision::add_column (Grob*me,Grob *p)
 static SCM
 head_characteristic (Grob * col)
 {
-  Grob * s = unsmob_element (col->get_grob_property ("rest"));
+  Grob * s = unsmob_grob (col->get_grob_property ("rest"));
 
   if (!s)
     return SCM_BOOL_F;
@@ -89,7 +89,7 @@ Rest_collision::do_shift (Grob *me, SCM elts)
   for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s))
     {
       
-      Grob * e = unsmob_element (gh_car (s));
+      Grob * e = unsmob_grob (gh_car (s));
       if (!e)
        continue;
       
@@ -98,7 +98,7 @@ Rest_collision::do_shift (Grob *me, SCM elts)
       else
        commony= commony->common_refpoint  (e, Y_AXIS);
       
-      if (unsmob_element (e->get_grob_property ("rest")))
+      if (unsmob_grob (e->get_grob_property ("rest")))
        rests.push (e);
       else
        notes.push (e);
@@ -147,7 +147,7 @@ Rest_collision::do_shift (Grob *me, SCM elts)
          display_count = gh_scm2int (s);
          for (; i > display_count; i--)
            {
-             Grob* r = unsmob_element (rests[i-1]->get_grob_property ("rest"));
+             Grob* r = unsmob_grob (rests[i-1]->get_grob_property ("rest"));
              if (r)
                r->suicide ();
              rests[i-1]->suicide ();
@@ -198,7 +198,7 @@ Rest_collision::do_shift (Grob *me, SCM elts)
       // try to be opposite of noteheads. 
       Direction dir = - Note_column::dir (notes[0]);
 
-      Grob * r = unsmob_element (rcol->get_grob_property ("rest"));
+      Grob * r = unsmob_grob (rcol->get_grob_property ("rest"));
       Interval restdim = r->extent (r, Y_AXIS);        // ??
 
       if (restdim.empty_b ())
index 9487b56ee5879b7b5c8d692fd0e28472a51df74a..599df04acefb2c974af77b3e96d402fbded6fb98 100644 (file)
@@ -22,7 +22,8 @@ protected:
   virtual bool try_music (Music *);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  void deprecated_process_music ();
+  virtual void create_grobs ();
+
 public:
   
   VIRTUAL_COPY_CONS(Translator);
@@ -62,7 +63,7 @@ Rest_engraver::stop_translation_timestep ()
 }
 
 void
-Rest_engraver::deprecated_process_music ()
+Rest_engraver::create_grobs ()
 {
   if (rest_req_l_ && !rest_p_) 
     {
index b3e5668d35c303f28e7f8e1829cc46cf18d50178..149c45ba76f44fb908ef8c0db1076c8d0730c4bd 100644 (file)
@@ -19,14 +19,14 @@ MAKE_SCHEME_CALLBACK(Rest,after_line_breaking,1);
 SCM
 Rest::after_line_breaking (SCM smob)
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   int bt = gh_scm2int (me->get_grob_property ("duration-log"));
   if (bt == 0)
     {
       me->translate_axis (Staff_symbol_referencer::staff_space (me) , Y_AXIS);
     }
 
-  Grob * d = unsmob_element (me->get_grob_property ("dot"));
+  Grob * d = unsmob_grob (me->get_grob_property ("dot"));
   if (d && bt > 4) // UGH.
     {
       d->set_grob_property ("staff-position",
@@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Rest,brew_molecule,1);
 SCM
 Rest::brew_internal_molecule (SCM smob)
 {
-  Grob* me = unsmob_element (smob);
+  Grob* me = unsmob_grob (smob);
   
   bool ledger_b =false;
 
index 65d762c3ea2ed6a7e32fe3da978534bac22c7068..d3ac1a48677b4c1c9550add9734712f4e73589be 100644 (file)
@@ -18,7 +18,7 @@ Item*
 Rhythmic_head::dots_l (Grob*me) 
 {
   SCM s = me->get_grob_property ("dot");
-  return dynamic_cast<Item*> (unsmob_element (s));
+  return dynamic_cast<Item*> (unsmob_grob (s));
 }
 
 int
@@ -33,7 +33,7 @@ Item*
 Rhythmic_head::stem_l (Grob*me) 
 {
   SCM s = me->get_grob_property ("stem");
-  return dynamic_cast<Item*> (unsmob_element (s));
+  return dynamic_cast<Item*> (unsmob_grob (s));
 }
 
 int
index 4db2759a19bab654bbabf2f317632496031f4965..9faf178ff691cc232ac04bebef6bbe93910d878f 100644 (file)
 #include "item.hh"
 #include "score-engraver.hh"
 #include "paper-score.hh"
-#include "musical-request.hh"
 #include "paper-column.hh"
 #include "command-request.hh"
 #include "paper-def.hh"
 #include "axis-group-interface.hh"
+#include "translator-def.hh"
 
 
 Score_engraver::Score_engraver()
@@ -76,8 +76,19 @@ Score_engraver::finish()
   use start/finish?
  */
 void
-Score_engraver::do_creation_processing ()
+Score_engraver::initialize ()
 {
+  unsmob_translator_def (definition_)->apply_property_operations (this);
+
+  assert (dynamic_cast<Paper_def *> (output_def_l_));
+  assert (!daddy_trans_l_);
+  pscore_p_ = new Paper_score;
+  pscore_p_->paper_l_ = dynamic_cast<Paper_def*>(output_def_l_);
+
+  SCM props = get_property (ly_symbol2scm ("LineOfScore"));
+
+  pscore_p_->typeset_line (new Line_of_score (props));
+  
   make_columns (Moment (0));
   scoreline_l_ = pscore_p_->line_l_;
 
@@ -85,14 +96,14 @@ Score_engraver::do_creation_processing ()
   
   command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
 
-  Engraver_group_engraver::do_creation_processing();
+  Engraver_group_engraver::initialize();
 }
 
 
 void
-Score_engraver::do_removal_processing()
+Score_engraver::finalize()
 {
-  Engraver_group_engraver::do_removal_processing();
+  Engraver_group_engraver::finalize();
   scoreline_l_->set_bound(RIGHT,command_column_l_);
   command_column_l_->set_grob_property ("breakable", SCM_BOOL_T);
   
@@ -105,7 +116,6 @@ void
 Score_engraver::process()
 {
   process_music();
-  
   announces();
   pre_move_processing();
   check_removal();
@@ -210,16 +220,6 @@ Score_engraver::set_columns (Paper_column *new_command_l,
       if (*current[i])
        {
          scoreline_l_->add_column ((*current[i]));
-#if 0
-         /*
-           TODO: delay this decision.
-          */
-         if (!Paper_column::used_b (*current[i]))
-           {
-             (*current[i])->suicide ();
-             *current[i]  =0;
-           }
-#endif
        }
       if (news[i])
        *current[i] = news[i];
@@ -285,17 +285,4 @@ Score_engraver::forbid_breaks ()
 
 ADD_THIS_TRANSLATOR(Score_engraver);
 
-void
-Score_engraver::do_add_processing ()
-{
-  Translator_group::do_add_processing ();
-  assert (dynamic_cast<Paper_def *> (output_def_l_));
-  assert (!daddy_trans_l_);
-  pscore_p_ = new Paper_score;
-  pscore_p_->paper_l_ = dynamic_cast<Paper_def*>(output_def_l_);
-
-  SCM props = get_property (ly_symbol2scm ("LineOfScore"));
-
-  pscore_p_->typeset_line (new Line_of_score (props));
-}
 
index 3479a17b469f07496593d2c66161d48d1c4477b1..317bc3ac9dbaadc7d218e04a736e2dda4d609485 100644 (file)
 #include "midi-stream.hh"
 #include "string-convert.hh"
 #include "debug.hh"
-#include "score.hh"
-#include "source-file.hh"
-#include "source.hh"
-#include "audio-staff.hh"
-
+#include "translator-def.hh"
 
 ADD_THIS_TRANSLATOR (Score_performer);
 
@@ -105,10 +101,12 @@ Score_performer::get_output_p ()
 }
 
 void
-Score_performer::do_add_processing ()
+Score_performer::initialize ()
 {
-  Translator_group::do_add_processing ();
+  unsmob_translator_def (definition_)->apply_property_operations (this);
   assert (dynamic_cast<Midi_def *> (output_def_l_));
   performance_p_ = new Performance;
-  performance_p_->midi_l_ = dynamic_cast<Midi_def*>(output_def_l_); 
+  performance_p_->midi_l_ = dynamic_cast<Midi_def*>(output_def_l_);
+
+  Translator_group::initialize ();
 }
index 1eaea34a15c67158a7dda6264d264b5955eeaa36..93e25140b8797d27fefcf8606594cd2ce4fcf3d0 100644 (file)
@@ -26,8 +26,8 @@ public:
 protected:
   virtual void acknowledge_grob (Grob_info);
   virtual void create_grobs ();
-  virtual void  stop_translation_timestep ();
-  virtual void  start_translation_timestep ();
+  virtual void stop_translation_timestep ();
+  virtual void start_translation_timestep ();
 };
 
 
index f72c1223195100f93eaed7a694557189591f76d8..da37ed12ff8ad50cde839f5b5736e7f49c26463e 100644 (file)
@@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Script_column,before_line_breaking,1);
 SCM
 Script_column::before_line_breaking (SCM smob)
 {
-  Grob* me = unsmob_element (smob);
+  Grob* me = unsmob_grob (smob);
   Drul_array<Link_array<Grob> > arrs;
   Link_array<Grob> staff_sided 
     = Pointer_group_interface__extract_elements (me, (Grob*)0, "scripts");
index 20329c302f4eaa5a9d656b991b7c8be53590911f..4f01800e3838b435910536cb6dc6888a0a2dd0b3 100644 (file)
@@ -17,12 +17,11 @@ class Script_engraver : public Engraver {
   Link_array<Articulation_req> script_req_l_arr_;
 
 public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-  Script_engraver();
+  VIRTUAL_COPY_CONS (Translator);
+
 protected:
   virtual bool try_music (Music*);
-  void deprecated_process_music ();
+  virtual void initialize ();
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
   virtual void create_grobs ();
@@ -30,9 +29,10 @@ protected:
 };
 
 
-Script_engraver::Script_engraver()
+void
+Script_engraver::initialize ()
 {
-  start_translation_timestep();
+  script_req_l_arr_.clear();
 }
 
 bool
@@ -53,12 +53,6 @@ Script_engraver::try_music (Music *r_l)
 
 void
 Script_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Script_engraver::deprecated_process_music()
 {
   for (int i=0; i < script_req_l_arr_.size(); i++)
     {
@@ -181,6 +175,6 @@ Script_engraver::start_translation_timestep()
   script_req_l_arr_.clear();
 }
 
-ADD_THIS_TRANSLATOR(Script_engraver);
+ADD_THIS_TRANSLATOR (Script_engraver);
 
 
index 7143a308af9ce4e07e52467e3f0f2f505371da7d..c680f73d9306061e5b64929eaa4c0bf71a765156 100644 (file)
@@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Script,after_line_breaking,1);
 SCM
 Script::after_line_breaking (SCM smob)
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
 
   Direction d = Side_position::get_direction (me);
   Side_position::set_direction (me,d);
@@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Script,brew_molecule,1);
 SCM
 Script::brew_molecule (SCM smob)
 {
-  Grob *me= unsmob_element (smob);
+  Grob *me= unsmob_grob (smob);
 #if 0
    Direction dir = DOWN;
    SCM d = me->get_grob_property ("direction");
index 4ee5b7b07566e58402cbca9c5710c5e9067368aa..0610762f2d4fbec0287be76d27c2ad0942ea4077 100644 (file)
@@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Separating_group_spanner,set_spacing_rods,1);
 SCM
 Separating_group_spanner::set_spacing_rods (SCM smob)
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
   
   for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s))
     {
@@ -48,8 +48,8 @@ Separating_group_spanner::set_spacing_rods (SCM smob)
       SCM elt = gh_cadr (s);
       SCM next_elt = gh_car (s);
 
-      Item *l = dynamic_cast<Item*> (unsmob_element (elt));
-      Item *r = dynamic_cast<Item*> (unsmob_element ( next_elt));
+      Item *l = dynamic_cast<Item*> (unsmob_grob (elt));
+      Item *r = dynamic_cast<Item*> (unsmob_grob ( next_elt));
 
       if (!r || !l)
        continue;
@@ -83,7 +83,7 @@ Separating_group_spanner::set_spacing_rods (SCM smob)
    */
   for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Item * it =dynamic_cast<Item*>(unsmob_element (gh_car (s)));
+      Item * it =dynamic_cast<Item*>(unsmob_grob (gh_car (s)));
       if (it && it->broken_b ())
        {
          it->find_prebroken_piece (LEFT) ->suicide ();
index bbbf47e54ba5e359e76258c515a97478f45825ef..024dd9b5f13dca1a6e2e26ecd39b3f5f786d3f94 100644 (file)
@@ -21,8 +21,8 @@ protected:
   Spanner * sep_span_p_;
   
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
+  virtual void initialize ();
+  virtual void finalize ();
   virtual void stop_translation_timestep ();
 public:
   Separating_line_group_engraver ();
@@ -37,18 +37,18 @@ Separating_line_group_engraver::Separating_line_group_engraver ()
 }
 
 void
-Separating_line_group_engraver::do_creation_processing ()
+Separating_line_group_engraver::initialize ()
 {
   sep_span_p_ = new Spanner (get_property ("SeparatingGroupSpanner"));
   Separating_group_spanner::set_interface (sep_span_p_);
   announce_grob (sep_span_p_, 0);
-  sep_span_p_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn")));
+  sep_span_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
 }
 
 void
-Separating_line_group_engraver::do_removal_processing ()
+Separating_line_group_engraver::finalize ()
 {
-  sep_span_p_->set_bound (RIGHT, unsmob_element (get_property ("currentCommandColumn")));
+  sep_span_p_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
   typeset_grob (sep_span_p_);
   sep_span_p_ =0;
 }
index 1e48e3fec24b30bb7b3f5816377b9b6def6b572b..42043f5c14947863ae9f8a6185ffd780abf8ab10 100644 (file)
@@ -37,10 +37,10 @@ Separation_item::my_width (Grob *me)
   for (SCM s =  me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
     {
       SCM elt = gh_car (s);
-      if (!unsmob_element (elt))
+      if (!unsmob_grob (elt))
        continue;
 
-      Item *il = dynamic_cast<Item*> (unsmob_element (elt));
+      Item *il = dynamic_cast<Item*> (unsmob_grob (elt));
       if (pc != il->column_l ())
        {
          /* this shouldn't happen, but let's continue anyway. */
index 7c15bdb86e835b18440b1a86b0c42e163cfea250..60fbcd8a697bec83e633ed95f7d7f659e0eaede1 100644 (file)
@@ -38,7 +38,7 @@ Side_position::get_direction (Grob*me)
     }
   
   SCM other_elt = me->get_grob_property ("direction-source");
-  Grob * e = unsmob_element(other_elt);
+  Grob * e = unsmob_grob(other_elt);
   if (e)
     {
       return (Direction)(relative_dir * Side_position::get_direction (e));
@@ -55,14 +55,14 @@ MAKE_SCHEME_CALLBACK(Side_position,side_position,2);
 SCM
 Side_position::side_position (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
 
   Grob *common = me->parent_l (a);
   SCM support = me->get_grob_property ("side-support-elements");
   for (SCM s = support; s != SCM_EOL; s = gh_cdr (s))
     {
-      Grob * e  = unsmob_element (gh_car (s));
+      Grob * e  = unsmob_grob (gh_car (s));
       if (e)
        common = common->common_refpoint (e, a);
     }
@@ -71,7 +71,7 @@ Side_position::side_position (SCM element_smob, SCM axis)
   for (SCM s = support; s != SCM_EOL; s = gh_cdr (s))
     {
 
-      Grob * e  = unsmob_element ( gh_car (s));
+      Grob * e  = unsmob_grob ( gh_car (s));
       if (e)
        {
          dim.unite (e->extent (common, a));
@@ -111,7 +111,7 @@ MAKE_SCHEME_CALLBACK(Side_position,aligned_on_self,2);
 SCM
 Side_position::aligned_on_self (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   String s ("self-alignment-");
 
@@ -132,9 +132,9 @@ Side_position::aligned_on_self (SCM element_smob, SCM axis)
          return gh_double2scm (- ext.linear_combination (gh_scm2double (align)));
        }
     }
-  else if (unsmob_element (align))
+  else if (unsmob_grob (align))
     {
-      return gh_double2scm (- unsmob_element (align)->relative_coordinate (me,  a));
+      return gh_double2scm (- unsmob_grob (align)->relative_coordinate (me,  a));
     }
     return gh_double2scm (0.0);
 }
@@ -160,7 +160,7 @@ MAKE_SCHEME_CALLBACK(Side_position,quantised_position,2);
 SCM
 Side_position::quantised_position (SCM element_smob, SCM )
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   
   
   Direction d = Side_position::get_direction (me);
@@ -190,7 +190,7 @@ MAKE_SCHEME_CALLBACK(Side_position,aligned_side,2);
 SCM
 Side_position::aligned_side (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   
   Direction d = Side_position::get_direction (me);
@@ -216,7 +216,7 @@ MAKE_SCHEME_CALLBACK(Side_position,centered_on_parent,2);
 SCM
 Side_position::centered_on_parent (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   Grob *him = me->parent_l (a);
 
index 320867da3c2a6ba192217416af58aa29a2a044cb..dce34304d6a03842899a5cbe571f4016aacc5d27 100644 (file)
@@ -174,7 +174,7 @@ Simple_spacer::add_columns (Link_array<Grob> cols)
           spring_params == SCM_UNDEFINED && gh_pair_p (s);
           s = gh_cdr (s))
        {
-         Grob *other = unsmob_element (gh_caar (s));
+         Grob *other = unsmob_grob (gh_caar (s));
          if (other != cols[i+1])
            continue;
 
@@ -210,7 +210,7 @@ Simple_spacer::add_columns (Link_array<Grob> cols)
       for (SCM s = Spaceable_element::get_minimum_distances (cols[i]);
           gh_pair_p (s); s = gh_cdr (s))
        {
-         Grob * other = unsmob_element (gh_caar (s));
+         Grob * other = unsmob_grob (gh_caar (s));
          int oi = cols.find_i (other);
          if (oi >= 0)
            {
index 09cecda14e2344c07364a1c2b874010e9cd6452b..0ac37d0d097d449fab71070aafe87fac384b99db 100644 (file)
@@ -25,11 +25,10 @@ class Slur_engraver : public Engraver
 
 protected:
   virtual bool try_music (Music*);
-  void deprecated_process_music ();
   virtual void acknowledge_grob (Grob_info);
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void create_grobs ();
 
 public:
@@ -87,12 +86,6 @@ Slur_engraver::try_music (Music *req_l)
   return false;
 }
 
-void
-Slur_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
 void
 Slur_engraver::set_melisma (bool m)
 {
@@ -113,7 +106,7 @@ Slur_engraver::acknowledge_grob (Grob_info info)
 }
 
 void
-Slur_engraver::do_removal_processing ()
+Slur_engraver::finalize ()
 {
   for (int i = 0; i < slur_l_stack_.size (); i++)
     {
@@ -137,7 +130,7 @@ Slur_engraver::do_removal_processing ()
 }
 
 void
-Slur_engraver::deprecated_process_music ()
+Slur_engraver::create_grobs ()
 {
   Link_array<Grob> start_slur_l_arr;
   for (int i=0; i< new_slur_req_l_arr_.size (); i++)
index 257416602d2508bc3d7447ac712a3cdd13adec36..3a21afe015a28d44d7418b67d1da1cb754381f65 100644 (file)
@@ -111,7 +111,7 @@ MAKE_SCHEME_CALLBACK (Slur, after_line_breaking,1);
 SCM
 Slur::after_line_breaking (SCM smob)
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   if (!scm_ilength (me->get_grob_property ("note-columns")))
     {
       me->suicide ();
@@ -199,9 +199,9 @@ Real
 Slur::get_first_notecolumn_y (Grob *me, Direction dir)
 {
   Grob *col = dir == LEFT
-    ? unsmob_element (gh_car (scm_reverse (me->get_grob_property
+    ? unsmob_grob (gh_car (scm_reverse (me->get_grob_property
                                           ("note-columns"))))
-    : unsmob_element
+    : unsmob_grob
     (gh_car (me->get_grob_property ("note-columns")));
   
   Grob *common[] =
@@ -369,7 +369,7 @@ Slur::encompass_offset (Grob*me,
                        Grob **common) 
 {
   Offset o;
-  Grob* stem_l = unsmob_element (col->get_grob_property ("stem"));
+  Grob* stem_l = unsmob_grob (col->get_grob_property ("stem"));
   
   Direction dir = Directional_element_interface::get (me);
   
@@ -422,7 +422,7 @@ Slur::get_encompass_offset_arr (Grob *me)
   Link_array<Grob>  encompass_arr;
   while (gh_pair_p (eltlist))
     {
-      encompass_arr.push (unsmob_element (gh_car (eltlist)));      
+      encompass_arr.push (unsmob_grob (gh_car (eltlist)));      
       eltlist =gh_cdr (eltlist);
     }
   encompass_arr.reverse ();
@@ -482,7 +482,7 @@ MAKE_SCHEME_CALLBACK(Slur,set_spacing_rods,1);
 SCM
 Slur::set_spacing_rods (SCM smob)
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
 
   Rod r;
   Spanner*sp = dynamic_cast<Spanner*>(me);
@@ -497,6 +497,21 @@ Slur::set_spacing_rods (SCM smob)
 }
 
 
+/*
+  ugh ?
+ */
+MAKE_SCHEME_CALLBACK(Slur,height,2);
+SCM
+Slur::height (SCM smob, SCM ax)
+{
+  Axis a = (Axis)gh_scm2int (ax);
+  Grob * me = unsmob_grob (smob);
+  assert ( a == Y_AXIS);
+
+  SCM mol = me->get_uncached_molecule ();
+  return ly_interval2scm (unsmob_molecule (mol)->extent (a));
+}
+
 /*
   Ugh should have dash-length + dash-period
  */
@@ -504,7 +519,7 @@ MAKE_SCHEME_CALLBACK (Slur, brew_molecule,1);
 SCM
 Slur::brew_molecule (SCM smob)
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
   if (!scm_ilength (me->get_grob_property ("note-columns")))
     {
       me->suicide ();
index 3c6cbac76dda1a495ac6b8d395cfbfb090f8a996..0950112705e3341a6c7bd4b71ee39fa91695769f 100644 (file)
@@ -48,8 +48,8 @@ protected:
   virtual void acknowledge_grob (Grob_info);
   virtual void start_translation_timestep ();
   virtual void stop_translation_timestep ();
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
+  virtual void initialize ();
+  virtual void finalize ();
 public:
   Spacing_engraver ();
 };
@@ -73,18 +73,18 @@ Spacing_engraver::Spacing_engraver()
 }
 
 void
-Spacing_engraver::do_creation_processing ()
+Spacing_engraver::initialize ()
 {
   spacing_p_  =new Spanner (get_property ("SpacingSpanner"));
   Spacing_spanner::set_interface (spacing_p_);
-  spacing_p_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn")));  
+  spacing_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));  
   announce_grob (spacing_p_, 0);
 }
 
 void
-Spacing_engraver::do_removal_processing ()
+Spacing_engraver::finalize ()
 {
-  Grob * p = unsmob_element (get_property ("currentCommandColumn"));
+  Grob * p = unsmob_grob (get_property ("currentCommandColumn"));
   spacing_p_->set_bound (RIGHT, p);
   typeset_grob (spacing_p_);
   spacing_p_ =0;
@@ -136,7 +136,7 @@ Spacing_engraver::stop_translation_timestep ()
   shortest_playing = shortest_playing <? starter;
   
   Paper_column * sc
-    = dynamic_cast<Paper_column*> (unsmob_element (get_property ("currentMusicalColumn")));
+    = dynamic_cast<Paper_column*> (unsmob_grob (get_property ("currentMusicalColumn")));
 
   SCM sh = shortest_playing.smobbed_copy( );
   SCM st = starter.smobbed_copy();
index 3e2e5c7328923480ea46a43e109972804b562262..94a2bebf25f627433f93c7aa8724f5daac988a35 100644 (file)
@@ -327,7 +327,7 @@ MAKE_SCHEME_CALLBACK(Spacing_spanner, set_springs,1);
 SCM
 Spacing_spanner::set_springs (SCM smob)
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   Link_array<Grob> all (me->pscore_l_->line_l_->column_l_arr ()) ;
 
   int j = 0;
index bd02b8afc6e8330a5a9a2cab034e1d3b6d4b7fd0..4d9f53a9e470b5e8f7e1df717441fe4a79f901a1 100644 (file)
@@ -29,7 +29,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,width_callback,2);
 SCM
 Span_bar::width_callback (SCM element_smob, SCM scm_axis)
 {
-  Grob *se = unsmob_element (element_smob);
+  Grob *se = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (scm_axis);
   assert (a == X_AXIS);
   String gl = ly_scm2string (se->get_grob_property ("glyph"));
@@ -46,8 +46,8 @@ MAKE_SCHEME_CALLBACK(Span_bar,before_line_breaking,1);
 SCM
 Span_bar::before_line_breaking (SCM smob)
 {
-  evaluate_empty (unsmob_element (smob));
-  evaluate_glyph (unsmob_element (smob));
+  evaluate_empty (unsmob_grob (smob));
+  evaluate_glyph (unsmob_grob (smob));
 
   /*
     no need to call   Bar::before_line_breaking (), because the info
@@ -60,7 +60,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,center_on_spanned_callback,2);
 SCM
 Span_bar::center_on_spanned_callback (SCM element_smob, SCM axis)
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   Axis a = (Axis) gh_scm2int (axis);
   assert (a == Y_AXIS);
   Interval i (get_spanned_interval (me));
@@ -92,7 +92,7 @@ void
 Span_bar::evaluate_glyph (Grob*me)
 {
   SCM elts = me->get_grob_property ("elements");
-  Grob * b = unsmob_element (gh_car (elts));
+  Grob * b = unsmob_grob (gh_car (elts));
   SCM glsym =ly_symbol2scm ("glyph");
   SCM gl =b ->get_grob_property (glsym);
   if (!gh_string_p (gl))
@@ -132,7 +132,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,get_bar_size,1);
 SCM
 Span_bar::get_bar_size (SCM smob)
 {
-  Grob* me =  unsmob_element (smob);
+  Grob* me =  unsmob_grob (smob);
   Interval iv (get_spanned_interval (me));
   if (iv.empty_b ())
     {
index 9f6d490feeab5dc5370fbccc65931c81aaaa7970..ff0ea71474c8a1803d79d387bec727db97076f8a 100644 (file)
@@ -31,7 +31,6 @@ protected:
   virtual bool try_music (Music*);
   virtual void acknowledge_grob (Audio_element_info);
   virtual void create_grobs ();
-  void deprecated_process_music ();
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
 
@@ -67,7 +66,7 @@ Span_dynamic_performer::acknowledge_grob (Audio_element_info i)
 }
 
 void
-Span_dynamic_performer::deprecated_process_music ()
+Span_dynamic_performer::create_grobs ()
 {
   if (span_start_req_l_ || span_req_l_drul_[START])
     {
@@ -106,26 +105,22 @@ Span_dynamic_performer::deprecated_process_music ()
       Audio_dynamic_tuple a = { audio_p_, now_mom () };
       dynamic_tuple_arr_.push (a);
     }
-}
 
-void
-Span_dynamic_performer::create_grobs ()
-{
-  deprecated_process_music ();
-  if (span_req_l_drul_[STOP])
-   { 
-     finished_dynamic_tuple_arr_.top ().audio_l_->volume_ = last_volume_;
-   }
 
+  if (span_req_l_drul_[STOP])
+    { 
+      finished_dynamic_tuple_arr_.top ().audio_l_->volume_ = last_volume_;
+    }
+  
   if (span_req_l_drul_[START])
     {
-     dynamic_tuple_arr_[0].audio_l_->volume_ = last_volume_;
+      dynamic_tuple_arr_[0].audio_l_->volume_ = last_volume_;
     }
   span_start_req_l_ = 0;
   span_req_l_drul_[START] = 0;
   span_req_l_drul_[STOP] = 0;
 }
-  
+
 void
 Span_dynamic_performer::stop_translation_timestep ()
 {
index 56bce58a58454e2739529e7d7f6b0ed04ea7720a..5b67f00571dc1f8290c201a0f79d62edbf16ebf3 100644 (file)
@@ -327,8 +327,8 @@ extend_spanner_over_item (Item *it, SCM extremal_pair)
   if (!it)
     return;
   Item * col = it->column_l ();
-  Item * i1 = dynamic_cast<Item*> (unsmob_element (gh_car (extremal_pair)));
-  Item * i2 = dynamic_cast<Item*> (unsmob_element (gh_cdr (extremal_pair)));
+  Item * i1 = dynamic_cast<Item*> (unsmob_grob (gh_car (extremal_pair)));
+  Item * i2 = dynamic_cast<Item*> (unsmob_grob (gh_cdr (extremal_pair)));
   int r = Paper_column::rank_i (col);
   if (!i1 || r < Paper_column::rank_i (i1->column_l ()))
     {
@@ -348,14 +348,14 @@ extend_spanner_over_elements (SCM value, SCM extremal_pair)
       extend_spanner_over_elements (gh_car (value), extremal_pair);
       extend_spanner_over_elements (gh_cdr (value), extremal_pair);
     }
-  else if (unsmob_element (value))
+  else if (unsmob_grob (value))
     {
-      if (Spanner * sp = dynamic_cast<Spanner*> (unsmob_element(value)))
+      if (Spanner * sp = dynamic_cast<Spanner*> (unsmob_grob(value)))
        {
          extend_spanner_over_item (sp->get_bound (LEFT), extremal_pair);
          extend_spanner_over_item (sp->get_bound (RIGHT), extremal_pair);
        }
-      else if (Item * it= dynamic_cast<Item*> (unsmob_element(value)))
+      else if (Item * it= dynamic_cast<Item*> (unsmob_grob(value)))
        extend_spanner_over_item (it, extremal_pair);
     }
 }
@@ -379,8 +379,8 @@ extend_spanner_over_elements (Grob*s)
   SCM pair = gh_cons (s1,s2);
   extend_spanner_over_elements (sp->mutable_property_alist_, pair);
 
-  Grob *p1 =  unsmob_element (gh_car (pair));
-  Grob* p2 = unsmob_element (gh_cdr (pair));
+  Grob *p1 =  unsmob_grob (gh_car (pair));
+  Grob* p2 = unsmob_grob (gh_cdr (pair));
   sp->set_bound (LEFT,p1);
   sp->set_bound (RIGHT, p2);
 
index e4381f941c59d5682d13cbe7e6744834e479dd90..baffba04329679bf08e085d1f0ff0b336dac01f6 100644 (file)
@@ -31,8 +31,8 @@ public:
 
 protected:
   virtual void play_element (Audio_element* p);
-  virtual void do_removal_processing ();
-  virtual void do_creation_processing ();
+  virtual void finalize ();
+  virtual void initialize ();
   virtual void create_grobs ();
   virtual void stop_translation_timestep ();
 
@@ -60,7 +60,7 @@ Staff_performer::~Staff_performer ()
 }
 
 void
-Staff_performer::do_creation_processing ()
+Staff_performer::initialize ()
 {
   audio_staff_p_ = new Audio_staff;
   announce_element (Audio_element_info (audio_staff_p_, 0));
@@ -71,7 +71,7 @@ Staff_performer::do_creation_processing ()
   tempo_p_ = new Audio_tempo (get_tempo_i ());
   announce_element (Audio_element_info (tempo_p_, 0));
 
-  Performer_group_performer::do_creation_processing ();
+  Performer_group_performer::initialize ();
 }
 
 void
@@ -85,7 +85,6 @@ Staff_performer::create_grobs ()
       instrument_p_ = new Audio_instrument (str);
       announce_element (Audio_element_info (instrument_p_, 0));
     }
-  //Performer_group_performer::deprecated_process_music ();
 }
 
 void
@@ -115,9 +114,9 @@ Staff_performer::stop_translation_timestep ()
 }
 
 void
-Staff_performer::do_removal_processing ()
+Staff_performer::finalize ()
 {
-  Performer_group_performer::do_removal_processing ();
+  Performer_group_performer::finalize ();
   Performer::play_element (audio_staff_p_);
   audio_staff_p_ = 0;
 }
index 1686426734d3fca1690851599bc85215ba51622b..0f29bdc2e355e6b1f5e22faa90621f7bf35d6815 100644 (file)
@@ -26,8 +26,8 @@ public:
 protected:
   virtual ~Staff_symbol_engraver();
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_removal_processing();
-  virtual void do_creation_processing();
+  virtual void finalize();
+  virtual void initialize();
 };
 
 
@@ -42,19 +42,19 @@ Staff_symbol_engraver::Staff_symbol_engraver()
 }
 
 void
-Staff_symbol_engraver::do_creation_processing()
+Staff_symbol_engraver::initialize()
 {
   span_p_ = new Spanner (get_property ("StaffSymbol"));
   
-  span_p_->set_bound(LEFT, unsmob_element (get_property ("currentCommandColumn")));
+  span_p_->set_bound(LEFT, unsmob_grob (get_property ("currentCommandColumn")));
 
   announce_grob (span_p_, 0);
 }
 
 void
-Staff_symbol_engraver::do_removal_processing()
+Staff_symbol_engraver::finalize()
 {
-  span_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn")));
+  span_p_->set_bound(RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
   typeset_grob (span_p_);
   span_p_ =0;
 }
index 9b1ae4ad0811e99ace57ff4890d6bd534ce378c6..1341bf9a02625e26e01f8a825ed42430508c05da 100644 (file)
@@ -15,7 +15,7 @@
 bool
 Staff_symbol_referencer::has_interface (Grob*e)
 {
-  return unsmob_element (e->get_grob_property ("staff-symbol"))
+  return unsmob_grob (e->get_grob_property ("staff-symbol"))
     || gh_number_p (e->get_grob_property ("staff-position"));
 }
 
@@ -43,7 +43,7 @@ Grob*
 Staff_symbol_referencer::staff_symbol_l (Grob*me) 
 {
   SCM st = me->get_grob_property ("staff-symbol");
-  return unsmob_element(st);
+  return unsmob_grob(st);
 }
 
 Real
@@ -90,7 +90,7 @@ MAKE_SCHEME_CALLBACK(Staff_symbol_referencer,callback,2);
 SCM
 Staff_symbol_referencer::callback (SCM element_smob, SCM )
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
 
   
   SCM pos = me->get_grob_property ("staff-position");
index 7fa97b3e3598641680c1b79fb25b199665a0e711..7db3226f6cec9ee6fe0d1128987a6d3fc452b23c 100644 (file)
@@ -22,7 +22,7 @@ MAKE_SCHEME_CALLBACK(Staff_symbol,brew_molecule,1);
 SCM
 Staff_symbol::brew_molecule (SCM smob)
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   Spanner* sp = dynamic_cast<Spanner*> (me);
   Grob * common
     = sp->get_bound (LEFT)->common_refpoint (sp->get_bound (RIGHT), X_AXIS);
index 70d3b0f782fa396a75c6592232a7bd8d57c2f995..689d24e71f215bf50f09f2ff8512496c5ae203d9 100644 (file)
@@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Stem_tremolo,dim_callback,2);
 SCM
 Stem_tremolo::dim_callback (SCM e, SCM )
 {
-  Grob * se = unsmob_element (e);
+  Grob * se = unsmob_grob (e);
   
   Real space = Staff_symbol_referencer::staff_space (se);
   return ly_interval2scm ( Interval (-space, space));
@@ -54,8 +54,8 @@ MAKE_SCHEME_CALLBACK(Stem_tremolo,brew_molecule,1);
 SCM
 Stem_tremolo::brew_molecule (SCM smob)
 {
-  Grob *me= unsmob_element (smob);
-  Grob * stem = unsmob_element (me->get_grob_property ("stem"));
+  Grob *me= unsmob_grob (smob);
+  Grob * stem = unsmob_grob (me->get_grob_property ("stem"));
   Grob * beam = Stem::beam_l (stem);
   
   Real dydx;
index 316cebb520f96e98b8d6e0b30d5fe379a610b07d..a69f476f93f8560a6c61395de85474062e25bf9c 100644 (file)
@@ -132,7 +132,7 @@ Grob*
 Stem::support_head (Grob*me)
 {
   SCM h = me->get_grob_property ("support-head");
-  Grob * nh = unsmob_element (h);
+  Grob * nh = unsmob_grob (h);
   if (nh)
     return nh;
   else if (heads_i (me) == 1)
@@ -141,7 +141,7 @@ Stem::support_head (Grob*me)
        UGH.
        */
       
-      return unsmob_element (gh_car (me->get_grob_property ("heads")));
+      return unsmob_grob (gh_car (me->get_grob_property ("heads")));
     }
   else
     return first_head (me);
@@ -179,7 +179,7 @@ Stem::extremal_heads (Grob*me)
   
   for (SCM s = me->get_grob_property ("heads"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * n = unsmob_element (gh_car (s));
+      Grob * n = unsmob_grob (gh_car (s));
 
       
       int p = int(Staff_symbol_referencer::position_f (n));
@@ -362,7 +362,7 @@ MAKE_SCHEME_CALLBACK(Stem,before_line_breaking,1);
 SCM
 Stem::before_line_breaking (SCM smob)
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
   stem_end_position (me);      // ugh. Trigger direction calc.
   position_noteheads (me);
 
@@ -427,9 +427,9 @@ Stem::dim_callback (SCM e, SCM ax)
 {
   Axis a = (Axis) gh_scm2int (ax);
   assert (a == X_AXIS);
-  Grob *se = unsmob_element (e);
+  Grob *se = unsmob_grob (e);
   Interval r (0, 0);
-  if (unsmob_element (se->get_grob_property ("beam")) || abs (flag_i (se)) <= 2)
+  if (unsmob_grob (se->get_grob_property ("beam")) || abs (flag_i (se)) <= 2)
     ;  // TODO!
   else
     {
@@ -447,7 +447,7 @@ MAKE_SCHEME_CALLBACK(Stem,brew_molecule,1);
 SCM
 Stem::brew_molecule (SCM smob) 
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
   Molecule mol;
   Direction d = get_direction (me);
   
@@ -487,7 +487,7 @@ MAKE_SCHEME_CALLBACK(Stem,off_callback,2);
 SCM
 Stem::off_callback (SCM element_smob, SCM )
 {
-  Grob *me = unsmob_element (element_smob);
+  Grob *me = unsmob_grob (element_smob);
   
   Real r=0;
   if (Grob * f = first_head (me))
@@ -510,7 +510,7 @@ Grob*
 Stem::beam_l (Grob*me)
 {
   SCM b=  me->get_grob_property ("beam");
-  return unsmob_element (b);
+  return unsmob_grob (b);
 }
 
 
index 91a8308114a5489ad2f133f34e5000938823a450..c807868387af79117c4a1922940539116b0c81a1 100644 (file)
@@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Sustain_pedal,brew_molecule,1);
 SCM
 Sustain_pedal::brew_molecule (SCM smob) 
 {
-  Grob * e = unsmob_element (smob);
+  Grob * e = unsmob_grob (smob);
   
   Molecule mol;
   SCM glyph = e->get_grob_property ("text");
index 36a9aec7dfa5edf8b822a1f27e161aded2359f53..169537a5df5ffe88e79fa1a87cfbdebc45e6745f 100644 (file)
@@ -25,8 +25,8 @@ public:
 protected:
   Spanner * delim_;
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
+  virtual void initialize ();
+  virtual void finalize ();
 };
 
 ADD_THIS_TRANSLATOR(System_start_delimiter_engraver);
@@ -63,20 +63,20 @@ System_start_delimiter_engraver::System_start_delimiter_engraver()
 }
 
 void
-System_start_delimiter_engraver::do_creation_processing()
+System_start_delimiter_engraver::initialize()
 {
   delim_ = new Spanner (get_property ("SystemStartDelimiter"));
 
-  delim_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn")));
+  delim_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
 
 
   announce_grob (delim_,0);
 }
 
 void
-System_start_delimiter_engraver::do_removal_processing ()
+System_start_delimiter_engraver::finalize ()
 {
-  delim_->set_bound (RIGHT, unsmob_element (get_property ("currentCommandColumn")));
+  delim_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
   typeset_grob (delim_);
 }
 
index f75ec5591c4dfde1fa53e6ed406d13a38689594f..ebbdab9a96efce4f33f79d811a68aebe88376831 100644 (file)
@@ -64,7 +64,7 @@ MAKE_SCHEME_CALLBACK(System_start_delimiter,after_line_breaking,1);
 SCM
 System_start_delimiter::after_line_breaking (SCM smob)
 {
-  try_collapse (unsmob_element (smob));
+  try_collapse (unsmob_grob (smob));
   return SCM_UNSPECIFIED;
 }
 
@@ -86,7 +86,7 @@ MAKE_SCHEME_CALLBACK(System_start_delimiter,brew_molecule,1);
 SCM
 System_start_delimiter::brew_molecule (SCM smob)
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
   Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback (me->self_scm(), gh_int2scm (Y_AXIS)));
   Real l = ext.length (); 
   Molecule m;
index 015914aefba3542abfa9288d7e927318dbf1ca4f..78492a6dbbc76356400846d42cd4cff2c8690086 100644 (file)
@@ -49,7 +49,9 @@ Tempo_performer::create_grobs ()
     {
 
       SCM met = tempo_req_l_->get_mus_property ("metronome-count");
-      audio_p_ = new Audio_tempo (tempo_req_l_->dur_.length_mom () /
+      Duration *d = unsmob_duration (tempo_req_l_->get_mus_property ("tempo"));
+      
+      audio_p_ = new Audio_tempo (d->length_mom () /
                                  Moment (1, 4) 
                                  * Moment(gh_scm2int (met)));
 
index 05b078285da0f39c4b7e5b6218008cce0506f91a..b58467b0160608d58dc1de4871fd4029dbdabd32 100644 (file)
@@ -30,7 +30,6 @@ protected:
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
   virtual void create_grobs ();
-  void deprecated_process_music ();
   virtual void acknowledge_grob (Grob_info);
 };
 
@@ -79,12 +78,6 @@ Text_engraver::acknowledge_grob (Grob_info inf)
 
 void
 Text_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Text_engraver::deprecated_process_music ()
 {
   if (texts_.size ())
     return;
index eb95bbf367ed9ddaa47f0b693902d666b2d188b6..34c710db9dbc055a39eabcf16b0c6e1bfabf6893 100644 (file)
@@ -180,7 +180,7 @@ MAKE_SCHEME_CALLBACK (Text_item, brew_molecule, 1);
 SCM 
 Text_item::brew_molecule (SCM smob)
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   
   SCM text = me->get_grob_property ("text");
 
index 1a8280ab813a5ee61e417ca6d56cb357045d4ec5..e004d14ae2e2aeb5b3d68a5d2c6aa75870c296e7 100644 (file)
@@ -26,10 +26,9 @@ public:
   Text_spanner_engraver ();
   
 protected:
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void acknowledge_grob (Grob_info);
   virtual bool try_music (Music *);
-  void deprecated_process_music ();
   virtual void stop_translation_timestep ();
   virtual void start_translation_timestep ();
   virtual void create_grobs ();
@@ -86,12 +85,6 @@ Text_spanner_engraver::try_music (Music *m)
 
 void
 Text_spanner_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Text_spanner_engraver::deprecated_process_music ()
 {
   /////
   if (req_drul_[STOP])
@@ -104,7 +97,7 @@ Text_spanner_engraver::deprecated_process_music ()
       else
        {
          assert (!finished_);
-         Grob* e = unsmob_element (get_property ("currentMusicalColumn"));
+         Grob* e = unsmob_grob (get_property ("currentMusicalColumn"));
          span_->set_bound (RIGHT, e);
 
          finished_ = span_;
@@ -125,7 +118,7 @@ Text_spanner_engraver::deprecated_process_music ()
          current_req_ = req_drul_[START];
          span_  = new Spanner (get_property ("TextSpanner"));
          Side_position::set_axis (span_, Y_AXIS);
-         Grob *e = unsmob_element (get_property ("currentMusicalColumn"));
+         Grob *e = unsmob_grob (get_property ("currentMusicalColumn"));
          span_->set_bound (LEFT, e);
          announce_grob (span_, req_drul_[START]);
        }
@@ -160,7 +153,7 @@ Text_spanner_engraver::stop_translation_timestep ()
 }
 
 void
-Text_spanner_engraver::do_removal_processing ()
+Text_spanner_engraver::finalize ()
 {
   typeset_all ();
   if (span_)
index cce4e27b93c73cfdea50a629d8eeffb00ed98b05..e84fee6f47b3dc0ee08a628d902a973c7fe40ee7 100644 (file)
@@ -31,7 +31,7 @@ MAKE_SCHEME_CALLBACK (Text_spanner, brew_molecule, 1);
 SCM
 Text_spanner::brew_molecule (SCM smob) 
 {
-  Grob *me= unsmob_element (smob);
+  Grob *me= unsmob_grob (smob);
   Spanner *spanner = dynamic_cast<Spanner*> (me);
 
   Real staff_space = Staff_symbol_referencer::staff_space (me);
index 552c98de7017d188437927d02ad7cac740d11113..dcb5e5be8b1d2638a813e337127aeb5f9e742fa6 100644 (file)
@@ -119,6 +119,6 @@ MAKE_SCHEME_CALLBACK(Tie_column,after_line_breaking,1);
 SCM
 Tie_column::after_line_breaking (SCM smob)
 {
-  set_directions (unsmob_element (smob));
+  set_directions (unsmob_grob (smob));
   return SCM_UNSPECIFIED;
 }
index 981e71c028ecc8ac5bc088dc21770517030cda71..953bdb0ff321971d1cde16b3152f4b5209497bb1 100644 (file)
@@ -178,8 +178,8 @@ Tie_engraver::create_grobs ()
          SCM pair = gh_list_ref (head_list, gh_int2scm (i/2));
          
          Spanner * p = new Spanner (basic);
-         Tie::set_head (p,LEFT, dynamic_cast<Item*> (unsmob_element (gh_car (pair))));
-         Tie::set_head (p,RIGHT, dynamic_cast<Item*> (unsmob_element (gh_cdr (pair))));
+         Tie::set_head (p,LEFT, dynamic_cast<Item*> (unsmob_grob (gh_car (pair))));
+         Tie::set_head (p,RIGHT, dynamic_cast<Item*> (unsmob_grob (gh_cdr (pair))));
          
          tie_p_arr_.push (p);
          announce_grob (p, req_l_);
@@ -189,8 +189,8 @@ Tie_engraver::create_grobs ()
          Grob * p = new Spanner (basic);
          Tie::set_interface (p);
          
-         Tie::set_head (p, LEFT, dynamic_cast<Item*> (unsmob_element (gh_caar (s))));
-         Tie::set_head (p, RIGHT, dynamic_cast<Item*> (unsmob_element (gh_cdar (s))));
+         Tie::set_head (p, LEFT, dynamic_cast<Item*> (unsmob_grob (gh_caar (s))));
+         Tie::set_head (p, RIGHT, dynamic_cast<Item*> (unsmob_grob (gh_cdar (s))));
          
          tie_p_arr_.push (p);
          announce_grob (p, req_l_);
index 6edbf83333dbd9bc4d3f10e89de9080c0db23889..fca448b6227ee89149b7cbc6dde43156fc9065fd 100644 (file)
@@ -40,7 +40,7 @@ class Tie_performer : public Performer
 {
 public:
   VIRTUAL_COPY_CONS(Translator);
-
+  Tie_performer ();
 private:
   bool done_;
   PQueue<CNote_melodic_tuple> past_notes_pq_;
@@ -50,6 +50,7 @@ private:
   Link_array<Audio_tie> tie_p_arr_;
   
 protected:
+  virtual void initialize ();
   virtual void start_translation_timestep ();
   virtual void stop_translation_timestep ();
   virtual void acknowledge_grob (Audio_element_info);
@@ -57,8 +58,34 @@ protected:
   virtual void create_grobs ();
 };
 
+
+Tie_performer::Tie_performer ()
+{
+  req_l_ = 0;
+  done_ = false;
+}
+
 ADD_THIS_TRANSLATOR (Tie_performer);
 
+
+#if 0
+Tie_performer::Tie_performer ()
+{
+  // URG
+  // if we don't do this, lily dumps core
+  // which means that ``initialize'' and
+  // ``start_translation_timestep'' did not happen?!
+  initialize ();
+}
+#endif
+
+void
+Tie_performer::initialize ()
+{
+  req_l_ = 0;
+}
+
+
 bool
 Tie_performer::try_music (Music *m)
 {
index bf8805d1b705b02664931032aa0775a4c478b81e..3b188105325f725bc86356c8d36337786b0c60d3 100644 (file)
@@ -65,7 +65,7 @@ Tie::head (Grob*me, Direction d)
   SCM c = me->get_grob_property ("heads");
   c = index_cell (c, d);
 
-  return unsmob_element (c);
+  return unsmob_grob (c);
 }
 
 Real
@@ -110,7 +110,7 @@ Tie::get_default_dir (Grob*me)
 SCM
 Tie::get_control_points (SCM smob)
 {  
-  Spanner*me = dynamic_cast<Spanner*> (unsmob_element (smob));
+  Spanner*me = dynamic_cast<Spanner*> (unsmob_grob (smob));
   Direction headdir = CENTER; 
   if (head (me,LEFT))
     headdir = LEFT;
@@ -286,7 +286,7 @@ MAKE_SCHEME_CALLBACK(Tie,set_spacing_rods,1);
 SCM
 Tie::set_spacing_rods (SCM smob)  
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
   Spanner*sp = dynamic_cast<Spanner*> (me);
   Rod r;
 
@@ -304,7 +304,7 @@ MAKE_SCHEME_CALLBACK(Tie,brew_molecule,1);
 SCM
 Tie::brew_molecule (SCM smob) 
 {
-  Grob*me = unsmob_element (smob);
+  Grob*me = unsmob_grob (smob);
 
   SCM cp = me->get_grob_property ("control-points");
   if (cp == SCM_EOL)
index 868cedf3c0a057201ac2c246b74d1993d46520b3..a0d355ef9df21e7ad0b0aec8c8b2456209309587 100644 (file)
 Time_scaled_music::Time_scaled_music (int n, int d,Music *mp)
   : Music_wrapper (mp)
 {
-  num_i_ = n;
-  den_i_ = d;
-  compress (Moment (num_i_,den_i_));
+  set_mus_property ("numerator", gh_int2scm (n));
+  set_mus_property ("denominator", gh_int2scm (d));
   set_mus_property ("type",
                    Time_scaled_music_iterator::constructor_cxx_function);
+  
+  compress (Moment (n,d));
 }
 
 
index 69646280db0da218a08f003925d9c465c0ee9b6e..9a4e2b4ee428b0a58b689715be0bf5153b38081a 100644 (file)
@@ -32,7 +32,7 @@ public:
 Time_signature_engraver::Time_signature_engraver()
 { 
   time_signature_p_ =0;
-  last_time_fraction_ = SCM_EOL;
+  last_time_fraction_ = SCM_BOOL_F;
 }
 
 void
@@ -42,7 +42,7 @@ Time_signature_engraver::create_grobs()
     not rigorously safe, since the value might get GC'd and
     reallocated in the same spot */
   SCM fr= get_property ("timeSignatureFraction");
-  if (last_time_fraction_ != fr)
+  if (!time_signature_p_ && last_time_fraction_ != fr)
     {
       last_time_fraction_ = fr; 
       time_signature_p_ = new Item (get_property ("TimeSignature"));
index 263cccb14972bb9e0cf4a3c4549b2bf4a8a15f92..aa65da6e20a7a9528f53279115f9a1df66ce4bd7 100644 (file)
@@ -21,7 +21,7 @@ MAKE_SCHEME_CALLBACK(Time_signature,brew_molecule,1);
 SCM
 Time_signature::brew_molecule (SCM smob) 
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
   SCM st = me->get_grob_property ("style");
   SCM frac = me->get_grob_property ("fraction");
   int n = 4;
index 5134e67233006b5c6fc25f28a4f0a687bcd39957..d246f08f0db4f2a191ad0f16a571d601095e63ce 100644 (file)
@@ -22,6 +22,7 @@ class Timing_engraver : public Timing_translator, public Engraver
 protected:
   virtual void start_translation_timestep ();
   virtual void stop_translation_timestep ();
+  virtual void process_music ();
 public:
   VIRTUAL_COPY_CONS(Translator);
 };
@@ -61,4 +62,11 @@ Timing_engraver::stop_translation_timestep ()
 }
 
 
-
+/*
+  ugh. Translator doesn't do process_music ().
+ */
+void
+Timing_engraver::process_music ()
+{
+  Timing_translator::process_music ();
+}
index 9efa2fd4b55f6ac35ce64e1546b4ec425fc42724..16fe82b6e63512e3a82be592bb560da683a2e58b 100644 (file)
@@ -31,7 +31,7 @@ Timing_translator::try_music (Music*r)
 }
 
 void
-Timing_translator::deprecated_process_music()
+Timing_translator::process_music()
 {
   if (check_ && measure_position ())
     {
@@ -87,7 +87,7 @@ Timing_translator::stop_translation_timestep()
 ADD_THIS_TRANSLATOR(Timing_translator);
 
 void
-Timing_translator::do_creation_processing()
+Timing_translator::initialize()
 {
   Moment m;
   daddy_trans_l_->set_property ("timing" , SCM_BOOL_T);  
index 57713c5d1839ef9bc08d9f1e4e30792f3ea52c22..e2fdcdb4def6874a341535e87153f1137bcc6a83 100644 (file)
@@ -70,8 +70,12 @@ Translator_group::add_translator (SCM list, Translator *t)
   list = gh_append2 (list, gh_cons (t->self_scm (), SCM_EOL));
   t->daddy_trans_l_ = this;
   t->output_def_l_ = output_def_l_;
-  t->add_processing ();
-  t->do_creation_processing ();
+  if (Translator_group*tg = dynamic_cast<Translator_group*> (t))
+    {
+      unsmob_translator_def (tg->definition_)->apply_property_operations (tg);
+    }
+  
+  t->initialize ();
   return list;
 }
 void
@@ -254,18 +258,6 @@ Translator_group::each (Method_pointer method)
 }
 
 
-
-void
-Translator_group::do_add_processing ()
-{
-  unsmob_translator_def (definition_)->apply_property_operations (this);
-  for (SCM s = simple_trans_list_; gh_pair_p (s) ; s = gh_cdr (s))
-    {
-      Translator * t = unsmob_translator (gh_car (s));
-      t->add_processing ();
-    }
-}
-
 /*
   PROPERTIES
  */
@@ -385,13 +377,13 @@ Translator_group::do_announces ()
 }
 
 void
-Translator_group::do_creation_processing ()
+Translator_group::initialize ()
 {
-  each (&Translator::do_creation_processing);
+  each (&Translator::initialize);
 }
 
 void
-Translator_group::do_removal_processing ()
+Translator_group::finalize ()
 {
   each (&Translator::removal_processing);
 }
index 485f807eb18f4e278f52028974e99873dd7a95ae..0345c2c370b08e705bfd007d94ea43a7188fc89a 100644 (file)
@@ -72,16 +72,7 @@ Translator::now_mom () const
 }
 
 
-void
-Translator::add_processing ()
-{
-  do_add_processing ();
-}
 
-void
-Translator::do_add_processing ()
-{
-}
 
 
 void
@@ -93,7 +84,7 @@ Translator::post_move_processing ()
 void
 Translator::removal_processing ()
 {
-  do_removal_processing ();
+  finalize ();
 }
 
 
@@ -146,12 +137,12 @@ Translator::do_announces ()
 }
 
 void
-Translator::do_creation_processing ()
+Translator::initialize ()
 {
 }
 
 void
-Translator::do_removal_processing ()
+Translator::finalize ()
 {
 }
 
index 74aa3006ec3b0a1f4c443226fd79b4fd9612a24d..166f68c9688e17ff75fa3603cb6cc12e201411c5 100644 (file)
@@ -13,7 +13,6 @@
 Transposed_music::Transposed_music (Music *p, Pitch pit)
   : Music_wrapper (p)
 {
-  transpose_to_pitch_ = pit;
   p->transpose (pit);
   set_mus_property ("type", ly_symbol2scm ("transposed-music"));
 }
index 042541746e261c960b2c7348ac9ada0ae16af369..d6bcec2460e824ae010a123e63c6f29590a7ef12 100644 (file)
@@ -32,10 +32,9 @@ protected:
   /// The spanners. Array order is synced with time_scaled_music_arr_
   Link_array<Spanner> started_span_p_arr_;
 
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void acknowledge_grob (Grob_info);
   virtual bool try_music (Music*r);
-  void deprecated_process_music ();
   virtual void start_translation_timestep ();
   virtual void create_grobs ();
 };
@@ -65,12 +64,6 @@ Tuplet_engraver::try_music (Music *r)
 
 void
 Tuplet_engraver::create_grobs ()
-{
-  deprecated_process_music ();
-}
-
-void
-Tuplet_engraver::deprecated_process_music ()
 {
   SCM v = get_property ("tupletInvisible");
   if (to_boolean (v))
@@ -88,8 +81,9 @@ Tuplet_engraver::deprecated_process_music ()
       else
        started_span_p_arr_[i] = glep;
       
-      glep->set_grob_property ("text",
-                             ly_str02scm (to_str (time_scaled_music_arr_[i]->den_i_).ch_C()));
+
+      int d = gh_scm2int (time_scaled_music_arr_[i]->get_mus_property ("denominator"));
+      glep->set_grob_property ("text", ly_str02scm (to_str (d).ch_C()));
       
       announce_grob (glep, time_scaled_music_arr_ [i]);
     }
@@ -153,7 +147,7 @@ Tuplet_engraver::start_translation_timestep ()
 }
 
 void
-Tuplet_engraver::do_removal_processing ()
+Tuplet_engraver::finalize ()
 {
   for (int i=0; i < started_span_p_arr_.size (); i++)
     {
index 3e1d173400a527a7e4c3f496693084bd9ff665c6..b17a053a559f0528c3b8ee11b82222ad8eb2bcec 100644 (file)
@@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Tuplet_spanner,brew_molecule,1);
 SCM
 Tuplet_spanner::brew_molecule (SCM smob) 
 {
-  Grob *me= unsmob_element (smob);
+  Grob *me= unsmob_grob (smob);
   Molecule  mol;
 
   // Default behaviour: number always, bracket when no beam!
@@ -193,7 +193,7 @@ MAKE_SCHEME_CALLBACK(Tuplet_spanner,after_line_breaking,1);
 SCM
 Tuplet_spanner::after_line_breaking (SCM smob)
 {
-  Grob * me = unsmob_element (smob);
+  Grob * me = unsmob_grob (smob);
   Link_array<Note_column> column_arr=
     Pointer_group_interface__extract_elements (me, (Note_column*)0, "columns");
   Spanner *sp = dynamic_cast<Spanner*> (me);
@@ -223,7 +223,7 @@ Tuplet_spanner::after_line_breaking (SCM smob)
   if (scm_ilength (me->get_grob_property ("beams")) == 1)
     {
       SCM bs = me->get_grob_property ("beams");
-      Grob *b = unsmob_element (gh_car (bs));
+      Grob *b = unsmob_grob (gh_car (bs));
       Spanner * beam_l = dynamic_cast<Spanner *> (b);
       if (!sp->broken_b () 
          && sp->get_bound (LEFT)->column_l () == beam_l->get_bound (LEFT)->column_l ()
@@ -249,7 +249,7 @@ Tuplet_spanner::get_default_dir (Grob*me)
   d = UP ;
   for (SCM s = me->get_grob_property ("columns"); gh_pair_p (s); s = gh_cdr (s))
     {
-      Grob * nc = unsmob_element (gh_car (s));
+      Grob * nc = unsmob_grob (gh_car (s));
       if (Note_column::dir (nc) < 0) 
        {
          d = DOWN;
index 408359e3297412e7f32e7c1fb5d312600a03e6fa..442731b5f355cd1038abc1b8a0dd1c6f1a53b68b 100644 (file)
@@ -22,8 +22,8 @@ public:
   Vertical_align_engraver();
 protected:
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
+  virtual void initialize();
+  virtual void finalize();
 };
 
 Vertical_align_engraver::Vertical_align_engraver()
@@ -32,17 +32,17 @@ Vertical_align_engraver::Vertical_align_engraver()
 }
 
 void
-Vertical_align_engraver::do_creation_processing()
+Vertical_align_engraver::initialize()
 {
   valign_p_ =new Spanner (get_property ("VerticalAlignment"));
-  valign_p_->set_bound(LEFT,unsmob_element (get_property ("currentCommandColumn")));
+  valign_p_->set_bound(LEFT,unsmob_grob (get_property ("currentCommandColumn")));
   announce_grob (valign_p_ , 0);
 }
 
 void
-Vertical_align_engraver::do_removal_processing()
+Vertical_align_engraver::finalize()
 {
-  valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn")));
+  valign_p_->set_bound(RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
   typeset_grob (valign_p_);
   valign_p_ =0;
 }
index d53dbbedd7d8c8cfe6bb21f46d3a201c128c0bfa..6396ab4275c1ba8b31dbfa3bb4800e6d166e0e24 100644 (file)
@@ -28,7 +28,7 @@ protected:
 
   virtual void start_translation_timestep ();
   virtual void acknowledge_grob (Grob_info);
-  virtual void do_removal_processing ();
+  virtual void finalize ();
   virtual void stop_translation_timestep ();
   void deprecated_process_music ();
   virtual void create_grobs ();
@@ -155,7 +155,7 @@ Volta_engraver::acknowledge_grob (Grob_info i)
 }
 
 void
-Volta_engraver::do_removal_processing ()
+Volta_engraver::finalize ()
 {
   if (volta_span_p_)
     {
index 942dd73a5e2971c9289515431a539673ea99aadd..3046205792b03c30032affb687206d779f40e467 100644 (file)
@@ -39,7 +39,7 @@ MAKE_SCHEME_CALLBACK(Volta_spanner,brew_molecule,1);
 SCM
 Volta_spanner::brew_molecule (SCM smob) 
 {
-  Grob *me = unsmob_element (smob);
+  Grob *me = unsmob_grob (smob);
   Link_array<Item> bar_arr
     = Pointer_group_interface__extract_elements (me, (Item*)0, "bars");
 
index 14b73fd75c978390e4e5b173894540ab1b063c3a..97c1fac4b0e582d2b74b94cbd466439bff590122 100644 (file)
@@ -99,7 +99,7 @@
                (breakable . #t )
                (molecule-callback . ,Custos::brew_molecule)
                (visibility-lambda . ,end-of-line-visible)
-              (style .  "vaticana")
+              (style .  vaticana)
               (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
                (meta . ,(element-description "Custos" custos-interface staff-symbol-interface break-aligned-interface) )
        ))
index 66cb8c2e6642eb2a14f61575679914ca5a6d4a6b..a91bc2f04e88fd745683d0c27b3ba54d64bd5005 100644 (file)
    (extremity-rules . ,default-slur-extremity-rules)
    (extremity-offset-alist . ,default-slur-extremity-offset-alist)
    (de-uglify-parameters . ( 1.5  0.8  -2.0))
+   (Y-extent-callback . ,Slur::height)
    (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5)
        (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 0.000006)
        (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2)