]> git.donarmstrong.com Git - lilypond.git/blob - midi2ly/duration.cc
391537af3ad1fdf8813cb0289993a2103c5d854d
[lilypond.git] / midi2ly / duration.cc
1 /*
2   duration.cc -- implement Duration, Plet, 
3
4   source file of the LilyPond music typesetter
5
6   (c)  1997--2001 Jan Nieuwenhuizen <janneke@gnu.org>
7            Han-Wen Nienhuys <hanwen@cs.uu.nl>
8
9
10   UGH. Duration is broken.
11 */
12
13 #include <assert.h>
14
15 #include "flower-proto.hh"
16 #include "string.hh"
17 #include "source-file.hh"
18 #include "source.hh"
19 #include "rational.hh"
20 #include "duration.hh"
21 #include "duration-convert.hh"
22
23 // statics Duration
24 int Duration::division_1_i_s = 384 * 4;
25
26
27 Duration::Duration ()
28 {
29   durlog_i_ = 0;
30   dots_i_ = 0;
31   ticks_i_ = 0;
32 }
33
34 bool
35 Duration::duration_type_b (int t)
36 {
37   /*
38     ugh. Assuming behavior of conversion funcs on broken input.
39    */
40   return t == Duration_convert::type2_i (Duration_convert::i2_type (t));
41 }
42
43 void
44 Duration::compress (Rational m)
45 {
46   plet_.iso_i_ *= m.num ();
47   plet_.type_i_ *= m.den (); 
48 }
49
50 Rational
51 Duration::length_mom () const
52 {
53   return Duration_convert::dur2_mom (*this);
54 }
55
56 void
57 Duration::set_plet (int i, int t)
58 {
59   plet_.iso_i_ = i; 
60   plet_.type_i_ = t;
61 }
62
63 /*
64 void
65 Duration::set_plet (Duration d)
66 {
67   plet_.iso_i_ = d.plet_.iso_i_; 
68   plet_.type_i_ = d.plet_.type_i_;
69 }
70 */
71
72 void
73 Duration::set_ticks (int ticks_i)
74 {
75   assert (durlog_i_ <10);
76   assert (!dots_i_);
77   ticks_i_ = ticks_i;
78 }
79
80 String
81 Duration::str () const
82 {
83   return Duration_convert::dur2_str (*this);
84 }
85
86
87 bool
88 Duration::plet_b ()
89 {
90   return !plet_.unit_b ();
91 }
92