]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/paper-def.hh
466fa59b3a46704a886ec6ba62bd40354c308447
[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--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #ifndef PAPER_DEF_HH
11 #define PAPER_DEF_HH
12
13
14 #include "lily-proto.hh"
15 #include "lily-guile.hh"
16 #include "real.hh"
17 #include "array.hh"
18 #include "interval.hh"
19 #include "music-output-def.hh"
20
21
22 /** 
23
24   Symbols, dimensions and constants pertaining to visual output.
25
26   This struct takes care of all kinds of symbols, dimensions and
27   constants. Most of them are related to the point-size of the fonts,
28   so therefore, the lookup table for symbols is also in here.
29
30   TODO: 
31   
32   add support for multiple fontsizes 
33
34   remove all utility funcs 
35   
36
37   add support for other len->wid conversions.
38
39
40   Interesting variables:
41   
42   /// The distance between lines
43   interline
44   
45 */
46 class Paper_def : public Music_output_def 
47 {
48 protected:
49   VIRTUAL_COPY_CONSTRUCTOR (Music_output_def, Paper_def);
50   SCM scaled_fonts_;
51   
52 public:    
53   static int score_count_;
54   
55   Paper_def ();
56   Paper_def (Paper_def const&);
57   virtual ~Paper_def ();
58   virtual void derived_mark ();
59   
60   Paper_outputter* get_paper_outputter (String) const;
61   SCM font_descriptions () const;
62   void reinit ();
63   Interval line_dimensions_int (int) const;
64   void output_settings (Paper_outputter*) const;
65   Font_metric *find_scaled_font (Font_metric *fm, Real mag, SCM enc_name);
66   Real get_dimension (SCM symbol) const;
67   
68   friend int yyparse (void*);
69 };
70
71 Paper_def * unsmob_paper (SCM x);
72 Font_metric *select_encoded_font (Paper_def *paper, SCM input_encoding, SCM chain);
73 Font_metric *select_font (Paper_def *paper, SCM chain);
74
75 #endif /* PAPER_DEF_HH */