Enlightenment CVS committal Author : rephorm Project : e17 Module : libs/engrave
Dir : e17/libs/engrave/src/lib Modified Files: Engrave.h Makefile.am engrave.l engrave.y engrave_enums.h engrave_file.c engrave_file.h engrave_out.c engrave_parse.c engrave_parse.h engrave_part_state.c engrave_part_state.h engrave_program.c Log Message: patch from Leviathan to bring things more up to date with edje =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/Engrave.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- Engrave.h 24 Oct 2005 10:49:15 -0000 1.12 +++ Engrave.h 8 Feb 2006 04:38:47 -0000 1.13 @@ -84,6 +84,7 @@ #include <engrave_part_state.h> #include <engrave_part.h> #include <engrave_group.h> +#include <engrave_style.h> #include <engrave_file.h> #include <engrave_load.h> =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/Makefile.am,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- Makefile.am 5 Sep 2005 11:18:18 -0000 1.11 +++ Makefile.am 8 Feb 2006 04:38:47 -0000 1.12 @@ -23,6 +23,7 @@ engrave_enums.h \ engrave_file.h \ engrave_font.h \ + engrave_style.h \ engrave_group.h \ engrave_image.h \ engrave_load.h \ @@ -41,6 +42,7 @@ engrave_data.c \ engrave_file.c \ engrave_font.c \ + engrave_style.c \ engrave_group.c \ engrave_image.c \ engrave_parse.c \ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave.l,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- engrave.l 5 Dec 2004 21:16:29 -0000 1.8 +++ engrave.l 8 Feb 2006 04:38:47 -0000 1.9 @@ -95,6 +95,7 @@ aspect_preference { KEYWORD_RETURN(ASPECT_PREFERENCE); } BOTH { KEYWORD_RETURN(BOTH); } border { KEYWORD_RETURN(BORDER); } +middle { KEYWORD_RETURN(MIDDLE); } clip_to { KEYWORD_RETURN(CLIP_TO); } collections { KEYWORD_RETURN(COLLECTIONS); } color { KEYWORD_RETURN(COLOR); } @@ -115,6 +116,10 @@ fit { KEYWORD_RETURN(FIT); } font { KEYWORD_RETURN(FONT); } fonts { KEYWORD_RETURN(FONTS); } +styles { KEYWORD_RETURN(STYLES); } +style { KEYWORD_RETURN(STYLE); } +base { KEYWORD_RETURN(SBASE); } +tag { KEYWORD_RETURN(TAG); } group { KEYWORD_RETURN(GROUP); } HORIZONTAL { KEYWORD_RETURN(HORIZONTAL); } image { KEYWORD_RETURN(IMAGE); } @@ -127,6 +132,7 @@ LOSSY { KEYWORD_RETURN(LOSSY); } max { KEYWORD_RETURN(MAX); } min { KEYWORD_RETURN(MIN); } +fixed { KEYWORD_RETURN(FIXED); } mouse_events { KEYWORD_RETURN(MOUSE_EVENTS); } name { KEYWORD_RETURN(NAME); } NONE { KEYWORD_RETURN(NONE); } @@ -156,14 +162,17 @@ SOFT_OUTLINE { KEYWORD_RETURN(SOFT_OUTLINE); } SOFT_SHADOW { KEYWORD_RETURN(SOFT_SHADOW); } source { KEYWORD_RETURN(SOURCE); } +elipsis { KEYWORD_RETURN(ELIPSIS); } state { KEYWORD_RETURN(STATE); } STATE_SET { KEYWORD_RETURN(STATE_SET); } step { KEYWORD_RETURN(STEP); } SWALLOW { KEYWORD_RETURN(SWALLOW); } target { KEYWORD_RETURN(TARGET); } TEXT { KEYWORD_RETURN(TEXT); } +TEXTBLOCK { KEYWORD_RETURN(TEXTBLOCK); } text { KEYWORD_RETURN(TEXT); } text_class { KEYWORD_RETURN(TEXT_CLASS); } +text_source { KEYWORD_RETURN(TEXT_SOURCE); } to { KEYWORD_RETURN(TO); } to_x { KEYWORD_RETURN(TO_X); } to_y { KEYWORD_RETURN(TO_Y); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave.y,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- engrave.y 20 Oct 2005 05:08:51 -0000 1.14 +++ engrave.y 8 Feb 2006 04:38:47 -0000 1.15 @@ -31,15 +31,16 @@ %token BASE %token STRING FLOAT -%token ACTION AFTER ALIGN ASPECT ASPECT_PREFERENCE BORDER +%token ACTION AFTER ALIGN ASPECT ASPECT_PREFERENCE BORDER MIDDLE %token CLIP_TO COLLECTIONS COLOR COLOR2 COLOR3 COLOR_CLASS %token CONFINE DATA DESCRIPTION DRAGABLE EFFECT FILL FIT -%token FONT FONTS GROUP GROUPS IMAGE IMAGES IN ITEM MAX MIN MOUSE_EVENTS +%token FONT FONTS GROUP GROUPS IMAGE TEXTBLOCK IMAGES IN ITEM MAX MIN FIXED MOUSE_EVENTS %token NAME NORMAL OFFSET ORIGIN PART PARTS PROGRAM PROGRAMS %token REL1 REL2 RELATIVE REPEAT_EVENTS SCRIPT SIGNAL SIZE -%token SMOOTH SOURCE STATE STEP TARGET TEXT TEXT_CLASS TO +%token SMOOTH SOURCE STATE STEP TARGET TEXT TEXT_CLASS TEXT_SOURCE TO %token TO_X TO_Y TRANSITION TWEEN TYPE VISIBLE X Y %token OPEN_BRACE CLOSE_BRACE RAW COMP LOSSY +%token STYLES STYLE SBASE TAG ELIPSIS %token COLON QUOTE SEMICOLON STATE_SET ACTION_STOP SIGNAL_EMIT %token DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE LINEAR %token SINUSOIDAL ACCELERATE DECELERATE IMAGE RECT SWALLOW @@ -78,10 +79,10 @@ } ; -collections: COLLECTIONS OPEN_BRACE {section = GROUPS; } collection_statement CLOSE_BRACE { section = BASE; } +collections: COLLECTIONS OPEN_BRACE {section = GROUPS; } collection_statement CLOSE_BRACE semicolon_maybe { section = BASE; } ; -fonts: FONTS OPEN_BRACE { section = FONTS; } font_statement CLOSE_BRACE { section = BASE; } +fonts: FONTS OPEN_BRACE { section = FONTS; } font_statement CLOSE_BRACE semicolon_maybe { section = BASE; } ; font_statement: /* empty */ @@ -94,7 +95,33 @@ } ; -images: IMAGES OPEN_BRACE { section = IMAGES; } image_statement CLOSE_BRACE { section = BASE; } +styles: STYLES OPEN_BRACE { section = STYLES; } styles_statement CLOSE_BRACE semicolon_maybe { section = BASE; } + ; + +styles_statement: + | style + | styles_statement style + ; + +style: STYLE OPEN_BRACE { engrave_parse_style(); section = STYLE; } style_statement CLOSE_BRACE semicolon_maybe { section = STYLES; } + ; + +style_statement: /* empty too? */ + | style_entry + | style_statement style_entry + ; + +style_entry: name + | base + | tag + ; + +base: BASE COLON STRING SEMICOLON { + engrave_parse_base($3); + } + ; + +images: IMAGES OPEN_BRACE { section = IMAGES; } image_statement CLOSE_BRACE semicolon_maybe { section = BASE; } ; image_statement: /* empty */ @@ -119,7 +146,7 @@ ; /* don't set a section here yet (since BASE and GROUP have data sects) */ -data: DATA OPEN_BRACE data_statement CLOSE_BRACE +data: DATA OPEN_BRACE data_statement CLOSE_BRACE semicolon_maybe ; data_statement: /* empty */ @@ -155,7 +182,7 @@ } ; -programs: PROGRAMS OPEN_BRACE { section = PROGRAMS; } program_statement CLOSE_BRACE { section = BASE; } +programs: PROGRAMS OPEN_BRACE { section = PROGRAMS; } program_statement CLOSE_BRACE semicolon_maybe { section = BASE; } ; program_statement: /* empty */ @@ -163,7 +190,7 @@ | program_statement program ; -program: PROGRAM OPEN_BRACE { engrave_parse_program(); section = PROGRAM; } program_body CLOSE_BRACE { section = PROGRAMS; } +program: PROGRAM OPEN_BRACE { engrave_parse_program(); section = PROGRAM; } program_body CLOSE_BRACE semicolon_maybe { section = PROGRAMS; } ; program_body: /* blank */ @@ -194,12 +221,24 @@ case PROGRAM: engrave_parse_program_name($3); break; + case STYLE: + engrave_parse_style_name($3); default: break; } } ; +base: SBASE COLON STRING SEMICOLON { + engrave_parse_style_base($3); + } + ; + +tag: TAG COLON STRING STRING SEMICOLON { + engrave_parse_style_tag($3, $4); + } + ; + program_signal: SIGNAL COLON STRING SEMICOLON { engrave_parse_program_signal($3); } @@ -259,11 +298,15 @@ ; collection_statement: /* empty */ + | styles + | collection_statement styles + | images + | collection_statement images | group | collection_statement group ; -group: GROUP OPEN_BRACE { engrave_parse_group(); section = GROUP; } group_foo CLOSE_BRACE { section = GROUPS; } +group: GROUP OPEN_BRACE { engrave_parse_group(); section = GROUP; } group_foo CLOSE_BRACE semicolon_maybe { section = GROUPS; } ; group_foo: @@ -321,6 +364,13 @@ } ; +fixed: FIXED COLON exp exp SEMICOLON { + engrave_parse_state_fixed((int)$3, (int)$4); + } + ; + + + max: MAX COLON exp exp SEMICOLON { switch(section) { @@ -336,15 +386,17 @@ } ; -parts: PARTS OPEN_BRACE { section = PARTS; } parts_statement CLOSE_BRACE { section = BASE; } +parts: PARTS OPEN_BRACE { section = PARTS; } parts_statement CLOSE_BRACE semicolon_maybe { section = BASE; } ; parts_statement: /* empty */ | part | parts_statement part + | parts_statement program_statement + | parts_statement programs ; -part: PART OPEN_BRACE { engrave_parse_part(); section = PART; } part_foo CLOSE_BRACE { section = PARTS; } +part: PART OPEN_BRACE { engrave_parse_part(); section = PART; } part_foo CLOSE_BRACE semicolon_maybe { section = PARTS; } ; part_foo: @@ -374,7 +426,20 @@ part_type: IMAGE { $$ = ENGRAVE_PART_TYPE_IMAGE; } | RECT { $$ = ENGRAVE_PART_TYPE_RECT; } | TEXT { $$ = ENGRAVE_PART_TYPE_TEXT; } + | TEXTBLOCK { $$ = ENGRAVE_PART_TYPE_TEXTBLOCK; } | SWALLOW { $$ = ENGRAVE_PART_TYPE_SWALLOW; } + | STRING { /* edje accepts quoted part types. */ + if (!strcmp($1, "RECT")) + $$ = ENGRAVE_PART_TYPE_RECT; + else if (!strcmp($1, "IMAGE")) + $$ = ENGRAVE_PART_TYPE_IMAGE; + else if (!strcmp($1, "TEXT")) + $$ = ENGRAVE_PART_TYPE_TEXT; + else if (!strcmp($1, "TEXTBLOCK")) + $$ = ENGRAVE_PART_TYPE_TEXTBLOCK; + else if (!strcmp($1, "SWALLOW")) + $$ = ENGRAVE_PART_TYPE_SWALLOW; + } ; effect: EFFECT COLON effect_type SEMICOLON { @@ -428,7 +493,7 @@ | description ; -dragable: DRAGABLE OPEN_BRACE { section = DRAGABLE; } dragable_statement CLOSE_BRACE { section = PART; } +dragable: DRAGABLE OPEN_BRACE { section = DRAGABLE; } dragable_statement CLOSE_BRACE semicolon_maybe { section = PART; } ; dragable_statement: /* empty */ @@ -456,7 +521,7 @@ } ; -description: DESCRIPTION OPEN_BRACE { engrave_parse_state(); section = STATE; } desc_foo CLOSE_BRACE { section = PART; } +description: DESCRIPTION OPEN_BRACE { engrave_parse_state(); section = STATE; } desc_foo CLOSE_BRACE semicolon_maybe { section = PART; } ; desc_foo: @@ -474,6 +539,7 @@ | align | min | max + | fixed | step | aspect | aspect_preference @@ -546,11 +612,11 @@ | text ; -rel1: REL1 OPEN_BRACE {section = REL1;} rel_statement CLOSE_BRACE {section = STATE;} +rel1: REL1 OPEN_BRACE {section = REL1;} rel_statement CLOSE_BRACE semicolon_maybe {section = STATE;} | REL1 DOT {section = REL1;} rel_body {section = STATE;} ; -rel2: REL2 OPEN_BRACE {section = REL2;} rel_statement CLOSE_BRACE {section = STATE;} +rel2: REL2 OPEN_BRACE {section = REL2;} rel_statement CLOSE_BRACE semicolon_maybe {section = STATE;} | REL2 DOT {section = REL2;} rel_body {section = STATE;} ; @@ -654,7 +720,7 @@ } ; -desc_image: IMAGE OPEN_BRACE { section = IMAGE; } image_state_statement CLOSE_BRACE { section = STATE; } +desc_image: IMAGE OPEN_BRACE { section = IMAGE; } image_state_statement CLOSE_BRACE semicolon_maybe { section = STATE; } | IMAGE DOT { section = IMAGE; } image_body { section = STATE; } ; @@ -666,6 +732,12 @@ image_body: normal | tween | border + | middle + ; + +middle: MIDDLE COLON exp SEMICOLON { + engrave_parse_state_image_middle((int)$3); + } ; normal: NORMAL COLON STRING SEMICOLON { @@ -683,7 +755,7 @@ } ; -fill: FILL OPEN_BRACE { section = FILL; } fill_statement CLOSE_BRACE { section = STATE; } +fill: FILL OPEN_BRACE { section = FILL; } fill_statement CLOSE_BRACE semicolon_maybe { section = STATE; } | FILL DOT {section = FILL; } fill_body { section = STATE; } ; @@ -702,7 +774,7 @@ } ; -origin: ORIGIN OPEN_BRACE { section = ORIGIN; } origin_statement CLOSE_BRACE { section = FILL; } +origin: ORIGIN OPEN_BRACE { section = ORIGIN; } origin_statement CLOSE_BRACE semicolon_maybe { section = FILL; } | ORIGIN DOT { section = ORIGIN; } origin_body { section = FILL; } ; @@ -715,7 +787,7 @@ | offset ; -size: SIZE OPEN_BRACE { section = SIZE; } origin_statement CLOSE_BRACE { section = FILL; } +size: SIZE OPEN_BRACE { section = SIZE; } origin_statement CLOSE_BRACE semicolon_maybe { section = FILL; } | SIZE DOT { section = SIZE; } origin_body { section = FILL; } ; @@ -739,10 +811,14 @@ } ; -text: TEXT OPEN_BRACE { section = TEXT; } text_statement CLOSE_BRACE { section = STATE; } +text: TEXT OPEN_BRACE { section = TEXT; } text_statement CLOSE_BRACE semicolon_maybe { section = STATE; } | TEXT DOT { section = TEXT; } text_body { section = STATE; } ; +semicolon_maybe: /* after braces, we can have semicolons. Is this how to solve this? */ + | SEMICOLON + ; + text_statement: /* empty */ | text_body | text_statement text_body @@ -750,15 +826,46 @@ text_body: text_entry | text_class + | text_source + | text_style | font_entry | size_entry | fit + | elipsis | min | align + | source + ; + +elipsis: ELIPSIS COLON exp SEMICOLON { + engrave_parse_state_text_elipsis((int)$3); + } + ; + +text_style: STYLE COLON STRING SEMICOLON { + engrave_parse_state_text_style($3); + } + ; + +source: SOURCE COLON STRING SEMICOLON { + engrave_parse_state_text_source($3); + } + ; + +text_entry: TEXT COLON text_string SEMICOLON + ; + +text_string: + | STRING { + engrave_parse_state_text_text_add($1); + } + | text_string STRING { + engrave_parse_state_text_text_add($2); + } ; -text_entry: TEXT COLON STRING SEMICOLON { - engrave_parse_state_text_text($3); +text_source: TEXT_SOURCE COLON STRING SEMICOLON { + engrave_parse_state_text_text_source($3); } ; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_enums.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- engrave_enums.h 24 Oct 2004 06:28:37 -0000 1.2 +++ engrave_enums.h 8 Feb 2006 04:38:47 -0000 1.3 @@ -39,6 +39,7 @@ { ENGRAVE_PART_TYPE_IMAGE, /**< Part is an image */ ENGRAVE_PART_TYPE_TEXT, /**< Part is text */ + ENGRAVE_PART_TYPE_TEXTBLOCK, /**< Part is textblock */ ENGRAVE_PART_TYPE_RECT, /**< Part is a rectangle */ ENGRAVE_PART_TYPE_SWALLOW, /**< Part is a swallow */ ENGRAVE_PART_TYPE_NUM =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_file.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- engrave_file.c 5 Sep 2005 10:32:57 -0000 1.18 +++ engrave_file.c 8 Feb 2006 04:38:47 -0000 1.19 @@ -128,6 +128,21 @@ } /** + * engrave_file_style_add - add the style to the engrave file. + * @param e: The Engrave_File to add the style too. + * @param ef: The Engrave_Style to add to the file. + * + * @return Returns no value. + */ +void +engrave_file_style_add(Engrave_File *e, Engrave_Style *es) +{ + if (!e || !es) return; + e->styles = evas_list_append(e->styles, es); + engrave_style_parent_set(es, e); +} + +/** * engrave_file_image_add - add the image to the engrave file. * @param ef: The Engrave_File to add the image too. * @param ei: The Engrave_Image to add to the file. @@ -173,6 +188,20 @@ } /** + * engrave_file_style_last_get - returns the last style in the file + * @param ef: The Engrave_File from which to retrieve the group + * + * @return Returns the last Engrave_Style in the engrave file @a ef or NULL + * if there are no available groups. + */ +Engrave_Style * +engrave_file_style_last_get(Engrave_File *ef) +{ + if (!ef) return NULL; + return evas_list_data(evas_list_last(ef->styles)); +} + +/** * engrave_file_group_last_get - returns the last group in the file * @param ef: The Engrave_File from which to retrieve the group * @@ -268,6 +297,19 @@ } /** + * engrave_file_styles_count - count the styles in the file + * @param ef: The Engrave_File to check for styles + * + * @return Returns the number of styles in the file, 0 otherwise + */ +int +engrave_file_styles_count(Engrave_File *ef) +{ + if (!ef) return 0; + return evas_list_count(ef->styles); +} + +/** * engrave_file_fonts_count - count the fonts in the file * @param ef: The Engrave_File to check for fonts * @@ -347,6 +389,29 @@ } /** + * engrave_file_style_foreach - call the given function for each style object + * @param ef: The Engrave_File for which the styles should be iterated over + * @param func: The function to call for each style + * @param data: Any user data to pass to the given function. + * + * @return Returns no value. + */ +void +engrave_file_style_foreach(Engrave_File *ef, + void (*func)(Engrave_Style *, void *data), + void *data) +{ + Evas_List *l; + + if (!engrave_file_styles_count(ef)) return; + for (l = ef->styles; l; l = l->next) { + Engrave_Style *style = l->data; + if (style) func(style, data); + } +} + + +/** * engrave_file_font_foreach - call the given function for each font object * @param ef: The Engrave_File for which the fonts should be iterated over * @param func: The function to call for each font =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_file.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- engrave_file.h 5 Dec 2004 21:16:29 -0000 1.11 +++ engrave_file.h 8 Feb 2006 04:38:47 -0000 1.12 @@ -27,6 +27,7 @@ Evas_List *images; /**< The list of images in the file */ Evas_List *fonts; /**< The list of fonts in the file */ + Evas_List *styles; /**< The list of styles in the file */ Evas_List *data; /**< The list of data items in the file */ Evas_List *groups; /**< The list of groups in the file */ }; @@ -41,10 +42,13 @@ const char *engrave_file_font_dir_get(Engrave_File *ef); void engrave_file_font_add(Engrave_File *e, Engrave_Font *ef); +void engrave_file_style_add(Engrave_File *e, Engrave_Style *es); void engrave_file_image_add(Engrave_File *ef, Engrave_Image *ei); void engrave_file_data_add(Engrave_File *ef, Engrave_Data *ed); void engrave_file_group_add(Engrave_File *ef, Engrave_Group *eg); +Engrave_Style *engrave_file_style_last_get(Engrave_File *ef); + Engrave_Group *engrave_file_group_last_get(Engrave_File *ef); Engrave_Group *engrave_file_group_by_name_find(Engrave_File *ef, const char *name); @@ -58,6 +62,7 @@ int engrave_file_data_count(Engrave_File *ef); int engrave_file_groups_count(Engrave_File *ef); int engrave_file_fonts_count(Engrave_File *ef); +int engrave_file_styles_count(Engrave_File *ef); void engrave_file_image_foreach(Engrave_File *ef, void (*func)(Engrave_Image *, void *), @@ -71,6 +76,9 @@ void engrave_file_font_foreach(Engrave_File *ef, void (*func)(Engrave_Font *, void *), void *data); +void engrave_file_style_foreach(Engrave_File *ef, + void (*func)(Engrave_Style *, void *), + void *data); Engrave_Data *engrave_file_data_by_key_find(Engrave_File *ef, const char *key); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_out.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- engrave_out.c 8 Oct 2005 22:46:35 -0000 1.30 +++ engrave_out.c 8 Feb 2006 04:38:47 -0000 1.31 @@ -12,6 +12,7 @@ static void _engrave_output_state(Engrave_Part_State *state, Engrave_Part *part, void *data); static void _engrave_output_image(Engrave_Image *image, void *data); static void _engrave_output_font(Engrave_Font *font, void *data); +static void _engrave_output_style(Engrave_Style *style, void *data); static void _engrave_output_data(Engrave_Data *data, void *udata); static void _engrave_output_group(Engrave_Group *group, void *data); static void _engrave_program_output_after(const char *after, void *data); @@ -29,6 +30,7 @@ static char *_part_type_string[ENGRAVE_PART_TYPE_NUM] = { "IMAGE", "TEXT", + "TEXTBLOCK", "RECT", "SWALLOW" }; @@ -197,6 +199,11 @@ engrave_file_data_foreach(engrave_file, _engrave_output_data, out); engrave_out_end(out); + /* style */ + engrave_out_start(out, "styles"); + engrave_file_style_foreach(engrave_file, _engrave_output_style, out); + engrave_out_end(out); + /* collections */ engrave_out_start(out, "collections"); engrave_file_group_foreach(engrave_file, _engrave_output_group, out); @@ -303,14 +310,19 @@ Engrave_Action action; double value, value2; char state[128], state2[128]; - + char *tmp; + engrave_out_start(out, "program"); engrave_out_data(out, "name", "\"%s\"", engrave_program_name_get(program)); - engrave_out_data(out, "signal", "\"%s\"", - engrave_program_signal_get(program)); - engrave_out_data(out, "source", "\"%s\"", - engrave_program_source_get(program)); + + tmp = (char *) engrave_program_signal_get(program); + if (tmp) + engrave_out_data(out, "signal", "\"%s\"", tmp); + + tmp = (char *) engrave_program_source_get(program); + if (tmp) + engrave_out_data(out, "source", "\"%s\"", tmp); engrave_program_action_get(program, &action, state, state2, 128, 128, &value, &value2); @@ -327,6 +339,7 @@ break; case ENGRAVE_ACTION_STATE_SET: + if (state[0] != '\0') { Engrave_Transition transition; double duration; @@ -392,6 +405,10 @@ engrave_out_start(out, "description"); tmp = engrave_part_state_name_get(state, &x); + if (!tmp) { + tmp = strdup("default"); + x = 0.0; + } engrave_out_data(out, "state", "\"%s\" %.2f", tmp, x); engrave_out_data(out, "visible", "%d", engrave_part_state_visible_get(state)); @@ -412,6 +429,10 @@ if (w >= 0 || h >= 0) engrave_out_data(out, "max", "%d %d", w, h); + engrave_part_state_fixed_size_get(state, &ix, &iy); + if (ix || iy) + engrave_out_data(out, "fixed", "%.2f %.2f", ix, iy); + engrave_part_state_aspect_get(state, &x, &y); if (x || y) engrave_out_data(out, "aspect", "%.2f %.2f", x, y); @@ -491,6 +512,9 @@ engrave_part_state_image_border_get(state, &l, &r, &t, &b); if (l || r || t || b) engrave_out_data(out, "border", "%d %d %d %d", l, r, t, b); + l = engrave_part_state_image_middle_get(state); + if (l != 0) + engrave_out_data(out, "middle", "%d", l); engrave_out_end(out); } else if (engrave_part_type_get(part) == ENGRAVE_PART_TYPE_TEXT) @@ -505,6 +529,18 @@ engrave_out_data(out, "text_class", "\"%s\"", engrave_part_state_text_text_class_get(state)); + if (engrave_part_state_text_text_source_get(state)) + engrave_out_data(out, "text_source", "\"%s\"", + engrave_part_state_text_text_source_get(state)); + + if (engrave_part_state_text_source_get(state)) + engrave_out_data(out, "source", "\"%s\"", + engrave_part_state_text_source_get(state)); + + if (engrave_part_state_text_style_get(state)) + engrave_out_data(out, "style", "\"%s\"", + engrave_part_state_text_style_get(state)); + if (engrave_part_state_text_font_get(state)) engrave_out_data(out, "font", "\"%s\"", engrave_part_state_text_font_get(state)); @@ -517,6 +553,10 @@ if (ix || iy) engrave_out_data(out, "fit", "%d %d", ix, iy); + if (engrave_part_state_text_elipsis_get(state) != 0.0) + engrave_out_data(out, "elipsis", "%d", + engrave_part_state_text_elipsis_get(state)); + engrave_part_state_text_min_get(state, &ix, &iy); if (ix || iy) engrave_out_data(out, "min", "%d %d", ix, iy); @@ -610,6 +650,31 @@ } static void +_engrave_output_style(Engrave_Style *style, void *data) +{ + FILE *out; + + out = data; + + engrave_out_start(out, "style"); + engrave_out_data(out, "name", "\"%s\"", engrave_style_name_get(style)); + engrave_out_data(out, "base", "\"%s\"", engrave_style_base_get(style)); + + Evas_List * tags; + + for (tags = engrave_style_tag_get(style); tags; tags = tags->next) { + Engrave_Tag * tag; + tag = tags->data; + engrave_out_data(out, "tag", "\"%s\" \"%s\"", tag->key, tag->val); + } + + engrave_out_end(out); + +} + + + +static void _engrave_output_data(Engrave_Data *data, void *udata) { const char *key; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_parse.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- engrave_parse.c 5 Sep 2005 10:32:57 -0000 1.13 +++ engrave_parse.c 8 Feb 2006 04:38:47 -0000 1.14 @@ -102,6 +102,57 @@ } void +engrave_parse_style() +{ + Engrave_Style *style; + + style = engrave_style_new(); + engrave_file_style_add(engrave_file, style); +} + +void +engrave_parse_base(char *base) +{ + Engrave_Style *style; + + style = engrave_file_style_last_get(engrave_file); + engrave_style_base_set(style, base); +} + + + +void +engrave_parse_style_name(char *name) +{ + Engrave_Style *style; + + style = engrave_file_style_last_get(engrave_file); + engrave_style_name_set(style, name); +} + +void +engrave_parse_style_base(char *base) +{ + Engrave_Style *style; + + style = engrave_file_style_last_get(engrave_file); + engrave_style_base_set(style, base); +} + +void +engrave_parse_style_tag(char *key, char *val) +{ + Engrave_Style *style; + Engrave_Tag *tag; + + style = engrave_file_style_last_get(engrave_file); + + tag = engrave_tag_new(key, val); + engrave_style_tag_add(style, tag); +} + + +void engrave_parse_part() { Engrave_Group *group; @@ -262,12 +313,13 @@ Engrave_Part_State *to; Engrave_Part_State *from; const char *state_name; + double state_value; group = engrave_file_group_last_get(engrave_file); part = engrave_group_part_last_get(group); to = engrave_part_state_last_get(part); - state_name = engrave_part_state_name_get(to, NULL); + state_name = engrave_part_state_name_get(to, &state_value); /* must have a name set before we can be inherited into */ if (!state_name) { @@ -278,7 +330,7 @@ } /* can't inherit into the default part */ - if ((strlen(state_name) == 7) && (!strncmp(state_name, "default", 7))) { + if ((strlen(state_name) == 7) && (!strncmp(state_name, "default", 7)) && state_value == 0.0 ) { const char *part_name = engrave_part_name_get(part); fprintf(stderr, "part %s: " "inherit may not be used in the default description!\n", @@ -333,6 +385,19 @@ } void +engrave_parse_state_fixed(double w, double h) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_fixed_size_set(state, w, h); +} + +void engrave_parse_state_max(double w, double h) { Engrave_Group *group; @@ -521,6 +586,20 @@ } void +engrave_parse_state_image_middle(int middle) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_image_middle_set(state, middle); + +} + +void engrave_parse_state_image_tween(char *name) { Engrave_Group *group; @@ -683,6 +762,73 @@ } void +engrave_parse_state_text_text_add(char *text) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_text_text_append(state, text); +} + +void +engrave_parse_state_text_elipsis(double val) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_text_elipsis_set(state, val); +} + + +void +engrave_parse_state_text_text_source(char *text_source) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_text_text_source_set(state, text_source); +} + +void +engrave_parse_state_text_source(char *source) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_text_source_set(state, source); +} + + +void +engrave_parse_state_text_style(char *style) +{ + Engrave_Group *group; + Engrave_Part *part; + Engrave_Part_State *state; + + group = engrave_file_group_last_get(engrave_file); + part = engrave_group_part_last_get(group); + state = engrave_part_state_last_get(part); + engrave_part_state_text_style_set(state, style); +} + +void engrave_parse_state_text_text_class(char *text_class) { Engrave_Group *group; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_parse.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- engrave_parse.h 5 Dec 2004 21:16:29 -0000 1.4 +++ engrave_parse.h 8 Feb 2006 04:38:47 -0000 1.5 @@ -15,6 +15,14 @@ void engrave_parse_group_name(char *name); void engrave_parse_group_min(int w, int h); void engrave_parse_group_max(int w, int h); + +void engrave_parse_style(); +void engrave_parse_style_name(char * name); +void engrave_parse_style_base(char * base); +void engrave_parse_style_tag(char * key, char * val); + +void engrave_parse_base(char *base); + void engrave_parse_part(); void engrave_parse_part_name(char *name); void engrave_parse_part_type(Engrave_Part_Type type); @@ -32,6 +40,7 @@ void engrave_parse_state_align(double x, double y); void engrave_parse_state_step(double x, double y); void engrave_parse_state_min(double w, double h); +void engrave_parse_state_fixed(double w, double h); void engrave_parse_state_max(double w, double h); void engrave_parse_state_aspect(double w, double h); void engrave_parse_state_aspect_preference( @@ -47,6 +56,7 @@ void engrave_parse_state_rel2_to_y(char *to); void engrave_parse_state_rel2_to(char *to); void engrave_parse_state_image_normal(char *name); +void engrave_parse_state_image_middle(int middle); void engrave_parse_state_image_tween(char *name); void engrave_parse_image_border(int l, int r, int t, int b); void engrave_parse_state_color_class(char *color_class); @@ -59,7 +69,13 @@ void engrave_parse_state_fill_origin_offset(int x, int y); void engrave_parse_state_fill_size_offset(int x, int y); void engrave_parse_state_text_text(char *text); +void engrave_parse_state_text_elipsis(double val); +void engrave_parse_state_text_style(char * style); +void engrave_parse_state_text_text_add(char *text); /* used to concat texts */ void engrave_parse_state_text_text_class(char *text_class); +void engrave_parse_state_text_text_source(char *text_source); +void engrave_parse_state_text_text_style(char *text_style); +void engrave_parse_state_text_source(char *source); void engrave_parse_state_text_font(char *font); void engrave_parse_state_text_size(int size); void engrave_parse_state_text_fit(int x, int y); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_part_state.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- engrave_part_state.c 5 Sep 2005 10:32:57 -0000 1.17 +++ engrave_part_state.c 8 Feb 2006 04:38:47 -0000 1.18 @@ -168,6 +168,24 @@ eps->min.h = h; } + + +/** + * engrave_part_state_fixed_size_set - Set the fixed size of the state. + * @param eps: The Engrave_Part_State to set the value too. + * @param w: for the width + * @param h: for the height + * + * @return Returns no value + */ +void +engrave_part_state_fixed_size_set(Engrave_Part_State *eps, int w, int h) +{ + if (!eps) return; + eps->fixed.w = w; + eps->fixed.h = h; +} + /** * engrave_part_state_max_size_set - Set the max size of the state. * @param eps: The Engrave_Part_State to set the value too. @@ -418,6 +436,22 @@ eps->image.border.b = b; } + +/** + * engrave_part_state_image_middle_set - Set the middle on the image. + * @param eps: The Engrave_Part_State to set the value too. + * @param middle: The middle value. + * + * @return Returns no value k + */ +void +engrave_part_state_image_middle_set(Engrave_Part_State *eps, + int middle) +{ + if (!eps) return; + eps->image.middle = middle; +} + /** * engrave_part_state_color_class_set - Set the colour class on the state. * @param eps: The Engrave_Part_State to set the value too. @@ -594,6 +628,92 @@ } /** + * engrave_part_state_text_text_append - Appends the text string of the state. + * @param eps: The Engrave_Part_State to set the value too. + * @param text: The text string to append. + * + * @return Returns no value + */ +void +engrave_part_state_text_text_append(Engrave_Part_State *eps, const char *text) +{ + if (!eps) return; + if (!text) return; + if (!eps->text.text) + eps->text.text = text ? strdup(text) : NULL; + else { + int len = strlen(eps->text.text) + strlen(text); + eps->text.text = realloc(eps->text.text, len); + eps->text.text = strncat(eps->text.text, text, len); + } +} + +/** + * engrave_part_state_text_elipsis_set - Set the text elipsis of the state. + * @param eps: The Engrave_Part_State to set the value too. + * @param val: The value to set to the state. + * + * @return Returns no value + */ +void +engrave_part_state_text_elipsis_set(Engrave_Part_State *eps, + double val) +{ + if (!eps) return; + eps->text.elipsis = val; +} + +/** + * engrave_part_state_text_text_source_set - Set the text source of the state. + * @param eps: The Engrave_Part_State to set the value too. + * @param text_source: The text source to set to the state. + * + * @return Returns no value + */ +void +engrave_part_state_text_text_source_set(Engrave_Part_State *eps, + const char *text_source) +{ + if (!eps) return; + IF_FREE(eps->text.text_source); + eps->text.text_source = (text_source ? strdup(text_source) : NULL); +} + +/** + * engrave_part_state_text_source_set - Set the source of the text. + * @param eps: The Engrave_Part_State to set the value too. + * @param source: The text source to set to the state. + * + * @return Returns no value + */ +void +engrave_part_state_text_source_set(Engrave_Part_State *eps, + const char *source) +{ + if (!eps) return; + IF_FREE(eps->text.source); + eps->text.source = (source ? strdup(source) : NULL); +} + + +/** + * engrave_part_state_text_style_set - Set the text style of the state. + * @param eps: The Engrave_Part_State to set the value too. + * @param text_style: The text style to set to the state. + * + * @return Returns no value + */ +void +engrave_part_state_text_style_set(Engrave_Part_State *eps, const char *text_style) +{ + if (!eps) return; + IF_FREE(eps->text.style); + eps->text.style = (text_style ? strdup(text_style) : NULL); +} + + + +/** * engrave_part_state_text_text_class_set - Set the text class of the state. * @param eps: The Engrave_Part_State to set the value too. * @param text_class: The text class to set to the state. @@ -829,6 +949,22 @@ } /** + * engrave_part_state_fixed_size_get - get the fixed size of the state + * @param eps: The Engrave_Part_State to get the min from + * @param w: Where to store the w value + * @param h: Where to store the h value + * + * @return Returns no value. + */ +void +engrave_part_state_fixed_size_get(Engrave_Part_State *eps, int *w, int *h) +{ + if (w) *w = (eps ? eps->fixed.w : 0); + if (h) *h = (eps ? eps->fixed.h : 0); +} + + +/** * engrave_part_state_max_size_get - get the maximum size of the state * @param eps: The Engrave_Part_State to get the max from * @param w: Where to store the w value @@ -1084,6 +1220,20 @@ } /** + * engrave_part_state_image_middle_get - get the middle settings + * @param eps: The Engrave_Part_State to get the settings from + * + * @return Returns the middle value. + */ +int +engrave_part_state_image_middle_get(Engrave_Part_State *eps) +{ + if (eps) return eps->image.middle; + return 0; +} + + +/** * engrave_part_state_text_text_get - get the text value * @param eps: The Engrave_Part_State to get the text from * @@ -1096,6 +1246,18 @@ } /** + * engrave_part_state_text_style_get - get the text style + * @param eps: The Engrave_Part_State to get the value from + * + * @return Returns the text style or NULL on failure. + */ +const char * +engrave_part_state_text_style_get(Engrave_Part_State *eps) +{ + return (eps ? eps->text.style : NULL); +} + +/** * engrave_part_state_text_text_class_get - get the text class * @param eps: The Engrave_Part_State to get the value from * @@ -1108,6 +1270,30 @@ } /** + * engrave_part_state_text_text_source_get - get the text text_source + * @param eps: The Engrave_Part_State to get the value from + * + * @return Returns the text source or NULL on failure. + */ +const char * +engrave_part_state_text_text_source_get(Engrave_Part_State *eps) +{ + return (eps ? eps->text.text_source : NULL); +} + +/** + * engrave_part_state_text_source_get - get the text text_source + * @param eps: The Engrave_Part_State to get the value from + * + * @return Returns the source or NULL on failure. + */ +const char * +engrave_part_state_text_source_get(Engrave_Part_State *eps) +{ + return (eps ? eps->text.source : NULL); +} + +/** * engrave_part_state_text_font_get - get the text font * @param eps: The Engrave_Part_State to get the font from * @@ -1147,6 +1333,18 @@ } /** + * engrave_part_state_text_elipsis_get - get the text elipsis settings + * @param eps: The Engrave_Part_State to get the values from + * + * @return The elipsis value + */ +double +engrave_part_state_text_elipsis_get(Engrave_Part_State *eps) +{ + return (eps ? eps->text.elipsis : 0.0); +} + +/** * engrave_part_state_text_min_get - get the text min size * @param eps: The Engrave_Part_State to get the values from * @param x: Where to store the x value =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_part_state.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- engrave_part_state.h 5 Dec 2004 21:16:29 -0000 1.11 +++ engrave_part_state.h 8 Feb 2006 04:38:47 -0000 1.12 @@ -42,7 +42,7 @@ { int w; /**< width value */ int h; /**< height value */ - } min, max; + } min, max, fixed; /** * The aspect ratio settings for the state @@ -89,6 +89,7 @@ Engrave_Image *normal; /**< The image itself */ Evas_List *tween; /**< List of tween images */ + int middle; /**< The middle information */ /** * The border information */ @@ -147,9 +148,13 @@ { char *text; /**< The text string */ char *text_class; /**< The text class */ + char *text_source; /**< The text source */ + char *source; /**< The text source ? */ char *font; /**< The font to use */ + char *style; /**< The text style */ int size; /**< Size to display as */ + double elipsis; /**< Elipsis */ /** * Fit and min size information @@ -193,6 +198,7 @@ void engrave_part_state_align_set(Engrave_Part_State *eps, double x, double y); void engrave_part_state_step_set(Engrave_Part_State *eps, double x, double y); void engrave_part_state_min_size_set(Engrave_Part_State *eps, int w, int h); +void engrave_part_state_fixed_size_set(Engrave_Part_State *eps, int w, int h); void engrave_part_state_max_size_set(Engrave_Part_State *eps, int w, int h); void engrave_part_state_aspect_set(Engrave_Part_State *eps, double w, double h); void engrave_part_state_aspect_preference_set(Engrave_Part_State *eps, @@ -218,6 +224,8 @@ void engrave_part_state_image_border_set(Engrave_Part_State *eps, int l, int r, int t, int b); +void engrave_part_state_image_middle_set(Engrave_Part_State *eps, + int middle); void engrave_part_state_color_class_set(Engrave_Part_State *eps, const char *class); void engrave_part_state_color_set(Engrave_Part_State *eps, @@ -239,8 +247,18 @@ void engrave_part_state_text_text_set(Engrave_Part_State *eps, const char *text); +void engrave_part_state_text_elipsis_set(Engrave_Part_State *eps, + double val); +void engrave_part_state_text_text_append(Engrave_Part_State *eps, + const char *text); void engrave_part_state_text_text_class_set(Engrave_Part_State *eps, const char *text); +void engrave_part_state_text_style_set(Engrave_Part_State *eps, + const char *style); +void engrave_part_state_text_text_source_set(Engrave_Part_State *eps, + const char *source); +void engrave_part_state_text_source_set(Engrave_Part_State *eps, + const char *source); void engrave_part_state_text_font_set(Engrave_Part_State *eps, const char *font); void engrave_part_state_text_size_set(Engrave_Part_State *eps, int size); @@ -258,6 +276,7 @@ void engrave_part_state_step_get(Engrave_Part_State *eps, double *x, double *y); void engrave_part_state_min_size_get(Engrave_Part_State *eps, int *w, int *h); +void engrave_part_state_fixed_size_get(Engrave_Part_State *eps, int *w, int *h); void engrave_part_state_max_size_get(Engrave_Part_State *eps, int *w, int *h); void engrave_part_state_aspect_get(Engrave_Part_State *eps, double *w, double *h); @@ -285,12 +304,17 @@ Engrave_Image *engrave_part_state_image_normal_get(Engrave_Part_State *eps); void engrave_part_state_image_border_get(Engrave_Part_State *eps, int *l, int *r, int *t, int *b); +int engrave_part_state_image_middle_get(Engrave_Part_State *eps); const char *engrave_part_state_text_text_get(Engrave_Part_State *eps); const char *engrave_part_state_text_text_class_get(Engrave_Part_State *eps); +const char *engrave_part_state_text_style_get(Engrave_Part_State *eps); +const char *engrave_part_state_text_text_source_get(Engrave_Part_State *eps); +const char *engrave_part_state_text_source_get(Engrave_Part_State *eps); const char *engrave_part_state_text_font_get(Engrave_Part_State *eps); int engrave_part_state_text_size_get(Engrave_Part_State *eps); void engrave_part_state_text_fit_get(Engrave_Part_State *eps, int *x, int *y); +double engrave_part_state_text_elipsis_get(Engrave_Part_State *eps); void engrave_part_state_text_min_get(Engrave_Part_State *eps, int *x, int *y); void engrave_part_state_text_align_get(Engrave_Part_State *eps, =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_program.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- engrave_program.c 5 Sep 2005 10:32:57 -0000 1.15 +++ engrave_program.c 8 Feb 2006 04:38:47 -0000 1.16 @@ -257,10 +257,14 @@ if (action) *action = (ep ? ep->action : ENGRAVE_ACTION_NUM); if (value) *value = (ep ? ep->value : 0); if (value2) *value2 = (ep ? ep->value2 : 0); - if (state) - snprintf(state, state_len, "%s", (ep ? ep->state : "")); - if (state2) - snprintf(state2, state2_len, "%s", (ep ? ep->state2 : "")); + if (state) { + if (ep && ep->state) snprintf(state, state_len, "%s", ep->state); + else state[0] = '\0'; + } + if (state2) { + if (ep && ep->state2) snprintf(state2, state2_len, "%s",ep->state2); + else state2[0] = '\0'; + } } /** ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs