Enlightenment CVS committal

Author  : leviathan
Project : e17
Module  : libs/engrave

Dir     : e17/libs/engrave/src/lib


Modified Files:
        .cvsignore Engrave.h Makefile.am engrave.l engrave.y 
        engrave_file.c engrave_file.h engrave_out.c engrave_parse.c 
        engrave_parse.h engrave_spectrum.c 
Added Files:
        engrave_color_class.c engrave_color_class.h 


Log Message:
Add color classes support 
Only catch is wherever color_class definitions appear in the source file, they 
will end up in the main color_classes block

===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/.cvsignore,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- .cvsignore  29 Dec 2006 18:27:30 -0000      1.4
+++ .cvsignore  29 Jul 2007 14:48:30 -0000      1.5
@@ -19,6 +19,7 @@
 libengrave_la-engrave_program.lo
 libengrave_la-engrave_style.lo
 libengrave_la-engrave_spectrum.lo
+libengrave_la-engrave_color_class.lo
 libengrave_la-libengrave_la-engrave.lo
 .deps
 .libs
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/Engrave.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- Engrave.h   27 Mar 2007 02:10:36 -0000      1.16
+++ Engrave.h   29 Jul 2007 14:48:30 -0000      1.17
@@ -100,6 +100,7 @@
 #include <engrave_image.h>
 #include <engrave_font.h>
 #include <engrave_spectrum.h>
+#include <engrave_color_class.h>
 #include <engrave_program.h>
 #include <engrave_part_state.h>
 #include <engrave_part.h>
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/Makefile.am,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- Makefile.am 28 Dec 2006 18:22:56 -0000      1.13
+++ Makefile.am 29 Jul 2007 14:48:30 -0000      1.14
@@ -24,6 +24,7 @@
        engrave_file.h \
        engrave_font.h \
        engrave_spectrum.h \
+       engrave_color_class.h \
        engrave_style.h \
        engrave_group.h \
        engrave_image.h \
@@ -44,6 +45,7 @@
        engrave_file.c \
        engrave_font.c \
        engrave_spectrum.c \
+       engrave_color_class.c \
        engrave_style.c \
        engrave_group.c \
        engrave_image.c \
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave.l,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- engrave.l   24 Jul 2007 20:01:07 -0000      1.17
+++ engrave.l   29 Jul 2007 14:48:30 -0000      1.18
@@ -102,6 +102,7 @@
 color2                         { KEYWORD_RETURN(COLOR2); }
 color3                         { KEYWORD_RETURN(COLOR3); }
 color_class                    { KEYWORD_RETURN(COLOR_CLASS); }
+color_classes                  { KEYWORD_RETURN(COLOR_CLASSES); }
 COMP                           { KEYWORD_RETURN(COMP); }
 confine                                { KEYWORD_RETURN(CONFINE); }
 data                           { KEYWORD_RETURN(DATA); }
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave.y,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- engrave.y   24 Jul 2007 20:01:07 -0000      1.26
+++ engrave.y   29 Jul 2007 14:48:30 -0000      1.27
@@ -34,7 +34,7 @@
 %token BASE
 %token STRING FLOAT
 %token ACTION AFTER ALIGN ASPECT ASPECT_PREFERENCE BORDER MIDDLE
-%token CLIP_TO COLLECTIONS COLOR COLOR2 COLOR3 COLOR_CLASS
+%token CLIP_TO COLLECTIONS COLOR COLOR2 COLOR3 COLOR_CLASS COLOR_CLASSES
 %token CONFINE DATA DESCRIPTION DRAGABLE EFFECT FILL FIT TILE SCALE
 %token FONT FONTS GROUP GROUPS IMAGE TEXTBLOCK IMAGES IN ITEM MAX MIN FIXED 
MOUSE_EVENTS
 %token NAME NORMAL OFFSET ORIGIN PART PARTS PROGRAM PROGRAMS ALIAS
@@ -78,6 +78,7 @@
        | spectra edjes
        | styles edjes
        | collections edjes
+       | color_classes {section = BASE; } edjes
        | data edjes
        | error {
                parse_error();
@@ -89,6 +90,26 @@
 collections:  COLLECTIONS OPEN_BRACE {section = GROUPS; } collection_statement 
CLOSE_BRACE semicolon_maybe { section = BASE; }
        ;
 
+color_classes: COLOR_CLASSES OPEN_BRACE color_classes_entry CLOSE_BRACE 
semicolon_maybe
+       ;
+
+color_classes_entry: /* empty */
+       | color_class_block color_classes_entry
+       ;
+
+color_class_block: COLOR_CLASS OPEN_BRACE { 
+       engrave_parse_file_color_class();
+       section = COLOR_CLASS; 
+       } color_class_statement CLOSE_BRACE semicolon_maybe  /* don't reset 
section here, it should be set from calling block */
+       ;
+
+color_class_statement: /* empty */
+       | name color_class_statement
+       | color color_class_statement
+       | color2 color_class_statement
+       | color3 color_class_statement
+       ;
+
 spectra: SPECTRA OPEN_BRACE { section = SPECTRA; } spectra_statement 
CLOSE_BRACE semicolon_maybe { section = BASE; }
        ;
 
@@ -259,6 +280,8 @@
                     break;
                  case STYLE:
                    engrave_parse_style_name($3);
+                 case COLOR_CLASS:
+                   engrave_parse_color_class_name($3);
                   default:
                     break;
                 }
@@ -334,12 +357,10 @@
        ;
 
 collection_statement: /* empty */
-       | styles
        | collection_statement styles
-       | images
        | collection_statement images
-       | group
        | collection_statement group
+       | collection_statement color_classes { section = GROUPS; } 
        ;
 
 group: GROUP OPEN_BRACE { engrave_parse_group(); section = GROUP; } group_foo 
CLOSE_BRACE semicolon_maybe { section = GROUPS; }
@@ -354,6 +375,7 @@
        | script
        | parts
        | programs
+       | color_classes { section = GROUP; }
        ;
 
 script: SCRIPT {
@@ -439,6 +461,7 @@
        | parts_statement part
        | parts_statement program_statement
        | parts_statement programs
+       | parts_statement color_classes { section = PARTS; }
        ;
 
 part: PART OPEN_BRACE { engrave_parse_part(); section = PART; } part_foo 
CLOSE_BRACE semicolon_maybe { section = PARTS; }
@@ -463,6 +486,7 @@
        | pointer_mode
        | clip_to
        | color_class
+       | color_classes { section = PART; }
        | text_class
     ; 
 
@@ -617,6 +641,7 @@
        | step
        | aspect
        | aspect_preference
+       | color_classes { section = STATE; }
        ;
 
 state: STATE COLON STRING exp SEMICOLON {
@@ -922,17 +947,38 @@
        ;
 
 color: COLOR COLON exp exp exp exp SEMICOLON {
-                engrave_parse_state_color((int)$3, (int)$4, (int)$5, (int)$6);
+       switch(section)
+       {
+               case COLOR_CLASS:
+                       engrave_parse_color_class_color(1, (int)$3, (int)$4, 
(int)$5, (int)$6);
+                       break;
+               default:
+                       engrave_parse_state_color((int)$3, (int)$4, (int)$5, 
(int)$6);
+       }
        }
        ;
 
 color2: COLOR2 COLON exp exp exp exp SEMICOLON {
-                engrave_parse_state_color2((int)$3, (int)$4, (int)$5, (int)$6);
+               switch(section)
+       {
+               case COLOR_CLASS:
+                       engrave_parse_color_class_color(2, (int)$3, (int)$4, 
(int)$5, (int)$6);
+                       break;
+               default:
+                       engrave_parse_state_color2((int)$3, (int)$4, (int)$5, 
(int)$6);
+       }
        }
        ;
                
 color3: COLOR3 COLON exp exp exp exp SEMICOLON {
-                engrave_parse_state_color3((int)$3, (int)$4, (int)$5, (int)$6);
+        switch(section)
+       {
+               case COLOR_CLASS:
+                       engrave_parse_color_class_color(3, (int)$3, (int)$4, 
(int)$5, (int)$6);
+                       break;
+               default:
+                       engrave_parse_state_color3((int)$3, (int)$4, (int)$5, 
(int)$6);
+       }
        }
        ;
 
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_file.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- engrave_file.c      27 Mar 2007 02:10:36 -0000      1.22
+++ engrave_file.c      29 Jul 2007 14:48:30 -0000      1.23
@@ -55,6 +55,18 @@
   }
   ef->groups = evas_list_free(ef->groups);
 
+  for (l = ef->spectra; l; l = l->next) {
+    Engrave_Spectrum *es = l->data;
+    engrave_spectrum_free(es);
+  }
+  ef->spectra = evas_list_free(ef->spectra);
+
+  for (l = ef->color_classes; l; l = l->next) {
+    Engrave_Color_Class *ecc = l->data;
+    engrave_color_class_free(ecc);
+  }
+  ef->color_classes = evas_list_free(ef->color_classes);
+
   FREE(ef);
 }
 
@@ -129,7 +141,7 @@
 
 /**
  * engrave_file_spectrum_add - add the spectrum to the engrave file.
- * @param e: The Engrave_File to add the font too.
+ * @param e: The Engrave_File to add the spectrum too.
  * @param es: The Engrave_Spectrum to add to the file.
  *
  * @return Returns no value.
@@ -142,6 +154,20 @@
   engrave_spectrum_parent_set(es, e);
 }
 
+/**
+ * engrave_file_color_class_add - add the color_class to the engrave file.
+ * @param e: The Engrave_File to add the color_class too.
+ * @param ecc: The Engrave_Color_Class to add to the file.
+ *
+ * @return Returns no value.
+ */
+EAPI void
+engrave_file_color_class_add(Engrave_File *e, Engrave_Color_Class *ecc)
+{
+  if (!e || !ecc) return;
+  e->color_classes = evas_list_append(e->color_classes, ecc);
+  engrave_color_class_parent_set(ecc, e);
+}
 
 /**
  * engrave_file_style_add - add the style to the engrave file.
@@ -216,6 +242,19 @@
   return evas_list_data(evas_list_last(ef->spectra));
 }
 
+/**
+ * engrave_file_color_class_last_get - returns the last color_class in the file
+ * @param ef: The Engrave_File from which to retrieve the color_class
+ *
+ * @return Returns the last Engrave_Color_Class in the engrave file @a ef or 
NULL
+ */
+EAPI Engrave_Color_Class *
+engrave_file_color_class_last_get(Engrave_File *ef)
+{
+  if (!ef) return NULL;
+  return evas_list_data(evas_list_last(ef->color_classes));
+}
+
 
 /**
  * engrave_file_style_last_get - returns the last style in the file
@@ -366,6 +405,20 @@
 }
 
 /**
+ * engrave_file_color_classes_count - count the color_classes in the file
+ * @param ef: The Engrave_File to check for color_classes
+ * 
+ * @return Returns the number of color_classes in the file, 0 otherwise
+ */
+EAPI int
+engrave_file_color_classes_count(Engrave_File *ef)
+{
+  if (!ef) return 0;
+  return evas_list_count(ef->color_classes);
+}
+
+
+/**
  * engrave_file_image_foreach - call the given function for each image object
  * @param ef: The Engrave_File for which the images should be iterated over
  * @param func: The function to call for each image
@@ -495,6 +548,29 @@
   for (l = ef->spectra; l; l = l->next) {
     Engrave_Spectrum *es = l->data;
     if (es) func(es, data);
+  }
+}
+
+/**
+ * engrave_file_color_class_foreach - call the given function for each 
color_class object
+ * @param ef: The Engrave_File for which the color_classes should be iterated 
over
+ * @param func: The function to call for each color_class
+ * @param data: Any user data to pass to the given function.
+ *
+ * @return Returns no value.
+ */
+EAPI void
+engrave_file_color_class_foreach(Engrave_File *ef, 
+                            void (*func)(Engrave_Color_Class *, void *data), 
+                            void *data)
+{
+  Evas_List *l;
+
+  if (!engrave_file_color_classes_count(ef)) return;
+
+  for (l = ef->color_classes; l; l = l->next) {
+    Engrave_Color_Class *ecc = l->data;
+    if (ecc) func(ecc, data);
   }
 }
 
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_file.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- engrave_file.h      27 Mar 2007 02:10:36 -0000      1.15
+++ engrave_file.h      29 Jul 2007 14:48:30 -0000      1.16
@@ -28,6 +28,7 @@
   Evas_List *images; /**< The list of images in the file */
   Evas_List *fonts;  /**< The list of fonts in the file  */
   Evas_List *spectra;  /**< The list of spectra in the file  */
+  Evas_List *color_classes;  /**< The list of color_classes 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 */
@@ -44,6 +45,7 @@
 
 EAPI void engrave_file_font_add(Engrave_File *e, Engrave_Font *ef);
 EAPI void engrave_file_spectrum_add(Engrave_File *e, Engrave_Spectrum *es);
+EAPI void engrave_file_color_class_add(Engrave_File *e, Engrave_Color_Class 
*ecc);
 EAPI void engrave_file_style_add(Engrave_File *e, Engrave_Style *es);
 EAPI void engrave_file_image_add(Engrave_File *ef, Engrave_Image *ei);
 EAPI void engrave_file_data_add(Engrave_File *ef, Engrave_Data *ed);
@@ -51,6 +53,7 @@
 
 EAPI Engrave_Style *engrave_file_style_last_get(Engrave_File *ef);
 EAPI Engrave_Spectrum *engrave_file_spectrum_last_get(Engrave_File *ef);
+EAPI Engrave_Color_Class *engrave_file_color_class_last_get(Engrave_File *ef);
 
 EAPI Engrave_Group *engrave_file_group_last_get(Engrave_File *ef);
 EAPI Engrave_Group *engrave_file_group_by_name_find(Engrave_File *ef,
@@ -67,6 +70,7 @@
 EAPI int engrave_file_fonts_count(Engrave_File *ef);
 EAPI int engrave_file_spectra_count(Engrave_File *ef);
 EAPI int engrave_file_styles_count(Engrave_File *ef);
+EAPI int engrave_file_color_classes_count(Engrave_File *ef);
 
 EAPI void engrave_file_image_foreach(Engrave_File *ef,
                                      void (*func)(Engrave_Image *, void *),
@@ -86,6 +90,9 @@
 EAPI void engrave_file_style_foreach(Engrave_File *ef,
                                      void (*func)(Engrave_Style *, void *),
                                      void *data);
+EAPI void engrave_file_color_class_foreach(Engrave_File *ef,
+                                    void (*func)(Engrave_Color_Class *, void 
*),
+                                    void *data);
 
 EAPI Engrave_Data *engrave_file_data_by_key_find(Engrave_File *ef, 
                                                  const char *key);
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_out.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- engrave_out.c       24 Jul 2007 20:01:07 -0000      1.41
+++ engrave_out.c       29 Jul 2007 14:48:30 -0000      1.42
@@ -13,6 +13,7 @@
 static void _engrave_output_image(Engrave_Image *image, void *data);
 static void _engrave_output_font(Engrave_Font *font, void *data);
 static void _engrave_output_spectrum(Engrave_Spectrum *es, void *data);
+static void _engrave_output_color_class(Engrave_Color_Class *ecc, 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);
@@ -207,6 +208,11 @@
   engrave_file_spectrum_foreach(engrave_file, _engrave_output_spectrum, out);
   engrave_out_end(out);
 
+  /* color_classes */
+  engrave_out_start(out, "color_classes");
+  engrave_file_color_class_foreach(engrave_file, _engrave_output_color_class, 
out);
+  engrave_out_end(out);
+
   /* images */
   engrave_out_start(out, "images");
   engrave_file_image_foreach(engrave_file, _engrave_output_image, out);
@@ -707,6 +713,32 @@
 
   
 }
+
+static void
+_engrave_output_color_class(Engrave_Color_Class *ecc, void *data)
+{
+  FILE *out;
+
+  out = data;
+  engrave_out_start(out, "color_class");
+  engrave_out_data(out, "name", "\"%s\"", engrave_color_class_name_get(ecc));
+
+  if (ecc->color)
+         engrave_out_data(out, "color", "%d %d %d %d",
+                 ecc->color->r, ecc->color->g, ecc->color->b, ecc->color->a);
+
+  if (ecc->color2)
+         engrave_out_data(out, "color2", "%d %d %d %d",
+                 ecc->color2->r, ecc->color2->g, ecc->color2->b, 
ecc->color2->a);
+
+  if (ecc->color3)
+         engrave_out_data(out, "color3", "%d %d %d %d",
+                 ecc->color3->r, ecc->color3->g, ecc->color3->b, 
ecc->color3->a);
+
+  engrave_out_end(out);
+
+}
+
 
 
 static void
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_parse.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- engrave_parse.c     24 Jul 2007 20:01:07 -0000      1.22
+++ engrave_parse.c     29 Jul 2007 14:48:30 -0000      1.23
@@ -85,12 +85,38 @@
   engrave_group_name_set(group, name);
 }
 
+void 
+engrave_parse_color_class_name(char *name)
+{
+  if (!name) return;
+  Engrave_Color_Class * ecc = engrave_file_color_class_last_get(engrave_file);
+  engrave_color_class_name_set(ecc, name);
+}
+
+void 
+engrave_parse_color_class_color(int num, int r, int g, int b, int a)
+{
+  Engrave_Color_Class * ecc = engrave_file_color_class_last_get(engrave_file);
+  Engrave_Color_Class_Color * ec = engrave_color_class_color_new(r, g, b, a);
+  engrave_color_class_color_set(ecc, ec, num);
+}
+
 void
 engrave_parse_group_alias(char *alias)
 {
   Engrave_Group *group;
   group = engrave_file_group_last_get(engrave_file);
   engrave_group_alias_set(group, alias);
+}
+
+Engrave_Color_Class *
+engrave_parse_file_color_class()
+{
+  Engrave_Color_Class *ecc;
+  ecc = engrave_color_class_new();
+  engrave_file_color_class_add(engrave_file, ecc);
+  engrave_color_class_parent_set(ecc, engrave_file);
+  return ecc;
 }
 
 void
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_parse.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- engrave_parse.h     24 Jul 2007 20:01:07 -0000      1.16
+++ engrave_parse.h     29 Jul 2007 14:48:30 -0000      1.17
@@ -22,6 +22,10 @@
 void engrave_parse_style_base(char * base);
 void engrave_parse_style_tag(char * key, char * val);
 
+Engrave_Color_Class * engrave_parse_file_color_class();
+void engrave_parse_color_class_name(char *name);
+void engrave_parse_color_class_color(int num, int r, int g, int b, int a);
+
 void engrave_parse_spectrum();
 void engrave_parse_spectrum_name(char * name);
 void engrave_parse_spectrum_color(int r, int g, int b, int a, int d);
===================================================================
RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_spectrum.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- engrave_spectrum.c  30 Dec 2006 08:10:46 -0000      1.3
+++ engrave_spectrum.c  29 Jul 2007 14:48:30 -0000      1.4
@@ -135,7 +135,11 @@
 engrave_spectrum_name_set(Engrave_Spectrum *es, const char * name)
 {
   if (!es) return;
-  if (name) es->name = strdup(name);
+  if (name)
+  {
+         IF_FREE(es->name);
+         es->name = strdup(name);
+  }
 }
 
 /**



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to