Enlightenment CVS committal Author : leviathan Project : e17 Module : libs/engrave
Dir : e17/libs/engrave/src/lib Modified Files: engrave.l engrave.y engrave_enums.h engrave_parse.c engrave_parse.h engrave_part_state.c engrave_part_state.h engrave_spectrum.c Log Message: Added gradient type =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave.l,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- engrave.l 28 Dec 2006 18:22:56 -0000 1.10 +++ engrave.l 30 Dec 2006 08:10:46 -0000 1.11 @@ -169,6 +169,8 @@ STATE_SET { KEYWORD_RETURN(STATE_SET); } step { KEYWORD_RETURN(STEP); } SWALLOW { KEYWORD_RETURN(SWALLOW); } +GRADIENT { KEYWORD_RETURN(GRADIENT); } +gradient { KEYWORD_RETURN(GRAD); } target { KEYWORD_RETURN(TARGET); } TEXT { KEYWORD_RETURN(TEXT); } TEXTBLOCK { KEYWORD_RETURN(TEXTBLOCK); } =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave.y,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- engrave.y 29 Dec 2006 14:12:12 -0000 1.18 +++ engrave.y 30 Dec 2006 08:10:46 -0000 1.19 @@ -36,17 +36,17 @@ %token CONFINE DATA DESCRIPTION DRAGABLE EFFECT FILL FIT %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 REL1 REL2 RELATIVE REPEAT_EVENTS SCRIPT SIGNAL SIZE GRADREL1 GRADREL2 %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 +%token SINUSOIDAL ACCELERATE DECELERATE IMAGE RECT SWALLOW GRADIENT %token NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW SOFT_SHADOW %token OUTLINE_SHADOW OUTLINE_SOFT_SHADOW VERTICAL HORIZONTAL BOTH -%token SPECTRA SPECTRUM +%token SPECTRA SPECTRUM GRAD %left MINUS PLUS %left TIMES DIVIDE %left NEG /* negation--unary minus */ @@ -226,6 +226,7 @@ program_body: /* blank */ | program_cmd | program_body program_cmd + | program_body SEMICOLON ; program_cmd: name @@ -410,6 +411,9 @@ case STATE: engrave_parse_state_max((int)$3, (int)$4); break; + case TEXT: + engrave_parse_state_text_max((int)$3, (int)$4); + break; default: break; } @@ -458,6 +462,7 @@ | TEXT { $$ = ENGRAVE_PART_TYPE_TEXT; } | TEXTBLOCK { $$ = ENGRAVE_PART_TYPE_TEXTBLOCK; } | SWALLOW { $$ = ENGRAVE_PART_TYPE_SWALLOW; } + | GRADIENT { $$ = ENGRAVE_PART_TYPE_GRADIENT; } | STRING { /* edje accepts quoted part types. */ if (!strcmp($1, "RECT")) $$ = ENGRAVE_PART_TYPE_RECT; @@ -469,6 +474,8 @@ $$ = ENGRAVE_PART_TYPE_TEXTBLOCK; else if (!strcmp($1, "SWALLOW")) $$ = ENGRAVE_PART_TYPE_SWALLOW; + else if (!strcmp($1, "GRADIENT")) + $$ = ENGRAVE_PART_TYPE_GRADIENT; } ; @@ -640,6 +647,34 @@ | color2 | color3 | text + | gradient + ; + +gradient: GRAD OPEN_BRACE {section = GRAD;} grad_statement CLOSE_BRACE semicolon_maybe { section = STATE;} + +grad_statement: /* empty */ + | grad_spectrum grad_statement + | grad_type grad_statement + | grad_rel1 grad_statement + | grad_rel2 grad_statement + ; + +grad_spectrum: SPECTRUM COLON STRING SEMICOLON { + engrave_parse_state_gradient_spectrum($3); + } + ; + +grad_type: TYPE COLON STRING SEMICOLON { + engrave_parse_state_gradient_type($3); + } + ; + +grad_rel1: REL1 OPEN_BRACE {section = GRADREL1;} rel_statement CLOSE_BRACE semicolon_maybe {section = GRAD;} + | REL1 DOT {section = GRADREL1;} rel_body {section = GRAD;} + ; + +grad_rel2: REL2 OPEN_BRACE {section = GRADREL2;} rel_statement CLOSE_BRACE semicolon_maybe {section = GRAD;} + | REL2 DOT {section = GRADREL2;} rel_body {section = GRAD;} ; rel1: REL1 OPEN_BRACE {section = REL1;} rel_statement CLOSE_BRACE semicolon_maybe {section = STATE;} @@ -677,6 +712,12 @@ case SIZE: engrave_parse_state_fill_size_relative($3, $4); break; + case GRADREL1: + engrave_parse_state_gradient_rel1_relative($3, $4); + break; + case GRADREL2: + engrave_parse_state_gradient_rel2_relative($3, $4); + break; default: break; } @@ -698,6 +739,12 @@ case SIZE: engrave_parse_state_fill_size_offset((int)$3, (int)$4); break; + case GRADREL1: + engrave_parse_state_gradient_rel1_offset((int)$3, (int)$4); + break; + case GRADREL2: + engrave_parse_state_gradient_rel2_offset((int)$3, (int)$4); + break; default: break; } @@ -863,6 +910,7 @@ | fit | elipsis | min + | max | align | source ; =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_enums.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- engrave_enums.h 8 Feb 2006 04:38:47 -0000 1.3 +++ engrave_enums.h 30 Dec 2006 08:10:46 -0000 1.4 @@ -42,6 +42,7 @@ 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_GRADIENT, /**< Part is a gradient */ ENGRAVE_PART_TYPE_NUM }; =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_parse.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- engrave_parse.c 29 Dec 2006 14:12:12 -0000 1.16 +++ engrave_parse.c 30 Dec 2006 08:10:46 -0000 1.17 @@ -468,6 +468,85 @@ } void +engrave_parse_state_gradient_spectrum(char * spec) +{ + 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_gradient_spectrum_set(state, spec); +} + +void +engrave_parse_state_gradient_rel1_relative(double x, double y) +{ + 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_gradient_rel1_relative_set(state, x, y); +} + +void +engrave_parse_state_gradient_rel2_relative(double x, double y) +{ + 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_gradient_rel2_relative_set(state, x, y); +} + +void +engrave_parse_state_gradient_rel1_offset(int x, int y) +{ + 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_gradient_rel1_offset_set(state, x, y); +} + +void +engrave_parse_state_gradient_rel2_offset(int x, int y) +{ + 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_gradient_rel2_offset_set(state, x, y); +} + +void +engrave_parse_state_gradient_type(char * type) +{ + 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_gradient_type_set(state, type); +} + + +void engrave_parse_state_rel1_relative(double x, double y) { Engrave_Group *group; @@ -922,6 +1001,19 @@ part = engrave_group_part_last_get(group); state = engrave_part_state_last_get(part); engrave_part_state_text_min_set(state, x, y); +} + +void +engrave_parse_state_text_max(int x, int y) +{ + 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_max_set(state, x, y); } void =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_parse.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- engrave_parse.h 29 Dec 2006 14:12:12 -0000 1.8 +++ engrave_parse.h 30 Dec 2006 08:10:46 -0000 1.9 @@ -83,6 +83,7 @@ void engrave_parse_state_text_size(int size); void engrave_parse_state_text_fit(int x, int y); void engrave_parse_state_text_min(int x, int y); +void engrave_parse_state_text_max(int x, int y); void engrave_parse_state_text_align(double x, double y); void engrave_parse_program(); void engrave_parse_program_script(char *script); @@ -98,5 +99,10 @@ void engrave_parse_program_transition(Engrave_Transition transition, double duration); +void engrave_parse_state_gradient_spectrum(char * spec); +void engrave_parse_state_gradient_rel1_relative(double x, double y); +void engrave_parse_state_gradient_rel2_relative(double x, double y); +void engrave_parse_state_gradient_rel1_offset(int x, int y); +void engrave_parse_state_gradient_rel2_offset(int x, int y); #endif =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_part_state.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- engrave_part_state.c 6 Sep 2006 07:31:31 -0000 1.19 +++ engrave_part_state.c 30 Dec 2006 08:10:46 -0000 1.20 @@ -41,6 +41,16 @@ state->fill.pos_abs.y = 0; state->fill.rel.y = 1.0; state->fill.abs.y = 0; + state->gradient.spectrum = NULL; + state->gradient.type = NULL; + state->gradient.rel1.relative.x = 0.0; + state->gradient.rel1.relative.y = 0.0; + state->gradient.rel1.offset.x = 0; + state->gradient.rel1.offset.y = 0; + state->gradient.rel2.relative.x = 0.0; + state->gradient.rel2.relative.y = 0.0; + state->gradient.rel2.offset.x = 0; + state->gradient.rel2.offset.y = 0; state->color_class = NULL; state->color.r = 255; state->color.g = 255; @@ -81,6 +91,9 @@ eps->image.normal = NULL; eps->image.tween = evas_list_free(eps->image.tween); + IF_FREE(eps->gradient.spectrum); + IF_FREE(eps->gradient.type); + IF_FREE(eps->color_class); IF_FREE(eps->text.text); IF_FREE(eps->text.text_class); @@ -792,6 +805,24 @@ } /** + * engrave_part_state_text_max_set - Set the text max value. + * @param eps: The Engrave_Part_State to set the value too. + * @param x: The x value to set. + * @param y: The y value to set. + * + * @return Returns no value + */ +EAPI void +engrave_part_state_text_max_set(Engrave_Part_State *eps, int x, int y) +{ + if (!eps) return; + eps->text.max.x = x; + eps->text.max.y = y; +} + + + +/** * engrave_part_state_text_align_set - Set the text alignment of the state. * @param eps: The Engrave_Part_State to set the value too. * @param x: The x alignment setting. @@ -1497,5 +1528,120 @@ return (eps ? eps->parent : NULL); } +/** + * engrave_part_state_gradient_spectrum_set - set the spectrum of the gradient on this state + * @param eps: The Engrave_Part_State to set the spectrum for + * @param spec: The name of the spectrum + * + * @return Returns no value. + */ +EAPI void +engrave_part_state_gradient_spectrum_set(Engrave_Part_State *eps, const char *spec) +{ + if (!eps || !spec) return; + eps->gradient.spectrum = strdup(spec); +} + +/** + * engrave_part_state_gradient_spectrum_get - get the spectrum of the gradient on this state + * @param eps: The Engrave_Part_State to get the spectrum for + * + * @return Returns the name of the spectrum used + */ +EAPI const char * +engrave_part_state_gradient_spectrum_get(Engrave_Part_State *eps) +{ + return (eps ? eps->gradient.spectrum : NULL); +} + +/** + * engrave_part_state_gradient_type - set the type of the gradient on this state + * @param eps: The Engrave_Part_State to set the type for + * @param type: The type of the spectrum + * + * @return Returns no value. + */ +EAPI void +engrave_part_state_gradient_type_set(Engrave_Part_State *eps, const char *type) +{ + if (!eps || !type) return; + eps->gradient.type = strdup(type); +} + +/** + * engrave_part_state_gradient_type_get - get the type of the gradient on this state + * @param eps: The Engrave_Part_State to get the type for + * + * @return Returns the type of the gradient + */ +EAPI const char * +engrave_part_state_gradient_type_get(Engrave_Part_State *eps) +{ + return (eps ? eps->gradient.type : NULL); +} + +EAPI void +engrave_part_state_gradient_rel1_relative_set(Engrave_Part_State *eps, double x, double y) +{ + if (!eps) return; + eps->gradient.rel1.relative.x = x; + eps->gradient.rel1.relative.y = y; +} + +EAPI void +engrave_part_state_gradient_rel1_relative_get(Engrave_Part_State *eps, double *x, double *y) +{ + if (!eps) return; + if (x) *x = eps->gradient.rel1.relative.x; + if (y) *y = eps->gradient.rel1.relative.y; +} + +EAPI void +engrave_part_state_gradient_rel2_relative_set(Engrave_Part_State *eps, double x, double y) +{ + if (!eps) return; + eps->gradient.rel2.relative.x = x; + eps->gradient.rel2.relative.y = y; +} + +EAPI void +engrave_part_state_gradient_rel2_relative_get(Engrave_Part_State *eps, double *x, double *y) +{ + if (!eps) return; + if (x) *x = eps->gradient.rel2.relative.x; + if (y) *y = eps->gradient.rel2.relative.y; +} + +EAPI void +engrave_part_state_gradient_rel1_offset_set(Engrave_Part_State *eps, int x, int y) +{ + if (!eps) return; + eps->gradient.rel1.offset.x = x; + eps->gradient.rel1.offset.y = y; +} + +EAPI void +engrave_part_state_gradient_rel1_offset_get(Engrave_Part_State *eps, int *x, int *y) +{ + if (!eps) return; + if (x) *x = eps->gradient.rel1.offset.x; + if (y) *y = eps->gradient.rel1.offset.y; +} + +EAPI void +engrave_part_state_gradient_rel2_offset_set(Engrave_Part_State *eps, int x, int y) +{ + if (!eps) return; + eps->gradient.rel2.offset.x = x; + eps->gradient.rel2.offset.y = y; +} + +EAPI void +engrave_part_state_gradient_rel2_offset_get(Engrave_Part_State *eps, int *x, int *y) +{ + if (!eps) return; + if (x) *x = eps->gradient.rel2.offset.x; + if (y) *y = eps->gradient.rel2.offset.y; +} =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_part_state.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- engrave_part_state.h 6 Sep 2006 07:31:31 -0000 1.13 +++ engrave_part_state.h 30 Dec 2006 08:10:46 -0000 1.14 @@ -82,6 +82,26 @@ } rel1, rel2; /** + * gradient information for the state + */ + struct + { + char * spectrum; /**< Name of the spectrum */ + char * type;/**< Type of the gradient */ + struct { + struct { + double x; + double y; + } relative; + + struct { + int x; + int y; + } offset; + } rel1, rel2; + } gradient; + + /** * image information for the state */ struct @@ -157,12 +177,12 @@ double elipsis; /**< Elipsis */ /** - * Fit and min size information + * Fit, max and min size information */ struct { int x; /**< The x value */ int y; /**< The y value */ - } fit, min; + } fit, min, max; /** * Alignment settings for the text @@ -264,6 +284,7 @@ EAPI void engrave_part_state_text_size_set(Engrave_Part_State *eps, int size); EAPI void engrave_part_state_text_fit_set(Engrave_Part_State *eps, int x, int y); EAPI void engrave_part_state_text_min_set(Engrave_Part_State *eps, int x, int y); +EAPI void engrave_part_state_text_max_set(Engrave_Part_State *eps, int x, int y); EAPI void engrave_part_state_text_align_set(Engrave_Part_State *eps, double x, double y); EAPI void engrave_part_state_copy(Engrave_Part_State *from, @@ -336,6 +357,20 @@ EAPI Evas_Object *engrave_part_state_evas_object_get(Engrave_Part_State *eps); EAPI void engrave_part_state_evas_object_set(Engrave_Part_State *eps, Evas_Object *o); + +EAPI void engrave_part_state_gradient_spectrum_set(Engrave_Part_State *eps, const char *spec); +EAPI const char * engrave_part_state_gradient_spectrum_get(Engrave_Part_State *eps); +EAPI void engrave_part_state_gradient_type_set(Engrave_Part_State *eps, const char *type); +EAPI const char * engrave_part_state_gradient_type_get(Engrave_Part_State *eps); +EAPI void engrave_part_state_gradient_rel1_relative_set(Engrave_Part_State *eps, double x, double y); +EAPI void engrave_part_state_gradient_rel1_relative_get(Engrave_Part_State *eps, double *x, double *y); +EAPI void engrave_part_state_gradient_rel2_relative_set(Engrave_Part_State *eps, double x, double y); +EAPI void engrave_part_state_gradient_rel2_relative_get(Engrave_Part_State *eps, double *x, double *y); +EAPI void engrave_part_state_gradient_rel1_offset_set(Engrave_Part_State *eps, int x, int y); +EAPI void engrave_part_state_gradient_rel1_offset_get(Engrave_Part_State *eps, int *x, int *y); +EAPI void engrave_part_state_gradient_rel2_offset_set(Engrave_Part_State *eps, int x, int y); +EAPI void engrave_part_state_gradient_rel2_offset_get(Engrave_Part_State *eps, int *x, int *y); + /** * @} */ =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_spectrum.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- engrave_spectrum.c 29 Dec 2006 14:12:12 -0000 1.2 +++ engrave_spectrum.c 30 Dec 2006 08:10:46 -0000 1.3 @@ -4,7 +4,6 @@ /** * engrave_spectrum_new - create a new Engrave_Spectrum object - * @param name: The name of the spectrum * * @return Returns a pointer to a newly allocated object on success, or NULL */ ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs