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 "breathing-sign-engraver.hh"
17 #include "breathing-sign.hh"
18 #include "musical-request.hh"
19 #include "command-request.hh"
20 #include "engraver-group-engraver.hh"
21 #include "note-head.hh"
22 #include "local-key-item.hh"
26 Breathing_sign_engraver::Breathing_sign_engraver()
28 breathing_sign_p_ = 0;
29 breathing_sign_req_l_ = 0;
33 Breathing_sign_engraver::do_try_music (Music*r_l)
35 if (Breathing_sign_req * b= dynamic_cast <Breathing_sign_req *> (r_l)) {
36 breathing_sign_req_l_ = b;
44 Breathing_sign_engraver::do_process_requests()
46 if(breathing_sign_req_l_) {
47 breathing_sign_p_ = new Breathing_sign;
49 Scalar prop = get_property ("verticalDirection", 0);
51 breathing_sign_p_->set_vertical_position((Direction)int(prop));
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;
72 ADD_THIS_TRANSLATOR(Breathing_sign_engraver);