2 script.cc -- implement Script
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "musical-request.hh"
10 #include "paper-def.hh"
13 #include "molecule.hh"
19 Script::set_stem(Stem*st_l)
26 Script::Script(Script_req* rq)
28 specs_l_ = rq->scriptdef_p_;
29 inside_staff_b_ = specs_l_->inside_staff_b_;
39 if (specs_l_->invertsym_b_)
40 symdir_i_ = (dir_i_ < 0) ? -1:1;
44 Script::set_default_dir()
46 int s_i=specs_l_->rel_stem_dir_i_;
48 dir_i_ = stem_l_->dir_i_ * s_i;
50 dir_i_ =specs_l_->staff_dir_i_;
55 Script::set_default_index()
57 pos_i_ = get_position_i(symbol().dim.y);
61 Script::do_width() const
63 return symbol().dim.x;
69 String preidx_str = (symdir_i_ < 0) ?"-" :"";
70 return paper()->lookup_l()->script(preidx_str + specs_l_->symidx);
74 Script::do_pre_processing()
82 Script::do_post_processing()
88 Script::brew_molecule_p() const
90 Real dy = paper()->internote_f();
92 Molecule*out = new Molecule(Atom(symbol()));
93 out->translate(Offset(0,dy * pos_i_));
96 IMPLEMENT_STATIC_NAME(Script);
99 Script::compare(Script *const&l1, Script *const&l2)
101 return l1->specs_l_->priority_i_ - l2->specs_l_->priority_i_;