2 engraver.cc -- implement Engraver
4 Sourcefile of GNU LilyPond music type setter
6 (c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "engraver.hh"
11 #include "engraver-group-engraver.hh"
14 #include "score-engraver.hh"
18 Engraver::announce_grob (Grob_info inf)
20 daddy_grav_l ()->announce_grob (inf);
24 Engraver::announce_grob (Grob* e, Music *m)
26 if (m && store_locations_global_b
27 && m->origin ()->location_str ().length_i ())
29 e->set_grob_property ("origin", m->get_mus_property ("origin"));
33 if (!i.origin_trans_l_)
34 i.origin_trans_l_ = this;
35 daddy_grav_l ()->announce_grob (i);
41 Engraver::typeset_grob (Grob*p)
43 daddy_grav_l ()->typeset_grob (p);
47 Engraver_group_engraver*
48 Engraver::daddy_grav_l () const
50 return (daddy_trans_l_)
51 ? dynamic_cast<Engraver_group_engraver *> (daddy_trans_l_)
56 Engraver::process_music ()
67 Engraver::top_engraver () const
72 if (dynamic_cast<Score_engraver*>((Engraver*)this))
73 return dynamic_cast<Score_engraver*> ((Engraver*)this);
76 return dynamic_cast<Engraver*> (daddy_trans_l_)->top_engraver ();
78 programming_error ("No score engraver!");
82 ENTER_DESCRIPTION(Engraver,