]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.20
authorfred <fred>
Sun, 22 Dec 1996 23:17:40 +0000 (23:17 +0000)
committerfred <fred>
Sun, 22 Dec 1996 23:17:40 +0000 (23:17 +0000)
src/timedescription.cc [new file with mode: 0644]

diff --git a/src/timedescription.cc b/src/timedescription.cc
new file mode 100644 (file)
index 0000000..459c15a
--- /dev/null
@@ -0,0 +1,58 @@
+#include "timedescription.hh"
+#include "debug.hh"
+
+void
+Time_description::print() const
+{    
+    mtor << "Time_description { at "<<when<<'\n'; 
+    mtor << "meter " << whole_per_measure << ":" << 1/one_beat 
+        << "\nposition "<< bars << ":" << whole_in_measure <<"\n}\n";
+}
+void
+Time_description::OK() const
+{
+    assert(whole_in_measure < whole_per_measure && 0 <= whole_in_measure);
+    assert(one_beat);
+}
+Time_description::Time_description(Moment dt, Time_description const *prev)
+{
+    if (prev) {
+       assert(dt >0);
+       *this = *prev;
+       when += + dt;
+       whole_in_measure += dt;
+       while ( whole_in_measure >= whole_per_measure ) {
+           whole_in_measure -= whole_per_measure;
+           bars ++;
+       }
+    } else {                           // default 4/4
+       whole_per_measure = 1;
+       whole_in_measure =0;
+       one_beat = 0.25;
+       when = 0.0;
+       bars = 0;
+    }  
+}
+
+void
+Time_description::set_meter(int l, int o)
+{
+    assert(o);
+    one_beat = 1/Moment(o);
+    whole_per_measure = Moment(l) * one_beat;
+}
+
+void
+Time_description::setpartial(Moment p)
+{
+    if (when)
+       error_t ("Partial measure only allowed at beginning.", when);
+    if (p<0||p > whole_per_measure)
+       error_t ("Partial measure has incorrect size", when);
+    whole_in_measure = whole_per_measure - p;
+}
+Moment
+Time_description::barleft()
+{
+return    whole_per_measure-whole_in_measure;
+}