Enlightenment CVS committal
Author : rbdpngn
Project : e17
Module : libs/ebg
Dir : e17/libs/ebg/test
Modified Files:
e_bg_test.c
Log Message:
More merging spam.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ebg/test/e_bg_test.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_bg_test.c 28 Feb 2002 21:14:02 -0000 1.4
+++ e_bg_test.c 14 Jan 2003 22:47:41 -0000 1.5
@@ -1,8 +1,10 @@
/***************************************************************************
- * e_bg_test.c
+ * e_bg_test2.c
**************************************************************************/
#include<Ebg.h>
+#include<Evas.h>
#include<Ecore.h>
+#include <Evas_Engine_Software_X11.h>
/* window options */
#define WINDOW_NAME "E_bg_Test"
@@ -12,7 +14,7 @@
#define WINDOW_MIN_W 150
#define WINDOW_MIN_H 150
-#define EBG_MESSAGE_SIZE 256
+#define EBG_MESSAGE_SIZE 256
#define EBG_BUF_SIZE 1024
/* evas options */
@@ -20,330 +22,328 @@
#define IMAGE_CACHE_IN_MB 4
#define FONT_CACHE_IN_MB 1
-/* globals */
-Evas evas;
-E_Background bg;
-Evas_Object ot, ol, ol2, ol3, ol4;
-Evas_List bg_list, bg_current;
+Evas_List *filelist = NULL, *current = NULL;
Window main_win;
-int win_w, win_h, current_layer, current_stack_req;
+Evas *evas;
+E_Background bg;
+int current_layer = 0, current_stack_req;
+
+static Window
+e_evas_get_window(Evas * e)
+{
+ Evas_Engine_Info_Software_X11 *einfo;
+
+ einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
+ return (einfo->info.drawable);
+}
-/* protos */
-static void try_bg_load_next(void);
-static void try_bg_load_prev(void);
-/* Ecore Callbacks */
static void
e_idle(void *data)
-{ evas_render(evas); }
+{
+ evas_render(evas);
+}
static void
-e_window_expose(Ecore_Event *ev)
+e_window_expose(Ecore_Event * ev)
{
- Ecore_Event_Window_Expose *e;
+ Ecore_Event_Window_Expose *e;
- e = (Ecore_Event_Window_Expose*)ev->event;
- evas_update_rect(evas, e->x, e->y, e->w, e->h);
+ e = (Ecore_Event_Window_Expose *) ev->event;
+ evas_damage_rectangle_add(evas, e->x, e->y, e->w, e->h);
}
static void
-e_window_configure(Ecore_Event *ev)
+e_window_configure(Ecore_Event * ev)
{
- Ecore_Event_Window_Configure *e;
- double tw, th;
+ Ecore_Event_Window_Configure *e;
+ Window ewin = e_evas_get_window(evas);
+
+ /* double tw, th; */
+
+ e = (Ecore_Event_Window_Configure *) ev->event;
- e = (Ecore_Event_Window_Configure*)ev->event;
- if(e->win == main_win)
- {
- win_w = e->w;
- win_h = e->h;
- ecore_window_resize(evas_get_window(evas),win_w,win_h);
- evas_set_output_viewport(evas,0,0,win_w,win_h);
- evas_set_output_size(evas,win_w, win_h);
- if(bg)
- e_bg_resize(bg, win_w, win_h);
- tw = evas_get_text_width(evas, ot);
- th = evas_get_text_height(evas, ot);
- evas_move(evas, ot, (((double)win_w - tw)/2.0),
- (((double)win_h - th)/2.0));
-
- tw = evas_get_text_width(evas, ol);
- th = evas_get_text_height(evas, ol);
- evas_move(evas, ol, (((double)win_w - tw) * 0.25),
- (((double)win_h - th) * 0.25));
- tw = evas_get_text_width(evas, ol2);
- th = evas_get_text_height(evas, ol2);
- evas_move(evas, ol2, (((double)win_w - tw) * 0.75),
- (((double)win_h - th) * 0.75));
- tw = evas_get_text_width(evas, ol3);
- th = evas_get_text_height(evas, ol3);
- evas_move(evas, ol3, (((double)win_w - tw) * 0.35),
- (((double)win_h - th) * 0.35));
- tw = evas_get_text_width(evas, ol4);
- th = evas_get_text_height(evas, ol4);
- evas_move(evas, ol4, (((double)win_w - tw) * 0.80),
- (((double)win_h - th) * 0.80));
- }
+ ecore_window_resize(ewin, e->w, e->h);
+ evas_output_viewport_set(evas, 0, 0, e->w, e->h);
+ evas_output_size_set(evas, e->w, e->h);
+ if (bg)
+ {
+ e_bg_move(bg, bg->x, bg->y);
+ e_bg_resize(bg, e->w, e->h);
+ }
+#if 0
+ tw = evas_get_text_width(evas, ot);
+ th = evas_get_text_height(evas, ot);
+ evas_move(evas, ot, (((double) win_w - tw) / 2.0),
+ (((double) win_h - th) / 2.0));
+
+ tw = evas_get_text_width(evas, ol);
+ th = evas_get_text_height(evas, ol);
+ evas_move(evas, ol, (((double) win_w - tw) * 0.25),
+ (((double) win_h - th) * 0.25));
+ tw = evas_get_text_width(evas, ol2);
+ th = evas_get_text_height(evas, ol2);
+ evas_move(evas, ol2, (((double) win_w - tw) * 0.75),
+ (((double) win_h - th) * 0.75));
+ tw = evas_get_text_width(evas, ol3);
+ th = evas_get_text_height(evas, ol3);
+ evas_move(evas, ol3, (((double) win_w - tw) * 0.35),
+ (((double) win_h - th) * 0.35));
+ tw = evas_get_text_width(evas, ol4);
+ th = evas_get_text_height(evas, ol4);
+ evas_move(evas, ol4, (((double) win_w - tw) * 0.80),
+ (((double) win_h - th) * 0.80));
+#endif
}
-static void
-e_window_key_down(Ecore_Event *ev)
+
+void
+load_current(void)
{
- Ecore_Event_Key_Down *e;
+ int ww = 0, hh = 0;
+ char buf[EBG_BUF_SIZE];
+
+ if (bg)
+ e_bg_free(bg);
+ bg = e_bg_load((char *) current->data);
+ if (!bg)
+ return;
+ snprintf(buf, EBG_BUF_SIZE, "%s", (char *) current->data);
+ ecore_window_set_title(main_win, buf);
+ ecore_window_get_geometry(main_win, NULL, NULL, &ww, &hh);
+ e_bg_add_to_evas(bg, evas);
+#if 0
+ e_bg_callback_add(bg, CALLBACK_MOUSE_DOWN, bg_mouse_down, NULL);
+#endif
+ e_bg_resize(bg, ww, hh);
+ e_bg_set_layer(bg, current_layer);
+#if 0
+ if (current_stack_req)
+ e_bg_stack_object_above(bg, ot);
+ else
+ e_bg_stack_object_below(bg, ot);
+#endif
+ e_bg_show(bg);
+
- e = ev->event;
- if (e->win != evas_get_window(evas)) return;
-
- if(!strcmp(e->key, "Left"))
- {
- try_bg_load_next();
- }
- else if(!strcmp(e->key, "Right"))
- {
- try_bg_load_prev();
- }
}
+
+void
+try_bg_load_next(void)
+{
+ if (current)
+ current = current->next;
+ if (!current)
+ current = filelist;
+ if (!current)
+ exit(0);
+ load_current();
+}
+
+void
+try_bg_load_prev(void)
+{
+ if (current)
+ current = current->prev;
+ if (!current)
+ current = filelist->last;
+ if (!current)
+ exit(0);
+ load_current();
+}
+
static void
-e_window_key_up(Ecore_Event *ev)
+e_window_key_down(Ecore_Event * ev)
{
- Ecore_Event_Key_Up *e;
+ Ecore_Event_Key_Down *e;
- e = ev->event;
- if (e->win != evas_get_window(evas)) return;
+ e = ev->event;
- if(!strcmp("q", e->key))
- exit(0);
+ if (e->win == main_win || e->win == e_evas_get_window(evas))
+ {
+ if (!strcmp(e->key, "Left"))
+ {
+ try_bg_load_next();
+#if 0
+ bg->x++;
+#endif
+ }
+ else if (!strcmp(e->key, "Right"))
+ {
+ try_bg_load_prev();
+#if 0
+ bg->y++;
+#endif
+ }
+ e_bg_move(bg, bg->x, bg->y);
+ }
}
+
static void
-e_window_mouse_down(Ecore_Event *ev)
+e_window_key_up(Ecore_Event * ev)
{
- Ecore_Event_Mouse_Down *e;
-
- 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);
+ Ecore_Event_Key_Up *e;
+
+ e = ev->event;
+ if (e->win == main_win || e->win == e_evas_get_window(evas))
+ {
+ if (!strcmp("q", e->key))
+ exit(0);
+ }
}
+
static void
-e_window_mouse_up(Ecore_Event *ev)
+e_window_mouse_down(Ecore_Event * ev)
{
- Ecore_Event_Mouse_Up *e;
-
- 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);
+ Ecore_Event_Mouse_Down *e;
+
+ e = (Ecore_Event_Mouse_Down *) ev->event;
+ if (e->win == e_evas_get_window(evas))
+ evas_event_feed_mouse_down(evas, e->button);
}
static void
-e_window_mouse_move(Ecore_Event *ev)
+e_window_mouse_up(Ecore_Event * ev)
{
- Ecore_Event_Mouse_Move *e;
+ Ecore_Event_Mouse_Up *e;
- e = (Ecore_Event_Mouse_Move*)ev->event;
- evas_event_move(evas, e->x, e->y);
+ e = (Ecore_Event_Mouse_Up *) ev->event;
+ if (e->win == e_evas_get_window(evas))
+ evas_event_feed_mouse_up(evas, e->button);
}
static void
-bg_mouse_down(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
+e_window_mouse_move(Ecore_Event * ev)
{
- char message[EBG_MESSAGE_SIZE];
+ Ecore_Event_Mouse_Move *e;
- if(_b == 1)
- {
- e_bg_set_layer(bg, ++current_layer);
- }
- else if(_b == 2)
- {
- if(current_stack_req)
- current_stack_req = 0;
- else
- current_stack_req = 1;
- }
- else if(_b == 3)
- {
- e_bg_set_layer(bg, --current_layer);
- }
- snprintf(message, EBG_MESSAGE_SIZE, "Bg is at Layer %d", current_layer);
- evas_set_text(evas, ot, message);
- if(current_stack_req)
- e_bg_stack_object_above(bg, ot);
- /*put the layer description above the etext in the same layer*/
- else
- e_bg_stack_object_below(bg, ot);
+ e = (Ecore_Event_Mouse_Move *) ev->event;
+ evas_event_feed_mouse_move(evas, e->x, e->y);
}
+
void
-try_bg_load_next()
+filelist_destroy(Evas_List * l)
{
- char buf[EBG_BUF_SIZE];
- if(bg) e_bg_free(bg);
- if(bg_current) bg_current = bg_current->next;
- if(!bg_current) bg_current = bg_list;
- if(!bg_current) exit(0);
-
- bg = e_bg_load((char*)bg_current->data);
- if(!bg) return;
- snprintf(buf, EBG_BUF_SIZE, "%s", (char*)bg_current->data);
- ecore_window_set_title(main_win, buf);
- e_bg_add_to_evas(bg, evas);
- e_bg_callback_add(bg, CALLBACK_MOUSE_DOWN, bg_mouse_down, NULL);
- e_bg_set_layer(bg, current_layer);
- if(current_stack_req)
- e_bg_stack_object_above(bg, ot);
- else
- e_bg_stack_object_below(bg, ot);
- e_bg_show(bg);
+ Evas_List *ll = NULL;
+
+ for (ll = l; ll; ll = ll->next)
+ {
+ char *str;
+
+ str = (char *) ll->data;
+ free(str);
+ }
}
+
void
-try_bg_load_prev()
+test_setup(void)
{
- char buf[EBG_BUF_SIZE];
- if(bg) e_bg_free(bg);
- if(bg_current) bg_current = bg_current->prev;
- if(!bg_current) bg_current = bg_list->last;
- if(!bg_current) exit(0);
-
- bg = e_bg_load((char*)bg_current->data);
- if(!bg) return;
- snprintf(buf, EBG_BUF_SIZE, "%s", (char*)bg_current->data);
- ecore_window_set_title(main_win, buf);
- e_bg_add_to_evas(bg, evas);
- e_bg_callback_add(bg, CALLBACK_MOUSE_DOWN, bg_mouse_down, NULL);
- e_bg_set_layer(bg, current_layer);
- if(current_stack_req)
- e_bg_stack_object_above(bg, ot);
- else
- e_bg_stack_object_below(bg, ot);
- e_bg_show(bg);
-}
-/* Setup the window and evas and an all white bg for the evas */
-static void
-setup(void)
-{
- Window win, ewin;
- Evas_Object o;
- char message[EBG_MESSAGE_SIZE];
- double tw, th;
-
- win_w = win_h = 400;
- ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_EXPOSE, e_window_expose);
- ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_CONFIGURE, e_window_configure);
- ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN, e_window_mouse_down);
- ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_UP, e_window_mouse_up);
- ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_MOVE, e_window_mouse_move);
- ecore_event_filter_handler_add(ECORE_EVENT_KEY_DOWN, e_window_key_down);
- ecore_event_filter_handler_add(ECORE_EVENT_KEY_UP, e_window_key_up);
- ecore_event_filter_idle_handler_add(e_idle, NULL);
-
- win = ecore_window_new(0,0,0, win_w, win_h);
- ecore_window_set_events(win, XEV_CONFIGURE);
- ecore_window_set_min_size(win, WINDOW_MIN_W, WINDOW_MIN_W);
- ecore_window_set_max_size(win, WINDOW_MAX_W, WINDOW_MAX_H);
- ecore_window_set_name_class(win, WINDOW_NAME, "Main");
- ecore_window_set_title(win, WINDOW_TITLE);
-
- main_win = win;
- evas = evas_new_all(ecore_display_get(), win, 0, 0, win_w,
- win_h, RENDER_METHOD_ALPHA_SOFTWARE, 215,
- (FONT_CACHE_IN_MB * (EBG_BUF_SIZE * EBG_BUF_SIZE)),
- (IMAGE_CACHE_IN_MB * (EBG_BUF_SIZE * EBG_BUF_SIZE)),
- FNTDIR);
- ewin = evas_get_window(evas);
-
- ecore_window_show(ewin);
- ecore_window_set_events(ewin, XEV_EXPOSE | XEV_BUTTON | XEV_MOUSE_MOVE |
- XEV_KEY);
- ecore_window_show(win);
-
- o = evas_add_rectangle(evas);
- evas_set_color(evas, o, 255, 255 , 255, 255);
- evas_resize(evas, o, 999999999, 999999999);
- evas_move(evas, o, 0, 0);
- evas_set_layer(evas, o, -5);
- evas_callback_add(evas, o, CALLBACK_MOUSE_DOWN, bg_mouse_down, NULL);
- evas_show(evas, o);
-
- /* relative layer labels */
- snprintf(message, EBG_MESSAGE_SIZE, "%s", "Layer 4");
- o = evas_add_text(evas, "arial", 12, message);
- evas_set_color(evas, o, 0,0,0,255);
- tw = evas_get_text_width(evas, o);
- th = evas_get_text_height(evas, o);
- evas_move(evas, o, (((double)win_w - tw) * 0.25),
- (((double)win_h - th) * 0.25));
- evas_show(evas, o);
- evas_set_layer(evas, o, 4);
- ol = o;
-
- snprintf(message, EBG_MESSAGE_SIZE, "%s", "Layer 8");
- o = evas_add_text(evas, "arial", 12, message);
- evas_set_color(evas, o, 0,0,0,255);
- tw = evas_get_text_width(evas, o);
- th = evas_get_text_height(evas, o);
- evas_move(evas, o, (((double)win_w - tw) * 0.75),
- (((double)win_h - th) * 0.75));
- evas_show(evas, o);
- evas_set_layer(evas, o, 8);
- ol2 = o;
-
- snprintf(message, EBG_MESSAGE_SIZE, "%s", "Layer -2");
- o = evas_add_text(evas, "arial", 12, message);
- evas_set_color(evas, o, 0,0,0,255);
- tw = evas_get_text_width(evas, o);
- th = evas_get_text_height(evas, o);
- evas_move(evas, o, (((double)win_w - tw) * 0.35),
- (((double)win_h - th) * 0.35));
- evas_show(evas, o);
- evas_set_layer(evas, o, -2);
- ol3 = o;
-
- snprintf(message, EBG_MESSAGE_SIZE, "%s", "Layer 12");
- o = evas_add_text(evas, "arial", 12, message);
- evas_set_color(evas, o, 0,0,0,255);
- tw = evas_get_text_width(evas, o);
- th = evas_get_text_height(evas, o);
- evas_move(evas, o, (((double)win_w - tw) * 0.80),
- (((double)win_h - th) * 0.80));
- evas_show(evas, o);
- evas_set_layer(evas, o, 12);
- ol4 = o;
-
-
- /* layer text label */
- snprintf(message, EBG_MESSAGE_SIZE, "Bg is at Layer %d", current_layer);
- ot = evas_add_text(evas, "arial", 16, message);
- evas_set_color(evas, ot, 192,192,192,255);
- tw = evas_get_text_width(evas, ot);
- th = evas_get_text_height(evas, ot);
- evas_move(evas, ot, (((double)win_w - tw)/2.0),
- (((double)win_h - th)/2.0));
- evas_show(evas, ot);
- evas_set_layer(evas, ot, 200);
-
- try_bg_load_next();
-}
+ Window win, ewin;
+ int win_w = 640, win_h = 480;
+ Evas *e = NULL;
+ Evas_Engine_Info_Software_X11 *einfo;
+ XSetWindowAttributes att;
+ Window window;
+ Display *disp;
+
+ ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_EXPOSE, e_window_expose);
+ ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_CONFIGURE,
+ e_window_configure);
+ ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN,
+ e_window_mouse_down);
+ ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_UP, e_window_mouse_up);
+ ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_MOVE,
+ e_window_mouse_move);
+ ecore_event_filter_handler_add(ECORE_EVENT_KEY_DOWN, e_window_key_down);
+ ecore_event_filter_handler_add(ECORE_EVENT_KEY_UP, e_window_key_up);
+ ecore_event_filter_idle_handler_add(e_idle, NULL);
+
+ win = ecore_window_new(0, 0, 0, win_w, win_h);
+ ecore_window_set_events(win, XEV_CONFIGURE);
+ ecore_window_set_min_size(win, WINDOW_MIN_W, WINDOW_MIN_W);
+ ecore_window_set_max_size(win, WINDOW_MAX_W, WINDOW_MAX_H);
+ ecore_window_set_name_class(win, WINDOW_NAME, "Main");
+ ecore_window_set_title(win, WINDOW_TITLE);
+
+ e = evas_new();
+ evas_output_method_set(e, evas_render_method_lookup("software_x11"));
+ evas_output_size_set(e, win_w, win_h);
+ evas_output_viewport_set(e, 0, 0, win_w, win_h);
+
+
+ /* the following is specific to the engine */
+ einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(e);
+ disp = ecore_display_get();
+
+ einfo->info.display = disp;
+ einfo->info.visual = DefaultVisual(disp, DefaultScreen(disp));
+ einfo->info.colormap = DefaultColormap(disp, DefaultScreen(disp));
+ att.background_pixmap = None;
+ att.colormap = DefaultColormap(disp, DefaultScreen(disp));
+ att.border_pixel = 0;
+ att.event_mask = 0;
+ window =
+ XCreateWindow(disp, win, 0, 0, win_w, win_h, 0,
+ DefaultDepth(disp, DefaultScreen(disp)), InputOutput,
+ einfo->info.visual,
+ CWColormap | CWBorderPixel | CWEventMask | CWBackPixmap,
+ &att);
+
+ einfo->info.drawable = window;
+ einfo->info.depth = DefaultDepth(disp, DefaultScreen(disp));
+ einfo->info.rotation = 0;
+ einfo->info.debug = 0;
+ evas_engine_info_set(e, (Evas_Engine_Info *) einfo);
+
+ ewin = einfo->info.drawable;
+ ecore_window_set_events(ewin,
+ XEV_EXPOSE | XEV_BUTTON | XEV_MOUSE_MOVE |
+ XEV_KEY);
+
+ evas_object_image_cache_set(e, 0);
+ evas_object_font_cache_set(e, 0);
+ evas_object_font_path_append(e, FNTDIR);
+ evas = e;
+
+
+ ecore_window_show(ewin);
+ ecore_window_show(win);
+
+ load_current();
+}
+
+#define SUCCESS 0
+#define NO_ARGS 1
+#define BAD_DISPLAY 2
int
main(int argc, char *argv[])
{
- if(argc < 2)
- {
- printf("Error, gimme some dbs to load yo!\n");
- exit(0);
- }
- current_stack_req = 1;
- current_layer = 0;
- bg_current = bg_list = NULL;
- ecore_display_init(NULL);
- ecore_event_signal_init();
- ecore_event_filter_init();
- ecore_event_x_init();
-
- while(--argc)
- bg_list = evas_list_prepend(bg_list, argv[argc]);
- bg_current = bg_list;
-
- setup();
-
- ecore_event_loop();
-
- return(0);
- argc = 0;
- argv = NULL;
+ int result = 0;
+
+ if (argc > 1)
+ {
+ while (--argc)
+ filelist = evas_list_prepend(filelist, strdup(argv[argc]));
+
+ if (ecore_display_init(NULL))
+ {
+ current = filelist;
+ ecore_event_signal_init();
+ ecore_event_filter_init();
+ ecore_event_x_init();
+ test_setup();
+ ecore_event_loop();
+ result = SUCCESS;
+ }
+ else
+ {
+ printf("Unable to open display %s\n" "You should fix this\n",
+ getenv("DISPLAY"));
+ result = BAD_DISPLAY;
+ }
+ filelist_destroy(filelist);
+ }
+ else
+ {
+ printf("Gimme some dbs to load yo !\n");
+ result = NO_ARGS;
+ }
+ return (result);
}
-------------------------------------------------------
This SF.NET email is sponsored by: Take your first step towards giving
your online business a competitive advantage. Test-drive a Thawte SSL
certificate - our easy online guide will show you how. Click here to get
started: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0027en
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs