4
4
source file of the GNU LilyPond music typesetter
6
(c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
6
(c) 1996--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
11
10
#define ENGRAVER_HH
13
#include "lily-proto.hh"
16
13
#include "grob-info.hh"
17
14
#include "translator.hh"
21
a struct which processes events, and creates the #Grob#s.
22
It may use derived classes.
24
class Engraver : public virtual Translator {
26
friend class Engraver_group_engraver;
17
a struct which processes events, and creates the #Grob#s.
18
It may use derived classes.
20
class Engraver : public Translator
23
friend class Engraver_group;
29
Call this when you're finished with ELEM_P.
31
virtual void typeset_grob (Grob*elem);
33
26
take note of item/spanner
34
27
put item in spanner. Adjust local key; etc.
36
29
Default: ignore the info
38
31
virtual void acknowledge_grob (Grob_info) {}
40
/** Do things with stuff found in acknowledge_grob. Ugh. Should
41
be looped with acknowledge_grob.
44
virtual void process_acknowledged_grobs () {}
46
Announce element. Default: pass on to daddy. Utility
48
virtual void announce_grob (Grob*, SCM cause);
49
32
virtual void announce_grob (Grob_info);
50
Engraver_group_engraver*get_daddy_engraver () const;
33
Engraver_group *get_daddy_engraver () const;
53
Score_engraver * get_score_engraver () const;
57
TRANSLATOR_DECLARATIONS(Engraver);
37
Announce element. Default: pass on to daddy. Utility
39
void announce_grob (Grob *, SCM cause);
41
Score_engraver *get_score_engraver () const;
45
TRANSLATOR_DECLARATIONS (Engraver);
60
#define make_item(x) make_item_from_properties (daddy_context_, ly_symbol2scm (x))
61
#define make_spanner(x) make_spanner_from_properties (daddy_context_, ly_symbol2scm (x))
62
Item* make_item_from_properties (Context * tg, SCM x);
63
Spanner* make_spanner_from_properties (Context * tg, SCM x);
48
#define make_item(x, cause) make_item_from_properties (this, ly_symbol2scm (x), cause, x)
49
#define make_spanner(x, cause) make_spanner_from_properties (this, ly_symbol2scm (x), cause, x)
50
#define make_paper_column(x) make_paper_column_from_properties (this, ly_symbol2scm (x), x)
51
Grob *make_grob_from_properties (Engraver *tr, SCM symbol, SCM cause, char const *name);
52
Item *make_item_from_properties (Engraver *tg, SCM x, SCM cause, char const *name);
53
Spanner *make_spanner_from_properties (Engraver *tg, SCM x, SCM cause, char const *name);
54
Paper_column *make_paper_column_from_properties (Engraver *tg, SCM x, char const *name);
68
56
#endif // ENGRAVER_HH