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