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