2 multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
4 (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
8 #include "musical-request.hh"
9 #include "multi-measure-rest.hh"
10 #include "multi-measure-rest-engraver.hh"
11 #include "score-column.hh"
13 IMPLEMENT_IS_TYPE_B1 (Multi_measure_rest_engraver, Engraver);
14 ADD_THIS_TRANSLATOR (Multi_measure_rest_engraver);
16 Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
19 multi_measure_req_l_ = 0;
24 Multi_measure_rest_engraver::do_try_request (Request* req_l)
26 if (!req_l->musical () || !req_l->musical ()->multi_measure ())
29 multi_measure_req_l_ = req_l->musical ()->multi_measure ();
30 last_mom_ = now_moment () + multi_measure_req_l_->duration_.length ();
36 Multi_measure_rest_engraver::do_removal_processing ()
40 typeset_element (mmrest_p_);
46 Multi_measure_rest_engraver::do_process_requests ()
48 if (mmrest_p_ || !multi_measure_req_l_)
51 mmrest_p_ = new Multi_measure_rest;
53 Scalar prop = get_property ("part");
55 part_b_ = prop.to_bool ();
60 int measures_i = (int)multi_measure_req_l_->duration_.plet_.iso_i_;
62 mmrest_p_->measures_i_ = measures_i;
64 announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
66 multi_measure_req_l_ = 0;
70 Multi_measure_rest_engraver::do_pre_move_processing ()
75 typeset_element (mmrest_p_);
81 if (last_mom_ <= now_moment () + Moment (1))
82 multi_measure_req_l_ = 0;