2 item.cc -- implement Item
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
13 #include "elem-group.hh"
20 broken_to_a_[0] = broken_to_a_[1]=0;
23 IMPLEMENT_IS_TYPE_B1(Item, Score_elem);
26 Item::do_print() const
37 return pcol_l_->hpos_f_ + absolute_coordinate(X_AXIS);
43 return pcol_l_->line_l_;
47 Item::break_status_i() const
49 return break_status_i_;
53 Item::copy_breakable_items()
55 if ( broken_to_a_[0] || broken_to_a_[1] )
58 for (int i=0; i < 2; i++) {
59 Item * item_p = clone()->item();
60 item_p->copy_dependencies(*this);
62 item_p->break_status_i_ = -1+ 2*i;
63 pscore_l_->typeset_item(item_p, pcol_l_);
64 item_p->handle_prebroken_dependencies();
65 new_copies[i] =item_p;
67 broken_to_a_= new_copies;
71 Item::do_breakable_col_processing()
73 if (!breakable_b_ || !pcol_l_->breakable_b())
76 copy_breakable_items();
77 handle_prebroken_dependencies();
80 Otherwise the broken items won't be pre_process()'ed.
82 add_dependency( broken_to_a_[0] );
83 add_dependency( broken_to_a_[1] );
88 Item::find_prebroken_piece(Line_of_score*l) const
92 else if (broken_to_a_[0] && broken_to_a_[0]->line_l() == l)
93 return broken_to_a_[0];
94 else if (broken_to_a_[1] && broken_to_a_[1]->line_l() == l)
95 return broken_to_a_[1];
101 Item::find_prebroken_piece(PCol*c)const
104 return (Item *) this; // ugh
106 if (c == pcol_l_->prebreak_p_)
107 return (Item *) broken_to_a_[0];
108 else if (c==pcol_l_->postbreak_p_)
109 return (Item *)broken_to_a_[1];
115 Item::handle_prebroken_dependencies()
118 Score_elem::handle_prebroken_dependencies();