X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fengraver.cc;h=eebd22e4bea706dbf8635b70c0e1ebf412cedb24;hb=e10092cbaddbbe8bf2a3668eb70ee4dafb54af8a;hp=e1d1ddf50b4707dddf081b1b23e3ad5a9dc7f7cc;hpb=c659cb200486c2f908703696a1b2873e78c8160a;p=lilypond.git diff --git a/lily/engraver.cc b/lily/engraver.cc index e1d1ddf50b..eebd22e4be 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -3,7 +3,7 @@ Sourcefile of GNU LilyPond music type setter - (c) 1997--2004 Han-Wen Nienhuys + (c) 1997--2006 Han-Wen Nienhuys */ #include "engraver.hh" @@ -17,10 +17,10 @@ #include "score-context.hh" #include "lilypond-key.hh" -Engraver_group_engraver* +Engraver_group * Engraver::get_daddy_engraver () const { - return dynamic_cast (get_daddy_translator ()); + return dynamic_cast (get_daddy_translator ()); } void @@ -29,45 +29,59 @@ Engraver::announce_grob (Grob_info inf) get_daddy_engraver ()->announce_grob (inf); } +void +Engraver::announce_end_grob (Grob_info inf) +{ + get_daddy_engraver ()->announce_grob (inf); +} /* CAUSE is the object (typically a Music object) that was the reason for making E. - */ +*/ void -Engraver::announce_grob (Grob* e, SCM cause) +Engraver::announce_grob (Grob *e, SCM cause) { if (unsmob_music (cause) || unsmob_grob (cause)) e->set_property ("cause", cause); - Grob_info i; - i.grob_ = e; - if (!i.origin_trans_) - i.origin_trans_ = this; + Grob_info i (this, e); - Engraver * g = get_daddy_engraver (); + Engraver_group *g = get_daddy_engraver (); if (g) g->announce_grob (i); } - +/* + CAUSE is the object (typically a Music object) that + was the reason for making E. +*/ +void +Engraver::announce_end_grob (Grob *e, SCM cause) +{ + if (unsmob_music (cause) || unsmob_grob (cause)) + e->set_property ("cause", cause); + Grob_info i (this, e); -Engraver::Engraver () -{ + i.start_end_ = STOP; + Engraver_group *g = get_daddy_engraver (); + if (g) + g->announce_grob (i); } -Score_engraver* -Engraver::get_score_engraver () const +Engraver::Engraver () { - return dynamic_cast (get_score_context ()->implementation ()); } +#include "translator.icc" -ENTER_DESCRIPTION (Engraver, - "", "", - "", - "", "", ""); +ADD_TRANSLATOR (Engraver, + "Base class for engravers. Does nothing, so it is not used.", + "", + "", + "", + "");