From: fred Date: Sun, 24 Mar 2002 20:08:11 +0000 (+0000) Subject: lilypond-0.1.61 X-Git-Tag: release/1.5.59~3297 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=59a70b65b27cfbfc2b1f4e68c8d69dcccaa5e594;p=lilypond.git lilypond-0.1.61 --- diff --git a/lib/duration-convert.cc b/lib/duration-convert.cc index 5947216cd5..1fc42aa3be 100644 --- a/lib/duration-convert.cc +++ b/lib/duration-convert.cc @@ -3,11 +3,12 @@ source file of the LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys Jan Nieuwenhuizen */ #include #include "duration-convert.hh" +#include "duration-iter.hh" #include "warn.hh" // statics Duration_convert @@ -198,110 +199,3 @@ Duration_convert::ticks2standardised_dur (int ticks_i) Duration dur = mom2standardised_dur (mom); return dur; } - -Duration_iterator::Duration_iterator () -{ - cursor_dur_.durlog_i_ = 7; - if (Duration_convert::no_smaller_than_i_s) - cursor_dur_.durlog_i_ = Duration_convert::no_smaller_than_i_s; -} - -Duration -Duration_iterator::operator ++(int) -{ - return forward_dur (); -} - -Duration -Duration_iterator::operator ()() -{ - return dur (); -} - -Duration_iterator::operator bool () -{ - return ok (); -} - -Duration -Duration_iterator::dur () -{ - return cursor_dur_; -} - -Duration -Duration_iterator::forward_dur () -{ - /* should do smart table? guessing: - duration wholes - 16 0.0625 - 32.. 0.0703 - 8:2/3 0.0833 - 16. 0.0938 - 8 0.1250 - 16.. 0.1406 - 4:2/3 0.1667 - 8. 0.1875 - - */ - assert (ok ()); - - Duration dur = cursor_dur_; - - if (!cursor_dur_.dots_i_ && !cursor_dur_.plet_b ()) - { - cursor_dur_.durlog_i_ += 1; - cursor_dur_.dots_i_ = 2; - } - else if (cursor_dur_.dots_i_ == 2) - { - assert (!cursor_dur_.plet_b ()); - cursor_dur_.dots_i_ = 0; - cursor_dur_.durlog_i_ -=2; - cursor_dur_.set_plet (2, 3); - } - else if (cursor_dur_.plet_b () - && (cursor_dur_.plet_.iso_i_ == 2) - && (cursor_dur_.plet_.type_i_ == 3)) - { - assert (!cursor_dur_.dots_i_); - cursor_dur_.set_plet (1, 1); - cursor_dur_.durlog_i_ += 1; - cursor_dur_.dots_i_ = 1; - } - else if (cursor_dur_.dots_i_ == 1) - { - assert (!cursor_dur_.plet_b ()); - cursor_dur_.dots_i_ = 0; - cursor_dur_.durlog_i_ -= 1; - } - - if (Duration_convert::no_triplets_b_s - && cursor_dur_.plet_b () && ok ()) - forward_dur (); - if (Duration_convert::no_double_dots_b_s - && (cursor_dur_.dots_i_ == 2) && ok ()) - forward_dur (); - if (Duration_convert::no_smaller_than_i_s - && (cursor_dur_.durlog_i_ > Duration_convert::no_smaller_than_i_s) && ok ()) - forward_dur (); - if (Duration_convert::no_smaller_than_i_s - && cursor_dur_.dots_i_ - && (cursor_dur_.durlog_i_ >= Duration_convert::no_smaller_than_i_s) - && ok ()) - forward_dur (); - if (Duration_convert::no_smaller_than_i_s - && (cursor_dur_.dots_i_ == 2) - && (cursor_dur_.durlog_i_ >= Duration_convert::no_smaller_than_i_s / 2) - && ok ()) - forward_dur (); - - return dur; -} - -bool -Duration_iterator::ok () -{ - return (cursor_dur_.durlog_i_ - && !((cursor_dur_.durlog_i_ == 0) && (cursor_dur_.dots_i_ > 2))); -} diff --git a/lib/duration-iter.cc b/lib/duration-iter.cc new file mode 100644 index 0000000000..b1af3fd8dd --- /dev/null +++ b/lib/duration-iter.cc @@ -0,0 +1,119 @@ +/* + duration-convert.cc -- implement Duration_convert + + source file of the LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen +*/ +#include +#include "duration-convert.hh" +#include "warn.hh" +#include "duration-iter.hh" + +Duration_iterator::Duration_iterator () +{ + cursor_dur_.durlog_i_ = 7; + if (Duration_convert::no_smaller_than_i_s) + cursor_dur_.durlog_i_ = Duration_convert::no_smaller_than_i_s; +} + +Duration +Duration_iterator::operator ++(int) +{ + return forward_dur (); +} + +Duration +Duration_iterator::operator ()() +{ + return dur (); +} + +Duration_iterator::operator bool () +{ + return ok (); +} + +Duration +Duration_iterator::dur () +{ + return cursor_dur_; +} + +Duration +Duration_iterator::forward_dur () +{ + /* should do smart table? guessing: + duration wholes + 16 0.0625 + 32.. 0.0703 + 8:2/3 0.0833 + 16. 0.0938 + 8 0.1250 + 16.. 0.1406 + 4:2/3 0.1667 + 8. 0.1875 + + */ + assert (ok ()); + + Duration dur = cursor_dur_; + + if (!cursor_dur_.dots_i_ && !cursor_dur_.plet_b ()) + { + cursor_dur_.durlog_i_ += 1; + cursor_dur_.dots_i_ = 2; + } + else if (cursor_dur_.dots_i_ == 2) + { + assert (!cursor_dur_.plet_b ()); + cursor_dur_.dots_i_ = 0; + cursor_dur_.durlog_i_ -=2; + cursor_dur_.set_plet (2, 3); + } + else if (cursor_dur_.plet_b () + && (cursor_dur_.plet_.iso_i_ == 2) + && (cursor_dur_.plet_.type_i_ == 3)) + { + assert (!cursor_dur_.dots_i_); + cursor_dur_.set_plet (1, 1); + cursor_dur_.durlog_i_ += 1; + cursor_dur_.dots_i_ = 1; + } + else if (cursor_dur_.dots_i_ == 1) + { + assert (!cursor_dur_.plet_b ()); + cursor_dur_.dots_i_ = 0; + cursor_dur_.durlog_i_ -= 1; + } + + if (Duration_convert::no_triplets_b_s + && cursor_dur_.plet_b () && ok ()) + forward_dur (); + if (Duration_convert::no_double_dots_b_s + && (cursor_dur_.dots_i_ == 2) && ok ()) + forward_dur (); + if (Duration_convert::no_smaller_than_i_s + && (cursor_dur_.durlog_i_ > Duration_convert::no_smaller_than_i_s) && ok ()) + forward_dur (); + if (Duration_convert::no_smaller_than_i_s + && cursor_dur_.dots_i_ + && (cursor_dur_.durlog_i_ >= Duration_convert::no_smaller_than_i_s) + && ok ()) + forward_dur (); + if (Duration_convert::no_smaller_than_i_s + && (cursor_dur_.dots_i_ == 2) + && (cursor_dur_.durlog_i_ >= Duration_convert::no_smaller_than_i_s / 2) + && ok ()) + forward_dur (); + + return dur; +} + +bool +Duration_iterator::ok () +{ + return (cursor_dur_.durlog_i_ + && !((cursor_dur_.durlog_i_ == 0) && (cursor_dur_.dots_i_ > 2))); +} diff --git a/lib/duration.cc b/lib/duration.cc index eca46dd12b..95e056b789 100644 --- a/lib/duration.cc +++ b/lib/duration.cc @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997 Jan Nieuwenhuizen + (c) 1997--1998 Jan Nieuwenhuizen Han-Wen Nienhuys */ @@ -16,6 +16,7 @@ #include "moment.hh" #include "duration.hh" #include "duration-convert.hh" +#include "duration-iter.hh" // statics Duration int Duration::division_1_i_s = 384 * 4; @@ -52,12 +53,14 @@ Duration::set_plet (int i, int t) plet_.type_i_ = t; } +/* void Duration::set_plet (Duration d) { plet_.iso_i_ = d.plet_.iso_i_; plet_.type_i_ = d.plet_.type_i_; } +*/ void Duration::set_ticks (int ticks_i)