Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/bin


Modified Files:
      Tag: SPLIT
        ecore_evas_test.c 


Log Message:


working on making this go on my ipaq.. it does... now. i have to commit data
files. will do that once i have a better app design happening. right now it
starts and calibrates the touchscreen. that's it.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/Attic/ecore_evas_test.c,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -3 -r1.1.2.3 -r1.1.2.4
--- ecore_evas_test.c   15 Feb 2003 14:55:21 -0000      1.1.2.3
+++ ecore_evas_test.c   16 Feb 2003 15:00:31 -0000      1.1.2.4
@@ -15,6 +15,7 @@
 Ecore_Evas  *ee         = NULL;
 Evas        *evas       = NULL;
 Evas_Object *o_bg_rect  = NULL;
+Evas_Object *o_logo     = NULL;
 
 int
 app_signal_exit(int ev_type, void *ev, void *data)
@@ -127,6 +128,283 @@
 #endif   
 }
 
+static Evas_Object *o_events = NULL;
+static Evas_Object *o_crosshair = NULL;
+static Evas_Object *o_text = NULL;
+static int cal_pos = 0;
+static int down = 0;
+
+static int cal_coords[] = {15, 15, -15, 15, 15, -15, -15, -15};
+static char *cal_lines[] = 
+{
+   "Please click on the crosshair",
+     "Again please",
+     "And again",
+     "Last one,  then calibration is complete"
+};
+static int cal_input[8];
+
+static int tmp_input_count = 0;
+static int tmp_input[16];
+
+void calibrate_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void calibrate_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void calibrate_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void calibrate_pos_set(int pos);
+int  calibrate_pos_get(void);
+void calibrate_finish(void);
+void calibrate_start(void);
+
+void
+calibrate_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Down *ev;
+   
+   ev = event_info;
+   
+   tmp_input_count = 0;   
+   tmp_input[((tmp_input_count & 0x7) * 2) + 0] = ev->output.x;
+   tmp_input[((tmp_input_count & 0x7) * 2) + 1] = ev->output.y;
+   tmp_input_count++;
+   down = 1;
+}
+
+void
+calibrate_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Up *ev;
+   int n, i, avx, avy, c, mx, my;
+   int dists[8];
+   int indexes[8];
+   int sorted;
+   
+   ev = event_info;
+   down = 0;
+   tmp_input[((tmp_input_count & 0x7) * 2) + 0] = ev->output.x;
+   tmp_input[((tmp_input_count & 0x7) * 2) + 1] = ev->output.y;
+   tmp_input_count++;
+   n = 8;
+   if (tmp_input_count < 8) n = tmp_input_count;
+   avx = 0; avy = 0; c = 0;   
+   for (i = 0; i < n; i++)
+     {
+       dists[i] = tmp_input[(i * 2) + 0];
+       indexes[i] = i;
+     }
+   sorted = 0;
+   while (!sorted)
+     {
+       sorted = 1;
+       for (i = 0; i < n - 1; i++)
+         {
+            if (dists[i + 1] < dists[i])
+              { 
+                 int tmp;
+                 
+                 sorted = 0;
+                 tmp = dists[i];
+                 dists[i] = dists[i + 1];
+                 dists[i + 1] = tmp;
+                 tmp = indexes[i];
+                 indexes[i] = indexes[i + 1];
+                 indexes[i + 1] = tmp;
+              }
+         }
+     }
+   mx = dists[(n + 1) / 2];
+   for (i = 0; i < n; i++)
+     {
+       dists[i] = tmp_input[(i * 2) + 1];
+       indexes[i] = i;
+     }
+   sorted = 0;
+   while (!sorted)
+     {
+       sorted = 1;
+       for (i = 0; i < n - 1; i++)
+         {
+            if (dists[i + 1] < dists[i])
+              { 
+                 int tmp;
+                 
+                 sorted = 0;
+                 tmp = dists[i];
+                 dists[i] = dists[i + 1];
+                 dists[i + 1] = tmp;
+                 tmp = indexes[i];
+                 indexes[i] = indexes[i + 1];
+                 indexes[i + 1] = tmp;
+              }
+         }
+     }
+   my = dists[(n + 1) / 2];
+
+   for (i = 0; i < n; i++)
+     {
+       int x, y, dx, dy;
+       
+       x = tmp_input[(i * 2) + 0];
+       y = tmp_input[(i * 2) + 1];
+       dx = x - mx;
+       dy = y - my;
+       if (dx < 0) dx = -dx;
+       if (dy < 0) dy = -dy;
+       if ((dx <= 8) && (dy <= 8))
+         {
+            avx += tmp_input[(i * 2) + 0];
+            avy += tmp_input[(i * 2) + 1];
+            c++;
+         }
+     }
+   cal_input[(cal_pos * 2) + 0] = avx / c;
+   cal_input[(cal_pos * 2) + 1] = avy / c;
+   n = calibrate_pos_get();
+   if (n < 3)
+     {
+       calibrate_pos_set(n + 1);
+       return;
+     }
+   calibrate_finish();
+}
+
+void
+calibrate_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Evas_Event_Mouse_Move *ev;
+   
+   ev = event_info;
+   if (!down) return;
+   tmp_input[((tmp_input_count & 0x7) * 2) + 0] = ev->cur.output.x;
+   tmp_input[((tmp_input_count & 0x7) * 2) + 1] = ev->cur.output.y;
+   tmp_input_count++;
+}
+
+void
+calibrate_pos_set(int pos)
+{
+   double w, h;
+   int x, y, ow, oh;
+   
+   cal_pos = pos;
+   evas_object_geometry_get(o_crosshair, NULL, NULL, &w, &h);
+   x = cal_coords[(cal_pos * 2) + 0];
+   y = cal_coords[(cal_pos * 2) + 1];
+   evas_output_size_get(evas, &ow, &oh);
+   if (x < 0) x = ow + x - 1;
+   if (y < 0) y = oh + y - 1;
+   cal_coords[(cal_pos * 2) + 0] = x;
+   cal_coords[(cal_pos * 2) + 1] = y;
+   evas_object_move(o_crosshair, x - (((int)w - 1) / 2), y - (((int)h - 1) / 2));
+   evas_object_text_text_set(o_text, cal_lines[cal_pos]);
+   evas_object_geometry_get(o_text, NULL, NULL, &w, &h);   
+   evas_object_move(o_text, (ow - w) / 2, (oh - h) / 2);
+}
+
+int
+calibrate_pos_get(void)
+{
+   return cal_pos;
+}
+
+void
+calibrate_finish(void)
+{
+   int m0, m1;
+   int y0, y1;
+   int dx, dy;
+   int x[4], y[4], xi[4], yi[4];
+   int i, rot;
+   
+   int xscale, xtrans, yscale, ytrans, xyswap;
+   
+   rot = ecore_evas_rotation_get(ee);
+   for (i = 0; i < 4; i++)
+     {
+       x[i] = cal_coords[(i * 2) + 0];
+       y[i] = cal_coords[(i * 2) + 1];
+       xi[i] = cal_input[(i * 2) + 0];
+       yi[i] = cal_input[(i * 2) + 1];
+     }
+   xyswap = 0;
+   
+   m0 = ((x[1] - x[0]) * 256) / (xi[1] - xi[0]);
+   y0 = ((x[1] - ((xi[1] * m0) / 256)) + (x[0] - ((xi[0] * m0) >> 8)) ) / 2;
+
+   m1 = ((x[3] - x[2]) * 256) / (xi[3] - xi[2]);
+   y1 = ((x[3] - ((xi[3] * m1) / 256)) + (x[2] - ((xi[2] * m1) >> 8)) ) / 2;
+
+   xscale = (m0 + m1) / 2;
+   xtrans = (y0 + y1) / 2;
+
+   m0 = ((y[2] - y[0]) * 256) / (yi[2] - yi[0]);
+   y0 = ((y[2] - ((yi[2] * m0) / 256)) + (y[0] - ((yi[0] * m0) >> 8)) ) / 2;
+
+   m1 = ((y[3] - y[1]) * 256) / (yi[3] - yi[1]);
+   y1 = ((y[3] - ((yi[3] * m1) / 256)) + (y[1] - ((yi[1] * m1) >> 8)) ) / 2;
+   
+   yscale = (m0 + m1) / 2;
+   ytrans = (y0 + y1) / 2;
+   
+   if (rot == 0)
+     {
+       ecore_fb_touch_screen_calibrate_set(xscale, xtrans, yscale, ytrans, xyswap);
+     }
+   else if (rot == 270)
+     {
+       int ow, oh;
+       
+       evas_output_size_get(evas, &ow, &oh);
+       ytrans = oh - (ytrans + ((oh * yscale) / 256));
+       ecore_fb_touch_screen_calibrate_set(yscale, ytrans, xscale, xtrans, xyswap);
+     }
+     
+   evas_object_del(o_crosshair);
+   evas_object_del(o_events);
+   evas_object_del(o_text);
+   o_crosshair = NULL;
+   o_events = NULL;
+   o_text = NULL;
+   cal_pos = 0;
+}
+
+void
+calibrate_start(void)
+{
+   Evas_Object *o;
+   
+   ecore_fb_touch_screen_calibrate_set(256, 0, 256, 0, 0);
+   
+   o = evas_object_rectangle_add(evas);
+   evas_object_layer_set(o, 1000000); 
+   evas_object_color_set(o, 255, 255, 255, 120);
+   evas_object_move(o, -12000, -16000);
+   evas_object_resize(o, 24000, 32000);
+   evas_object_show(o);   
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, calibrate_cb_down, ee);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, calibrate_cb_up, ee);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, calibrate_cb_move, ee);
+   o_events = o;
+   
+   o = evas_object_image_add(evas);
+   evas_object_layer_set(o, 1000001);
+   evas_object_image_file_set(o, IM"crosshair.png", NULL);   
+   evas_object_resize(o, 31, 31);
+   evas_object_image_fill_set(o, 0, 0, 31, 31);
+   evas_object_pass_events_set(o, 1);
+   evas_object_show(o);
+   o_crosshair = o;
+   
+   o = evas_object_text_add(evas);
+   evas_object_layer_set(o, 1000002);
+   evas_object_color_set(o, 0, 0, 0, 255);
+   evas_object_text_font_set(o, "helmet", 10);
+   evas_object_pass_events_set(o, 1);
+   evas_object_show(o);
+   o_text = o;
+
+   calibrate_pos_set(0);
+}
+
 void
 setup_ecore_evas_test(void)
 {
@@ -144,14 +422,15 @@
    o_bg_rect = o;
    
    o = evas_object_image_add(evas);
-   evas_object_image_file_set(o, IM"evas_logo.png", NULL);
-   evas_object_resize(o, 200, 198);
-   evas_object_image_fill_set(o, 0, 0, 200, 192);
-   evas_object_move(o, (240 - 200) / 2, (320 -198) / 2);
+   evas_object_image_file_set(o, IM"e_logo.png", NULL);
+   evas_object_resize(o, 240, 280);
+   evas_object_image_fill_set(o, 0, 0, 240, 280);
+   evas_object_move(o, (240 - 240) / 2, (320 - 280) / 2);
    evas_object_show(o);
+   o_logo = o;
    
    /* add a timer to animate them */
-   anim_timer = ecore_timer_add(0.01, app_animate_obj_timer, NULL);
+//   anim_timer = ecore_timer_add(0.01, app_animate_obj_timer, NULL);
 }
 
 /**** MAIN */
@@ -167,7 +446,7 @@
    /* create an evas */
    if (!ecore_evas_init()) return -1;
    if ((argc > 1) && (!strcmp(argv[1], "-fb")))
-     ee = ecore_evas_fb_new(NULL, 270,  240, 320);
+     ee = ecore_evas_fb_new(NULL, 0,  240, 320);
    else if ((argc > 1) && (!strcmp(argv[1], "-x")))
      ee = ecore_evas_software_x11_new(NULL, 0,  0, 0, 240, 320);
    else if ((argc > 1) && (!strcmp(argv[1], "-h")))
@@ -185,6 +464,7 @@
      ee = ecore_evas_software_x11_new(NULL, 0,  0, 0, 240, 320);        
 #else if BUILD_ECORE_FB
      ee = ecore_evas_fb_new(NULL, 270,  240, 320);
+//   ecore_evas_fullscreen_set(ee, 1);
 #endif   
    if (!ee) return -1;
    ecore_evas_callback_delete_request_set(ee, app_delete_request);
@@ -198,6 +478,8 @@
    evas_font_path_append(evas, FN);
    
    setup_ecore_evas_test();
+   
+   calibrate_start();
    
    ecore_main_loop_begin();
    




-------------------------------------------------------
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