+#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <glib.h>
#include "obtheme.h"
+double variable_lookup(struct variable *in)
+{
+ return 0.0;
+}
+
+double expression_eval(struct expression *in)
+{
+ switch (in->op) {
+ case OB_THEME_MUL:
+ return expression_eval(in->a) * expression_eval(in->b);
+ break;
+ case OB_THEME_DIV:
+ return expression_eval(in->a) / expression_eval(in->b);
+ break;
+ case OB_THEME_ADD:
+ return expression_eval(in->a) + expression_eval(in->b);
+ break;
+ case OB_THEME_SUB:
+ return expression_eval(in->a) - expression_eval(in->b);
+ break;
+ case OB_THEME_EQL:
+ if (in->v.base == NULL) {
+ return in->v.number;
+ } else return variable_lookup(&in->v);
+ break;
+ default:
+ assert(!!!"OH NOES!!!");
+ }
+ return 0;
+}
+
static void decor_print(gpointer data, gpointer user_data)
{
+ double out;
struct decor *decor = data;
printf(" decor id %s\n", decor->name);
- printf(" anchor (%d %d %d)\n", decor->space.anchor.x, decor->space.anchor.y, decor->space.anchor.z);
- printf(" up (%d %d %d)\n", decor->space.up.x, decor->space.up.y, decor->space.up.z);
+printf(" anchor.x = %f\n", expression_eval(&decor->space.anchor.x));
+// printf(" anchor (%d %d %d)\n", decor->space.anchor.x, decor->space.anchor.y, decor->space.anchor.z);
+// printf(" up (%d %d %d)\n", decor->space.up.x, decor->space.up.y, decor->space.up.z);
if (decor->children)
g_slist_foreach(decor->children, decor_print, NULL);
}
-static void class_print(gpointer key, gpointer value, gpointer user_data)
+static void style_print(gpointer key, gpointer value, gpointer user_data)
{
- char *classname = key;
- struct class *class = value;
+ char *stylename = key;
+ struct style *style = value;
- printf(" Class %s\n", classname);
- g_slist_foreach(class->tree, decor_print, NULL);
+ printf(" style %s\n", stylename);
+ g_slist_foreach(style->tree, decor_print, NULL);
}
static void theme_print(gpointer key, gpointer value, gpointer user_data)
char *name = key;
struct theme *thm = value;
printf("name = %s\n", name);
- g_hash_table_foreach(thm->classes, class_print, NULL);
+ g_hash_table_foreach(thm->styles, style_print, NULL);
}
static void material_print(gpointer key, gpointer value, gpointer user_data)