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"
12 #include "plet-spanner.hh"
13 #include "note-column.hh"
16 Tuplet_engraver::do_try_request (Request *r)
18 Command_req * c = dynamic_cast <Command_req *> (r);
20 dynamic_cast <Bracket_req *> (c)))
25 Bracket_req * b = dynamic_cast <Bracket_req *> (c);
26 bracket_req_arr_.push (b);
31 Tuplet_engraver::do_process_requests ()
34 Link_array<Plet_spanner> start_arr;
36 for (int i=0; i < bracket_req_arr_.size (); i++)
38 if (bracket_req_arr_[i]->spantype == Span_req::STOP)
40 if (bracket_req_arr_[i]->spantype == Span_req::START)
42 Plet_spanner* glep = new Plet_spanner ();
43 start_arr.push (glep);
44 // lots of stuff does info->elem_l_->is_type ()
45 // announce_element (Score_element_info (glep, bracket_req_arr_[i]));
51 Plet_spanner* glep = started_span_p_arr_.pop ();
52 stop_now_span_p_arr_.push (glep);
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*)dynamic_cast <Item *> (i.elem_l_);
65 for (int j =0; j <started_span_p_arr_.size (); j++)
66 // started_span_p_arr_[j]->add_column (nc);
72 Tuplet_engraver::do_pre_move_processing ()
78 Tuplet_engraver::typeset_all ()
80 for (int i=0; i < stop_now_span_p_arr_.size (); i++)
82 typeset_element (stop_now_span_p_arr_[i]);
85 stop_now_span_p_arr_.clear ();
89 Tuplet_engraver::do_removal_processing ()
92 for (int i=0; i < started_span_p_arr_.size (); i++)
94 typeset_element (started_span_p_arr_[i]);
98 ADD_THIS_TRANSLATOR(Tuplet_engraver);
99 IMPLEMENT_IS_TYPE_B1(Tuplet_engraver, Engraver);
101 Tuplet_engraver::Tuplet_engraver()
107 Tuplet_engraver::do_post_move_processing ()
109 bracket_req_arr_.clear ();