]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/paper-def.hh
release: 0.1.7
[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
14 #include "real.hh"
15 #include "string.hh"
16 #include "moment.hh"
17
18
19 /** 
20
21   Symbols, dimensions and constants pertaining to visual output.
22
23   This struct takes care of all kinds of symbols, dimensions and
24   constants. Most of them are related to the point-size of the fonts,
25   so therefore, the lookup table for symbols is also in here.
26
27   TODO: 
28   
29   add support for multiple fontsizes 
30   split into "Input_paper_def" and Paper_def
31
32   add support for other len->wid conversions.
33
34   Input_engraver should be in here.
35  */
36 class Paper_def {
37     Lookup *lookup_p_;
38     Assoc<String, Real> *real_vars_p_;
39
40     Input_translator * itrans_p_;
41 public:    
42     String outfile_str_;
43     
44     
45     /* *************** */
46     void set_var(String, Real);
47     Real get_var (String)const;
48     void reinit();
49     Paper_def();
50     void set(Lookup*);
51     void set (Input_translator * );
52     Global_translator * get_global_translator_p()const;
53     ~Paper_def();
54     Paper_def(Paper_def const&);
55     /// The distance between beams
56     Real interbeam_f()const;
57     /**
58       The distance between lines
59      */
60     Real interline_f()const;
61     /// half the distance between lines
62     Real internote_f()const;
63
64     /// thickness of the standard line 
65     Real rule_thickness()const;
66     Real whole_width()const;
67     Real linewidth_f()const;
68     /// height of the staff
69     Real standard_height()const;
70
71     /// width of a crotchet ball
72     Real note_width() const;
73     void print() const;
74
75     Lookup const * lookup_l();  // TODO naming
76
77     /** convert a duration to an idealspacing
78       influence using the geometric_ and  parameters.
79       */
80     Real duration_to_dist(Moment);
81 };
82
83 #endif // Paper_def_HH
84