]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/time-description.cc
release: 0.0.65
[lilypond.git] / lily / time-description.cc
index cdc0071a926e5f5181635d5d116612c050623ff5..cd10942a382c0c5c06a23f24624090afbfbaa946 100644 (file)
@@ -1,7 +1,7 @@
 /*
   time-description.cc -- implement Time_description
 
-  source file of the LilyPond music typesetter
+  source file of the GNU LilyPond music typesetter
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
 */
@@ -46,7 +46,7 @@ Time_description::set_cadenza(bool b)
 {
     if (cadenza_b_ && !b) {
        if (whole_in_measure_) {
-           bars_i_ ++;
+           bars_i_ ++;         // should do?
            whole_in_measure_ = 0;
        }
     }
@@ -55,6 +55,7 @@ Time_description::set_cadenza(bool b)
 
 Time_description::Time_description()
 {
+    error_b_ =  false;
     whole_per_measure_ = 1;
     whole_in_measure_ =0;
     one_beat_ = Moment(1,4);
@@ -82,29 +83,44 @@ Time_description::set_meter(int l, int o)
     assert(o);
     one_beat_ = Rational(1)/Moment(o);
     whole_per_measure_ = Moment(l) * one_beat_;
-    if(whole_in_measure_)
-       error_t("Meterchange should be at start of measure", *this);
+}
+
+bool
+Time_description::allow_meter_change_b()
+{
+    return!(whole_in_measure_);
+}
+
+/**
+  retrieve error messages.
+  @return 
+  error messages if not possible, "" if possible
+  */
+String
+Time_description::try_set_partial_str(Moment p)const
+{
+    if (p<Rational(0))
+       return ("Partial must be non-negative");
+    if (p > whole_per_measure_)
+       return ("Partial measure too large");
+    return "";
 }
 
 void
 Time_description::setpartial(Moment p)
 {
-    if (when_)
-       error_t ("Partial measure only allowed at beginning.", *this);
-    if (p<Rational(0)||p > whole_per_measure_)
-       error_t ("Partial measure has incorrect size", *this);
     whole_in_measure_ = whole_per_measure_ - p;
 }
 
 Moment
-Time_description::barleft()
+Time_description::barleft()const
 {
     assert(!cadenza_b_);
     return whole_per_measure_-whole_in_measure_;
 }
 
 int
-Time_description::compare(Time_description &t1, Time_description&t2)
+Time_description::compare(Time_description const &t1,  Time_description const&t2)
 {
     int i = sign(t1.when_-t2.when_);
 
@@ -117,3 +133,10 @@ Time_description::compare(Time_description &t1, Time_description&t2)
 
     return i;
 }
+
+Moment
+Time_description::next_bar_moment() const
+{
+    return when_ + barleft();
+}
+