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);
55 return (*symtables_)("flags")->lookup(j);
58 /****************************************************************/
61 struct Linestaf_symbol : Parametric_symbol {
63 Linestaf_symbol(int n, Symtables*s): Parametric_symbol(s) { lines = n;}
64 Symbol eval(svec<String>)const;
69 Linestaf_symbol::eval(svec<String> w)const
71 Real wid = w[0].fvalue();
74 s.dim.x = Interval(0,wid);
75 Real dy=(lines-1)*convert_dimen(5,"pt"); // TODO!
76 s.dim.y = Interval(0,dy);
80 s.tex = (*symtables_)("param")->lookup("linestaf").tex;
81 s.tex = substitute_args(s.tex, a);
85 /****************************************************************/
88 struct Meter_sym:Parametric_symbol {
90 Meter_sym(Symtables*s) : Parametric_symbol(s){ }
91 Symbol eval(svec<String> a) const{
93 s.dim.x = Interval( convert_dimen(-5,"pt"),
94 convert_dimen(5,"pt"));
95 s.dim.y = Interval(0, convert_dimen(10,"pt") ); // todo
96 String src = (*symtables_)("param")->lookup("meter").tex;
97 s.tex = substitute_args(src,a);
101 /****************************************************************/
103 struct Stem_sym:Parametric_symbol {
105 Stem_sym(Symtables*s) : Parametric_symbol(s) { }
106 Symbol eval(svec<String> a) const {
107 Real y1 = a[0].fvalue();
108 Real y2 = a[1].fvalue();
111 s.dim.x = Interval(0,0);
112 s.dim.y = Interval(y1,y2);
114 String src = (*symtables_)("param")->lookup("stem").tex;
115 s.tex = substitute_args(src,a);
121 Lookup::meter(String )
123 return new Meter_sym(symtables_);
127 Lookup::linestaff(int n)
129 return new Linestaf_symbol(n,symtables_);
135 return new Stem_sym(symtables_);