Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/exhibit/src/bin


Modified Files:
        exhibit.h exhibit_image.c exhibit_image.h exhibit_main.c 
        exhibit_menus.c exhibit_menus.h 


Log Message:
Brightness / Contrast
- implement brighten function
- add stubs for others


===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- exhibit.h   14 Dec 2005 15:02:33 -0000      1.2
+++ exhibit.h   14 Dec 2005 23:27:12 -0000      1.3
@@ -65,6 +65,8 @@
    char           cur_path[PATH_MAX];   
 
    int            zoom;
+   int            brightness;
+   int            contrast;
    
    struct {
       int down;
@@ -89,6 +91,13 @@
 #define ZOOM_MAX 16
 #define ZOOM_MIN -16
 
+#ifndef DATA64
+#define DATA64 unsigned long long
+#define DATA32 unsigned int
+#define DATA16 unsigned short
+#define DATA8  unsigned char
+#endif
+
 #include "exhibit_menus.h"
 #include "exhibit_file.h"
 #include "exhibit.h"
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- exhibit_image.c     14 Dec 2005 21:30:46 -0000      1.4
+++ exhibit_image.c     14 Dec 2005 23:27:12 -0000      1.5
@@ -1,5 +1,20 @@
 #include "exhibit.h"
 
+#define R_CMOD(r) \
+   red_mapping[(int)(r)]
+#define G_CMOD(g) \
+   green_mapping[(int)(g)]
+#define B_CMOD(b) \
+   blue_mapping[(int)(b)]
+#define A_CMOD(a) \
+   alpha_mapping[(int)(a)]
+
+#define A_VAL(p) ((DATA8 *)(p))[3]
+#define R_VAL(p) ((DATA8 *)(p))[2]
+#define G_VAL(p) ((DATA8 *)(p))[1]
+#define B_VAL(p) ((DATA8 *)(p))[0]
+
+
 void
 _ex_image_mouse_down(Etk_Object *object, void *event, void *data)
 {
@@ -39,6 +54,8 @@
        _ex_menu_item_new(EX_MENU_ITEM_SEPERATOR, NULL, -99, 
ETK_MENU_SHELL(e->menu), NULL, NULL);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Blur"), ETK_STOCK_NO_STOCK, 
ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_blur_cb), e);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Sharpen"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_sharpen_cb), 
e);
+       _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Brighten"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), 
ETK_CALLBACK(_ex_menu_brighten_cb), e);
+       //_ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Darken"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_darken_cb), 
e);
        _ex_menu_item_new(EX_MENU_ITEM_SEPERATOR, NULL, -99, 
ETK_MENU_SHELL(e->menu), NULL, NULL);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Set as wallpaper"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), 
ETK_CALLBACK(_ex_menu_set_wallpaper_cb), e);
        etk_menu_popup(e->menu);
@@ -437,3 +454,129 @@
    etk_widget_size_request_set(im, w, h);
    etk_widget_redraw_queue(im);
 }
+
+void
+_ex_image_brightness(Etk_Image *im, int brightness)
+{
+   DATA32 *data, *p;
+   int     w, h;
+   int     i, j, x, y;
+   int     val2;
+   DATA8   a, r, g, b;
+   DATA8   red_mapping[256];
+   DATA8   green_mapping[256];   
+   DATA8   blue_mapping[256];
+   DATA8   alpha_mapping[256];
+         
+   if(im->use_edje)
+     return;
+   
+   for (i = 0; i < 256; i++)
+     {
+       red_mapping[i] = (DATA8) i;
+       green_mapping[i] = (DATA8) i;
+       blue_mapping[i] = (DATA8) i;
+       alpha_mapping[i] = (DATA8) i;
+     }
+      
+   etk_image_size_get(im, &w, &h);
+   data = evas_object_image_data_get(im->image_object, TRUE);
+   
+   for (i = 0; i < 256; i++)
+     {
+       val2 = (int)red_mapping[i] + brightness;
+       if (val2 < 0)
+         val2 = 0;
+       if (val2 > 255)
+         val2 = 255;
+       red_mapping[i] = (DATA8) val2;
+       
+       val2 = (int)green_mapping[i] + brightness;
+       if (val2 < 0)
+         val2 = 0;
+       if (val2 > 255)
+         val2 = 255;
+       green_mapping[i] = (DATA8) val2;
+       
+       val2 = (int)blue_mapping[i] + brightness;
+       if (val2 < 0)
+         val2 = 0;
+       if (val2 > 255)
+         val2 = 255;
+       blue_mapping[i] = (DATA8) val2;
+       
+       val2 = (int)alpha_mapping[i] + brightness;
+       if (val2 < 0)
+         val2 = 0;
+       if (val2 > 255)
+         val2 = 255;
+       alpha_mapping[i] = (DATA8) val2;
+     }
+   
+   for(i = 0; i < w - 1; i++) 
+     {
+      for(j = 0; j < h - 1; j++) 
+         {
+            p = &data[i + (w * j)];
+            
+            R_VAL(p) = R_CMOD(R_VAL(p));
+            G_VAL(p) = G_CMOD(G_VAL(p));
+            B_VAL(p) = B_CMOD(B_VAL(p));
+            A_VAL(p) = A_CMOD(A_VAL(p));
+         }
+     }   
+   
+   evas_object_image_data_set(im->image_object, data);
+   evas_object_image_data_update_add(im->image_object, 0, 0, w, h);      
+}
+
+void
+_ex_image_brightness2(Etk_Image *im, int brightness)
+{
+   DATA32 *data, *data2, *pixel;
+   int           w, h;
+   int           i, j;
+   DATA8 a, r, g, b;
+   int light_transform[256];
+         
+   if(im->use_edje)
+     return;
+   
+   printf("brightness = %d\n", brightness);
+   for(i=0; i<256; i++){
+      light_transform[i] = i + brightness;
+      if(light_transform[i] > 255)
+       light_transform[i] = 255;
+      if(light_transform[i] < 0)
+       light_transform[i] = 0;
+   }   
+   
+   etk_image_size_get(im, &w, &h);
+   data = evas_object_image_data_get(im->image_object, TRUE);
+   data2 = malloc(w * h * sizeof(DATA32));
+   memcpy(data2, data, w * h * sizeof(DATA32));
+   
+   for(i = 0; i < w - 1; i++) {
+      for(j = 0; j < h - 1; j++) {
+        pixel = &data[i + (w * j)];
+        a = (*pixel >> 24) &0xff;
+        r = (*pixel >> 16) &0xff;
+        g = (*pixel >> 8) &0xff;
+        b = (*pixel) & 0xff;
+        
+        pixel = &data2[i + (w * j)];
+        *pixel |= (light_transform[r] << 16);
+        *pixel |= (light_transform[g] << 8);
+        *pixel |= (light_transform[b]);
+      }
+   }
+   
+   evas_object_image_data_set(im->image_object, data2);
+   evas_object_image_data_update_add(im->image_object, 0, 0, w, h);      
+}
+
+void
+_ex_image_contrast(Etk_Image *im, int contrast)
+{
+   
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- exhibit_image.h     14 Dec 2005 15:02:33 -0000      1.2
+++ exhibit_image.h     14 Dec 2005 23:27:12 -0000      1.3
@@ -10,6 +10,7 @@
 void         _ex_image_blur(Etk_Image *im);
 void         _ex_image_sharpen(Etk_Image *im);
 void         _ex_image_save(Etk_Image *im);
-void         _ex_image_zoom(Etk_Image *im, int zoom);
+void         _ex_image_zoom(Etk_Image *im, int zoom); 
+void         _ex_image_brightness(Etk_Image *im, int brightness);
     
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- exhibit_main.c      14 Dec 2005 22:05:17 -0000      1.6
+++ exhibit_main.c      14 Dec 2005 23:27:12 -0000      1.7
@@ -94,6 +94,8 @@
    if(!r) return;
    
    e->zoom = 0;
+   e->brightness = 128;
+   e->contrast = 0;
    
    _ex_image_zoom(ETK_IMAGE(e->image), e->zoom);
    _ex_main_statusbar_zoom_update(e);   
@@ -472,6 +474,7 @@
        _ex_menu_item_new(EX_MENU_ITEM_SEPERATOR, NULL, -99, 
ETK_MENU_SHELL(menu), NULL, NULL);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Blur"), ETK_STOCK_NO_STOCK, 
ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_blur_cb), e);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Sharpen"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_sharpen_cb), e);
+       _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Brighten"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_brighten_cb), 
e);
        _ex_menu_item_new(EX_MENU_ITEM_SEPERATOR, NULL, -99, 
ETK_MENU_SHELL(menu), NULL, NULL);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Set as wallpaper"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), 
ETK_CALLBACK(_ex_menu_set_wallpaper_cb), e);
        
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- exhibit_menus.c     14 Dec 2005 15:34:28 -0000      1.4
+++ exhibit_menus.c     14 Dec 2005 23:27:12 -0000      1.5
@@ -221,6 +221,40 @@
 }
 
 void
+_ex_menu_brighten_cb(Etk_Object *obj, void *data)
+{
+   Exhibit      *e;
+   Etk_Tree_Row *r;
+   EX_MENU_ITEM_GET_RETURN(obj);
+   
+   e = data;
+   r = etk_tree_selected_row_get(ETK_TREE(e->itree));
+   if(!r) return;   
+   
+   e->brightness += 10;
+   if(e->brightness > 255)
+     e->brightness = 255;
+   _ex_image_brightness(ETK_IMAGE(e->image), e->brightness);
+}
+
+void
+_ex_menu_darken_cb(Etk_Object *obj, void *data)
+{
+   Exhibit      *e;
+   Etk_Tree_Row *r;
+   EX_MENU_ITEM_GET_RETURN(obj);
+   
+   e = data;
+   r = etk_tree_selected_row_get(ETK_TREE(e->itree));
+   if(!r) return;   
+   
+   e->brightness -= 10;
+   if(e->brightness < 0)
+     e->brightness = 0;   
+   _ex_image_brightness(ETK_IMAGE(e->image), e->brightness);
+}
+
+void
 _ex_menu_set_wallpaper_cb(Etk_Object *obj, void *data)
 {
    EX_MENU_ITEM_GET_RETURN(obj);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- exhibit_menus.h     14 Dec 2005 11:33:30 -0000      1.1
+++ exhibit_menus.h     14 Dec 2005 23:27:12 -0000      1.2
@@ -23,6 +23,8 @@
 void        _ex_menu_flip_vertical_cb(Etk_Object *obj, void *data);
 void        _ex_menu_blur_cb(Etk_Object *obj, void *data);
 void        _ex_menu_sharpen_cb(Etk_Object *obj, void *data);
+void        _ex_menu_brighten_cb(Etk_Object *obj, void *data);
+void        _ex_menu_darken_cb(Etk_Object *obj, void *data);    
 void        _ex_menu_set_wallpaper_cb(Etk_Object *obj, void *data);
 void        _ex_menu_zoom_in_cb(Etk_Object *obj, void *data);
 void        _ex_menu_zoom_out_cb(Etk_Object *obj, void *data);




-------------------------------------------------------
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://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to