2 engraver.hh -- declare Engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1996--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
12 #include "grob-info.hh"
13 #include "translator.hh"
16 a struct which processes events, and creates the #Grob#s.
17 It may use derived classes.
19 class Engraver : public Translator
21 Grob *internal_make_grob (SCM sym, SCM cause, char const *name,
22 char const *f, int l, char const *fun);
24 friend class Engraver_group;
27 take note of item/spanner
28 put item in spanner. Adjust local key; etc.
30 Default: ignore the info
32 virtual void acknowledge_grob (Grob_info) {}
33 virtual void announce_grob (Grob_info);
34 virtual void announce_end_grob (Grob_info);
35 Engraver_group *get_daddy_engraver () const;
39 Announce element. Default: pass on to daddy. Utility
41 void announce_grob (Grob *, SCM cause);
42 void announce_end_grob (Grob *, SCM cause);
44 Item *internal_make_item (SCM sym, SCM cause, char const *name,
45 char const *f, int l, char const *fun);
46 Spanner *internal_make_spanner (SCM sym, SCM cause, char const *name,
47 char const *f, int l, char const *fun);
48 Paper_column *internal_make_column (SCM sym, char const *name,
49 char const *f, int l, char const *fun);
54 TRANSLATOR_DECLARATIONS (Engraver);
57 #define make_item(x, cause) internal_make_item (ly_symbol2scm (x), cause, x, __FILE__, __LINE__, __FUNCTION__)
58 #define make_spanner(x, cause) internal_make_spanner (ly_symbol2scm (x), cause, x, __FILE__, __LINE__, __FUNCTION__)
59 #define make_paper_column(x) internal_make_column (ly_symbol2scm (x), x, __FILE__, __LINE__, __FUNCTION__)