2 script.cc -- implement Script
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
8 #include "script-def.hh"
9 #include "musical-request.hh"
10 #include "paper-def.hh"
13 #include "molecule.hh"
17 Script::do_print() const
25 Script::do_substitute_dependency (Score_elem
*o
,Score_elem
*n
)
27 Staff_side::do_substitute_dependency (o
,n
);
30 stem_l_
= n
? (Stem
*)n
->item() : 0;
35 Script::set_stem (Stem
*st_l
)
45 inside_staff_b_
= false;
51 Script::set_default_dir()
53 int s_i
=specs_l_
->rel_stem_dir();
57 dir_
= stem_l_
->dir_
* s_i
;
60 specs_l_
->warning (_("Script needs stem direction"));
66 dir_
=specs_l_
->staff_dir();
73 Script::do_width() const
75 return specs_l_
->get_atom (paper(), dir_
).extent ().x ();
79 Script::do_pre_processing()
81 if (breakable_b_
&& break_status_i() != 1)
83 transparent_b_
= true;
92 Script::symbol_height() const
94 return specs_l_
->get_atom (paper(), dir_
).extent ().y ();
98 Script::brew_molecule_p() const
100 Real dx
= paper()->note_width()/2;
102 Molecule
*out
= new Molecule (specs_l_
->get_atom (paper(), dir_
));
103 out
->translate_axis (y_
, Y_AXIS
);
104 out
->translate_axis (dx
, X_AXIS
); // FIXME! ugh
109 IMPLEMENT_IS_TYPE_B2(Script
,Item
,Staff_side
);
112 Script::compare (Script
*const&l1
, Script
*const&l2
)
114 return l1
->specs_l_
->priority_i() - l2
->specs_l_
->priority_i ();