]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.67
authorfred <fred>
Sun, 24 Mar 2002 19:45:15 +0000 (19:45 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:45:15 +0000 (19:45 +0000)
lily/include/general-script-def.hh [new file with mode: 0644]
lily/script.cc
lily/slur-reg.cc

diff --git a/lily/include/general-script-def.hh b/lily/include/general-script-def.hh
new file mode 100644 (file)
index 0000000..c7c7207
--- /dev/null
@@ -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 <hanwen@stack.nl>
+*/
+
+
+#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
index 9ade2eddef3aec40666fda512842fe41928822f7..578a8853208b72cbf353320ee99a73c73f5664e9 100644 (file)
@@ -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();
 }
     
index d08488e371b00bacadef5e4f566d140d6fe371e1..992889d94ea04ce7e1609e4e833583aa9df59148 100644 (file)
 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;
 }