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

Reply via email to