summaryrefslogtreecommitdiff
path: root/lookupsyms.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lookupsyms.cc')
-rw-r--r--lookupsyms.cc91
1 files changed, 91 insertions, 0 deletions
diff --git a/lookupsyms.cc b/lookupsyms.cc
new file mode 100644
index 0000000000..66cbd6db08
--- /dev/null
+++ b/lookupsyms.cc
@@ -0,0 +1,91 @@
+#include "lookupsyms.hh"
+#include "debug.hh"
+#include "symtable.hh"
+#include "dimen.hh"
+#include "tex.hh"
+
+Symtables the_sym_tables("symbol.ini");
+
+Symbol
+Lookup::ball(int j)
+{
+ if (j > 4) j = 4;
+ Symtable * st = the_sym_tables("balls");
+ return st->lookup(String(j));
+}
+
+Symbol
+Lookup::rest(int j)
+{
+ return the_sym_tables("rests")->lookup(String(j));
+}
+
+
+ Symbol
+Lookup::bar(String s)
+{
+ return the_sym_tables("bars")->lookup(s);
+}
+ Symbol
+Lookup::dots(int j)
+{
+ if (j>3)
+ error("max 3 dots");
+ return the_sym_tables("dots")->lookup(j);
+}
+
+/****************************************************************/
+// bare bones.
+
+struct Linestaf_symbol : Parametric_symbol {
+ int lines;
+ Linestaf_symbol(int n) { lines = n;}
+ Symbol eval(svec<String>)const;
+};
+
+
+Symbol
+Linestaf_symbol::eval(svec<String> w)const
+{
+ Real wid = w[0].fvalue();
+
+ Symbol s;
+ s.dim.x = Interval(0,wid);
+ s.dim.y = Interval(0, lines*convert_dimen(5,"pt"));
+ svec<String> a;
+ a.add(lines);
+ a.add(w[0]);
+ s.tex = the_sym_tables("param")->lookup("linestaf").tex;
+ s.tex = substitute_args(s.tex, a);
+ return s;
+}
+
+/****************************************************************
+ */
+
+
+struct Meter_sym:Parametric_symbol {
+
+ Symbol eval(svec<String> a) const{
+ Symbol s;
+ s.dim.x = Interval(0, convert_dimen(10,"pt"));
+ s.dim.y = Interval(0, convert_dimen(10,"pt") );
+ String src = the_sym_tables("param")->lookup("meter").tex;
+ s.tex = substitute_args(src,a);
+ return s;
+ }
+};
+/****************************************************************/
+
+Parametric_symbol *
+Lookup::meter(String )
+{
+ return new Meter_sym;
+}
+
+Parametric_symbol *
+Lookup::linestaff(int n)
+{
+ return new Linestaf_symbol(n);
+}
+