From: fred Date: Mon, 17 Feb 1997 00:38:53 +0000 (+0000) Subject: lilypond-0.0.32 X-Git-Tag: release/1.5.59~6333 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e4a9dad03e89e40263091fb91a98b02e10ea4038;p=lilypond.git lilypond-0.0.32 --- diff --git a/src/meterreg.cc b/src/meterreg.cc new file mode 100644 index 0000000000..e7d8b8e973 --- /dev/null +++ b/src/meterreg.cc @@ -0,0 +1,63 @@ +/* + meterreg.cc -- implement Meter_register + + source file of the LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + +#include "meterreg.hh" +#include "meter.hh" +#include "commandrequest.hh" + +Meter_register::Meter_register(Complex_walker*w) + : Request_register(w) +{ + do_post_move_process(); +} + +bool +Meter_register::try_request(Request*r_l) +{ + if (!r_l->nonmus()->meterchange()) + return false; + + assert(!meter_req_l_); + meter_req_l_ = r_l->nonmus()->meterchange(); + + return true; +} + +void +Meter_register::process_request() +{ + if (meter_req_l_ ) { + Array args; + args.push(meter_req_l_->beats_i_); + args.push(meter_req_l_->one_beat_i_); + + meter_p_ = new Meter(args); + } + + if (meter_p_) + announce_element(Staff_elem_info(meter_p_, meter_req_l_, this) ); +} + +void +Meter_register::do_pre_move_process() +{ + if (meter_p_) { + Meter * post_p =new Meter(*meter_p_); + Meter * pre_p =new Meter(*meter_p_); + + typeset_breakable_item(pre_p, meter_p_, post_p); + meter_p_ =0; + } +} + +void +Meter_register::do_post_move_process() +{ + meter_req_l_ = 0; + meter_p_ =0; +}