]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/lookup.hh
release: 1.0.17
[lilypond.git] / lily / include / lookup.hh
1 /*
2   lookup.hh -- declare Lookup
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   Jan Nieuwenhuizen <janneke@gnu.org>
8 */
9
10 #ifndef LOOKUP_HH
11 #define LOOKUP_HH
12
13 #include "atom.hh"
14 #include "fproto.hh"
15 #include "scalar.hh"
16 #include "direction.hh"
17 #include "curve.hh"
18 #include "afm.hh"
19 #include "symtable.hh"
20 #include "box.hh"
21
22 /** handy interface to symbol table
23  */
24 class Lookup
25 {
26 public:
27   Lookup ();
28   Lookup (Lookup const&);
29   Lookup (Symtables const&);
30   virtual ~Lookup ();
31   
32   Atom accidental (int) const;
33   void add (String, Symtable*);
34   virtual Atom afm_find (String s) const = 0;
35   Atom afm_find (String, String) const;
36   virtual Atom* atom_p (String, int, Box) const = 0;
37   Atom ball (int) const;
38   Atom bar (String, Real height) const;
39   String base_output_str () const;
40   Atom beam (Real,Real, Real) const;
41   virtual String character_str (int i) const;
42   Atom clef (String) const;
43   virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const = 0;
44   Atom dots () const;
45   Atom dynamic (String) const;
46   Atom fill (Box b) const;
47   Atom flag (int, Direction) const;
48   virtual Atom hairpin (Real width, bool decresc, bool continued) const = 0;
49   virtual Lookup* lookup_p (Lookup const&) const = 0;
50   virtual Lookup* lookup_p (Symtables const&) const = 0;
51   virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const = 0;
52   virtual Paper_stream* paper_stream_p () const = 0;
53   virtual Atom plet (Real dy, Real dx, Direction dir) const = 0;
54   void print () const;
55   virtual Atom ps_beam (Real slope, Real width, Real thick) const = 0;
56   virtual String print_dimen (Real) const;
57   Atom rest (int, bool outside) const;
58   Atom rule_symbol (Real height, Real width) const;
59   Atom script (String idx) const;
60   /** paratime_signature substitution in lookup strings.
61       this function provides a simple macro mechanism:
62
63       if source == "tex%bla%", then
64       substitute_args (source, {"X","Y"})  == "texXblaY"
65   */
66   String substitute_args (String source, Array<String> args) const;
67   /// paratime_signature substitution in lookup strings
68   String substitute_args (String source, Array<Scalar> args) const;
69   virtual Atom stem (Real y1_pos, Real y2_pos) const = 0;
70   Atom stem (Real y1_pos, Real y2_pos, String) const;
71   virtual Atom slur (Array<Offset> controls) const = 0;
72   Atom streepje (int type) const;
73   virtual Atom text (String style, String text) const;
74   virtual String unknown_str () const = 0;
75   Atom vbrace (Real &dy) const;
76   virtual Atom vbracket (Real &dy) const = 0;
77   Atom special_time_signature (String, Array<Scalar>) const;
78   Atom time_signature (Array<Scalar>) const;
79
80   Paper_def * paper_l_;
81   Symtables *symtables_p_;
82   String font_;
83   String font_path_;  
84   Adobe_font_metric * afm_p_;
85 };
86
87 #endif // LOOKUP_HH