comparison examples/svg2code_ex/main.c @ 108:565b55508c8d

More dox
author Thinker K.F. Li <thinker@branda.to>
date Fri, 12 Sep 2008 13:58:30 +0800
parents 42698de1f653
children c14cb6d12030
comparison
equal deleted inserted replaced
107:069868161f63 108:565b55508c8d
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <mb_types.h> 2 #include <mb/mb.h>
3 #include <X_supp.h>
4 #include "svg2code_ex.h" 3 #include "svg2code_ex.h"
5 4
6 typedef struct _ex_rt ex_rt_t; 5 typedef struct _ex_rt ex_rt_t;
7 struct _ex_rt { 6 struct _ex_rt {
8 X_MB_runtime_t *rt; 7 X_MB_runtime_t *rt;
13 ex_rt_t *ex_rt = (ex_rt_t *)arg; 12 ex_rt_t *ex_rt = (ex_rt_t *)arg;
14 13
15 switch(evt->type) { 14 switch(evt->type) {
16 case EVT_MOUSE_BUT_PRESS: 15 case EVT_MOUSE_BUT_PRESS:
17 coord_show(ex_rt->code->file_menu); 16 coord_show(ex_rt->code->file_menu);
17 /* Tell redraw manager that a coord (group) is chagned. */
18 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); 18 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu);
19 /* Update changed part to UI. */
19 rdman_redraw_changed(ex_rt->rt->rdman); 20 rdman_redraw_changed(ex_rt->rt->rdman);
20 break; 21 break;
21 } 22 }
22 } 23 }
23 24
25 ex_rt_t *ex_rt = (ex_rt_t *)arg; 26 ex_rt_t *ex_rt = (ex_rt_t *)arg;
26 27
27 switch(evt->type) { 28 switch(evt->type) {
28 case EVT_MOUSE_BUT_PRESS: 29 case EVT_MOUSE_BUT_PRESS:
29 coord_hide(ex_rt->code->file_menu); 30 coord_hide(ex_rt->code->file_menu);
31 /* Tell redraw manager that a coord (group) is chagned. */
30 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu); 32 rdman_coord_changed(ex_rt->rt->rdman, ex_rt->code->file_menu);
33 /* Update changed part to UI. */
31 rdman_redraw_changed(ex_rt->rt->rdman); 34 rdman_redraw_changed(ex_rt->rt->rdman);
32 break; 35 break;
33 } 36 }
34 } 37 }
35 38
39 ob_factory_t *factory; 42 ob_factory_t *factory;
40 subject_t *subject; 43 subject_t *subject;
41 ex_rt_t ex_rt; 44 ex_rt_t ex_rt;
42 int r; 45 int r;
43 46
47 /*
48 * Initialize a runtime with XLib as backend.
49 */
44 r = X_MB_init(":0.0", 800, 600, &rt); 50 r = X_MB_init(":0.0", 800, 600, &rt);
45 51
52 /*
53 * Instantiate objects from a SVG file.
54 */
46 svg2code = svg2code_ex_new(rt.rdman); 55 svg2code = svg2code_ex_new(rt.rdman);
47 56
57 /*
58 * Get observer factory
59 */
48 factory = rdman_get_ob_factory(rt.rdman); 60 factory = rdman_get_ob_factory(rt.rdman);
61 /*
62 * Register observers to subjects of events for objects.
63 */
49 subject = coord_get_mouse_event(svg2code->file_button); 64 subject = coord_get_mouse_event(svg2code->file_button);
50 ex_rt.rt = &rt; 65 ex_rt.rt = &rt;
51 ex_rt.code = svg2code; 66 ex_rt.code = svg2code;
52 subject_add_observer(factory, subject, file_button_handler, &ex_rt); 67 subject_add_observer(factory, subject, file_button_handler, &ex_rt);
53 subject = coord_get_mouse_event(svg2code->file_menu); 68 subject = coord_get_mouse_event(svg2code->file_menu);
54 subject_add_observer(factory, subject, file_menu_handler, &ex_rt); 69 subject_add_observer(factory, subject, file_menu_handler, &ex_rt);
55 70
71 /*
72 * Start handle connections, includes one to X server.
73 * User start to interact with the application.
74 */
56 X_MB_handle_connection(&rt); 75 X_MB_handle_connection(&rt);
57 76
77 /*
78 * Clean
79 */
58 svg2code_ex_free(svg2code); 80 svg2code_ex_free(svg2code);
59 X_MB_destroy(&rt); 81 X_MB_destroy(&rt);
60 82
61 return 0; 83 return 0;
62 } 84 }