Mercurial > MadButterfly
diff examples/svg2code_ex/main.c @ 122:17e97e92b76e
Encapsulate X_MB_runtime_t and support X keyboard events.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Mon, 15 Sep 2008 20:33:06 +0800 |
parents | e4e47d2cdbcd |
children | 3a4d6179e6a9 |
line wrap: on
line diff
--- a/examples/svg2code_ex/main.c Sun Sep 14 23:40:57 2008 +0800 +++ b/examples/svg2code_ex/main.c Mon Sep 15 20:33:06 2008 +0800 @@ -21,54 +21,57 @@ case EVT_MOUSE_BUT_PRESS: coord_show(ex_rt->code->file_menu); /* Tell redraw manager that a coord (group) is chagned. */ - rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); + rdman_coord_changed(X_MB_rdman(ex_rt->rt), ex_rt->code->file_menu); /* Update changed part to UI. */ - rdman_redraw_changed(ex_rt->rt->rdman); + rdman_redraw_changed(X_MB_rdman(ex_rt->rt)); break; } } static void file_menu_handler(event_t *evt, void *arg) { ex_rt_t *ex_rt = (ex_rt_t *)arg; + redraw_man_t *rdman; + rdman = X_MB_rdman(ex_rt->rt); switch(evt->type) { case EVT_MOUSE_BUT_PRESS: coord_hide(ex_rt->code->file_menu); /* Tell redraw manager that a coord (group) is chagned. */ - rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); + rdman_coord_changed(rdman, ex_rt->code->file_menu); /* Update changed part to UI. */ - rdman_redraw_changed(ex_rt->rt->rdman); + rdman_redraw_changed(rdman); break; } } int main(int argc, char * const argv[]) { - X_MB_runtime_t rt; + X_MB_runtime_t *rt; + redraw_man_t *rdman; svg2code_ex_t *svg2code; ob_factory_t *factory; subject_t *subject; ex_rt_t ex_rt; - int r; /* * Initialize a runtime with XLib as backend. */ - r = X_MB_init(":0.0", 800, 600, &rt); + rt = X_MB_new(":0.0", 800, 600); /* * Instantiate objects from a SVG file. */ - svg2code = svg2code_ex_new(rt.rdman); + rdman = X_MB_rdman(rt); + svg2code = svg2code_ex_new(rdman); /* * Get observer factory */ - factory = rdman_get_ob_factory(rt.rdman); + factory = rdman_get_ob_factory(rdman); /* * Register observers to subjects of events for objects. */ subject = coord_get_mouse_event(svg2code->file_button); - ex_rt.rt = &rt; + ex_rt.rt = rt; ex_rt.code = svg2code; subject_add_observer(factory, subject, file_button_handler, &ex_rt); subject = coord_get_mouse_event(svg2code->file_menu); @@ -78,13 +81,13 @@ * Start handle connections, includes one to X server. * User start to interact with the application. */ - X_MB_handle_connection(&rt); + X_MB_handle_connection(rt); /* * Clean */ svg2code_ex_free(svg2code); - X_MB_destroy(&rt); + X_MB_free(rt); return 0; }