2 script-column.cc -- implement Script_column
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "script-column.hh"
12 #include "note-head.hh"
14 #include "general-script-def.hh"
17 Script_column::add_script (Script*s_l)
19 script_l_arr_.push (s_l);
26 Script_column::do_print() const
29 DOUT << "scripts: " << script_l_arr_.size() << '\n';
34 idx (bool inside, int dir)
43 Script_column::Script_column ()
45 set_axes (X_AXIS,X_AXIS);
49 Script_column::do_pre_processing()
51 if (!script_l_arr_.size())
54 /* up+inside, up+outside, down+inside, down+outside */
55 Array<Script*> placed_l_arr_a[4];
56 for (int i=0; i < script_l_arr_.size(); i++)
58 Script*s_l = script_l_arr_[i];
59 placed_l_arr_a[idx (s_l->specs_p_->inside_b(),
60 s_l->dir_) ].push (s_l);
63 for (int j =0; j <4; j++)
65 placed_l_arr_a[j].sort (Script::compare);
69 for (int j =0; j < 4; j++)
71 if (placed_l_arr_a[j].size())
72 for (int i=0; i < support_l_arr_.size(); i++)
73 placed_l_arr_a[j][0]->add_support (support_l_arr_[i]);
80 for (int i=0; i < placed_l_arr_a[j].size(); i++)
83 placed_l_arr_a[j][i]->add_support (support_l);
84 support_l = placed_l_arr_a[j][i];
90 for (int i=0; i < placed_l_arr_a[j].size(); i++)
93 placed_l_arr_a[j][i]->add_support (support_l);
94 support_l = placed_l_arr_a[j][i];
101 Script_column::add_support (Item*i_l)
103 support_l_arr_.push (i_l);
104 add_dependency (i_l);
109 Script_column::do_substitute_element_pointer (Score_element*o,Score_element*n)
111 if (dynamic_cast <Item *> (o))
113 script_l_arr_.substitute (dynamic_cast<Script *> (o),
114 dynamic_cast <Script *> (n));
115 support_l_arr_.substitute (dynamic_cast <Item *> (o),
116 dynamic_cast <Item *> (n));