]> git.donarmstrong.com Git - lilypond.git/blob - lily/key-performer.cc
patch::: 1.3.18.jcn1
[lilypond.git] / lily / key-performer.cc
1 /*
2   key-performer.cc -- implement Key_performer
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
7 */
8
9 #include "key-performer.hh"
10 #include "command-request.hh"
11 #include "audio-item.hh"
12
13 ADD_THIS_TRANSLATOR (Key_performer);
14
15 Key_performer::Key_performer ()
16 {
17   key_req_l_ = 0;
18   audio_p_ = 0;
19 }
20
21 Key_performer::~Key_performer ()
22 {
23 }
24
25 void 
26 Key_performer::do_print () const
27 {
28 #ifndef NPRINT
29   if (key_req_l_)
30     key_req_l_->print ();
31 #endif
32 }
33
34 void
35 Key_performer::do_process_requests ()
36 {
37   if (key_req_l_)
38     {
39       audio_p_ = new Audio_key (key_req_l_->key_);
40       Audio_element_info info (audio_p_, key_req_l_);
41       announce_element (info);
42       key_req_l_ = 0;
43     }
44 }
45
46 void
47 Key_performer::do_pre_move_processing ()
48 {
49   if (audio_p_)
50     {
51       play_element (audio_p_);
52       audio_p_ = 0;
53     }
54 }
55
56 bool
57 Key_performer::do_try_music (Music* req_l)
58 {
59   if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
60     {
61       if (key_req_l_)
62         warning (_ ("FIXME: key change merge"));
63
64       key_req_l_ = kc;
65       return true;
66     }
67
68   return false;
69 }
70