]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/paper-def.hh
release: 0.0.65
[lilypond.git] / lily / include / paper-def.hh
1 /*
2 paper-def.hh -- declare Paper_def
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9
10 #ifndef PAPER_DEF_HH
11 #define PAPER_DEF_HH
12 #include "lily-proto.hh"
13 #include "real.hh"
14 #include "string.hh"
15 #include "moment.hh"
16
17
18 /** 
19
20   symbols, dimensions and constants
21
22   This struct takes care of all kinds of symbols, dimensions and
23  constants. Most of them are related to the point-size of the fonts,
24  so therefore, the lookup table for symbols is also in here.
25
26  TODO: 
27
28  add support for multiple fontsizes 
29  split into "Input_paper_def" and Paper_def
30  add support for other len->wid conversions.
31  */
32 class Paper_def {
33     Lookup *lookup_p_;
34 public:    
35     String outfile;
36
37     Real linewidth;
38
39     /// how much space does a whole note take (ideally?)
40     Real whole_width;
41
42     /// ideal = geometric_ ^ log2(duration)
43     Real geometric_;
44     
45     /* *************** */
46     void reinit();
47     Paper_def(Lookup*);
48     void set(Lookup*);
49     ~Paper_def();
50     Paper_def(Paper_def const&);
51     /**
52       The distance between lines
53      */
54     Real interline_f()const;
55     /// half the distance between lines
56     Real internote_f()const;
57
58     /// thickness of the standard line 
59     Real rule_thickness()const;
60
61     /// height of the staff
62     Real standard_height()const;
63
64     /// width of a quaver ball
65     Real note_width() const;
66     void print() const;
67     Lookup const * lookup_l();  // TODO naming
68
69     /** convert a duration to an idealspacing
70       influence using the geometric_ and whole_width parameters.
71       */
72     Real duration_to_dist(Moment);
73 };
74
75 #endif // Paper_def_HH
76