lilypond-1.3.138
[lilypond.git] / lib / duration.cc
blobb2a5f84643dd36cdec33b1b4675dc40cf597afd6
1 /*
2 duration.cc -- implement Duration, Plet,
4 source file of the LilyPond music typesetter
6 (c) 1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
7 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 UGH. Duration is broken.
13 #include <assert.h>
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"
24 // statics Duration
25 int Duration::division_1_i_s = 384 * 4;
28 Duration::Duration ()
30 durlog_i_ = 0;
31 dots_i_ = 0;
32 ticks_i_ = 0;
35 bool
36 Duration::duration_type_b (int t)
39 ugh. Assuming behavior of conversion funcs on broken input.
41 return t == Duration_convert::type2_i (Duration_convert::i2_type (t));
44 void
45 Duration::compress (Rational m)
47 plet_.iso_i_ *= m.num_i ();
48 plet_.type_i_ *= m.den_i ();
51 Rational
52 Duration::length_mom () const
54 return Duration_convert::dur2_mom (*this);
57 void
58 Duration::set_plet (int i, int t)
60 plet_.iso_i_ = i;
61 plet_.type_i_ = t;
65 void
66 Duration::set_plet (Duration d)
68 plet_.iso_i_ = d.plet_.iso_i_;
69 plet_.type_i_ = d.plet_.type_i_;
73 void
74 Duration::set_ticks (int ticks_i)
76 assert (durlog_i_ <10);
77 assert (!dots_i_);
78 ticks_i_ = ticks_i;
81 String
82 Duration::str () const
84 return Duration_convert::dur2_str (*this);
88 bool
89 Duration::plet_b ()
91 return !plet_.unit_b ();