2 item.hh -- declare Item
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
14 #include "score-element.hh"
15 #include "drul-array.hh"
16 #include "protected-scm.hh"
19 A horizontally fixed size element of the score.
21 Item is the datastructure for printables whose width is known
22 before the spacing is calculated
24 NB. This doesn't mean an Item has to initialize the output field before
30 visibility_lambda :: int -> (bool . bool)
36 (transparent, empty) cons
39 class Item : public virtual Score_element {
41 void try_visibility_lambda ();
44 Link_array<Spanner> attached_span_l_arr_;
45 Drul_array<Item*> broken_to_drul_;
46 Item *unbroken_original_l_;
48 /// should be put in a breakable col.
51 /// I am really to be broken?
52 virtual bool breakable_b () const;
54 Direction break_status_dir_;
55 int break_priority_i_;
57 /// nobreak = 0, pre = -1, post = 1
58 Direction break_status_dir() const;
59 Item * find_prebroken_piece (Direction) const;
60 Item * find_prebroken_piece (Line_of_score*) const;
65 virtual Line_of_score * line_l() const;
66 virtual Paper_column * column_l () const;
68 static int left_right_compare (Item const *, Item const*);
72 virtual void do_breakable_col_processing();
73 virtual void handle_prebroken_dependencies();
74 virtual void do_print() const;
75 virtual bool linked_b() const;
77 virtual void handle_prebroken_dependents ();
79 void copy_breakable_items();