2 engraver.cc -- implement Engraver
4 Sourcefile of GNU LilyPond music type setter
6 (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "engraver.hh"
11 #include "engraver-group-engraver.hh"
13 #include "score-engraver.hh"
18 #include "score-context.hh"
20 Engraver_group_engraver*
21 Engraver::get_daddy_engraver () const
23 return dynamic_cast<Engraver_group_engraver*> (get_daddy_translator ());
27 Engraver::announce_grob (Grob_info inf)
29 get_daddy_engraver ()->announce_grob (inf);
34 CAUSE is the object (typically a Music object) that
35 was the reason for making E.
38 Engraver::announce_grob (Grob* e, SCM cause)
41 TODO: junk grob-info, and make a cause grob-property to store
44 if (unsmob_music (cause) || unsmob_grob (cause))
45 e->set_grob_property ("cause", cause);
50 i.origin_trans_ = this;
52 get_daddy_engraver ()->announce_grob (i);
58 Engraver::typeset_grob (Grob*p)
60 Engraver *dad = get_daddy_engraver ();
61 dad->typeset_grob (p);
67 Engraver::process_music ()
77 Engraver::get_score_engraver () const
79 SCM t = get_score_context ()->implementation_;
80 return dynamic_cast<Score_engraver*> (unsmob_translator (t));
85 Engraver::do_announces ()
89 ENTER_DESCRIPTION(Engraver,