From: fred Date: Sun, 24 Mar 2002 19:45:15 +0000 (+0000) Subject: lilypond-0.0.67 X-Git-Tag: release/1.5.59~4617 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=1279000823344cd951f7948f095807b9318e5346;p=lilypond.git lilypond-0.0.67 --- diff --git a/lily/include/general-script-def.hh b/lily/include/general-script-def.hh new file mode 100644 index 0000000000..c7c7207d74 --- /dev/null +++ b/lily/include/general-script-def.hh @@ -0,0 +1,37 @@ +/* + general-script-def.hh -- declare General_script_def + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef GENERAL_SCRIPT_DEF_HH +#define GENERAL_SCRIPT_DEF_HH + +#include "lily-proto.hh" +#include "input.hh" +#include "virtual-methods.hh" +/** + Definition of anything that is put aside staff/notes. + */ +class General_script_def : public Input { +public: + VIRTUAL_COPY_CONS(General_script_def,General_script_def) + NAME_MEMBERS(); + virtual int staff_dir_i()const; + void print() const; + virtual int rel_stem_dir_i()const; + virtual int priority_i()const; + virtual bool inside_b()const; + virtual Atom get_atom(Paper_def* p, int dir_i_)const; + bool equal_b(General_script_def const&)const; + virtual ~General_script_def() {} + +protected: + virtual bool do_equal_b(General_script_def const &)const; + virtual void do_print()const; +}; + +#endif // GENERAL_SCRIPT_DEF_HH diff --git a/lily/script.cc b/lily/script.cc index 9ade2eddef..578a885320 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -26,48 +26,32 @@ Script::set_stem(Stem*st_l) Script::Script(Script_req* rq) { specs_l_ = rq->scriptdef_p_; - inside_staff_b_ = specs_l_->inside_staff_b_; + inside_staff_b_ = specs_l_->inside_b(); stem_l_ = 0; pos_i_ = 0; - symdir_i_=1; dir_i_ =rq->dir_i_; } - -void -Script::set_symdir() -{ - if (specs_l_->invertsym_b_) - symdir_i_ = (dir_i_ < 0) ? -1:1; -} - void Script::set_default_dir() { - int s_i=specs_l_->rel_stem_dir_i_; + int s_i=specs_l_->rel_stem_dir_i(); if (s_i && stem_l_) dir_i_ = stem_l_->dir_i_ * s_i; else { - dir_i_ =specs_l_->staff_dir_i_; + dir_i_ =specs_l_->staff_dir_i(); } } void Script::set_default_index() { - pos_i_ = get_position_i(symbol().dim.y); + pos_i_ = get_position_i(specs_l_->get_atom(paper(), dir_i_).extent().y); } Interval Script::do_width() const { - return symbol().dim.x; -} - -Symbol -Script::symbol()const -{ - String preidx_str = (symdir_i_ < 0) ?"-" :""; - return paper()->lookup_l()->script(preidx_str + specs_l_->symidx); + return specs_l_->get_atom(paper(), dir_i_).extent().x; } void @@ -75,7 +59,7 @@ Script::do_pre_processing() { if (!dir_i_) set_default_dir(); - set_symdir(); + } void @@ -89,15 +73,16 @@ Script::brew_molecule_p() const { Real dy = paper()->internote_f(); - Molecule*out = new Molecule(Atom(symbol())); + Molecule*out = new Molecule(specs_l_->get_atom(paper(), dir_i_)); out->translate(Offset(0,dy * pos_i_)); return out; } + IMPLEMENT_STATIC_NAME(Script); int Script::compare(Script *const&l1, Script *const&l2) { - return l1->specs_l_->priority_i_ - l2->specs_l_->priority_i_; + return l1->specs_l_->priority_i() - l2->specs_l_->priority_i(); } diff --git a/lily/slur-reg.cc b/lily/slur-reg.cc index d08488e371..992889d94e 100644 --- a/lily/slur-reg.cc +++ b/lily/slur-reg.cc @@ -16,16 +16,19 @@ bool Slur_register::acceptable_request_b(Request*req_l) { - return req_l->musical() && req_l->musical()->slur(); + Musical_req *mus_l = req_l->musical(); + + return mus_l && mus_l->slur(); } bool Slur_register::try_request(Request *req_l) { - if(!req_l->slur()) + Musical_req *mus_l = req_l->musical(); + if(!mus_l || !mus_l->slur()) return false; - new_slur_req_l_arr_.push(req_l->slur()); + new_slur_req_l_arr_.push(mus_l->slur()); return true; }