]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.64
authorfred <fred>
Sun, 24 Mar 2002 19:40:40 +0000 (19:40 +0000)
committerfred <fred>
Sun, 24 Mar 2002 19:40:40 +0000 (19:40 +0000)
lily/include/local-key-item.hh
lily/local-key-item.cc

index dd4ae4b7367ac87127774be197fc29399ba075c8..2371277bb0fd9ff3300f6bb546c3f29c890d54f6 100644 (file)
@@ -10,7 +10,9 @@
 #include "varray.hh"
 
 struct Local_acc {
-    int name , acc, octave;
+    int name_i_;
+    int accidental_i_;
+    int octave_i_;
     static int compare(Local_acc&, Local_acc&);
 };
 
index 6a658b64c27b7937c0fe76f02fd07245d1981928..f6d8b9ba7f6a8101b2aa78288c74b1a93888547f 100644 (file)
@@ -1,3 +1,11 @@
+/*
+  local-key-item.cc -- implement Local_key_item, Local_acc
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
 #include "local-key-item.hh"
 #include "molecule.hh"
 #include "scalar.hh"
@@ -26,13 +34,18 @@ Local_key_item::add(Melodic_req*m_l)
 {
     add(m_l->octave_i_, m_l->notename_i_, m_l->accidental_i_);
 }
+
 void
 Local_key_item::add (int o, int p , int a)
 {
     Local_acc l;
-    l.octave = o;
-    l.name = p;
-    l.acc = a;
+    l.octave_i_ = o;
+    l.name_i_ = p;
+    l.accidental_i_ = a;
+    for (int i=0; i< accs.size(); i++)
+       if (!Local_acc::compare(l, accs[i]))
+           return;
+    
     accs.push(l);
 }
 
@@ -50,7 +63,7 @@ Local_key_item::brew_molecule_p()const
     int lastoct = -100;
     for  (int i = 0; i <  accs.size(); i++) {
        // do one octave
-       if (accs[i].octave != lastoct) {
+       if (accs[i].octave_i_ != lastoct) {
            if (octmol){
                Real dy =lastoct*7*paper()->internote();
                octmol->translate(Offset(0, dy));
@@ -59,10 +72,10 @@ Local_key_item::brew_molecule_p()const
            }
            octmol= new Molecule;
        }
-       lastoct = accs[i].octave;
-       Symbol s =paper()->lookup_l()->accidental(accs[i].acc);   
+       lastoct = accs[i].octave_i_;
+       Symbol s =paper()->lookup_l()->accidental(accs[i].accidental_i_);   
        Atom a(s);
-       Real dy = (accs[i].name + c0_position) * paper()->internote();
+       Real dy = (accs[i].name_i_ + c0_position) * paper()->internote();
        a.translate(Offset(0,dy));
 
        octmol->add_right(a);
@@ -84,11 +97,11 @@ Local_key_item::brew_molecule_p()const
 int
 Local_acc::compare(Local_acc&a, Local_acc&b)
 {
-    if (a.octave - b.octave)
-       return a.octave - b.octave;
-    if (a.name - b.name)
-       return a.name - b.name;
+    if (a.octave_i_ - b.octave_i_)
+       return a.octave_i_ - b.octave_i_;
+    if (a.name_i_ - b.name_i_)
+       return a.name_i_ - b.name_i_;
     
-    assert(false);
+    return a.accidental_i_ - b.accidental_i_;
 };
 IMPLEMENT_STATIC_NAME(Local_key_item);