1 #include "lookupsyms.hh"
7 Lookup::parse(Text_db&t)
14 symtables_ = new Symtables;
28 Symtable * st = (*symtables_)("balls");
29 return st->lookup(String(j));
35 return (*symtables_)("rests")->lookup(String(j));
42 return (*symtables_)("bars")->lookup(s);
49 return (*symtables_)("dots")->lookup(j);
52 /****************************************************************/
55 struct Linestaf_symbol : Parametric_symbol {
57 Linestaf_symbol(int n, Symtables*s): Parametric_symbol(s) { lines = n;}
58 Symbol eval(svec<String>)const;
63 Linestaf_symbol::eval(svec<String> w)const
65 Real wid = w[0].fvalue();
68 s.dim.x = Interval(0,wid);
69 Real dy=lines*convert_dimen(5,"pt");
70 s.dim.y = Interval(0,dy);
74 s.tex = (*symtables_)("param")->lookup("linestaf").tex;
75 s.tex = substitute_args(s.tex, a);
79 /****************************************************************/
82 struct Meter_sym:Parametric_symbol {
84 Meter_sym(Symtables*s) : Parametric_symbol(s){ }
85 Symbol eval(svec<String> a) const{
87 s.dim.x = Interval( convert_dimen(-5,"pt"), convert_dimen(10,"pt"));
88 s.dim.y = Interval(0, convert_dimen(10,"pt") ); // todo
89 String src = (*symtables_)("param")->lookup("meter").tex;
90 s.tex = substitute_args(src,a);
94 /****************************************************************/
97 Lookup::meter(String )
99 return new Meter_sym(symtables_);
103 Lookup::linestaff(int n)
105 return new Linestaf_symbol(n,symtables_);