Enlightenment CVS committal

Author  : horms
Project : e17
Module  : apps/entice

Dir     : e17/apps/entice/src/bin


Modified Files:
        event.c event.h image.c image.h misc.c 


Log Message:
Added turntable option so you can spin K's head around.

Fire up entice with the following image and play with the 't' key.
Takes a little while to start as the images are pre-rendered --
this should probably be fixed. Hit enter, change image or perform
an edit opperation to stop the turntable.

http://www.vergenet.net/~horms/tmp/k.jpg

Be careful with large images. This option can chew up a lot
of memory.



===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entice/src/bin/event.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- event.c     14 Feb 2003 10:27:31 -0000      1.7
+++ event.c     16 Feb 2003 09:35:15 -0000      1.8
@@ -244,12 +244,17 @@
      {
        e_save_current_image();
      }
+   else if (!strcmp(e->key, "t"))
+     {
+        e_turntable_l_current_image();
+     }
    else if (!strcmp(e->key, "Escape"))
      {
        exit(0);
      }
    else if (!strcmp(e->key, "Return"))
      {
+       e_display_current_image();
      }
    else if (!strcmp(e->key, "space"))
      {
@@ -276,6 +281,20 @@
      {
        icon_y -= 8;
        e_fix_icons();
+     }
+}
+
+void
+e_key_up(Ecore_Event * ev)
+{
+   Ecore_Event_Key_Down *e;
+
+   e = ev->event;
+   if (e->win != ewin)
+      return;
+   if (!strcmp(e->key, "t"))
+     {
+        e_turntable_r_current_image();
      }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entice/src/bin/event.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- event.h     5 Feb 2003 05:45:45 -0000       1.2
+++ event.h     16 Feb 2003 09:35:15 -0000      1.3
@@ -22,6 +22,7 @@
 
 /* when a key gets pressed */
 void                e_key_down(Ecore_Event * ev);
+void                e_key_up(Ecore_Event * ev);
 void                e_property(Ecore_Event * ev);
 
 #endif /* __EVENT_H__ */
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entice/src/bin/image.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- image.c     14 Feb 2003 10:27:31 -0000      1.8
+++ image.c     16 Feb 2003 09:35:15 -0000      1.9
@@ -281,6 +281,7 @@
    e_flip_object(im->o_thumb, direction);
 
    /* Update Display */
+   e_turntable_reset();
    e_handle_resize();
    e_fix_icons();
    e_scroll_list(0, NULL);
@@ -358,6 +359,7 @@
    e_rotate_object(im->o_thumb, rotation);
 
    /* Update Display */
+   e_turntable_reset();
    e_handle_resize();
    e_fix_icons();
    e_scroll_list(0, NULL);
@@ -377,6 +379,142 @@
        e_rotate_current_image(3);
 }
 
+#define TURNTABLE_COUNT 20
+Imlib_Image turntable_image[TURNTABLE_COUNT];
+int turntable_image_no = -1;
+
+void
+e_turntable_object_init(Evas_Object *obj)
+{
+   int i;
+   int w;
+   int h;
+   double angle;
+   DATA32 *image_data;
+   Imlib_Image image;
+
+   if (!obj || turntable_image_no >= 0)
+       return;
+
+       /* Get image data from Evas */
+   evas_object_image_size_get(obj, &w, &h);
+   image_data = evas_object_image_data_get(obj, 0);
+   if (!image_data)
+     {
+         evas_object_image_data_set(obj, image_data);
+         return;
+     }
+
+   /* Set up imlib image */
+   image = imlib_create_image_using_copied_data(w, h, image_data);
+   evas_object_image_data_set(obj, image_data);
+
+   angle = 0;
+   for(i = 0 ; i < TURNTABLE_COUNT ; i ++) {
+       angle = i * 360 * acos(0) / 90 / TURNTABLE_COUNT;
+       imlib_context_set_image(image);
+       turntable_image[i] = imlib_create_rotated_image(angle);
+       imlib_context_set_image(turntable_image[i]);
+   }
+       
+  /* Free Imlib image */
+  imlib_context_set_image(image);
+  imlib_free_image();
+
+  turntable_image_no = 0;
+}
+
+static void
+e_turntable_reset()
+{
+   int i;
+
+   if (turntable_image_no < 0)
+       return;
+
+   turntable_image_no = -1;
+
+   for(i = 0 ; i < TURNTABLE_COUNT ; i ++) {
+       imlib_context_set_image(turntable_image[i]);
+       imlib_free_image();
+   }
+}
+
+static void
+e_turntable_object_next(Evas_Object *obj, int rotation)
+{
+   int w;
+   int h;
+   DATA32 *image_data;
+
+   if (!obj)
+       return;
+
+   e_turntable_object_init(obj);
+
+   if (rotation == 1) {
+      if(++turntable_image_no >= TURNTABLE_COUNT) {
+          turntable_image_no = 0;
+      }
+   }
+   else {
+      if(--turntable_image_no < 0) {
+          turntable_image_no = TURNTABLE_COUNT - 1;
+      }
+   }
+
+   /* Get image data from Imblib */
+   imlib_context_set_image(turntable_image[turntable_image_no]);
+   image_data = imlib_image_get_data_for_reading_only();
+   w = imlib_image_get_width();
+   h = imlib_image_get_height();
+
+   /* Set Evas Image Data */
+   evas_object_image_size_set(obj, w, h);
+   evas_object_image_data_set(obj, image_data);
+
+  imlib_image_put_back_data(image_data);
+
+}
+
+static void
+e_turntable_object(int rotation, Evas_Object *obj)
+{
+   if (turntable_image_no < 0)
+        return;
+
+   e_turntable_object_next(obj, rotation);
+   ecore_add_event_timer("e_turntable_object()", 
+                  (double)60/(double)45/(double)TURNTABLE_COUNT, 
+                  e_turntable_object, rotation, o_image);
+
+   /* Update Display */
+   e_handle_resize();
+}
+
+static void
+e_turntable_current_image(int rotation)
+{
+   if (!current_image || !current_image->data)
+       return;
+
+   e_turntable_object_init(o_image);
+   e_turntable_object(rotation, o_image);
+
+}
+
+void
+e_turntable_r_current_image(void)
+{
+       e_turntable_current_image(1);
+}
+
+void
+e_turntable_l_current_image(void)
+{
+       e_turntable_current_image(2);
+}
+
 void
 e_delete_current_image(void)
 {
@@ -462,6 +600,7 @@
    scroll_sx = 0;
    scroll_sy = 0;
 
+   e_turntable_reset();
    if (o_mini_image)
      {
        evas_object_del(o_mini_image);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entice/src/bin/image.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- image.h     14 Feb 2003 10:27:31 -0000      1.8
+++ image.h     16 Feb 2003 09:35:15 -0000      1.9
@@ -16,6 +16,10 @@
 void                e_rotate_r_current_image(void);
 void                e_rotate_l_current_image(void);
 
+void                e_turntable_l_current_image(void);
+void                e_turntable_r_current_image(void);
+void               e_turntable_reset(void);
+
 void                e_flip_h_current_image(void);
 void                e_flip_v_current_image(void);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entice/src/bin/misc.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- misc.c      14 Feb 2003 09:55:29 -0000      1.6
+++ misc.c      16 Feb 2003 09:35:15 -0000      1.7
@@ -40,6 +40,7 @@
    ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_CONFIGURE,
                                  e_window_configure);
    ecore_event_filter_handler_add(ECORE_EVENT_KEY_DOWN, e_key_down);
+   ecore_event_filter_handler_add(ECORE_EVENT_KEY_UP, e_key_up);
    ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_PROPERTY, e_property);
 
    ecore_event_filter_handler_add(ECORE_EVENT_DND_DROP, e_dnd_drop);




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to