2 breathing_sign-engraver.cc -- implement Breathing_sign_engraver
4 Copyright (C) 1999 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
16 #include "staff-symbol-referencer.hh"
17 #include "breathing-sign-engraver.hh"
18 #include "breathing-sign.hh"
19 #include "musical-request.hh"
20 #include "command-request.hh"
21 #include "engraver-group-engraver.hh"
22 #include "note-head.hh"
23 #include "local-key-item.hh"
25 ADD_THIS_TRANSLATOR (Breathing_sign_engraver);
28 Breathing_sign_engraver::Breathing_sign_engraver()
30 breathing_sign_p_ = 0;
31 breathing_sign_req_l_ = 0;
35 Breathing_sign_engraver::do_try_music (Music*r_l)
37 if (Breathing_sign_req * b= dynamic_cast <Breathing_sign_req *> (r_l)) {
38 breathing_sign_req_l_ = b;
46 Breathing_sign_engraver::do_process_requests()
48 if(breathing_sign_req_l_) {
49 breathing_sign_p_ = new Breathing_sign;
50 Staff_symbol_referencer_interface st (breathing_sign_p_);
53 announce_element (Score_element_info (breathing_sign_p_, breathing_sign_req_l_));
58 Breathing_sign_engraver::do_pre_move_processing()
60 if(breathing_sign_p_) {
61 typeset_element(breathing_sign_p_);
62 breathing_sign_p_ = 0;
67 Breathing_sign_engraver::do_post_move_processing()
69 breathing_sign_req_l_ = 0;