From: <enl...@li...> - 2003-06-02 23:43:29
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/doc Log Message: Directory /cvsroot/enlightenment/e17/libs/edje/doc added to the repository |
From: <enl...@li...> - 2003-06-02 23:43:30
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src Log Message: Directory /cvsroot/enlightenment/e17/libs/edje/src added to the repository |
From: <enl...@li...> - 2003-06-02 23:47:23
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Log Message: Directory /cvsroot/enlightenment/e17/libs/edje/src/bin added to the repository |
From: <enl...@li...> - 2003-06-02 23:47:24
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Log Message: Directory /cvsroot/enlightenment/e17/libs/edje/src/lib added to the repository |
From: <enl...@li...> - 2003-06-02 23:48:50
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje Log Message: Directory /cvsroot/enlightenment/e17/libs/edje added to the repository |
From: <enl...@li...> - 2003-06-02 23:49:55
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje Added Files: AUTHORS COPYING COPYING-PLAIN Doxyfile INSTALL Makefile.am README acconfig.h autogen.sh configure.in edje-config.in edje.c.in edje.spec gendoc Log Message: in we go edje... no it doesnt do anything useful at the moment... |
From: <enl...@li...> - 2003-06-02 23:49:56
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/doc Added Files: edje.css foot.html head.html Log Message: in we go edje... no it doesnt do anything useful at the moment... |
From: <enl...@li...> - 2003-06-02 23:49:56
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/doc/img Added Files: edje.png edje_big.png edje_mini.png edje_small.png hilite.png Log Message: in we go edje... no it doesnt do anything useful at the moment... |
From: <enl...@li...> - 2003-06-02 23:49:57
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src Added Files: Makefile.am Log Message: in we go edje... no it doesnt do anything useful at the moment... |
From: <enl...@li...> - 2003-06-02 23:49:57
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Added Files: Makefile.am edje.h edje_main.c Log Message: in we go edje... no it doesnt do anything useful at the moment... |
From: <enl...@li...> - 2003-06-02 23:49:58
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Added Files: Edje.h Makefile.am edje_main.c edje_private.h Log Message: in we go edje... no it doesnt do anything useful at the moment... |
From: <enl...@li...> - 2003-06-02 23:57:15
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/doc/img Log Message: Directory /cvsroot/enlightenment/e17/libs/edje/doc/img added to the repository |
From: <enl...@li...> - 2003-06-03 02:30:27
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: edje_main.c Log Message: had wrong title & name/class! =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_main.c 2 Jun 2003 23:49:56 -0000 1.1 +++ edje_main.c 3 Jun 2003 02:30:25 -0000 1.2 @@ -37,8 +37,8 @@ if (!ecore_evas) return -1; ecore_evas_callback_delete_request_set(ecore_evas, main_delete_request); ecore_evas_callback_resize_set(ecore_evas, main_resize); - ecore_evas_title_set(ecore_evas, "Evoak"); - ecore_evas_name_class_set(ecore_evas, "evoak", "main"); + ecore_evas_title_set(ecore_evas, "Edje Test Program"); + ecore_evas_name_class_set(ecore_evas, "edje", "main"); ecore_evas_show(ecore_evas); evas = ecore_evas_get(ecore_evas); evas_image_cache_set(evas, 8192 * 1024); |
From: <enl...@li...> - 2003-06-03 14:00:55
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_main.c edje_private.h Log Message: Added more geometry calculation code. This function is beginning to get rather large, but then again so are the number of geometry parameters, so it's only fair. This should cover calculating all parameters given a signle descriptor and given rel_to_1, rel_to_2, confine_to objects. Only calculation of text params is left. I think that will be as simpl as a "copy them across from the description", but I may yet decided to complicate that a bit. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_main.c 2 Jun 2003 23:49:56 -0000 1.1 +++ edje_main.c 3 Jun 2003 14:00:51 -0000 1.2 @@ -87,31 +87,220 @@ Edje_Real_Part *confine_to, Edje_Calc_Params *params) { - /* horiz */ + /* relative coords of top left & bottom right */ if (rel1_to) { params->x = desc->rel1.offset_x + rel1_to->x + (desc->rel1.relative_x * rel1_to->w); + params->y = desc->rel1.offset_y + + rel1_to->y + (desc->rel1.relative_y * rel1_to->h); } else { params->x = desc->rel1.offset_x + (desc->rel1.relative_x * ed->w); + params->y = desc->rel1.offset_y + + (desc->rel1.relative_y * ed->h); } if (rel2_to) { params->w = desc->rel2.offset_x + rel2_to->x + (desc->rel2.relative_x * rel2_to->w) - params->x; + params->h = desc->rel2.offset_y + + rel2_to->y + (desc->rel2.relative_y * rel2_to->h) - + params->y; } else { params->w = desc->rel2.offset_x + (desc->rel2.relative_x * ed->w) - params->x; - } + params->h = desc->rel2.offset_y + + (desc->rel2.relative_y * ed->h) - + params->y; + } + /* aspect */ + if (params->h > 0) + { + double aspect; + int new_h; - /* vert */ + new_h = params->h; + aspect = (double)params->w / (double)params->h; + /* adjust for max aspect (width / height) */ + if ((desc->aspect.max > 0.0) && (aspect > desc->aspect.max)) + { + new_h = (int)((double)params->w / desc->aspect.max); + } + /* adjust for min aspect (width / height) */ + if ((desc->aspect.min > 0.0) && (aspect < desc->aspect.min)) + { + new_h = (int)((double)params->w / desc->aspect.min); + } + /* do real adjustment */ + if (params->h < new_h) + { + params->y = params->y + + ((params->h - new_h) * (1.0 - desc->align.y)); + params->h = new_h; + } + else if (params->h > new_h) + { + params->y = params->y + + ((params->h - new_h) * desc->align.y); + params->h = new_h; + } + } + /* size step */ + if (desc->step.x > 0) + { + int steps; + int new_w; + + steps = params->w / desc->step.x; + new_w = desc->step.x * steps; + if (params->w > new_w) + { + params->x = params->x + + ((params->w - new_w) * desc->align.x); + params->w = new_w; + } + } + if (desc->step.y > 0) + { + int steps; + int new_h; + + steps = params->h / desc->step.y; + new_h = desc->step.y * steps; + if (params->h > new_h) + { + params->y = params->y + + ((params->h - new_h) * desc->align.y); + params->h = new_h; + } + } + /* adjust for max size */ + if (desc->max.w >= 0) + { + if (params->w > desc->max.w) + { + params->x = params->x + + ((params->w - desc->max.w) * desc->align.x); + params->w = desc->max.w; + } + } + if (desc->max.h >= 0) + { + if (params->h > desc->max.h) + { + params->y = params->y + + ((params->h - desc->max.h) * desc->align.y); + params->h = desc->max.h; + } + } + /* adjust for min size */ + if (desc->min.w >= 0) + { + if (params->w < desc->min.w) + { + params->x = params->x + + ((params->w - desc->min.w) * (1.0 - desc->align.x)); + params->w = desc->min.w; + } + } + if (desc->min.h >= 0) + { + if (params->h < desc->min.h) + { + params->y = params->y + + ((params->h - desc->min.h) * (1.0 - desc->align.y)); + params->h = desc->min.h; + } + } + /* confine */ + if (confine_to) + { + int offset; + int step; + + /* complex dragable params */ + offset = params->x + ep->drag.x - confine_to->x; + if (desc->dragable.step_x > 0) + { + params->x = confine_to->x + + ((offset / desc->dragable.step_x) * desc->dragable.step_x); + } + else if (desc->dragable.count_x > 0) + { + step = (confine_to->w - params->w) / desc->dragable.count_x; + params->x = confine_to->x + + ((offset / step) * step); + } + offset = params->y + ep->drag.y - confine_to->y; + if (desc->dragable.step_y > 0) + { + params->y = confine_to->y + + ((offset / desc->dragable.step_y) * desc->dragable.step_y); + } + else if (desc->dragable.count_y > 0) + { + step = (confine_to->h - params->h) / desc->dragable.count_y; + params->y = confine_to->y + + ((offset / step) * step); + } + /* limit to confine */ + if (params->x < confine_to->x) + { + params->x = confine_to->x; + } + if ((params->x + params->w) > (confine_to->x + confine_to->w)) + { + params->x = confine_to->w - params->w; + } + if (params->y < confine_to->y) + { + params->y = confine_to->y; + } + if ((params->y + params->h) > (confine_to->y + confine_to->h)) + { + params->y = confine_to->h - params->y; + } + } + else + { + /* simple dragable params */ + params->x += ep->drag.x; + params->y += ep->drag.y; + } + /* fill */ + params->fill.x = desc->fill.pos_abs_x + (params->w * desc->fill.pos_rel_x); + params->fill.w = desc->fill.abs_x + (params->w * desc->fill.rel_x); + params->fill.y = desc->fill.pos_abs_y + (params->h * desc->fill.pos_rel_y); + params->fill.h = desc->fill.abs_y + (params->h * desc->fill.rel_y); + /* colors */ + params->color.r = desc->color.r; + params->color.g = desc->color.g; + params->color.b = desc->color.b; + params->color.a = desc->color.a; + params->color2.r = desc->color2.r; + params->color2.g = desc->color2.g; + params->color2.b = desc->color2.b; + params->color2.a = desc->color2.a; + params->color3.r = desc->color3.r; + params->color3.g = desc->color3.g; + params->color3.b = desc->color3.b; + params->color3.a = desc->color3.a; + /* visible */ + params->visible = desc->visible; + /* border */ + params->border.l = desc->border.l; + params->border.r = desc->border.r; + params->border.t = desc->border.t; + params->border.b = desc->border.b; + /* text */ + /* FIXME: do */ } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_private.h 2 Jun 2003 23:49:56 -0000 1.1 +++ edje_private.h 3 Jun 2003 14:00:52 -0000 1.2 @@ -309,6 +309,9 @@ unsigned char calculated : 1; unsigned char dirty : 1; Edje_Part *part; + struct { + int x, y; + } drag; double description_pos; struct { Edje_Part_Description *description; @@ -330,6 +333,11 @@ struct { unsigned char r, g, b, a; } color, color2, color3; + struct { + int l, r, t, b; + } border; + + char visible : 1; }; #endif |
From: <enl...@li...> - 2003-06-09 11:31:34
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_main.c edje_private.h Log Message: more code & work on ejde. started on edje_cc. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_main.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_main.c 3 Jun 2003 14:00:51 -0000 1.2 +++ edje_main.c 9 Jun 2003 11:31:33 -0000 1.3 @@ -82,11 +82,14 @@ _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep, Edje_Part_Description *desc, + Edje_Part_Description *chosen_desc, Edje_Real_Part *rel1_to, Edje_Real_Part *rel2_to, Edje_Real_Part *confine_to, Edje_Calc_Params *params) { + int minw, minh; + /* relative coords of top left & bottom right */ if (rel1_to) { @@ -181,42 +184,79 @@ params->h = new_h; } } - /* adjust for max size */ - if (desc->max.w >= 0) + minw = desc->min.w; + minh = desc->min.h; + /* if we have text that wants to make the min size the text size... */ + if ((chosen_desc) && (ep->part->type == EDJE_PART_TYPE_TEXT)) + { + char *text; + char *font; + int size; + double tw, th; + + text = chosen_desc->text.text; + font = chosen_desc->text.font; + size = chosen_desc->text.size; + if (ep->text.text) text = ep->text.text; + if (ep->text.font) font = ep->text.font; + if (ep->text.size) size = ep->text.size; + evas_object_text_font_set(ep->object, font, size); + if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y)) + { + evas_object_text_text_set(ep->object, text); + evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th); + if (chosen_desc->text.min_x) + { + minw = tw; + /* FIXME: account for effect */ + /* for now just add 2 */ + minw += 2; + } + if (chosen_desc->text.min_y) + { + minh = th; + /* FIXME: account for effect */ + /* for now just add 2 */ + minw += 2; + } + } + } + /* adjust for min size */ + if (minw >= 0) { - if (params->w > desc->max.w) + if (params->w < minw) { params->x = params->x + - ((params->w - desc->max.w) * desc->align.x); - params->w = desc->max.w; + ((params->w - minw) * (1.0 - desc->align.x)); + params->w = minw; } } - if (desc->max.h >= 0) + if (minh >= 0) { - if (params->h > desc->max.h) + if (params->h < minh) { params->y = params->y + - ((params->h - desc->max.h) * desc->align.y); - params->h = desc->max.h; + ((params->h - minh) * (1.0 - desc->align.y)); + params->h = minh; } } - /* adjust for min size */ - if (desc->min.w >= 0) + /* adjust for max size */ + if (desc->max.w >= 0) { - if (params->w < desc->min.w) + if (params->w > desc->max.w) { params->x = params->x + - ((params->w - desc->min.w) * (1.0 - desc->align.x)); - params->w = desc->min.w; + ((params->w - desc->max.w) * desc->align.x); + params->w = desc->max.w; } } - if (desc->min.h >= 0) + if (desc->max.h >= 0) { - if (params->h < desc->min.h) + if (params->h > desc->max.h) { params->y = params->y + - ((params->h - desc->min.h) * (1.0 - desc->align.y)); - params->h = desc->min.h; + ((params->h - desc->max.h) * desc->align.y); + params->h = desc->max.h; } } /* confine */ @@ -299,14 +339,14 @@ params->border.r = desc->border.r; params->border.t = desc->border.t; params->border.b = desc->border.b; - /* text */ - /* FIXME: do */ } static void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep) { - Edje_Calc_Params p1, p2; + Edje_Calc_Params p1, p2, p3; + Edje_Part_Description *chosen_desc; + double pos; if (ep->calculated) return; if (ep->param1.rel1_to) _edje_part_recalc(ed, ep->param1.rel1_to); @@ -317,11 +357,115 @@ if (ep->param2.confine_to) _edje_part_recalc(ed, ep->param2.confine_to); /* actually calculate now */ + if (ep->description_pos == 0.0) + chosen_desc = ep->param1.description; + else + chosen_desc = ep->param2.description; + if (ep->param1.description) - _edje_part_recalc_single(ed, ep, ep->param1.description, ep->param1.rel1_to, ep->param1.rel2_to, ep->param1.confine_to, &p1); + _edje_part_recalc_single(ed, ep, ep->param1.description, chosen_desc, ep->param1.rel1_to, ep->param1.rel2_to, ep->param1.confine_to, &p1); if (ep->param2.description) - _edje_part_recalc_single(ed, ep, ep->param1.description, ep->param2.rel1_to, ep->param2.rel2_to, ep->param2.confine_to, &p2); - + { + _edje_part_recalc_single(ed, ep, ep->param2.description, chosen_desc, ep->param2.rel1_to, ep->param2.rel2_to, ep->param2.confine_to, &p2); + + /* FIXME: pos isnt just linear - depends on tween method */ + pos = ep->description_pos; + + /* visible is special */ + if ((p1.visible) && (!p2.visible)) + { + if (pos == 1.0) + p3.visible = 0; + else + p3.visible = 1; + } + else if ((!p1.visible) && (p2.visible)) + { + if (pos == 0.0) + p3.visible = 0; + else + p3.visible = 1; + } + else + p3.visible = p1.visible; + + p3.x = (p1.x * (1.0 - pos)) + (p2.x * (pos)); + p3.y = (p1.y * (1.0 - pos)) + (p2.y * (pos)); + p3.w = (p1.w * (1.0 - pos)) + (p2.w * (pos)); + p3.h = (p1.h * (1.0 - pos)) + (p2.h * (pos)); + + p3.fill.x = (p1.fill.x * (1.0 - pos)) + (p2.fill.x * (pos)); + p3.fill.y = (p1.fill.y * (1.0 - pos)) + (p2.fill.y * (pos)); + p3.fill.w = (p1.fill.w * (1.0 - pos)) + (p2.fill.w * (pos)); + p3.fill.h = (p1.fill.h * (1.0 - pos)) + (p2.fill.h * (pos)); + + p3.color.r = (p1.color.r * (1.0 - pos)) + (p2.color.r * (pos)); + p3.color.g = (p1.color.g * (1.0 - pos)) + (p2.color.g * (pos)); + p3.color.b = (p1.color.b * (1.0 - pos)) + (p2.color.b * (pos)); + p3.color.a = (p1.color.a * (1.0 - pos)) + (p2.color.a * (pos)); + + p3.color2.r = (p1.color2.r * (1.0 - pos)) + (p2.color2.r * (pos)); + p3.color2.g = (p1.color2.g * (1.0 - pos)) + (p2.color2.g * (pos)); + p3.color2.b = (p1.color2.b * (1.0 - pos)) + (p2.color2.b * (pos)); + p3.color2.a = (p1.color2.a * (1.0 - pos)) + (p2.color2.a * (pos)); + + p3.color3.r = (p1.color3.r * (1.0 - pos)) + (p2.color3.r * (pos)); + p3.color3.g = (p1.color3.g * (1.0 - pos)) + (p2.color3.g * (pos)); + p3.color3.b = (p1.color3.b * (1.0 - pos)) + (p2.color3.b * (pos)); + p3.color3.a = (p1.color3.a * (1.0 - pos)) + (p2.color3.a * (pos)); + + p3.border.l = (p1.border.l * (1.0 - pos)) + (p2.border.l * (pos)); + p3.border.r = (p1.border.r * (1.0 - pos)) + (p2.border.r * (pos)); + p3.border.t = (p1.border.t * (1.0 - pos)) + (p2.border.t * (pos)); + p3.border.b = (p1.border.b * (1.0 - pos)) + (p2.border.b * (pos)); + } + else + p3 = p1; + if (ep->part->type == EDJE_PART_TYPE_RECTANGLE) + { + evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y); + evas_object_resize(ep->object, p3.w, p3.h); + } + else if (ep->part->type == EDJE_PART_TYPE_TEXT) + { + /* FIXME: if text object calculate text now */ + /* FIXME: set other colors */ + } + else if (ep->part->type == EDJE_PART_TYPE_IMAGE) + { + char buf[4096]; + int image_id; + int image_count, image_num; + + evas_object_move(ep->object, ed->x + p3.x, ed->y + p3.y); + evas_object_resize(ep->object, p3.w, p3.h); + evas_object_image_fill_set(ep->object, p3.fill.x, p3.fill.y, p3.fill.w, p3.fill.h); + evas_object_image_border_set(ep->object, p3.border.l, p3.border.r, p3.border.t, p3.border.b); + image_id = ep->param1.description->image.id; + image_count = 2; + if (ep->param2.description) + image_count += evas_list_count(ep->param2.description->image.tween_list); + image_num = (pos * ((double)image_count - 0.5)); + if (image_num > (image_count - 1)) + image_num = image_count - 1; + if (image_num == 0) + image_id = ep->param1.description->image.id; + else if (image_num == (image_count - 1)) + image_id = ep->param2.description->image.id; + else + { + Edje_Part_Image_Id *imid; + + imid = evas_list_nth(ep->param2.description->image.tween_list, image_num - 1); + if (imid) image_id = imid->image_id; + } + + snprintf(buf, sizeof(buf), "/images/%i", image_id); + evas_object_image_file_set(ep->object, ed->file->path, buf); + } + if (p3.visible) evas_object_show(ep->object); + else evas_object_hide(ep->object); + evas_object_color_set(ep->object, p3.color.r, p3.color.g, p3.color.b, p3.color.a); ep->calculated = 1; ep->dirty = 0; } @@ -363,6 +507,24 @@ ed = evas_object_smart_data_get(obj); return ed; } + +/* +Edje_File * +_edje_add(Evas (evas) +{ + Edje *ed; + + ed = calloc(1, sizeof(Edje)); + ed->evas = evas; + return ed; +} + +void +_edje_free(Edje *ed) +{ + free(ed); +} +*/ /* evas smart object methods - required by evas smart objects to do the */ /* dirty work on smrt objects */ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_private.h 3 Jun 2003 14:00:52 -0000 1.2 +++ edje_private.h 9 Jun 2003 11:31:33 -0000 1.3 @@ -184,6 +184,7 @@ { char *name; /* the name if any of the part */ unsigned char type; /* what type (image, rect, text) */ + unsigned char mouse_events; /* it will affect/respond to mouse events */ int id; /* its id number */ char *color_class; /* how to modify the color */ char *text_class; /* how to apply/modify the font */ @@ -269,12 +270,19 @@ struct { char *text; /* if "" or NULL, then leave text unchanged */ + char *font; /* if a specific font is asked for */ int size; /* 0 = use user set size */ unsigned char effect; /* 0 = plain... */ unsigned char fit_x; /* resize font size down to fit in x dir */ unsigned char fit_y; /* resize font size down to fit in y dir */ + unsigned char min_x; /* if text size should be part min size */ + unsigned char min_y; /* if text size should be part min size */ + + struct { + double x, y; /* text alignment within bounds */ + } align; } text; }; @@ -291,6 +299,7 @@ struct _Edje { + char *part; int layer; int x, y, w, h; unsigned char dirty : 1; @@ -304,15 +313,20 @@ struct _Edje_Real_Part { - int x, y, w, h; - Evas_Object *object; - unsigned char calculated : 1; - unsigned char dirty : 1; - Edje_Part *part; + int x, y, w, h; + Evas_Object *object; + unsigned char calculated : 1; + unsigned char dirty : 1; + Edje_Part *part; struct { int x, y; } drag; - double description_pos; + struct { + char *text; + char *font; + int size; + } text; + double description_pos; struct { Edje_Part_Description *description; Edje_Real_Part *rel1_to; @@ -325,19 +339,17 @@ struct _Edje_Calc_Params { - double x, y, w, h; - + double x, y, w, h; + char visible : 1; struct { - double x, y, w, h; + double x, y, w, h; } fill; struct { unsigned char r, g, b, a; } color, color2, color3; struct { - int l, r, t, b; + int l, r, t, b; } border; - - char visible : 1; }; #endif |
From: <enl...@li...> - 2003-06-09 11:32:04
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: Makefile.am edje.h Added Files: edje_cc.c Log Message: more code & work on ejde. started on edje_cc. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Makefile.am 2 Jun 2003 23:49:56 -0000 1.1 +++ Makefile.am 9 Jun 2003 11:31:32 -0000 1.2 @@ -11,7 +11,7 @@ -I/usr/local/include \ @my_includes@ -bin_PROGRAMS = edje +bin_PROGRAMS = edje edje_cc edje_SOURCES = \ edje_main.c @@ -20,3 +20,11 @@ $(top_builddir)/src/lib/libedje.la edje_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la + +edje_cc_SOURCES = \ +edje_cc.c + +edje_cc_LDADD = \ +$(top_builddir)/src/lib/libedje.la + +edje_cc_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje.h 2 Jun 2003 23:49:56 -0000 1.1 +++ edje.h 9 Jun 2003 11:31:32 -0000 1.2 @@ -1,4 +1,7 @@ #include <Evas.h> #include <Ecore.h> #include <Ecore_Evas.h> +/* ... only for testing */ +#include "edje_private.h" +/* ... end testing */ #include "Edje.h" |
From: <enl...@li...> - 2003-06-09 13:52:12
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: edje.h edje_cc.c Log Message: edje_cc is beginning to do something. it parses the image section properly and builds the memory data struct right, and writes the data struct out via eet. need to parse the rest, build data structs and write them out ttoo. need to write out images too. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje.h 9 Jun 2003 11:31:32 -0000 1.2 +++ edje.h 9 Jun 2003 13:51:39 -0000 1.3 @@ -2,6 +2,7 @@ #include <Ecore.h> #include <Ecore_Evas.h> /* ... only for testing */ +#include <Eet.h> #include "edje_private.h" /* ... end testing */ #include "Edje.h" =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_cc.c 9 Jun 2003 11:31:32 -0000 1.1 +++ edje_cc.c 9 Jun 2003 13:51:39 -0000 1.2 @@ -18,6 +18,14 @@ Evas_List *stack = NULL; Evas_List *params = NULL; +Edje_File *edje_file = NULL; + +Eet_Data_Descriptor *edd_edje_file; +Eet_Data_Descriptor *edd_edje_image_directory; +Eet_Data_Descriptor *edd_edje_image_directory_entry; + +void data_setup(void); +void data_write(void); void new_object(void); void new_statement(void); int isdelim(char c); @@ -46,19 +54,97 @@ void ob_images(void) { - printf("create images struct\n"); + edje_file->image_dir = calloc(1, sizeof(Edje_Image_Directory)); + if (!edje_file->image_dir) + { + fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", + progname, sizeof(Edje_Image_Directory), strerror(errno)); + exit(-1); + } } void ob_images_image(void) { - printf("create new image\n"); + Edje_Image_Directory_Entry *img; + + img = calloc(1, sizeof(Edje_Image_Directory_Entry)); + edje_file->image_dir->entries = evas_list_append(edje_file->image_dir->entries, img); + img->id = evas_list_count(edje_file->image_dir->entries) - 1; } void st_images_image(void) { - printf("fill in new image using params\n"); + Edje_Image_Directory_Entry *img; + char *str; + + img = evas_list_data(evas_list_last(edje_file->image_dir->entries)); + str = evas_list_nth(params, 0); + if (str) + { + img->entry = strdup(str); + if (!str) + { + fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", + progname, strlen(str) + 1, strerror(errno)); + exit(-1); + } + } + else + { + fprintf(stderr, "%s: Error. %s:%i: no filename for image as arg 1\n", + progname, file_in, line); + exit(-1); + } + str = evas_list_nth(params, 1); + if (str) + { + if (!strcasecmp(str, "RAW")) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; + img->source_param = 0; + } + else if (!strcasecmp(str, "COMP")) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; + img->source_param = 1; + } + else if (!strcasecmp(str, "LOSSY")) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY; + img->source_param = 0; + } + else if (!strcasecmp(str, "USER")) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_EXTERNAL; + img->source_param = 0; + } + else + { + fprintf(stderr, "%s: Error. %s:%i: invalid encoding \"%s\" for image as arg 2\n", + progname, file_in, line, str); + exit(-1); + } + } + else + { + fprintf(stderr, "%s: Error. %s:%i: no encoding type for image as arg 2\n", + progname, file_in, line); + exit(-1); + } + if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) return; + str = evas_list_nth(params, 2); + if (str) + { + img->source_param = atoi(str); + } + else + { + fprintf(stderr, "%s: Error. %s:%i: no encoding quality for lossy as arg 3\n", + progname, file_in, line); + exit(-1); + } } New_Object_Handler object_handlers[] = @@ -73,6 +159,68 @@ }; void +data_setup(void) +{ + edd_edje_image_directory_entry = eet_data_descriptor_new("Edje_Image_Directory_Entry", + sizeof(Edje_Image_Directory_Entry), + evas_list_next, + evas_list_append, + evas_list_data, + evas_hash_foreach, + evas_hash_add); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_type", source_type, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_param", source_param, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "id", id, EET_T_INT); + edd_edje_image_directory = eet_data_descriptor_new("Edje_Image_Directory", + sizeof(Edje_Image_Directory), + evas_list_next, + evas_list_append, + evas_list_data, + evas_hash_foreach, + evas_hash_add); + EET_DATA_DESCRIPTOR_ADD_LIST(edd_edje_image_directory, Edje_Image_Directory, "entries", entries, edd_edje_image_directory_entry); + edd_edje_file = eet_data_descriptor_new("Edje_File", + sizeof(Edje_File), + evas_list_next, + evas_list_append, + evas_list_data, + evas_hash_foreach, + evas_hash_add); + EET_DATA_DESCRIPTOR_ADD_SUB(edd_edje_file, Edje_File, "image_dir", image_dir, edd_edje_image_directory); +} + +void +data_write(void) +{ + Eet_File *ef; + Evas_List *l; + + ef = eet_open(file_out, EET_FILE_MODE_WRITE); + if (!ef) + { + fprintf(stderr, "%s: Error. unable to open %s for writing output\n", + progname, file_out); + exit(-1); + } + eet_data_write(ef, edd_edje_file, "data", edje_file, 1); + for (l = edje_file->image_dir->entries; l; l = l->next) + { + Edje_Image_Directory_Entry *img; + + img = l->data; + if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) + { + if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) + printf("FIXME: should inline image %s lossless, compression: %i\n", img->entry, img->source_param); + else + printf("FIXME: should inline image %s lossy, quality: %i%%\n", img->entry, img->source_param); + } + } + eet_close(ef); +} + +void new_object(void) { char *id; @@ -429,6 +577,16 @@ exit(-1); } + edje_file = calloc(1, sizeof(Edje_File)); + if (!edje_file) + { + fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", + progname, sizeof(Edje_File), strerror(errno)); + exit(-1); + } + + data_setup(); compile(); + data_write(); return 0; } |
From: <enl...@li...> - 2003-06-09 13:52:15
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_private.h Log Message: edje_cc is beginning to do something. it parses the image section properly and builds the memory data struct right, and writes the data struct out via eet. need to parse the rest, build data structs and write them out ttoo. need to write out images too. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje_private.h 9 Jun 2003 11:31:33 -0000 1.3 +++ edje_private.h 9 Jun 2003 13:51:40 -0000 1.4 @@ -68,11 +68,11 @@ #define EDJE_ACTION_TYPE_DRAG_SET 3 #define EDJE_ACTION_TYPE_LAST 4 -#define EDJE_IMAGE_SOURCE_TYPE_NONE 0 -#define EDJE_IMAGE_SOURCE_TYPE_INLINE 1 -#define EDJE_IMAGE_SOURCE_TYPE_ABSOLUTE 2 -#define EDJE_IMAGE_SOURCE_TYPE_HOMEDIR 3 -#define EDJE_IMAGE_SOURCE_TYPE_LAST 4 +#define EDJE_IMAGE_SOURCE_TYPE_NONE 0 +#define EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT 1 +#define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY 2 +#define EDJE_IMAGE_SOURCE_TYPE_EXTERNAL 3 +#define EDJE_IMAGE_SOURCE_TYPE_LAST 4 #define EDJE_TEXT_EFFECT_NONE 0 #define EDJE_TEXT_EFFECT_PLAIN 1 @@ -107,7 +107,6 @@ struct _Edje_Image_Directory { Evas_List *entries; /* a list of Edje_Image_Directory_Entry */ - int references; }; @@ -115,6 +114,7 @@ { char *entry; /* the nominal name of the image - if any */ int source_type; /* alternate source mode. 0 = none */ + int source_param; /* extar params on encoding */ int id; /* the id no. of the image */ }; |
From: <enl...@li...> - 2003-06-11 09:30:58
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje Modified Files: configure.in Log Message: parsing much nicer.. in fact starting to actually compile! :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/configure.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- configure.in 2 Jun 2003 23:49:54 -0000 1.1 +++ configure.in 11 Jun 2003 09:30:24 -0000 1.2 @@ -74,6 +74,11 @@ AC_SUBST(my_includes) AC_SUBST(my_libs) +imlib2_includes=`imlib2-config --cflags` +imlib2_libs=`imlib2-config --libs` +AC_SUBST(imlib2_includes) +AC_SUBST(imlib2_libs) + AC_OUTPUT([ Makefile src/Makefile |
From: <enl...@li...> - 2003-06-11 09:31:03
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: Makefile.am edje_cc.c Log Message: parsing much nicer.. in fact starting to actually compile! :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 9 Jun 2003 11:31:32 -0000 1.2 +++ Makefile.am 11 Jun 2003 09:30:26 -0000 1.3 @@ -9,7 +9,8 @@ -I$(top_srcdir)/lib \ -I$(top_builddir)/lib \ -I/usr/local/include \ -@my_includes@ +@my_includes@ \ +@imlib2_includes@ bin_PROGRAMS = edje edje_cc @@ -17,7 +18,10 @@ edje_main.c edje_LDADD = \ -$(top_builddir)/src/lib/libedje.la +$(top_builddir)/src/lib/libedje.la \ +@imlib2_libs@ + +edje_LDFLAGS = edje_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la @@ -25,6 +29,10 @@ edje_cc.c edje_cc_LDADD = \ -$(top_builddir)/src/lib/libedje.la +$(top_builddir)/src/lib/libedje.la \ +@imlib2_libs@ + +edje_cc_LDFLAGS = + edje_cc_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_cc.c 9 Jun 2003 13:51:39 -0000 1.2 +++ edje_cc.c 11 Jun 2003 09:30:28 -0000 1.3 @@ -1,4 +1,8 @@ #include "edje.h" +/* Imlib2 stuff for loading up input images */ +#define X_DISPLAY_MISSING +#include <Imlib2.h> +/* done Imlib2 stuff */ #include <stdio.h> #include <stdlib.h> @@ -211,10 +215,48 @@ img = l->data; if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) { - if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) - printf("FIXME: should inline image %s lossless, compression: %i\n", img->entry, img->source_param); + Imlib_Image im; + Evas_List *l; + + im = NULL; + for (l = img_dirs; l; l = l->next) + { + char buf[4096]; + + snprintf(buf, sizeof(buf), "%s/%s", l->data, img->entry); + im = imlib_load_image(buf); + if (im) break; + } + if (!im) im = imlib_load_image(img->entry); + if (im) + { + DATA32 *im_data; + int im_w, im_h; + int im_alpha; + char buf[256]; + + imlib_context_set_image(im); + im_w = imlib_image_get_width(); + im_h = imlib_image_get_height(); + im_alpha = imlib_image_has_alpha(); + im_data = imlib_image_get_data_for_reading_only(); + snprintf(buf, sizeof(buf), "/images/%i", img->id); + if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) + eet_data_image_write(ef, buf, + im_data, im_w, im_h, im_alpha, + img->source_param, 0, 0); + else + eet_data_image_write(ef, buf, + im_data, im_w, im_h, im_alpha, + 0, img->source_param, 1); + imlib_image_put_back_data(im_data); + imlib_free_image(); + } else - printf("FIXME: should inline image %s lossy, quality: %i%%\n", img->entry, img->source_param); + { + fprintf(stderr, "%s: Warning. unable to open image %s for inclusion in output\n", + progname, img->entry); + } } } eet_close(ef); @@ -469,17 +511,28 @@ } else if (!strcmp(token, ";")) { - - do_params = 0; - new_statement(); - /* clear out params */ - while (params) + if (do_params) + { + do_params = 0; + new_statement(); + /* clear out params */ + while (params) + { + free(params->data); + params = evas_list_remove(params, params->data); + } + /* remove top from stack */ + stack_chop_top(); + } + } + else if (!strcmp(token, "{")) + { + if (do_params) { - free(params->data); - params = evas_list_remove(params, params->data); + fprintf(stderr, "%s: Error. parse error %s:%i. { marker before ; marker\n", + progname, file_in, line); + exit(-1); } - /* remove top from stack */ - stack_chop_top(); } free(token); } |
From: <enl...@li...> - 2003-06-11 13:21:23
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: Makefile.am edje.h edje_cc.c Added Files: edje_cc.h edje_cc_handlers.c edje_cc_out.c edje_cc_parse.c Log Message: spread edje_cc code out a little... it's goign to get big now. put parse result handlers in one place. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- Makefile.am 11 Jun 2003 09:30:26 -0000 1.3 +++ Makefile.am 11 Jun 2003 13:20:47 -0000 1.4 @@ -26,7 +26,11 @@ edje_DEPENDENCIES = $(top_builddir)/src/lib/libedje.la edje_cc_SOURCES = \ -edje_cc.c +edje_cc.c \ +edje_cc.h \ +edje_cc_out.c \ +edje_cc_parse.c \ +edje_cc_handlers.c edje_cc_LDADD = \ $(top_builddir)/src/lib/libedje.la \ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje.h 9 Jun 2003 13:51:39 -0000 1.3 +++ edje.h 11 Jun 2003 13:20:47 -0000 1.4 @@ -1,3 +1,6 @@ +#ifndef EDJE_H +#define EDJE_H + #include <Evas.h> #include <Ecore.h> #include <Ecore_Evas.h> @@ -6,3 +9,5 @@ #include "edje_private.h" /* ... end testing */ #include "Edje.h" + +#endif =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje_cc.c 11 Jun 2003 09:30:28 -0000 1.3 +++ edje_cc.c 11 Jun 2003 13:20:48 -0000 1.4 @@ -1,587 +1,13 @@ -#include "edje.h" -/* Imlib2 stuff for loading up input images */ -#define X_DISPLAY_MISSING -#include <Imlib2.h> -/* done Imlib2 stuff */ +#include "edje_cc.h" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/mman.h> -#include <sys/types.h> -#include <sys/stat.h> +static void main_help(void); Evas_List *img_dirs = NULL; char *file_in = NULL; char *file_out = NULL; char *progname = NULL; -int line = 0; -Evas_List *stack = NULL; -Evas_List *params = NULL; - -Edje_File *edje_file = NULL; - -Eet_Data_Descriptor *edd_edje_file; -Eet_Data_Descriptor *edd_edje_image_directory; -Eet_Data_Descriptor *edd_edje_image_directory_entry; - -void data_setup(void); -void data_write(void); -void new_object(void); -void new_statement(void); -int isdelim(char c); -char *next_token(char *p, char *end, char **new_p, int *delim); -char *stack_id(void); -void stack_chop_top(void); -void parse(char *data, off_t size); -void compile(void); -void main_help(void); - -typedef struct _New_Object_Handler New_Object_Handler; -typedef struct _New_Statement_Handler New_Statement_Handler; - -struct _New_Object_Handler -{ - char *type; - void (*func)(void); -}; - -struct _New_Statement_Handler -{ - char *type; - void (*func)(void); -}; - -void -ob_images(void) -{ - edje_file->image_dir = calloc(1, sizeof(Edje_Image_Directory)); - if (!edje_file->image_dir) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, sizeof(Edje_Image_Directory), strerror(errno)); - exit(-1); - } -} - -void -ob_images_image(void) -{ - Edje_Image_Directory_Entry *img; - - img = calloc(1, sizeof(Edje_Image_Directory_Entry)); - edje_file->image_dir->entries = evas_list_append(edje_file->image_dir->entries, img); - img->id = evas_list_count(edje_file->image_dir->entries) - 1; -} - -void -st_images_image(void) -{ - Edje_Image_Directory_Entry *img; - char *str; - - img = evas_list_data(evas_list_last(edje_file->image_dir->entries)); - str = evas_list_nth(params, 0); - if (str) - { - img->entry = strdup(str); - if (!str) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, strlen(str) + 1, strerror(errno)); - exit(-1); - } - } - else - { - fprintf(stderr, "%s: Error. %s:%i: no filename for image as arg 1\n", - progname, file_in, line); - exit(-1); - } - str = evas_list_nth(params, 1); - if (str) - { - if (!strcasecmp(str, "RAW")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; - img->source_param = 0; - } - else if (!strcasecmp(str, "COMP")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; - img->source_param = 1; - } - else if (!strcasecmp(str, "LOSSY")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY; - img->source_param = 0; - } - else if (!strcasecmp(str, "USER")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_EXTERNAL; - img->source_param = 0; - } - else - { - fprintf(stderr, "%s: Error. %s:%i: invalid encoding \"%s\" for image as arg 2\n", - progname, file_in, line, str); - exit(-1); - } - } - else - { - fprintf(stderr, "%s: Error. %s:%i: no encoding type for image as arg 2\n", - progname, file_in, line); - exit(-1); - } - if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) return; - str = evas_list_nth(params, 2); - if (str) - { - img->source_param = atoi(str); - } - else - { - fprintf(stderr, "%s: Error. %s:%i: no encoding quality for lossy as arg 3\n", - progname, file_in, line); - exit(-1); - } -} - -New_Object_Handler object_handlers[] = -{ - {"images", ob_images}, - {"images.image", ob_images_image} -}; - -New_Statement_Handler statement_handlers[] = -{ - {"images.image", st_images_image} -}; - -void -data_setup(void) -{ - edd_edje_image_directory_entry = eet_data_descriptor_new("Edje_Image_Directory_Entry", - sizeof(Edje_Image_Directory_Entry), - evas_list_next, - evas_list_append, - evas_list_data, - evas_hash_foreach, - evas_hash_add); - EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "entry", entry, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_type", source_type, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_param", source_param, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "id", id, EET_T_INT); - edd_edje_image_directory = eet_data_descriptor_new("Edje_Image_Directory", - sizeof(Edje_Image_Directory), - evas_list_next, - evas_list_append, - evas_list_data, - evas_hash_foreach, - evas_hash_add); - EET_DATA_DESCRIPTOR_ADD_LIST(edd_edje_image_directory, Edje_Image_Directory, "entries", entries, edd_edje_image_directory_entry); - edd_edje_file = eet_data_descriptor_new("Edje_File", - sizeof(Edje_File), - evas_list_next, - evas_list_append, - evas_list_data, - evas_hash_foreach, - evas_hash_add); - EET_DATA_DESCRIPTOR_ADD_SUB(edd_edje_file, Edje_File, "image_dir", image_dir, edd_edje_image_directory); -} - -void -data_write(void) -{ - Eet_File *ef; - Evas_List *l; - - ef = eet_open(file_out, EET_FILE_MODE_WRITE); - if (!ef) - { - fprintf(stderr, "%s: Error. unable to open %s for writing output\n", - progname, file_out); - exit(-1); - } - eet_data_write(ef, edd_edje_file, "data", edje_file, 1); - for (l = edje_file->image_dir->entries; l; l = l->next) - { - Edje_Image_Directory_Entry *img; - - img = l->data; - if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) - { - Imlib_Image im; - Evas_List *l; - - im = NULL; - for (l = img_dirs; l; l = l->next) - { - char buf[4096]; - - snprintf(buf, sizeof(buf), "%s/%s", l->data, img->entry); - im = imlib_load_image(buf); - if (im) break; - } - if (!im) im = imlib_load_image(img->entry); - if (im) - { - DATA32 *im_data; - int im_w, im_h; - int im_alpha; - char buf[256]; - - imlib_context_set_image(im); - im_w = imlib_image_get_width(); - im_h = imlib_image_get_height(); - im_alpha = imlib_image_has_alpha(); - im_data = imlib_image_get_data_for_reading_only(); - snprintf(buf, sizeof(buf), "/images/%i", img->id); - if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) - eet_data_image_write(ef, buf, - im_data, im_w, im_h, im_alpha, - img->source_param, 0, 0); - else - eet_data_image_write(ef, buf, - im_data, im_w, im_h, im_alpha, - 0, img->source_param, 1); - imlib_image_put_back_data(im_data); - imlib_free_image(); - } - else - { - fprintf(stderr, "%s: Warning. unable to open image %s for inclusion in output\n", - progname, img->entry); - } - } - } - eet_close(ef); -} - -void -new_object(void) -{ - char *id; - int i; - - id = stack_id(); -// printf("+++: %s\n", id); - for (i = 0; i < (sizeof(object_handlers) / sizeof (New_Object_Handler)); i++) - { - if (!strcmp(object_handlers[i].type, id)) - { - if (object_handlers[i].func) object_handlers[i].func(); - } - } - free(id); -} - -void -new_statement(void) -{ - char *id; - int i; - - id = stack_id(); -// { -// Evas_List *l; -// printf("===: %s", id); -// for (l = params; l; l = l->next) printf(" [%s]", l->data); -// printf("\n"); -// } - for (i = 0; i < (sizeof(statement_handlers) / sizeof (New_Object_Handler)); i++) - { - if (!strcmp(statement_handlers[i].type, id)) - { - if (statement_handlers[i].func) statement_handlers[i].func(); - } - } - free(id); -} - -int -isdelim(char c) -{ - const char *delims = "{},;"; - char *d; - - d = (char *)delims; - while (*d) - { - if (c == *d) return 1; - d++; - } - return 0; -} - -char * -next_token(char *p, char *end, char **new_p, int *delim) -{ - char *tok_start = NULL, *tok_end = NULL, *tok = NULL, *sa_start = NULL; - int in_tok = 0; - int in_quote = 0; - int in_comment_ss = 0; - int in_comment_sa = 0; - int had_quote = 0; - - *delim = 0; - if (p >= end) return NULL; - while (p < end) - { - if (*p == '\n') - { - in_comment_ss = 0; - line++; - } - if ((!in_comment_ss) && (!in_comment_sa)) - { - if ((!in_quote) && (*p == '/') && (p < (end - 1)) && (*(p + 1) == '/')) - in_comment_ss = 1; - if ((!in_quote) && (*p == '/') && (p < (end - 1)) && (*(p + 1) == '*')) - { - in_comment_sa = 1; - sa_start = p; - } - } - if ((!in_comment_ss) && (!in_comment_sa)) - { - if (!in_tok) - { - if (!in_quote) - { - if (!isspace(*p)) - { - if (*p == '"') - { - in_quote = 1; - had_quote = 1; - } - in_tok = 1; - tok_start = p; - if (isdelim(*p)) *delim = 1; - } - } - } - else - { - if (in_quote) - { - if (((*p) == '"') && (*(p - 1) != '\\')) - { - in_quote = 0; - had_quote = 1; - } - } - else - { - if (*p == '"') - { - in_quote = 1; - had_quote = 1; - } - if ( - (isspace(*p)) || - ((*delim) && (!isdelim(*p))) || - (isdelim(*p)) - ) - { - in_tok = 0; - tok_end = p - 1; - goto done; - } - } - } - } - if (in_comment_sa) - { - if ((*p == '/') && (*(p - 1) == '*') && ((p - sa_start) > 2)) - in_comment_sa = 0; - } - p++; - } - if (!in_tok) return NULL; - tok_end = p - 1; - - done: - *new_p = p; - - tok = malloc(tok_end - tok_start + 2); - if (!tok) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, tok_end - tok_start + 2, strerror(errno)); - exit(-1); - } - strncpy(tok, tok_start, tok_end - tok_start + 1); - tok[tok_end - tok_start + 1] = 0; - - if (had_quote) - { - p = tok; - - while (*p) - { - if (*p == '"') - strcpy(p, p + 1); - else if ((*p == '\\') && (*(p + 1) == '"')) - strcpy(p, p + 1); - else if ((*p == '\\') && (*(p + 1) == '\\')) - strcpy(p, p + 1); - p++; - } - } - return tok; -} - -char * -stack_id(void) -{ - char *id; - int len; - Evas_List *l; - - len = 0; - for (l = stack; l; l = l->next) - len += strlen(l->data) + 1; - id = malloc(len); - if (!id) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, len, strerror(errno)); - exit(-1); - } - id[0] = 0; - for (l = stack; l; l = l->next) - { - strcat(id, l->data); - if (l->next) strcat(id, "."); - } - return id; -} - -void -stack_chop_top(void) -{ - char *top; - - /* remove top from stack */ - top = evas_list_data(evas_list_last(stack)); - if (top) - { - free(top); - stack = evas_list_remove(stack, top); - } - else - { - fprintf(stderr, "%s: Error. parse error %s:%i. } marker without matching { marker\n", - progname, file_in, line); - exit(-1); - } -} - -void -parse(char *data, off_t size) -{ - char *p, *end, *token; - int delim = 0; - int do_params = 0; - - p = data; - end = data + size; - line = 1; - while ((token = next_token(p, end, &p, &delim)) != NULL) - { - if (delim) - { - if (!strcmp(token, ",")) do_params = 1; - else if (!strcmp(token, "}")) - { - if (do_params) - { - fprintf(stderr, "%s: Error. parse error %s:%i. } marker before ; marker\n", - progname, file_in, line); - exit(-1); - } - else - stack_chop_top(); - } - else if (!strcmp(token, ";")) - { - if (do_params) - { - do_params = 0; - new_statement(); - /* clear out params */ - while (params) - { - free(params->data); - params = evas_list_remove(params, params->data); - } - /* remove top from stack */ - stack_chop_top(); - } - } - else if (!strcmp(token, "{")) - { - if (do_params) - { - fprintf(stderr, "%s: Error. parse error %s:%i. { marker before ; marker\n", - progname, file_in, line); - exit(-1); - } - } - free(token); - } - else - { - if (do_params) - params = evas_list_append(params, token); - else - { - stack = evas_list_append(stack, token); - new_object(); - } - } - } -} - -void -compile(void) -{ - int fd; - off_t size; - char *data; - - fd = open(file_in, O_RDONLY); - if (fd < 0) - { - fprintf(stderr, "%s: Error. cannot open file %s for input. %s\n", - progname, file_in, strerror(errno)); - exit(-1); - } - - size = lseek(fd, 0, SEEK_END); - lseek(fd, 0, SEEK_SET); - data = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0); - if (data) - { - parse(data, size); - munmap(data, size); - } - else - { - fprintf(stderr, "%s: Error. cannot mmap file %s for input. %s\n", - progname, file_in, strerror(errno)); - exit(-1); - } - close(fd); -} - -void +static void main_help(void) { printf |
From: <enl...@li...> - 2003-06-11 14:14:26
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: edje_cc_handlers.c edje_cc_parse.c Log Message: EVEN better parsing! :) lots of NULL handlers need filling in. i need to unify common type parameter parsing to use smaller common functions to save space. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_handlers.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_cc_handlers.c 11 Jun 2003 13:20:48 -0000 1.1 +++ edje_cc_handlers.c 11 Jun 2003 14:14:21 -0000 1.2 @@ -4,17 +4,47 @@ static void ob_images_image(void); static void st_images_image(void); +static void ob_collections(void); + /*****/ New_Object_Handler object_handlers[] = { {"images", ob_images}, - {"images.image", ob_images_image} + {"images.image", ob_images_image}, + {"collections", ob_collections}, + {"collections.group", NULL}, + {"collections.group.name", NULL}, + {"collections.group.parts", NULL}, + {"collections.group.parts.part", NULL}, + {"collections.group.parts.part.name", NULL}, + {"collections.group.parts.part.type", NULL}, + {"collections.group.parts.part.mouse_events", NULL}, + {"collections.group.parts.part.color_class", NULL}, + {"collections.group.parts.part.description", NULL}, + {"collections.group.parts.part.description.state", NULL}, + {"collections.group.parts.part.description.visible", NULL}, + {"collections.group.parts.part.description.dragable", NULL}, + {"collections.group.parts.part.description.dragable.x", NULL}, + {"collections.group.parts.part.description.dragable.y", NULL}, + {"collections.group.parts.part.description.dragable.confine", NULL}, + {"collections.group.programs", NULL}, + {"collections.group.programs.program", NULL} }; New_Statement_Handler statement_handlers[] = { - {"images.image", st_images_image} + {"images.image", st_images_image}, + {"collections.group.name", NULL}, + {"collections.group.parts.part.name", NULL}, + {"collections.group.parts.part.type", NULL}, + {"collections.group.parts.part.mouse_events", NULL}, + {"collections.group.parts.part.color_class", NULL}, + {"collections.group.parts.part.description.state", NULL}, + {"collections.group.parts.part.description.visible", NULL}, + {"collections.group.parts.part.description.dragable.x", NULL}, + {"collections.group.parts.part.description.dragable.y", NULL}, + {"collections.group.parts.part.description.dragable.confine", NULL} }; /*****/ @@ -127,4 +157,9 @@ progname, file_in, line); exit(-1); } +} + +static void +ob_collections(void) +{ } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_parse.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_cc_parse.c 11 Jun 2003 13:20:48 -0000 1.1 +++ edje_cc_parse.c 11 Jun 2003 14:14:23 -0000 1.2 @@ -17,16 +17,27 @@ { char *id; int i; + int handled = 0; id = stack_id(); -// printf("+++: %s\n", id); for (i = 0; i < object_handler_num(); i++) { if (!strcmp(object_handlers[i].type, id)) { - if (object_handlers[i].func) object_handlers[i].func(); + handled = 1; + if (object_handlers[i].func) + { + object_handlers[i].func(); + } + break; } } + if (!handled) + { + fprintf(stderr, "%s: Error. %s:%i unhandled keyword %s\n", + progname, file_in, line, evas_list_data(evas_list_last(stack))); + exit(-1); + } free(id); } @@ -35,21 +46,27 @@ { char *id; int i; + int handled = 0; id = stack_id(); -// { -// Evas_List *l; -// printf("===: %s", id); -// for (l = params; l; l = l->next) printf(" [%s]", l->data); -// printf("\n"); -// } for (i = 0; i < statement_handler_num(); i++) { if (!strcmp(statement_handlers[i].type, id)) { - if (statement_handlers[i].func) statement_handlers[i].func(); + handled = 1; + if (statement_handlers[i].func) + { + statement_handlers[i].func(); + } + break; } - } + } + if (!handled) + { + fprintf(stderr, "%s: Error. %s:%i unhandled keyword %s\n", + progname, file_in, line, evas_list_data(evas_list_last(stack))); + exit(-1); + } free(id); } @@ -141,6 +158,7 @@ { in_tok = 0; tok_end = p - 1; + if (*p == '\n') line--; goto done; } } |
From: <enl...@li...> - 2003-06-12 13:02:30
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: edje_cc.h edje_cc_handlers.c edje_cc_parse.c Log Message: cleaner. centralise type parsing... and error checking =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_cc.h 11 Jun 2003 13:20:48 -0000 1.1 +++ edje_cc.h 12 Jun 2003 13:02:28 -0000 1.2 @@ -15,6 +15,7 @@ #include <sys/mman.h> #include <sys/types.h> #include <sys/stat.h> +#include <stdarg.h> typedef struct _New_Object_Handler New_Object_Handler; typedef struct _New_Statement_Handler New_Statement_Handler; @@ -37,6 +38,13 @@ int object_handler_num(void); int statement_handler_num(void); +char *parse_str(int n); +int parse_enum(int n, ...); +int parse_int(int n); +int parse_int_range(int n, int f, int t); +double parse_float(int n); +double parse_float_range(int n, int f, int t); + extern Evas_List *img_dirs; extern char *file_in; extern char *file_out; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_handlers.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_cc_handlers.c 11 Jun 2003 14:14:21 -0000 1.2 +++ edje_cc_handlers.c 12 Jun 2003 13:02:28 -0000 1.3 @@ -89,74 +89,38 @@ st_images_image(void) { Edje_Image_Directory_Entry *img; - char *str; + int v; img = evas_list_data(evas_list_last(edje_file->image_dir->entries)); - str = evas_list_nth(params, 0); - if (str) + img->entry = parse_str(0); + v = parse_enum(1, + "RAW", 0, + "COMP", 1, + "LOSSY", 2, + "USER", 3, + NULL); + if (v == 0) { - img->entry = strdup(str); - if (!str) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, strlen(str) + 1, strerror(errno)); - exit(-1); - } + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; + img->source_param = 0; } - else + else if (v == 1) { - fprintf(stderr, "%s: Error. %s:%i: no filename for image as arg 1\n", - progname, file_in, line); - exit(-1); + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; + img->source_param = 1; } - str = evas_list_nth(params, 1); - if (str) + else if (v == 2) { - if (!strcasecmp(str, "RAW")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; - img->source_param = 0; - } - else if (!strcasecmp(str, "COMP")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; - img->source_param = 1; - } - else if (!strcasecmp(str, "LOSSY")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY; - img->source_param = 0; - } - else if (!strcasecmp(str, "USER")) - { - img->source_type = EDJE_IMAGE_SOURCE_TYPE_EXTERNAL; - img->source_param = 0; - } - else - { - fprintf(stderr, "%s: Error. %s:%i: invalid encoding \"%s\" for image as arg 2\n", - progname, file_in, line, str); - exit(-1); - } + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY; + img->source_param = 0; } - else + else if (v == 3) { - fprintf(stderr, "%s: Error. %s:%i: no encoding type for image as arg 2\n", - progname, file_in, line); - exit(-1); + img->source_type = EDJE_IMAGE_SOURCE_TYPE_EXTERNAL; + img->source_param = 0; } if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) return; - str = evas_list_nth(params, 2); - if (str) - { - img->source_param = atoi(str); - } - else - { - fprintf(stderr, "%s: Error. %s:%i: no encoding quality for lossy as arg 3\n", - progname, file_in, line); - exit(-1); - } + img->source_param = parse_int_range(2, 0, 100); } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_parse.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_cc_parse.c 11 Jun 2003 14:14:23 -0000 1.2 +++ edje_cc_parse.c 12 Jun 2003 13:02:28 -0000 1.3 @@ -348,3 +348,154 @@ } close(fd); } + +char * +parse_str(int n) +{ + char *str; + char *s; + + str = evas_list_nth(params, n); + if (!str) + { + fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n", + progname, file_in, line, n + 1); + exit(-1); + } + s = strdup(str); + if (!s) + { + fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", + progname, strlen(str) + 1, strerror(errno)); + exit(-1); + } + return s; +} + +int +parse_enum(int n, ...) +{ + char *str; + va_list va; + + str = evas_list_nth(params, n); + if (!str) + { + fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n", + progname, file_in, line, n + 1); + exit(-1); + } + va_start(va, n); + for (;;) + { + char *s; + int v; + + s = va_arg(va, char *); + if (!s) + { + fprintf(stderr, "%s: Error. %s:%i token %s not one of:", + progname, file_in, line, str); + va_start(va, n); + s = va_arg(va, char *); + while (s) + { + v = va_arg(va, int); + fprintf(stderr, " %s", s); + s = va_arg(va, char *); + if (!s) break; + } + fprintf(stderr, "\n"); + va_end(va); + exit(-1); + } + v = va_arg(va, int); + if (!strcmp(s, str)) + { + va_end(va); + return v; + } + } + va_end(va); + return 0; +} + +int +parse_int(int n) +{ + char *str; + int i; + + str = evas_list_nth(params, n); + if (!str) + { + fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n", + progname, file_in, line, n + 1); + exit(-1); + } + i = atoi(str); + return i; +} + +int +parse_int_range(int n, int f, int t) +{ + char *str; + int i; + + str = evas_list_nth(params, n); + if (!str) + { + fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n", + progname, file_in, line, n + 1); + exit(-1); + } + i = atoi(str); + if ((i < f) || (i > t)) + { + fprintf(stderr, "%s: Error. %s:%i integer %i out of range of %i to %i inclusive\n", + progname, file_in, line, i, f, t); + exit(-1); + } + return i; +} + +double +parse_float(int n) +{ + char *str; + double i; + + str = evas_list_nth(params, n); + if (!str) + { + fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n", + progname, file_in, line, n + 1); + exit(-1); + } + i = atof(str); + return i; +} + +double +parse_float_range(int n, int f, int t) +{ + char *str; + double i; + + str = evas_list_nth(params, n); + if (!str) + { + fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n", + progname, file_in, line, n + 1); + exit(-1); + } + i = atoi(str); + if ((i < f) || (i > t)) + { + fprintf(stderr, "%s: Error. %s:%i integer %i out of range of %i to %i inclusive\n", + progname, file_in, line, i, f, t); + exit(-1); + } + return i; +} |
From: <enl...@li...> - 2003-06-12 22:35:24
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: Makefile.am edje_cc.c edje_cc.h edje_cc_handlers.c edje_cc_out.c edje_cc_parse.c Added Files: edje_cc_mem.c Log Message: mem allocs guaranteed now... they are wrapped and errors handled centrally =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/Makefile.am,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- Makefile.am 11 Jun 2003 13:20:47 -0000 1.4 +++ Makefile.am 12 Jun 2003 22:34:51 -0000 1.5 @@ -30,6 +30,7 @@ edje_cc.h \ edje_cc_out.c \ edje_cc_parse.c \ +edje_cc_mem.c \ edje_cc_handlers.c edje_cc_LDADD = \ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- edje_cc.c 11 Jun 2003 13:20:48 -0000 1.4 +++ edje_cc.c 12 Jun 2003 22:34:51 -0000 1.5 @@ -56,16 +56,11 @@ exit(-1); } - edje_file = calloc(1, sizeof(Edje_File)); - if (!edje_file) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, sizeof(Edje_File), strerror(errno)); - exit(-1); - } + edje_file = mem_alloc(SZ(Edje_File)); data_setup(); compile(); data_write(); + return 0; } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_cc.h 12 Jun 2003 13:02:28 -0000 1.2 +++ edje_cc.h 12 Jun 2003 22:34:51 -0000 1.3 @@ -17,6 +17,7 @@ #include <sys/stat.h> #include <stdarg.h> +/* types */ typedef struct _New_Object_Handler New_Object_Handler; typedef struct _New_Statement_Handler New_Statement_Handler; @@ -32,19 +33,26 @@ void (*func)(void); }; -void data_setup(void); -void data_write(void); -void compile(void); -int object_handler_num(void); -int statement_handler_num(void); +/* global fn calls */ +void data_setup(void); +void data_write(void); +void compile(void); char *parse_str(int n); int parse_enum(int n, ...); int parse_int(int n); int parse_int_range(int n, int f, int t); double parse_float(int n); double parse_float_range(int n, int f, int t); - + +int object_handler_num(void); +int statement_handler_num(void); + +void *mem_alloc(size_t size); +char *mem_strdup(const char *s); +#define SZ sizeof + +/* global vars */ extern Evas_List *img_dirs; extern char *file_in; extern char *file_out; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_handlers.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje_cc_handlers.c 12 Jun 2003 13:02:28 -0000 1.3 +++ edje_cc_handlers.c 12 Jun 2003 22:34:51 -0000 1.4 @@ -5,6 +5,12 @@ static void st_images_image(void); static void ob_collections(void); +static void ob_collections_group(void); +static void ob_collections_group_parts(void); +static void ob_collections_group_parts_part(void); +static void ob_collections_group_parts_part_description(void); +static void ob_collections_group_programs(void); +static void ob_collections_group_programs_program(void); /*****/ @@ -13,23 +19,23 @@ {"images", ob_images}, {"images.image", ob_images_image}, {"collections", ob_collections}, - {"collections.group", NULL}, + {"collections.group", ob_collections_group}, {"collections.group.name", NULL}, - {"collections.group.parts", NULL}, - {"collections.group.parts.part", NULL}, + {"collections.group.parts", ob_collections_group_parts}, + {"collections.group.parts.part", ob_collections_group_parts_part}, {"collections.group.parts.part.name", NULL}, {"collections.group.parts.part.type", NULL}, {"collections.group.parts.part.mouse_events", NULL}, {"collections.group.parts.part.color_class", NULL}, - {"collections.group.parts.part.description", NULL}, + {"collections.group.parts.part.description", ob_collections_group_parts_part_description}, {"collections.group.parts.part.description.state", NULL}, {"collections.group.parts.part.description.visible", NULL}, {"collections.group.parts.part.description.dragable", NULL}, {"collections.group.parts.part.description.dragable.x", NULL}, {"collections.group.parts.part.description.dragable.y", NULL}, {"collections.group.parts.part.description.dragable.confine", NULL}, - {"collections.group.programs", NULL}, - {"collections.group.programs.program", NULL} + {"collections.group.programs", ob_collections_group_programs}, + {"collections.group.programs.program", ob_collections_group_programs_program} }; New_Statement_Handler statement_handlers[] = @@ -66,13 +72,7 @@ static void ob_images(void) { - edje_file->image_dir = calloc(1, sizeof(Edje_Image_Directory)); - if (!edje_file->image_dir) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, sizeof(Edje_Image_Directory), strerror(errno)); - exit(-1); - } + edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory)); } static void @@ -125,5 +125,40 @@ static void ob_collections(void) +{ + edje_file->collection_dir = mem_alloc(SZ(Edje_Part_Collection_Directory)); +} + +static void +ob_collections_group(void) +{ + Edje_Part_Collection_Directory_Entry *de; + + de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); +} + +static void +ob_collections_group_parts(void) +{ + Edje_Part_Collection *pc; +} + +static void +ob_collections_group_parts_part(void) +{ +} + +static void +ob_collections_group_parts_part_description(void) +{ +} + +static void +ob_collections_group_programs(void) +{ +} + +static void +ob_collections_group_programs_program(void) { } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_out.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_cc_out.c 11 Jun 2003 13:20:48 -0000 1.1 +++ edje_cc_out.c 12 Jun 2003 22:34:51 -0000 1.2 @@ -63,6 +63,7 @@ Evas_List *l; im = NULL; + imlib_set_cache_size(0); for (l = img_dirs; l; l = l->next) { char buf[4096]; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_parse.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje_cc_parse.c 12 Jun 2003 13:02:28 -0000 1.3 +++ edje_cc_parse.c 12 Jun 2003 22:34:51 -0000 1.4 @@ -177,13 +177,7 @@ done: *new_p = p; - tok = malloc(tok_end - tok_start + 2); - if (!tok) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, tok_end - tok_start + 2, strerror(errno)); - exit(-1); - } + tok = mem_alloc(tok_end - tok_start + 2); strncpy(tok, tok_start, tok_end - tok_start + 1); tok[tok_end - tok_start + 1] = 0; @@ -215,13 +209,7 @@ len = 0; for (l = stack; l; l = l->next) len += strlen(l->data) + 1; - id = malloc(len); - if (!id) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, len, strerror(errno)); - exit(-1); - } + id = mem_alloc(len); id[0] = 0; for (l = stack; l; l = l->next) { @@ -362,13 +350,7 @@ progname, file_in, line, n + 1); exit(-1); } - s = strdup(str); - if (!s) - { - fprintf(stderr, "%s: Error. memory allocation of %i bytes failed. %s\n", - progname, strlen(str) + 1, strerror(errno)); - exit(-1); - } + s = mem_strdup(str); return s; } |
From: <enl...@li...> - 2003-06-12 23:03:16
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: edje_cc_handlers.c Log Message: a few more handlers. i think next i need to add a verbose mode for the parser =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/edje/src/bin/edje_cc_handlers.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- edje_cc_handlers.c 12 Jun 2003 22:34:51 -0000 1.4 +++ edje_cc_handlers.c 12 Jun 2003 23:02:45 -0000 1.5 @@ -1,15 +1,28 @@ #include "edje_cc.h" static void ob_images(void); + static void ob_images_image(void); static void st_images_image(void); static void ob_collections(void); + static void ob_collections_group(void); +static void st_collections_group_name(void); + static void ob_collections_group_parts(void); + static void ob_collections_group_parts_part(void); +static void st_collections_group_parts_part_name(void); +static void st_collections_group_parts_part_type(void); +static void st_collections_group_parts_part_mouse_events(void); +static void st_collections_group_parts_part_color_class(void); + static void ob_collections_group_parts_part_description(void); +static void st_collections_group_parts_part_description_state(void); + static void ob_collections_group_programs(void); + static void ob_collections_group_programs_program(void); /*****/ @@ -41,12 +54,12 @@ New_Statement_Handler statement_handlers[] = { {"images.image", st_images_image}, - {"collections.group.name", NULL}, - {"collections.group.parts.part.name", NULL}, - {"collections.group.parts.part.type", NULL}, - {"collections.group.parts.part.mouse_events", NULL}, - {"collections.group.parts.part.color_class", NULL}, - {"collections.group.parts.part.description.state", NULL}, + {"collections.group.name", st_collections_group_name}, + {"collections.group.parts.part.name", st_collections_group_parts_part_name}, + {"collections.group.parts.part.type", st_collections_group_parts_part_type}, + {"collections.group.parts.part.mouse_events", st_collections_group_parts_part_mouse_events}, + {"collections.group.parts.part.color_class", st_collections_group_parts_part_color_class}, + {"collections.group.parts.part.description.state", st_collections_group_parts_part_description_state}, {"collections.group.parts.part.description.visible", NULL}, {"collections.group.parts.part.description.dragable.x", NULL}, {"collections.group.parts.part.description.dragable.y", NULL}, @@ -133,24 +146,120 @@ ob_collections_group(void) { Edje_Part_Collection_Directory_Entry *de; - + Edje_Part_Collection *pc; + de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); + edje_file->collection_dir->entries = evas_list_append(edje_file->collection_dir->entries, de); + de->id = evas_list_count(edje_file->collection_dir->entries) - 1; + + pc = mem_alloc(SZ(Edje_Part_Collection)); + edje_file->collection_loaded = evas_list_append(edje_file->collection_loaded, pc); + pc->id = evas_list_count(edje_file->collection_loaded) - 1; +} + +static void +st_collections_group_name(void) +{ + Edje_Part_Collection_Directory_Entry *de; + + de = evas_list_data(evas_list_last(edje_file->collection_dir->entries)); + de->entry = parse_str(0); } static void ob_collections_group_parts(void) { - Edje_Part_Collection *pc; } static void ob_collections_group_parts_part(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + + ep = mem_alloc(SZ(Edje_Part)); + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + pc->parts = evas_list_append(pc->parts, ep); + ep->id = evas_list_count(pc->parts) - 1; +} + +static void +st_collections_group_parts_part_name(void) { + Edje_Part_Collection *pc; + Edje_Part *ep; + + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + ep = evas_list_data(evas_list_last(pc->parts)); + ep->name = parse_str(0); +} + +static void +st_collections_group_parts_part_type(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + ep = evas_list_data(evas_list_last(pc->parts)); + ep->type = parse_enum(0, + "RECT", EDJE_PART_TYPE_RECTANGLE, + "TEXT", EDJE_PART_TYPE_TEXT, + "IMAGE", EDJE_PART_TYPE_IMAGE, + NULL); +} + +static void +st_collections_group_parts_part_mouse_events(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + ep = evas_list_data(evas_list_last(pc->parts)); + ep->mouse_events = parse_int_range(0, 0, 1); +} + +static void +st_collections_group_parts_part_color_class(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + ep = evas_list_data(evas_list_last(pc->parts)); + ep->color_class = parse_str(0); } static void ob_collections_group_parts_part_description(void) { + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description *ed; + + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + ep = evas_list_data(evas_list_last(pc->parts)); + ed = mem_alloc(SZ(Edje_Part_Description)); + if (!ep->default_desc) + ep->default_desc = ed; + else + ep->other_desc = evas_list_append(ep->other_desc, ed); +} + +static void +st_collections_group_parts_part_description_state(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description *ed; + + pc = evas_list_data(evas_list_last(edje_file->collection_loaded)); + ep = evas_list_data(evas_list_last(pc->parts)); + ed = ep->default_desc; + if (ep->other_desc) ed = evas_list_data(evas_list_last(ep->other_desc)); + ed->state.name = parse_str(0); + ed->state.value = parse_float_range(1, 0.0, 1.0); } static void |