2 hara-kiri-engraver.cc -- implement Hara_kiri_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
10 #include "axis-group-engraver.hh"
11 #include "hara-kiri-group-spanner.hh"
12 #include "rhythmic-head.hh"
15 class Hara_kiri_engraver : public Axis_group_engraver
18 virtual Spanner *get_spanner ();
19 virtual void acknowledge_grob (Grob_info);
20 virtual void add_element (Grob *e);
21 virtual void start_translation_timestep ();
25 TRANSLATOR_DECLARATIONS (Hara_kiri_engraver);
29 Hara_kiri_engraver::start_translation_timestep ()
31 Axis_group_engraver::start_translation_timestep ();
32 interesting_ = get_property ("keepAliveInterfaces");
37 Hara_kiri_engraver::add_element (Grob *e)
39 Hara_kiri_group_spanner::add_element (staffline_, e);
43 Hara_kiri_engraver::get_spanner ()
45 Spanner *sp = make_spanner ("RemoveEmptyVerticalGroup", SCM_EOL);
51 Hara_kiri_engraver::acknowledge_grob (Grob_info i)
53 Axis_group_engraver::acknowledge_grob (i);
56 for (SCM s = interesting_; scm_is_pair (s); s = scm_cdr (s))
58 if (i.grob ()->internal_has_interface (scm_car (s)))
59 Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ());
64 Hara_kiri_engraver::Hara_kiri_engraver ()
66 interesting_ = SCM_EOL;
69 ADD_TRANSLATOR (Hara_kiri_engraver,
70 /* descr */ "Like Axis_group_engraver, but make a hara-kiri spanner, and add "
71 "interesting items (ie. note heads, lyric syllables and normal rests) ",
72 /* creats*/ "RemoveEmptyVerticalGroup",
74 /* acks */ "grob-interface",
75 /* reads */ "keepAliveInterfaces",