]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/include/drul-array.hh
Run `make grand-replace'.
[lilypond.git] / flower / include / drul-array.hh
index 75f98611956ca2494728440f1286cf7c94db32b3..a184a897209ba20e78bae1abd52ec3aecd5b447e 100644 (file)
@@ -3,51 +3,67 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
-
 #ifndef DRUL_ARRAY_HH
 #define DRUL_ARRAY_HH
 
 #include "direction.hh"
-
-#include <assert.h>
+#include "real.hh"
 
 /**
-  Left/right or Up/down arrays. Drul is nicer sounding than udlr
- */
+   Left/right or Up/down arrays. Drul is nicer sounding than udlr
+*/
 template<class T>
 struct Drul_array
 {
   T array_[2];
-  T &elem (Direction d)
-    {
-      assert (d==1 || d== -1);
-      return array_[(d+1)/2];
-
-    }
-  T &operator[] (Direction d)
+  T &at (Direction d)
+  {
+    assert (d == 1 || d == -1);
+    return array_[ (d + 1) / 2];
+  }
+  T const &at (Direction d) const
+  {
+    assert (d == 1 || d == -1);
+    return array_[ (d + 1) / 2];
+  }
+  T &operator [] (Direction d)
   {
-    return elem (d);
+    return at (d);
   }
-  T elem (Direction d) const
-    {
-    assert (d==1 || d== -1);
-    return array_[(d+1)/2];
-    }
-  
-  T operator[]  (Direction d) const
+  T const& operator [] (Direction d) const
   {
-    return elem (d);
+    return at (d);
   }
   Drul_array ()
-    {}
-  Drul_array (T t1, T t2)
-    {
-      array_[0] = t1;
-      array_[1] = t2;
-    }
+  {
+  }
+  Drul_array (T const &t1, T const &t2)
+  {
+    set (t1, t2);
+  }
+  void set (T const &t1, T const &t2)
+  {
+    array_[0] = t1;
+    array_[1] = t2;
+  }
 };
 
-#endif // DRUL_ARRAY_HH
+template<class T>
+void
+scale_drul (Drul_array<T> *dr, T x)
+{
+  dr->at (LEFT) *= x;
+  dr->at (RIGHT) *= x;
+}
+
+inline Real
+linear_combination (Drul_array<Real> const &d, Real x)
+{
+  return ((1.0 - x) * Real (d.at (LEFT))
+         + (x + 1.0) * Real (d.at (RIGHT))) * 0.5;
+}
+
+#endif /* DRUL_ARRAY_HH */