TRANSLATOR_DECLARATIONS (Stem_engraver);
protected:
- void add_script (Grob *);
void make_stem (Grob_info);
virtual void acknowledge_grob (Grob_info);
virtual void stop_translation_timestep ();
stem needs a rhythmic structure to fit it into a beam. */
stem_ = make_item ("Stem", gi.music_cause ()->self_scm ());
+ /*
+ docme: why do we take duration-log from request, not from note
+ head?
+ */
int duration_log = gi.music_cause ()->duration_log ();
stem_->set_property ("duration-log", scm_int2num (duration_log));
}
}
-void
-Stem_engraver::add_script (Grob *script)
-{
- Direction d = get_grob_direction (script);
- if (d == UP || d == DOWN)
- {
- char const *property = d == UP ? "script-up" : "script-down";
- stem_->set_property (property,
- scm_cons (script->self_scm (),
- stem_->get_property (property)));
- }
-}
-
void
Stem_engraver::acknowledge_grob (Grob_info gi)
{
{
if (Rhythmic_head::get_stem (gi.grob_))
return;
+
+ Music * cause = gi.music_cause ();
+ if (!cause)
+ return ;
if (!stem_)
make_stem (gi);
- int duration_log = gi.music_cause ()->duration_log ();
+ int duration_log = cause->duration_log ();
if (Stem::duration_log (stem_) != duration_log)
{
// FIXME:
Stem::add_head (stem_, gi.grob_);
}
- else if (Script_interface::has_interface (gi.grob_))
- add_script (gi.grob_);
}
void