]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/chord-tremolo-engraver.cc
(convert-to-dvi): redirect output to
[lilypond.git] / lily / chord-tremolo-engraver.cc
index 39871f741d0bf04ea19b3048e9f99d53b41d1d78..7e38969eb095b0a1d7ed5b83d03180a12702118b 100644 (file)
@@ -1,11 +1,11 @@
 /*   
-  new-chord-tremolo-engraver.cc --  implement Chord_tremolo_engraver
+     new-chord-tremolo-engraver.cc --  implement Chord_tremolo_engraver
   
-  source file of the GNU LilyPond music typesetter
+     source file of the GNU LilyPond music typesetter
   
-  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+     (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
- */
+*/
 
 #include "engraver.hh"
 #include "beam.hh"
 
 /**
 
-  This acknowledges repeated music with "tremolo" style.  It typesets
-  a beam.
+This acknowledges repeated music with "tremolo" style.  It typesets
+a beam.
 
-  TODO:
+TODO:
 
-  - perhaps use engraver this to steer other engravers? That would
-  create dependencies between engravers, which is bad.
+- perhaps use engraver this to steer other engravers? That would
+create dependencies between engravers, which is bad.
 
-  - create dots if appropriate.
+- create dots if appropriate.
 
-  - create TremoloBeam iso Beam?
+- create TremoloBeam iso Beam?
 
 */
 class Chord_tremolo_engraver : public Engraver
@@ -124,10 +124,7 @@ Chord_tremolo_engraver::process_music ()
       beam_ = make_spanner ("Beam", repeat_->self_scm ());
       beam_->set_property ("chord-tremolo", SCM_BOOL_T);
 
-      SCM smp = get_property ("measurePosition");
-      Moment mp
-       = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-      beam_start_location_ = mp;
+      beam_start_location_ = robust_scm2moment (get_property ("measurePosition"), Moment (0));
     }
 }
 
@@ -145,11 +142,7 @@ Chord_tremolo_engraver::finalize ()
 void
 Chord_tremolo_engraver::typeset_beam ()
 {
-  if (finished_beam_)
-    {
-      typeset_grob (finished_beam_);
-      finished_beam_ = 0;
-    }
+  finished_beam_ = 0;
 }
 
 void
@@ -210,13 +203,15 @@ Chord_tremolo_engraver::start_translation_timestep ()
 void
 Chord_tremolo_engraver::stop_translation_timestep ()
 {
-  typeset_beam ();
-
   if (stem_tremolo_)
     {
-      typeset_grob (stem_tremolo_);
+      repeat_ = 0;
+      if (beam_)
+       programming_error ("Huh, beam and stem tremolo?");
       stem_tremolo_ = 0;
     }
+
+  typeset_beam ();
 }