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++)
60 Item * item_p = clone()->item ();
61 item_p->copy_dependencies (*this);
63 item_p->break_status_i_ = -1+ 2*i;
64 pscore_l_->typeset_item (item_p, pcol_l_);
65 item_p->handle_prebroken_dependencies();
66 new_copies[i] =item_p;
68 broken_to_a_= new_copies;
72 Item::do_breakable_col_processing()
74 if (!breakable_b_ || !pcol_l_->breakable_b())
77 copy_breakable_items();
78 handle_prebroken_dependencies();
81 Otherwise the broken items won't be pre_process()'ed.
83 add_dependency (broken_to_a_[0]);
84 add_dependency (broken_to_a_[1]);
89 Item::find_prebroken_piece (Line_of_score*l) const
93 else if (broken_to_a_[0] && broken_to_a_[0]->line_l() == l)
94 return broken_to_a_[0];
95 else if (broken_to_a_[1] && broken_to_a_[1]->line_l() == l)
96 return broken_to_a_[1];
102 Item::find_prebroken_piece (PCol*c)const
105 return (Item *) this; // ugh
107 if (c == pcol_l_->prebreak_p_)
108 return (Item *) broken_to_a_[0];
109 else if (c==pcol_l_->postbreak_p_)
110 return (Item *)broken_to_a_[1];
116 Item::handle_prebroken_dependencies()
119 Score_elem::handle_prebroken_dependencies();