X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftime-signature-performer.cc;h=71a20bafea9f462cc6c8e3c1ec44e1d8ef1aead1;hb=d9b43b93f2c885409bafdb157138158f65cc49aa;hp=644055017060c0a99ede69d429a2ad37633f55ef;hpb=9efbad2d9487a05b04423e7e9f062968e8f8eaf4;p=lilypond.git diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc index 6440550170..71a20bafea 100644 --- a/lily/time-signature-performer.cc +++ b/lily/time-signature-performer.cc @@ -1,56 +1,70 @@ /* - time_signature-performer.cc -- implement Time_signature_performer + time-signature-performer.cc -- implement Time_signature_performer source file of the GNU LilyPond music typesetter - (c) 1997--1998 Jan Nieuwenhuizen + (c) 1997--2002 Jan Nieuwenhuizen */ -#include "time-signature-performer.hh" -#include "command-request.hh" #include "audio-item.hh" +#include "lily-proto.hh" +#include "performer.hh" -IMPLEMENT_IS_TYPE_B1(Time_signature_performer,Performer); -ADD_THIS_TRANSLATOR(Time_signature_performer); -Time_signature_performer::Time_signature_performer() +class Time_signature_performer : public Performer { - time_signature_req_l_ = 0; -} +public: + TRANSLATOR_DECLARATIONS(Time_signature_performer); + ~Time_signature_performer (); + +protected: + + virtual void stop_translation_timestep (); + virtual void create_audio_elements (); + + SCM prev_fraction_; +private: + + Audio_time_signature* audio_p_; +}; + -Time_signature_performer::~Time_signature_performer() +Time_signature_performer::Time_signature_performer () { + prev_fraction_ = SCM_BOOL_F; + audio_p_ = 0; } -void -Time_signature_performer::do_print() const +Time_signature_performer::~Time_signature_performer () { -#ifndef NPRINT - if (time_signature_req_l_) - time_signature_req_l_->print(); -#endif } + void -Time_signature_performer::do_process_requests() +Time_signature_performer::create_audio_elements () { - if (time_signature_req_l_) - play (new Audio_time_signature (time_signature_req_l_)); - time_signature_req_l_ = 0; + SCM fr = get_property ("timeSignatureFraction"); + if (gh_pair_p (fr) && !gh_equal_p (fr, prev_fraction_)) + { + prev_fraction_ = fr; + int b = gh_scm2int (ly_car (fr)); + int o = gh_scm2int (ly_cdr (fr)); + + audio_p_ = new Audio_time_signature (b,o); + Audio_element_info info (audio_p_, 0); + announce_element (info); + + } } -bool -Time_signature_performer::do_try_request (Request* req_l) +void +Time_signature_performer::stop_translation_timestep () { - if (time_signature_req_l_) - return false; - - if (dynamic_cast (req_l)) - time_signature_req_l_ = dynamic_cast (req_l); - - if (time_signature_req_l_) - return true; - - return false; + if (audio_p_) + { + play_element (audio_p_); + audio_p_ = 0; + } } +ENTER_DESCRIPTION (Time_signature_performer, "","","","","" );