]> git.donarmstrong.com Git - lilypond.git/blob - lib/duration.cc
release: 1.3.0
[lilypond.git] / lib / duration.cc
1 /*
2   duration.cc -- implement Duration, Plet, 
3
4   source file of the LilyPond music typesetter
5
6   (c)  1997--1999 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 "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 #include "duration-iter.hh"
23
24 // statics Duration
25 int Duration::division_1_i_s = 384 * 4;
26
27
28 Duration::Duration ()
29 {
30   durlog_i_ = 0;
31   dots_i_ = 0;
32   ticks_i_ = 0;
33 }
34
35 bool
36 Duration::duration_type_b (int t)
37 {
38   /*
39     ugh. Assuming behavior of conversion funcs on broken input.
40    */
41   return t == Duration_convert::type2_i (Duration_convert::i2_type (t));
42 }
43
44 void
45 Duration::compress (Rational m)
46 {
47   plet_.iso_i_ *= m.num_i ();
48   plet_.type_i_ *= m.den_i (); 
49 }
50
51 Rational
52 Duration::length_mom () const
53 {
54   return Duration_convert::dur2_mom (*this);
55 }
56
57 void
58 Duration::set_plet (int i, int t)
59 {
60   plet_.iso_i_ = i; 
61   plet_.type_i_ = t;
62 }
63
64 /*
65 void
66 Duration::set_plet (Duration d)
67 {
68   plet_.iso_i_ = d.plet_.iso_i_; 
69   plet_.type_i_ = d.plet_.type_i_;
70 }
71 */
72
73 void
74 Duration::set_ticks (int ticks_i)
75 {
76   assert (durlog_i_ <10);
77   assert (!dots_i_);
78   ticks_i_ = ticks_i;
79 }
80
81 String
82 Duration::str () const
83 {
84   return Duration_convert::dur2_str (*this);
85 }
86
87
88 bool
89 Duration::plet_b ()
90 {
91   return !plet_.unit_b ();
92 }
93