remove important functions from main.c
[manmower/obtheme.git] / main.c
diff --git a/main.c b/main.c
index 3846dd8..438166c 100644 (file)
--- a/main.c
+++ b/main.c
@@ -10,165 +10,6 @@ struct boundrect {
        double x2, y2;
 };
 
-double variable_lookup(struct variable *in)
-{
-       if (strcmp("client", in->base) == 0) {
-               if (strcmp("width", in->member) == 0) {
-                       return 640;
-               } else
-                       return 480;
-       }
-       if (strcmp("font", in->base) == 0) {
-               return 15.0;
-       }
-       return 0.0;
-}
-
-double expression_eval(struct expression *in)
-{
-       switch (in->op) {
-               case OB_THEME_INV:
-                       return - expression_eval(in->a);
-                       break;
-               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.x = %f\n", expression_eval(&decor->space.anchor.x));
-       if (decor->texture.present) {
-               if (decor->texture.internal)
-                       printf("    texture internal: %s\n", decor->texture.name);
-               else
-                       printf("    texture file: %s\n", decor->texture.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);
-       if (decor->children)
-               g_slist_foreach(decor->children, decor_print, NULL);
-}
-
-static void style_print(gpointer key, gpointer value, gpointer user_data)
-{
-       char *stylename = key;
-       struct style *style = value;
-
-       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->styles, style_print, NULL);
-}
-
-static void material_print(gpointer key, gpointer value, gpointer user_data)
-{
-       char *name = key;
-       struct material *mat = value;
-       printf("name = %s\n", name);
-       printf(" opacity = %f\n", mat->opacity);
-}
-
-static void decor_render(gpointer data, gpointer user_data)
-{
-       struct decor *decor = data;
-       struct box *box = &decor->geometry.box;
-       struct vector *a = &decor->space.anchor;
-       double x, y;
-
-       printf("%s:", decor->name);
-       x = expression_eval(&a->x);
-       y = expression_eval(&a->y);
-       printf("rectangle(%f %f) - (%f %f)\n", x + expression_eval(&box->start.x), y + expression_eval(&box->start.y),
-                                   x + expression_eval(&box->end.x), y + expression_eval(&box->end.y));
-       if (decor->children)
-               g_slist_foreach(decor->children, decor_render, NULL);
-}
-
-static void decor_bound(gpointer data, gpointer user_data)
-{
-       struct boundrect *br = user_data;
-       struct decor *decor = data;
-       struct box *box = &decor->geometry.box;
-       struct vector *a = &decor->space.anchor;
-       double x1, y1, x2, y2;
-       x1 = expression_eval(&a->x);
-       y1 = expression_eval(&a->y);
-       x2 = x1;
-       y2 = y1;
-       x1 += expression_eval(&box->start.x);
-       y1 += expression_eval(&box->start.y);
-       x2 += expression_eval(&box->end.x);
-       y2 += expression_eval(&box->end.y);
-       if (x1 < br->x1)
-               br->x1 = x1;
-       if (x2 < br->x1)
-               br->x1 = x2;
-       if (x1 > br->x2)
-               br->x2 = x1;
-       if (x2 > br->x2)
-               br->x2 = x2;
-
-       if (y1 < br->y1)
-               br->y1 = y1;
-       if (y2 < br->y1)
-               br->y1 = y2;
-       if (y1 > br->y2)
-               br->y2 = y1;
-       if (y2 > br->y2)
-               br->y2 = y2;
-printf("%f %f %f %f\n", br->x1, br->y1, br->x2, br->y2);
-       if (decor->children)
-               g_slist_foreach(decor->children, decor_bound, br);
-}
-
-void bound(struct theme *thm, char *name, struct boundrect *br)
-{
-       struct style *sty;
-
-       br->x1 = 0.0;
-       br->y1 = 0.0;
-       br->x2 = 0.0;
-       br->y2 = 0.0;
-       sty = g_hash_table_lookup(thm->styles, name);
-       assert(sty);
-       g_slist_foreach(sty->tree, decor_bound, br);
-}
-
-void draw(struct theme *thm, char *name)
-{
-       struct style *sty;
-       sty = g_hash_table_lookup(thm->styles, name);
-       g_slist_foreach(sty->tree, decor_render, NULL);
-}
-
 int main(int argc, char **argv)
 {
        int err;
@@ -188,8 +29,8 @@ int main(int argc, char **argv)
 //     g_hash_table_foreach(themedata.themes, theme_print, NULL);
 
        thm = g_hash_table_lookup(themedata.themes, "awesome");
-       draw(thm, "regular_window");
-       bound(thm, "regular_window", &br);
+       obtheme_decorate_window(thm, "regular_window");
+       obtheme_calc_bound(thm, "regular_window", &br);
        printf("bounding rectangle: (%f %f) - (%f %f)\n", br.x1, br.y1, br.x2, br.y2);
 
        return 0;