X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Flookup.hh;h=7efe60bb7e5c03fa4d4d06e7a2c32455c0a887ba;hb=30270f615f32a6b93e7b09bf55d1b8a7d7aad7ca;hp=46155bded379665843b126cbff469388075495a2;hpb=1a66290a98e7de8d6d41485b5b71a9f7e1fe35c7;p=lilypond.git diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 46155bded3..7efe60bb7e 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -3,62 +3,85 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ -#ifndef LOOKUPSYMS_HH -#define LOOKUPSYMS_HH +#ifndef LOOKUP_HH +#define LOOKUP_HH -#include "symbol.hh" +#include "atom.hh" #include "fproto.hh" #include "scalar.hh" +#include "direction.hh" +#include "curve.hh" +#include "afm.hh" +#include "symtable.hh" +#include "box.hh" -/// intuitive interface to symbol table -struct Lookup { - Paper_def * paper_l_; - Symtables *symtables_; - String texsetting; - /* *************** */ - void add (String, Symtable*); - void print()const; +/** handy interface to symbol table + */ +class Lookup +{ +public: + Lookup (); + Lookup (Lookup const&); + Lookup (Symtables const&); + virtual ~Lookup (); + + Atom accidental (int) const; + void add (String, Symtable*); + virtual Atom afm_find (String s) const = 0; + Atom afm_find (String, String) const; + virtual Atom* atom_p (String, int, Box) const = 0; + Atom ball (int) const; + Atom bar (String, Real height) const; + String base_output_str () const; + Atom beam (Real,Real, Real) const; + virtual String character_str (int i) const; + Atom clef (String) const; + virtual Atom dashed_slur (Array controls, Real thick, Real dash) const = 0; + Atom dots () const; + Atom dynamic (String) const; + Atom fill (Box b) const; + Atom flag (int, Direction) const; + virtual Atom hairpin (Real width, bool decresc, bool continued) const = 0; + virtual Lookup* lookup_p (Lookup const&) const = 0; + virtual Lookup* lookup_p (Symtables const&) const = 0; + virtual Paper_outputter* paper_outputter_p (Paper_stream*, Paper_def*, Scope*, String) const = 0; + virtual Paper_stream* paper_stream_p () const = 0; + virtual Atom plet (Real dy, Real dx, Direction dir) const = 0; + void print () const; + virtual Atom ps_beam (Real slope, Real width, Real thick) const = 0; + virtual String print_dimen (Real) const; + Atom rest (int, bool outside) const; + Atom rule_symbol (Real height, Real width) const; + Atom script (String idx) const; + /** paratime_signature substitution in lookup strings. + this function provides a simple macro mechanism: - Symbol linestaff (int n, Real w)const; - Symbol fill (Box b)const; - Symbol beam_element (int,int,Real=0)const; + if source == "tex%bla%", then + substitute_args (source, {"X","Y"}) == "texXblaY" + */ + String substitute_args (String source, Array args) const; + /// paratime_signature substitution in lookup strings + String substitute_args (String source, Array args) const; + virtual Atom stem (Real y1_pos, Real y2_pos) const = 0; + Atom stem (Real y1_pos, Real y2_pos, String) const; + virtual Atom slur (Array controls) const = 0; + Atom streepje (int type) const; + virtual Atom text (String style, String text) const; + virtual String unknown_str () const = 0; + Atom vbrace (Real &dy) const; + virtual Atom vbracket (Real &dy) const = 0; + Atom special_time_signature (String, Array) const; + Atom time_signature (Array) const; - /// round slope to closest TeXslope - Symbol beam (Real&,Real)const; - - /** - pos == 3 : 3 lines above staff (extending below note) - - pos == -3: below staff - */ - Symbol streepjes (int pos)const; - - Symbol vbrace (Real &dy) const; - Symbol meter (Array)const; - Symbol stem (Real y1_pos, Real y2_pos)const; - Symbol rule_symbol (Real height, Real width)const; - Symbol accidental (int)const; - Symbol ball (int)const; - Symbol flag (int)const; - Symbol rest (int, bool outside)const; - Symbol clef (String)const; - Symbol bar (String, Real height)const; - - Symbol dots (int)const; - Symbol slur (int dy, Real &dx, int dir)const; - Symbol half_slur (int dy, Real &dx, int dir, int xpart)const; - Symbol half_slur_middlepart (Real &dx, int dir)const; - Symbol big_slur (int dy, Real &dx, int dir)const; - Symbol text (String style, String text, int align = 1)const; - Symbol script (String idx)const; - Symbol hairpin (Real & width, bool decresc)const; - Symbol dynamic (String)const; - Lookup(); - Lookup (Lookup const &); - ~Lookup(); + Paper_def * paper_l_; + Symtables *symtables_p_; + String font_; + String font_path_; + Adobe_font_metric * afm_p_; }; -#endif +#endif // LOOKUP_HH