2 breathing_sign-engraver.cc -- implement Breathing_sign_engraver
4 (c) 1999--2005 Michael Krause
6 written for the GNU LilyPond music typesetter
10 . Cancel any beams running through the breathing sign
11 ([e8 \breathe f e f] should become [e8] \breathe [f e f])
12 . Spacing is not yet completely pretty
15 #include "staff-symbol-referencer.hh"
16 #include "breathing-sign.hh"
17 #include "engraver-group-engraver.hh"
20 class Breathing_sign_engraver : public Engraver
23 TRANSLATOR_DECLARATIONS (Breathing_sign_engraver);
26 virtual bool try_music (Music *req);
27 virtual void process_acknowledged_grobs ();
28 virtual void stop_translation_timestep ();
31 Music *breathing_sign_req_;
32 Grob *breathing_sign_;
35 Breathing_sign_engraver::Breathing_sign_engraver ()
38 breathing_sign_req_ = 0;
42 Breathing_sign_engraver::try_music (Music *r)
44 breathing_sign_req_ = r;
49 Breathing_sign_engraver::process_acknowledged_grobs ()
51 if (breathing_sign_req_ && ! breathing_sign_)
53 breathing_sign_ = make_item ("BreathingSign", breathing_sign_req_->self_scm ());
54 breathing_sign_req_ = 0;
59 Breathing_sign_engraver::stop_translation_timestep ()
62 breathing_sign_req_ = 0;
65 ADD_TRANSLATOR (Breathing_sign_engraver,
67 /* creats*/ "BreathingSign",
68 /* accepts */ "breathing-event",