From: <enl...@li...> - 2002-09-17 21:34:43
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/etox Dir : e17/libs/etox/test Modified Files: Tag: SPLIT Etox_test.h Makefile.am etox_test.c tests.c tests.h Log Message: Port of etox to evas2. Removed imlib2 dependancy. Still a couple segv's in the test program, but most of the functionality is there. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/etox/test/Etox_test.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -3 -r1.1.2.2 -r1.1.2.3 --- Etox_test.h 5 May 2002 16:25:19 -0000 1.1.2.2 +++ Etox_test.h 17 Sep 2002 21:34:43 -0000 1.1.2.3 @@ -1,18 +1,14 @@ #ifndef __ETOX_TEST_H__ #define __ETOX_TEST_H__ -#include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <sys/time.h> -#include <unistd.h> -#include <string.h> -#include <dirent.h> #include <Evas.h> +#include <Evas_Engine_Software_X11.h> #include <Ecore.h> -#include <Imlib2.h> #include "src/Etox.h" #include "etox-config.h" @@ -30,28 +26,27 @@ /* #define RENDER_ENGINE RENDER_METHOD_BASIC_HARDWARE */ /* #define RENDER_ENGINE RENDER_METHOD_3D_HARDWARE */ -#include "tests.h" +typedef struct _panel_button Panel_Button; + +struct _panel_button { + Evas *evas; + Evas_Object *box; + Evas_Object *label; +}; /* globals */ -extern Evas_Object o_bg; -extern Evas_Object o_logo; -extern Evas_Object o_panel; -extern Evas_Object o_showpanel; -extern Evas_Object o_hidepanel; -extern Evas_Object o_txt_paneltitle; -extern Evas_Object o_panel_box1; -extern Evas_Object o_txt_panel_box1; -extern Evas_Object o_bg_etox; -extern Evas_Object clip_msg; -extern Evas_Object clip_test; -extern Evas_Object o_next_box; -extern Evas_Object o_txt_next_box; +extern Evas_Object *o_bg_etox; +extern Evas_Object *clip_msg; +extern Evas_Object *clip_test; +extern Evas_Object *o_next_box; +extern Evas_Object *o_txt_next_box; +extern Evas_List *pbuttons; extern Etox *e_msg; extern Etox *e_test; -extern Evas evas; -extern Evas_Render_Method render_method; +extern Evas *evas; +extern int render_method; extern int max_colors; extern int win_w; extern int win_h; @@ -59,13 +54,8 @@ extern int win_y; extern Window main_win; -extern int panel_active; - -/* handler functions */ -void e_handle_resize(void); - /* general functions */ -double get_time (void); +double get_time(void); void setup(void); /* callbacks for evas handling */ @@ -79,20 +69,19 @@ void e_mouse_down(Ecore_Event * ev); /* when a mouse button is released in the window call this */ void e_mouse_up(Ecore_Event * ev); -/* when the window gets moved or resized */ -void e_window_configure(Ecore_Event * ev); /* when the mouse moves over a button */ -void mouse_in (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); -void mouse_out (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); - -/* panel functions */ -void e_slide_panel_in(int v, void *data); -void e_slide_panel_out(int v, void *data); -void show_panel (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); -void hide_panel (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); +void button_mouse_in(void *_data, Evas *_e, Evas_Object *_o, + void *event_info); +void button_mouse_out(void *_data, Evas *_e, Evas_Object *_o, + void *event_info); +void button_mouse_down(void *_data, Evas *_e, Evas_Object *_o, + void *event_info); /* button functions */ void button_next_new_all(Evas _e); void button_next_new(Evas _e); -#endif /* __ETOX_TEST_H__ */ +#include "panel.h" +#include "tests.h" + +#endif /* __ETOX_TEST_H__ */ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/etox/test/Makefile.am,v retrieving revision 1.7.2.2 retrieving revision 1.7.2.3 diff -u -3 -r1.7.2.2 -r1.7.2.3 --- Makefile.am 4 May 2002 21:21:18 -0000 1.7.2.2 +++ Makefile.am 17 Sep 2002 21:34:43 -0000 1.7.2.3 @@ -9,7 +9,9 @@ etox_test_DEPENDENCIES = $(top_builddir)/src/libetox.la etox_test_SOURCES = \ etox_test.c \ -tests.c\ +tests.c \ +panel.c \ +panel.h \ Etox_test.h \ tests.h etox_test_LDFLAGS = -static =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/etox/test/etox_test.c,v retrieving revision 1.12.2.2 retrieving revision 1.12.2.3 diff -u -3 -r1.12.2.2 -r1.12.2.3 --- etox_test.c 5 May 2002 16:28:13 -0000 1.12.2.2 +++ etox_test.c 17 Sep 2002 21:34:43 -0000 1.12.2.3 @@ -1,391 +1,473 @@ #include "Etox_test.h" /* globals */ -Evas_Object o_bg; -Evas_Object o_logo; -Evas_Object o_panel; -Evas_Object o_showpanel; -Evas_Object o_hidepanel; -Evas_Object o_txt_paneltitle; -Evas_Object o_bg_etox; -Evas_Object clip_msg; -Evas_Object clip_test; -Evas_Object o_panel_box1; -Evas_Object o_txt_panel_box1; -Evas_Object o_next_box; -Evas_Object o_txt_next_box; - -Evas evas; -Evas_Render_Method render_method = RENDER_ENGINE; -int max_colors = MAX_EVAS_COLORS; +Evas_Object *clip_msg; +Evas_Object *clip_test; +Evas_Object *o_next_box; +Evas_Object *o_txt_next_box; +Evas_Object *o_prev_box; +Evas_Object *o_txt_prev_box; +Evas_List *pbuttons; + +Evas *evas; +int render_method = 0; Etox *e_msg; Etox *e_test; +Evas_List *current_test = NULL; + int win_w = W, win_h = H; int win_x = 0, win_y = 0; Window main_win; -int panel_active = 0; - -double -get_time (void) +double get_time(void) { - struct timeval timev; + struct timeval timev; - gettimeofday (&timev, NULL); - return (double) timev.tv_sec + (((double) timev.tv_usec) / 1000000); + gettimeofday(&timev, NULL); + return (double) timev.tv_sec + + (((double) timev.tv_usec) / 1000000); } -void -e_fade_logo_in (int v, void *data) +/* Events */ +void e_idle(void *data) { - static double start = 0.0; - double duration = 1.0; - double val; - - if (v == 0) - start = get_time (); - val = (get_time () - start) / duration; - - evas_set_color (evas, o_logo, 255, 255, 255, (val * 255)); + evas_render(evas); - if (val < 1.0) - ecore_add_event_timer ("e_fade_logo_in()", 0.05, e_fade_logo_in, v + 1, - NULL); + return; + data = NULL; } -/* Navigation panel */ -void -e_slide_panel_in (int v, void *data) +void e_window_expose(Ecore_Event * ev) { - static double start = 0.0; - double duration = 0.5; - double val; - double px; - int w; - double ascent, descent; - - panel_active = 1; - - if (v == 0) - evas_set_layer (evas, o_showpanel, 180); - if (v == 0) - start = get_time (); - val = (get_time () - start) / duration; - - evas_get_image_size (evas, o_panel, &w, NULL); - px = (w * sin (val * 0.5 * 3.141592654)) - w; - evas_move (evas, o_panel, px, 0); - evas_move (evas, o_txt_paneltitle, px + 4, 5); - evas_move (evas, o_panel_box1, px + 5, 40); - evas_move (evas, o_txt_panel_box1, px + 8, 42); - evas_text_get_max_ascent_descent (evas, o_txt_panel_box1, &ascent, - &descent); - evas_resize (evas, o_panel_box1, 108, ascent - descent + 4); - evas_set_image_fill (evas, o_panel_box1, 0, 0, 108, ascent - descent + 4); - if (val < 1.0) - ecore_add_event_timer ("e_slide_panel()", 0.05, e_slide_panel_in, v + 1, - NULL); -} + Ecore_Event_Window_Expose *e; + Evas_Engine_Info_Software_X11 *info; -void -e_slide_panel_out (int v, void *data) -{ - static double start = 0.0; - double duration = 0.5; - double val; - double px; - int w; - double ascent, descent; - - if (v == 0) - evas_set_layer (evas, o_showpanel, 1000); - if (v == 0) - start = get_time (); - val = (get_time () - start) / duration; - - evas_get_image_size (evas, o_panel, &w, NULL); - px = (w * sin ((1.0 - val) * 0.5 * 3.141592654)) - w; - evas_move (evas, o_panel, px, 0); - evas_move (evas, o_txt_paneltitle, px + 4, 5); - evas_move (evas, o_panel_box1, px + 5, 40); - evas_move (evas, o_txt_panel_box1, px + 8, 42); - evas_text_get_max_ascent_descent (evas, o_txt_panel_box1, &ascent, - &descent); - evas_resize (evas, o_panel_box1, 108, ascent - descent + 4); - evas_set_image_fill (evas, o_panel_box1, 0, 0, 108, ascent - descent + 4); - if (val < 1.0) - ecore_add_event_timer ("e_slide_panel()", 0.05, e_slide_panel_out, v + 1, - NULL); - else - panel_active = 0; + e = (Ecore_Event_Window_Expose *) ev->event; + info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas); + if (e->win != info->info.drawable) + return; + evas_damage_rectangle_add(evas, e->x, e->y, e->w, e->h); } -void -show_panel (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) +void e_mouse_move(Ecore_Event * ev) { - if (!panel_active) - e_slide_panel_in (0, NULL); -} + Ecore_Event_Mouse_Move *e; + Evas_Engine_Info_Software_X11 *info; -void -hide_panel (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) -{ - if (panel_active) - e_slide_panel_out (0, NULL); + e = (Ecore_Event_Mouse_Move *) ev->event; + info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas); + if (e->win != info->info.drawable) + return; + evas_event_feed_mouse_move(evas, e->x, e->y); } -void -button_next_new_all(Evas _e) +void e_mouse_down(Ecore_Event * ev) { - Evas_Object o; - double ascent, descent; - - o = evas_add_image_from_file (evas, IM "panel_button1.png"); - evas_set_image_border (evas, o, 3, 3, 3, 3); - evas_set_layer (evas, o, 1000); - evas_show (evas, o); - o_next_box = o; - o_txt_next_box = evas_add_text (evas, "andover", 24, "Next"); - evas_set_color (evas, o_txt_next_box, 0, 0, 0, 160); - evas_set_layer (evas, o_txt_next_box, 1000); - evas_move (evas, o_next_box, 516, 150); - evas_move (evas, o_txt_next_box, 519, 152); - evas_text_get_max_ascent_descent (evas, o_txt_next_box, &ascent, - &descent); - evas_resize (evas, o_next_box, 43, ascent - descent + 4); - evas_set_image_fill (evas, o_next_box, 0, 0, 43, ascent - descent + 4); - evas_show (evas, o_txt_next_box); + Ecore_Event_Mouse_Down *e; + Evas_Engine_Info_Software_X11 *info; + + e = (Ecore_Event_Mouse_Down *) ev->event; + info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas); + if (e->win != info->info.drawable) + return; + evas_event_feed_mouse_down(evas, e->button); } -void -button_next_new(Evas _e) +void e_mouse_up(Ecore_Event * ev) { - Evas_Object o; - double ascent, descent; + Ecore_Event_Mouse_Up *e; + Evas_Engine_Info_Software_X11 *info; - evas_del_object(_e, o_txt_next_box); - o_txt_next_box = evas_add_text (evas, "andover", 24, "Next"); - evas_set_color (evas, o_txt_next_box, 0, 0, 0, 160); - evas_set_layer (evas, o_txt_next_box, 1000); - evas_move (evas, o_txt_next_box, 519, 152); - evas_show (evas, o_txt_next_box); + e = (Ecore_Event_Mouse_Up *) ev->event; + info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas); + if (e->win != info->info.drawable) + return; + evas_event_feed_mouse_up(evas, e->button); } void -e_idle (void *data) +button_mouse_in(void *_data, Evas *_e, Evas_Object *_o, + void *event_info) { - evas_render (evas); + if ((_e = evas)) + evas_object_color_set(_o, 0, 0, 0, 255); + + return; + _data = NULL; + _e = NULL; + _o = NULL; + event_info = NULL; } -/* Events */ void -e_window_expose (Ecore_Event * ev) +button_mouse_out(void *_data, Evas *_e, Evas_Object *_o, + void *event_info) { - Ecore_Event_Window_Expose *e; + if ((_e = evas)) + evas_object_color_set(_o, 0, 0, 0, 160); - e = (Ecore_Event_Window_Expose *) ev->event; - if ((e->win != evas_get_window (evas))) - return; - evas_update_rect (evas, e->x, e->y, e->w, e->h); + return; + _data = NULL; + _e = NULL; + _o = NULL; + event_info = NULL; } void -e_mouse_move (Ecore_Event * ev) +button_mouse_down(void *_data, Evas *_e, Evas_Object *_o, + void *event_info) { - Ecore_Event_Mouse_Move *e; + Evas_List *l = _data; + void (*run) (); - e = (Ecore_Event_Mouse_Move *) ev->event; - if ((e->win != evas_get_window (evas))) - return; - evas_event_move (evas, e->x, e->y); -} + etox_clear(e_msg); + etox_clear(e_test); -void -e_mouse_down (Ecore_Event * ev) -{ - Ecore_Event_Mouse_Down *e; + if (l) { + evas_object_hide(o_prev_box); + evas_object_hide(o_txt_prev_box); - e = (Ecore_Event_Mouse_Down *) ev->event; - if ((e->win != evas_get_window (evas))) - return; - evas_event_button_down (evas, e->x, e->y, e->button); -} + if (l->next) { + evas_object_show(o_next_box); + evas_object_show(o_txt_next_box); + } else { + evas_object_hide(o_next_box); + evas_object_hide(o_txt_next_box); + } -void -e_mouse_up (Ecore_Event * ev) -{ - Ecore_Event_Mouse_Up *e; + current_test = l; + run = l->data; + run(); + } - e = (Ecore_Event_Mouse_Up *) ev->event; - if ((e->win != evas_get_window (evas))) - return; - evas_event_button_up (evas, e->x, e->y, e->button); + return; + _data = NULL; + _e = NULL; + _o = NULL; + event_info = NULL; } void -mouse_in (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) -{ - if ((_e = evas) && ((_o == o_txt_panel_box1) || (_o == o_txt_next_box))) - evas_set_color (_e, _o, 0, 0, 0, 255); -} +next_test(void *_data, Evas *_e, Evas_Object *_o, + void *event_info) +{ + void (*run) (); + + if (!current_test || !current_test->next) + return; + + /* + * Step to the next test, hide the "Next" button if appropriate, and + * run the current test. + */ + current_test = current_test->next; + if (!current_test->next) { + evas_object_hide(o_next_box); + evas_object_hide(o_txt_next_box); + } -void -mouse_out (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) -{ - if ((_e = evas) && ((_o == o_txt_panel_box1) || (_o == o_txt_next_box))) - evas_set_color (_e, _o, 0, 0, 0, 160); + evas_object_show(o_prev_box); + evas_object_show(o_txt_prev_box); + + evas_object_event_callback_add(o_txt_next_box, EVAS_CALLBACK_MOUSE_IN, + button_mouse_in, NULL); + evas_object_event_callback_add(o_txt_next_box, EVAS_CALLBACK_MOUSE_OUT, + button_mouse_out, NULL); + + run = current_test->data; + run(); + + return; + _data = NULL; + _e = NULL; + _o = NULL; + event_info = NULL; } void -setup (void) +prev_test(void *_data, Evas *_e, Evas_Object *_o, + void *event_info) { - Window win, ewin; - int w, h; - int i, j; - Evas_Object o; - - /* setup callbacks for events */ - ecore_event_filter_handler_add (ECORE_EVENT_WINDOW_EXPOSE, e_window_expose); - ecore_event_filter_handler_add (ECORE_EVENT_MOUSE_MOVE, e_mouse_move); - ecore_event_filter_handler_add (ECORE_EVENT_MOUSE_DOWN, e_mouse_down); - ecore_event_filter_handler_add (ECORE_EVENT_MOUSE_UP, e_mouse_up); - /* handler for when the event queue goes idle */ - ecore_event_filter_idle_handler_add (e_idle, NULL); - /* create a 500x400 toplevel window */ - win = ecore_window_new (0, 0, 0, win_w, win_h); - ecore_window_set_min_size (win, 600, 500); - ecore_window_set_max_size (win, 600, 500); - main_win = win; - - /* create a 500x400 evas rendering in software - conveience function that */ - /* also creates the window for us in the right colormap & visual */ - evas = - evas_new_all (ecore_display_get (), win, 0, 0, win_w, win_h, - render_method, max_colors, MAX_FONT_CACHE, MAX_IMAGE_CACHE, - FONT_DIRECTORY); - /* get the window ID for the evas created for us */ - ewin = evas_get_window (evas); - /* show the evas window */ - ecore_window_show (ewin); - /* set the events this window accepts */ - ecore_window_set_events (ewin, XEV_EXPOSE | XEV_BUTTON | XEV_MOUSE_MOVE); - /* show the toplevel */ - ecore_window_show (win); - - /* Create interface */ - - /* Background */ - o_bg = evas_add_image_from_file (evas, IM "bg.png"); - evas_resize (evas, o_bg, win_w, win_h); - evas_move (evas, o_bg, 0, 0); - evas_set_layer (evas, o_bg, 0); - evas_show (evas, o_bg); - - /* Logo */ - /*FIXME - o_logo = evas_add_image_from_file(evas, IM"logo.png"); - evas_set_color(evas, o_logo, 255, 255, 255, 0); - evas_show(evas, o_logo); - evas_get_image_size(evas, o_logo, &w, &h); - evas_move(evas, o_logo, (win_w - w) / 2, (win_h - h) / 2); - evas_resize(evas, o_logo, w, h); - evas_set_layer(evas, o_logo, 100); - */ - - /* Panel background */ - o_panel = evas_add_image_from_file (evas, IM "panel.png"); - o_showpanel = evas_add_rectangle (evas); - o_hidepanel = evas_add_rectangle (evas); - evas_set_color (evas, o_showpanel, 0, 0, 0, 0); - evas_set_color (evas, o_hidepanel, 0, 0, 0, 0); - evas_get_image_size (evas, o_panel, &w, NULL); - if (!panel_active) - evas_move (evas, o_panel, -w, 0); - evas_resize (evas, o_panel, w, win_h); - evas_set_layer (evas, o_panel, 200); - evas_resize (evas, o_showpanel, 64, win_h); - if (panel_active) - evas_set_layer (evas, o_showpanel, 180); - else - evas_set_layer (evas, o_showpanel, 1000); - evas_move (evas, o_hidepanel, 128, 0); - evas_resize (evas, o_hidepanel, win_w - 128, win_h); - evas_set_layer (evas, o_hidepanel, 1000); - evas_move (evas, o_showpanel, 0, 0); - evas_show (evas, o_panel); - evas_show (evas, o_showpanel); - evas_show (evas, o_hidepanel); - - /* Panel title */ - o_txt_paneltitle = evas_add_text (evas, "sinon", 17, "Etox Test"); - evas_set_color (evas, o_txt_paneltitle, 255, 255, 255, 255); - evas_set_layer (evas, o_txt_paneltitle, 250); - evas_show (evas, o_txt_paneltitle); - - /* Panel box 1 */ - o = evas_add_image_from_file (evas, IM "panel_button1.png"); - evas_set_image_border (evas, o, 3, 3, 3, 3); - evas_set_layer (evas, o, 250); - evas_show (evas, o); - o_panel_box1 = o; - o_txt_panel_box1 = evas_add_text (evas, "andover", 24, "Basic"); - evas_set_color (evas, o_txt_panel_box1, 0, 0, 0, 160); - evas_set_layer (evas, o_txt_panel_box1, 250); - evas_show (evas, o_txt_panel_box1); - - e_slide_panel_out (0, NULL); - - /* Callbacks */ - evas_callback_add (evas, o_showpanel, CALLBACK_MOUSE_IN, show_panel, NULL); - evas_callback_add (evas, o_hidepanel, CALLBACK_MOUSE_IN, hide_panel, NULL); - /*FIXME - evas_callback_add(evas, o_logo, CALLBACK_MOUSE_DOWN, show_panel, NULL); - evas_callback_add(evas, o_logo, CALLBACK_MOUSE_UP, show_panel, NULL); - */ - evas_callback_add (evas, o_txt_panel_box1, CALLBACK_MOUSE_IN, mouse_in, - NULL); - evas_callback_add (evas, o_txt_panel_box1, CALLBACK_MOUSE_OUT, mouse_out, - NULL); - evas_callback_add (evas, o_txt_panel_box1, CALLBACK_MOUSE_DOWN, test_basic, - NULL); -} - -int -main (int argc, char **argv) -{ - /* init X */ - if (!ecore_display_init (NULL)) - { - if (getenv ("DISPLAY")) - { - printf ("Cannot initialize default display:\n"); - printf ("DISPLAY=%s\n", getenv ("DISPLAY")); + void (*run) (); + + if (!current_test || !current_test->prev) + return; + + /* + * Step to the next test, hide the "Next" button if appropriate, and + * run the current test. + */ + current_test = current_test->prev; + if (!current_test->prev) { + evas_object_hide(o_prev_box); + evas_object_hide(o_txt_prev_box); } - else + + evas_object_show(o_next_box); + evas_object_show(o_txt_next_box); + + evas_object_event_callback_add(o_txt_prev_box, EVAS_CALLBACK_MOUSE_IN, + button_mouse_in, NULL); + evas_object_event_callback_add(o_txt_prev_box, EVAS_CALLBACK_MOUSE_OUT, + button_mouse_out, NULL); + + run = current_test->data; + run(); + + return; + _data = NULL; + _e = NULL; + _o = NULL; + event_info = NULL; +} + +void setup(void) +{ + double width, height; + Window win, ewin; + Evas_Object *o_bg; + Evas_Object *o_bg_etox; + char msg[] = + " The Etox Test utility consists in a series\n" + " of test suites designed to exercise all of\n" + " the etox functions.\n" + " Informational messages will be displayed here,\n" + " the test text will be presented in the colored\n" + " rectangle below.\n" + " To start a test suite, select it from the\n" + " navigation panel on the left.\n"; + + /* setup callbacks for events */ + ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_EXPOSE, + e_window_expose); + ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_MOVE, + e_mouse_move); + ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN, + e_mouse_down); + ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_UP, e_mouse_up); + + /* handler for when the event queue goes idle */ + ecore_event_filter_idle_handler_add(e_idle, NULL); + + /* create a toplevel window */ + win = ecore_window_new(0, 0, 0, win_w, win_h); + ecore_window_set_title(win, "Etox Test"); + ecore_window_set_min_size(win, win_w, win_h); + ecore_window_set_max_size(win, win_w, win_h); + main_win = win; + + /* create a evas rendering in software - convenience function that */ + /* also creates the window for us in the right colormap & visual */ + evas = evas_new(); + evas_output_method_set(evas, evas_render_method_lookup("software_x11")); + evas_output_size_set(evas, win_w, win_h); + evas_output_viewport_set(evas, 0, 0, win_w, win_h); { - printf ("No DISPLAY variable set!\n"); + Display *disp; + Evas_Engine_Info_Software_X11 *info; + + disp = ecore_display_get(); + + info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas); + info->info.display = disp; + info->info.visual = DefaultVisual(disp, DefaultScreen(disp)); + info->info.colormap = DefaultColormap(disp, DefaultScreen(disp)); + + ewin = ecore_window_new(win, 0, 0, win_w, win_h); + + info->info.drawable = ewin; + info->info.depth = DefaultDepth(disp, DefaultScreen(disp)); + + evas_engine_info_set(evas, (Evas_Engine_Info *)info); } - printf ("Exit.\n"); - exit (-1); - } - /* setup handlers for system signals */ - ecore_event_signal_init (); - /* setup the event filter */ - ecore_event_filter_init (); - /* setup the X event internals */ - ecore_event_x_init (); - /* program does its data setup here */ - setup (); - /* call the animator once to start it up */ - e_fade_logo_in (0, NULL); - /* and now loop forever handling events */ - ecore_event_loop (); - - etox_free (e_msg); - etox_free (e_test); - evas_free (evas); - return 0; + evas_object_image_cache_set(evas, MAX_IMAGE_CACHE); + evas_object_font_cache_set(evas, MAX_FONT_CACHE); + evas_object_font_path_append(evas, FONT_DIRECTORY); + + /* get the window ID for the evas created for us */ + + /* show the evas window */ + ecore_window_show(ewin); + + /* set the events this window accepts */ + ecore_window_set_events(ewin, + XEV_EXPOSE | XEV_BUTTON | XEV_MOUSE_MOVE); + + /* show the toplevel */ + ecore_window_show(win); + + /* Create interface */ + + /* Background */ + o_bg = evas_object_image_add(evas); + evas_object_image_file_set(o_bg, IM "bg.png", + IM "bg.png"); + evas_object_resize(o_bg, win_w, win_h); + evas_object_image_fill_set(o_bg, 0, 0, win_w, win_h); + evas_object_move(o_bg, 0, 0); + evas_object_layer_set(o_bg, 0); + evas_object_show(o_bg); + + /* Panel */ + setup_panel(evas); + + /* Setup message etox */ + /* Clip rectangle for bounding where the message text is drawn */ + clip_msg = evas_object_rectangle_add(evas); + evas_object_show(clip_msg); + evas_object_color_set(clip_msg, 255, 0, 255, 255); + evas_object_move(clip_msg, 40, 40); + evas_object_resize(clip_msg, 520, 140); + + /* Create message etox */ + e_msg = etox_new_all(evas, 40, 40, 520, 140, 255, ETOX_ALIGN_LEFT); + etox_context_set_align(e_msg, ETOX_ALIGN_LEFT); + etox_context_set_font(e_msg, "sinon", 14); + etox_context_set_style(e_msg, "plain"); + etox_context_set_color(e_msg, 255, 255, 255, 255); + etox_set_text(e_msg, msg); + etox_set_clip(e_msg, clip_msg); + etox_set_alpha(e_msg, 255); + etox_set_layer(e_msg, 1000); + etox_show(e_msg); + + /* Setup test etox */ + /* Setup test etox background */ + o_bg_etox = evas_object_rectangle_add(evas); + evas_object_move(o_bg_etox, 40, 200); + evas_object_resize(o_bg_etox, 520, 260); + evas_object_color_set(o_bg_etox, 0, 100, 100, 100); + evas_object_layer_set(o_bg_etox, 100); + evas_object_show(o_bg_etox); + + /* Clip rectangle for bounding where the test text is drawn */ + clip_test = evas_object_rectangle_add(evas); + evas_object_color_set(clip_test, 255, 0, 255, 255); + evas_object_move(clip_test, 40, 200); + evas_object_resize(clip_test, 520, 260); + evas_object_show(clip_test); + + /* Create test etox */ + e_test = + etox_new_all(evas, 40, 200, 520, 260, 255, ETOX_ALIGN_CENTER); + etox_context_set_align(e_test, ETOX_ALIGN_CENTER); + etox_context_set_font(e_test, "sinon", 14); + etox_context_set_style(e_test, "plain"); + etox_context_set_color(e_test, 255, 255, 255, 255); + etox_set_text(e_test, ""); + etox_set_clip(e_test, clip_test); + etox_set_alpha(e_test, 255); + etox_set_layer(e_test, 1000); + + /* + * Create the next test button + */ + o_next_box = evas_object_image_add(evas); + evas_object_image_file_set(o_next_box, + IM "panel_button1.png", + IM "panel_button1.png"); + evas_object_image_border_set(o_next_box, 3, 3, 3, 3); + evas_object_layer_set(o_next_box, 1000); + evas_object_hide(o_next_box); + + o_txt_next_box = evas_object_text_add(evas); + evas_object_text_font_set(o_txt_next_box, "andover", 24); + evas_object_text_text_set(o_txt_next_box, "Next"); + evas_object_color_set(o_txt_next_box, 0, 0, 0, 160); + evas_object_layer_set(o_txt_next_box, 1000); + evas_object_move(o_next_box, 516, 150); + evas_object_move(o_txt_next_box, 519, 152); + + width = evas_object_text_horiz_advance_get(o_txt_next_box); + height = evas_object_text_vert_advance_get(o_txt_next_box); + + width += 10; + height += 5; + + evas_object_resize(o_next_box, width, height); + evas_object_image_fill_set(o_next_box, 0, 0, width, height); + evas_object_hide(o_txt_next_box); + evas_object_event_callback_add(o_txt_next_box, EVAS_CALLBACK_MOUSE_DOWN, + next_test, NULL); + + /* + * Create the previous test button + */ + o_prev_box = evas_object_image_add(evas); + evas_object_image_file_set(o_prev_box, + IM "panel_button1.png", + IM "panel_button1.png"); + evas_object_image_border_set(o_prev_box, 3, 3, 3, 3); + evas_object_layer_set(o_prev_box, 1000); + evas_object_hide(o_prev_box); + + o_txt_prev_box = evas_object_text_add(evas); + evas_object_text_font_set(o_txt_prev_box, "andover", 24); + evas_object_text_text_set(o_txt_prev_box, "Previous"); + evas_object_color_set(o_txt_prev_box, 0, 0, 0, 160); + evas_object_layer_set(o_txt_prev_box, 1000); + evas_object_move(o_prev_box, 416, 150); + evas_object_move(o_txt_prev_box, 419, 152); + + width = evas_object_text_horiz_advance_get(o_txt_prev_box); + height = evas_object_text_vert_advance_get(o_txt_prev_box); + + width += 10; + height += 5; + + evas_object_resize(o_prev_box, width, height); + evas_object_image_fill_set(o_prev_box, 0, 0, width, height); + evas_object_hide(o_txt_prev_box); + evas_object_event_callback_add(o_txt_prev_box, EVAS_CALLBACK_MOUSE_DOWN, + prev_test, NULL); + + e_slide_panel_in(0, NULL); +} + +int main(int argc, char **argv) +{ + Evas_List *l; + + /* init X */ + if (!ecore_display_init(NULL)) { + if (getenv("DISPLAY")) { + printf("Cannot initialize default display:\n"); + printf("DISPLAY=%s\n", getenv("DISPLAY")); + } else { + printf("No DISPLAY variable set!\n"); + } + printf("Exit.\n"); + exit(-1); + } + + /* setup handlers for system signals */ + ecore_event_signal_init(); + + /* setup the event filter */ + ecore_event_filter_init(); + + /* setup the X event internals */ + ecore_event_x_init(); + + /* program does its data setup here */ + setup(); + + /* and now loop forever handling events */ + ecore_event_loop(); + + etox_free(e_msg); + etox_free(e_test); + + for (l = pbuttons; l; l = l->next) + panel_button_free(pbuttons->data); + + evas_list_free(pbuttons); + evas_free(evas); + + return 0; + argc = 0; + argv = NULL; } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/etox/test/tests.c,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -3 -r1.1.2.2 -r1.1.2.3 --- tests.c 5 May 2002 16:28:13 -0000 1.1.2.2 +++ tests.c 17 Sep 2002 21:34:43 -0000 1.1.2.3 @@ -1,153 +1,241 @@ #include "Etox_test.h" -void -test_basic (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) +Evas_List *basic_tests() { - char msg[] = - "This series of tests will exercise the most basic\n" - "functions of etox, reading and displaying text with\n" - "basic formatting.\n" - "\n" - "In addition, prepending, appending and inserting text\n" - "in an existing etox will be tested\n" - "\n" - "Click Next to begin the tests."; - - /* Setup message etox */ - /* Clip rectangle for bounding where the message text is drawn */ - clip_msg = evas_add_rectangle (evas); - evas_show (evas, clip_msg); - evas_set_color (evas, clip_msg, 255, 0, 255, 255); - evas_move (evas, clip_msg, 40, 40); - evas_resize (evas, clip_msg, 520, 140); - /* Create message etox */ - e_msg = etox_new_all (evas, 40, 40, 520, 140, 255, ETOX_ALIGN_LEFT); - etox_context_set_align (e_msg, ETOX_ALIGN_LEFT); - etox_context_set_font (e_msg, "sinon", 14); - etox_context_set_style (e_msg, "plain"); - etox_context_set_color (e_msg, 255, 255, 255, 255); - etox_set_clip (e_msg, clip_msg); - etox_set_alpha (e_msg, 255); - etox_set_layer (e_msg, 1000); - etox_set_text (e_msg, msg); - etox_show (e_msg); - - /* Setup test etox */ - /* Setup test etox background */ - o_bg_etox = evas_add_rectangle (evas); - evas_move (evas, o_bg_etox, 40, 200); - evas_resize (evas, o_bg_etox, 520, 260); - evas_set_color (evas, o_bg_etox, 0, 100, 100, 100); - evas_set_layer (evas, o_bg_etox, 100); - evas_show (evas, o_bg_etox); - /* Clip rectangle for bounding where the test text is drawn */ - clip_test = evas_add_rectangle (evas); - evas_set_color (evas, clip_test, 255, 0, 255, 255); - evas_move (evas, clip_test, 40, 200); - evas_resize (evas, clip_test, 520, 260); - evas_show (evas, clip_test); - /* Create test etox */ - e_test = etox_new_all (evas, 40, 200, 520, 260, 255, ETOX_ALIGN_CENTER); - etox_context_set_align (e_test, ETOX_ALIGN_CENTER); - etox_context_set_font (e_test, "nationff", 18); - etox_context_set_style (e_test, "raised"); - etox_context_set_color (e_test, 128, 255, 255, 255); - etox_set_clip (e_test, clip_test); - etox_set_alpha (e_test, 128); - etox_set_layer (e_test, 1000); - - /* Create "Next" button */ - button_next_new_all (evas); - - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_IN, mouse_in, NULL); - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_OUT, mouse_out, NULL); - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_DOWN, - test_basic_get, e_msg); -} - -void -test_basic_get (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) -{ - char msg[] = - "The sample text shown below was retrieved from\n" - "the text in this message etox.\n" - "\n" - "The function used was etox_get_text."; - - char *string; - - /* Change message */ - etox_set_text (_data, msg); - - /* Recreate "Next" button */ - button_next_new(_e); - - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_IN, mouse_in, NULL); - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_OUT, mouse_out, NULL); - evas_callback_add (_e, o_txt_next_box, CALLBACK_MOUSE_DOWN, - test_basic_set, _data); - - /* Set test text and show test etox */ - string = etox_get_text (e_msg); - etox_set_text (e_test, string); - etox_show (e_test); -} - -void -test_basic_set (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) -{ - char msg[] = - "The text in an etox can be changed on the fly.\n" - "The sample paragraph shown below replaced the\n" - "text shown in the previous test.\n" - "\n" - "The function used was etox_set_text."; - - char string[] = - "\n" - "A file that big?\n" - "It might be very useful.\n" - "But now it is gone.\n" - "\n"; - - /* Change message */ - etox_set_text (_data, msg); - - /* Recreate "Next" button */ - button_next_new(_e); - - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_IN, mouse_in, NULL); - evas_callback_add (evas, o_txt_next_box, CALLBACK_MOUSE_OUT, mouse_out, NULL); - evas_callback_add (_e, o_txt_next_box, CALLBACK_MOUSE_DOWN, - test_basic_append, _data); - - /* Change test etox */ - etox_set_text (e_test, string); -} - -void -test_basic_append (void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) -{ - char msg[] = - "Text can be appended to the text already existent\n" - "in the etox.\n" - "\n" - "The second paragraph shown below was appended\n" - "at the end of the etox through etox_append_text.\n"; - - char string[] = - "The Tao that is seen\n" - "Is not the true Tao\n" - "Until you bring fresh toner.\n" - "\n"; - - /* Change message */ - etox_set_text (_data, msg); - - /* Recreate "Next" button */ - button_next_new(_e); - - /* Change test etox */ - //etox_append_text (e_test, string); - etox_set_text (e_test, string); + Evas_List *l = NULL; + + l = evas_list_append(l, test_basic_init); + l = evas_list_append(l, test_basic_get); + l = evas_list_append(l, test_basic_set); + l = evas_list_append(l, test_basic_append); + + return l; +} + +void test_basic_init() +{ + char msg[] = + "This series of tests will exercise the most basic\n" + "functions of etox, reading and displaying text with\n" + "basic formatting.\n" + "\n" + "In addition, prepending, appending and inserting text\n" + "in an existing etox will be tested.\n" + "\n" "Click Next to begin the tests."; + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + + return; +} + +void test_basic_get() +{ + char msg[] = + "The sample text shown below was retrieved from\n" + "the text in this message etox.\n" + "\n" "The function used was etox_get_text."; + + char *string; + + /* Change message */ + etox_set_text(e_msg, msg); + + /* Set test text and show test etox */ + string = etox_get_text(e_msg); + etox_set_text(e_test, string); + etox_show(e_test); + + return; +} + +void test_basic_set() +{ + char msg[] = + "The text in an etox can be changed on the fly.\n" + "The sample paragraph shown below replaced the\n" + "text shown in the previous test.\n" + "\n" "The function used was etox_set_text."; + + char string[] = + "\n" + "A file that big?\n" + "It might be very useful.\n" "But now it is gone.\n" "\n"; + + /* Change message */ + etox_set_text(e_msg, msg); + + /* Change test etox */ + etox_set_text(e_test, string); + + return; +} + +void test_basic_append() +{ + char msg[] = + "Text can be appended to the text already existent\n" + "in the etox.\n" + "\n" + "The second paragraph shown below was appended\n" + "at the end of the etox through etox_append_text.\n"; + + char string[] = + "The Tao that is seen\n" + "Is not the true Tao\n" "Until you bring fresh toner.\n" "\n"; + + /* Change message */ + etox_set_text(e_msg, msg); + + /* Change test etox */ + etox_append_text(e_test, string); + + return; +} + +Evas_List *style_tests() +{ + Evas_List *l = NULL; + + l = evas_list_append(l, test_style_init); + l = evas_list_append(l, test_style_bold); + l = evas_list_append(l, test_style_outline); + l = evas_list_append(l, test_style_raised); + l = evas_list_append(l, test_style_shadow); + + return l; +} + +void test_style_init() +{ + char msg[] = + "The text can be applied to the etox with a\n" + "stylized effect.\n" + "\n" + "Click the Next button to cycle through the available\n" + "text styles.\n" + "\n" "A style-less sample paragraph is shown below.\n"; + + char string[] = + "\n\n\n" + "Chaos reigns within.\n" + "Stop, reflect, and reboot.\n" "Order shall return.\n"; + + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + etox_context_set_style(e_test, "plain"); + etox_set_text(e_test, string); + etox_show(e_test); + + return; +} + +void test_style_bold() +{ + char msg[] = "\"Bold\" style.\n"; + + char string[] = + "\n\n\n" + "Chaos reigns within.\n" + "Stop, reflect, and reboot.\n" "Order shall return.\n"; + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + etox_context_set_style(e_test, "bold"); + etox_set_text(e_test, string); + etox_show(e_test); + + return; +} + +void test_style_outline() +{ + char msg[] = "\"Outline\" style.\n"; + + char string[] = + "\n\n\n" + "Chaos reigns within.\n" + "Stop, reflect, and reboot.\n" "Order shall return.\n"; + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + etox_context_set_style(e_test, "outline"); + etox_set_text(e_test, string); + etox_show(e_test); + + return; +} + +void test_style_raised() +{ + char msg[] = "\"Raised\" style.\n"; + + char string[] = + "\n\n\n" + "Chaos reigns within.\n" + "Stop, reflect, and reboot.\n" "Order shall return.\n"; + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + etox_context_set_style(e_test, "raised"); + etox_set_text(e_test, string); + etox_show(e_test); + + return; +} + +void test_style_shadow() +{ + char msg[] = "\"Shadow\" style.\n"; + + char string[] = + "\n\n\n" + "Chaos reigns within.\n" + "Stop, reflect, and reboot.\n" "Order shall return.\n"; + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + etox_context_set_style(e_test, "shadow"); + etox_set_text(e_test, string); + etox_show(e_test); + + return; +} + +Evas_List *callback_tests() +{ + Evas_List *l = NULL; + + l = evas_list_append(l, test_callback_init); + /* l = evas_list_append(l, test_callback_add); */ + + return l; +} + +void test_callback_init() +{ + char msg[] = "Not implemented yet."; + + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + + return; +} + +void test_callback_add() +{ + char msg[] = "Not implemented yet."; + etox_set_text(e_msg, msg); + + etox_set_text(e_test, ""); + + return; } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/etox/test/tests.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -3 -r1.1.2.2 -r1.1.2.3 --- tests.h 5 May 2002 16:28:13 -0000 1.1.2.2 +++ tests.h 17 Sep 2002 21:34:43 -0000 1.1.2.3 @@ -1,9 +1,30 @@ #ifndef __ETOX_TEST_TESTS_H__ #define __ETOX_TEST_TESTS_H__ -void test_basic(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); -void test_basic_get(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); -void test_basic_set(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); -void test_basic_append(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y); +/* + * Basic test prototypes + */ +Evas_List *basic_tests(); +void test_basic_init(); +void test_basic_get(); +void test_basic_set(); +void test_basic_append(); -#endif /* __ETOX_TEST_TESTS_H__ */ +/* + * Style tests prototypes + */ +Evas_List *style_tests(); +void test_style_init(); +void test_style_bold(); +void test_style_outline(); +void test_style_raised(); +void test_style_shadow(); + +/* + * Callback tests prototypes + */ +Evas_List *callback_tests(); +void test_callback_init(); +/* void test_callback_add(); */ + +#endif /* __ETOX_TEST_TESTS_H__ */ |