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