2 auto-plet-engraver.cc -- implement Auto_plet_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "auto-plet-engraver.hh"
11 #include "command-request.hh"
13 #include "note-column.hh"
16 Tuplet_engraver::do_try_request (Request *r)
18 Command_req * c = r->access_Command_req ();
20 c->access_Bracket_req ()))
25 Bracket_req * b = c->access_Bracket_req ();
26 bracket_req_arr_.push (b);
32 Tuplet_engraver::do_process_requests ()
35 Link_array<Slur> start_arr;
37 for (int i=0; i < bracket_req_arr_.size (); i++)
39 if (bracket_req_arr_[i]->spantype == Span_req::STOP)
41 if (bracket_req_arr_[i]->spantype == Span_req::START)
45 announce_element (Score_element_info (sp, bracket_req_arr_[i]));
51 Slur *sp = started_span_p_arr_.pop ();
52 stop_now_span_p_arr_.push (sp);
55 for (int i=0; i < start_arr.size (); i++)
56 started_span_p_arr_.push (start_arr.pop ());
60 Tuplet_engraver::acknowledge_element (Score_element_info i)
62 if (i.elem_l_->is_type_b (Note_column::static_name ()))
64 Note_column *nc = (Note_column*)i.elem_l_->access_Item ();
65 for (int j =0; j <started_span_p_arr_.size (); j++)
66 started_span_p_arr_[j]->add_column (nc);
71 Tuplet_engraver::do_pre_move_processing ()
77 Tuplet_engraver::typeset_all ()
79 for (int i=0; i < stop_now_span_p_arr_.size (); i++)
81 typeset_element (stop_now_span_p_arr_[i]);
84 stop_now_span_p_arr_.clear ();
88 Tuplet_engraver::do_removal_processing ()
91 for (int i=0; i < started_span_p_arr_.size (); i++)
93 typeset_element (started_span_p_arr_[i]);
97 ADD_THIS_TRANSLATOR(Tuplet_engraver);
98 IMPLEMENT_IS_TYPE_B1(Tuplet_engraver, Engraver);
100 Tuplet_engraver::Tuplet_engraver()
106 Tuplet_engraver::do_post_move_processing ()
108 bracket_req_arr_.clear ();