annotate include/mb_types.h @ 224:29e1b2bffe4c

X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly. - backend does not interpret mouse events (over/out/move), now. - redraw manager, now, interpret mouse events to make it backend independent. - The task (interpret mouse events) should be moved to somewhere in futhure. - backend only sent MotionNotify as EVT_MOUSE_MOVE_RAW. - EVT_MOUSE_MOVE_RAW is interpreted by backend independent code.
author Thinker K.F. Li <thinker@branda.to>
date Mon, 15 Dec 2008 10:13:03 +0800
parents 8be36a0d4239
children 527894c2ad39
rev   line source
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
1 #ifndef __MB_TYPES_H_
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
2 #define __MB_TYPES_H_
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
3
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
4 #include <cairo.h>
186
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
5 #include "mb_tools.h"
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
6 #include "mb_observer.h"
224
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
7 #include "mb_prop.h"
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
8
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
9 typedef float co_aix;
11
128af06c876c Fix the bug that data of a path end with white spaces would make system down
Thinker K.F. Li <thinker@branda.to>
parents: 10
diff changeset
10 typedef struct _shape shape_t;
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
11 typedef struct _geo geo_t;
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
12 typedef struct _area area_t;
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
13 typedef struct _shnode shnode_t;
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
14 typedef struct _paint paint_t;
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
15 typedef struct _mb_obj mb_obj_t;
208
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
16 typedef struct _mb_sprite mb_sprite_t;
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
17
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
18 struct _redraw_man;
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
19
224
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
20 /* \defgroup mb_obj_grp Object type
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
21 * @{
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
22 */
204
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
23 /*! \brief MadButterfly object.
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
24 *
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
25 * All objects (coord and shapes) should have mb_obj_t as first member
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
26 * variable. obj_type is used to identify type of an object. Please,
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
27 * use MBO_TYPE() to return this value. MBO_TYPE() will type-casting the
224
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
28 * object to mb_obj_t and return obj_type.
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
29 *
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
30 * mb_obj_t should be initialized with mb_obj_init() and destroied with
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
31 * mb_obj_destroy().
204
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
32 */
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
33 struct _mb_obj {
204
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
34 int obj_type; /*!< \brief Type of a MadButterfly object. */
224
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
35 mb_prop_store_t props; /*!< Initialized by rdman. */
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
36 };
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
37
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
38 enum { MBO_DUMMY,
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
39 MBO_COORD,
224
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
40 MBO_SHAPES=0x1000, /*! \note Don't touch this. */
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
41 MBO_PATH,
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
42 MBO_TEXT,
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
43 MBO_RECT
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
44 };
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
45 #define MBO_CLASS_MASK 0xf000
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
46 #define MBO_CLASS(x) (((mb_obj_t *)(x))->obj_type & MBO_CLASS_MASK)
204
eb6ff421da7e Doc about mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 196
diff changeset
47 /*! \brief Return type of a MadBufferly object. */
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
48 #define MBO_TYPE(x) (((mb_obj_t *)(x))->obj_type)
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
49 #define IS_MBO_SHAPES(obj) (MBO_CLASS(obj) == MBO_SHAPES)
224
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
50 #define IS_MBO_COORD(obj) (MBO_TYPE(obj) == MBO_COORD)
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
51 #define mb_obj_init(obj, type) \
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
52 do { \
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
53 ((mb_obj_t *)(obj))->obj_type = type; \
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
54 } while(0)
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
55 #define mb_obj_destroy(obj)
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
56 #define mb_obj_prop_store(obj) (&(obj)->props)
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
57
29e1b2bffe4c X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents: 223
diff changeset
58 /* @} */
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
59
58
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
60 /*! \brief Base of paint types.
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
61 *
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
62 * Paints should be freed by users by calling rdman_paint_free() of
58
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
63 * the paint.
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
64 *
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
65 * \todo move member functions to a seperate structure and setup a
189
257af0ed5852 When a bullet hits a tank or wall, it shows a bang animation.
Thinker K.F. Li <thinker@branda.to>
parents: 186
diff changeset
66 * singleton for each paint type.
58
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
67 */
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
68 struct _paint {
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
69 int flags;
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
70 void (*prepare)(paint_t *paint, cairo_t *cr);
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
71 void (*free)(struct _redraw_man *rdman, paint_t *paint);
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
72 STAILQ(shnode_t) members;
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
73 paint_t *pnt_next; /*!< \brief Collect all paints of a rdman. */
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
74 };
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
75
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
76 #define PNTF_FREE 0x1
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
77
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
78 struct _shnode {
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
79 shape_t *shape;
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
80 shnode_t *next;
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
81 };
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
82
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
83 struct _area {
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
84 co_aix x, y;
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
85 co_aix w, h;
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
86 };
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
87
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
88 /*! \brief Geometry data of a shape or a group of shape.
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
89 */
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
90 struct _geo {
16
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
91 #ifdef GEO_ORDER
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
92 unsigned int order;
16
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
93 #endif
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
94 unsigned int flags;
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
95 shape_t *shape;
139
1695a4b02b14 Members of coords are geos instead of shapes, now.
Thinker K.F. Li <thinker@branda.to>
parents: 138
diff changeset
96 geo_t *coord_next; /*!< \brief Link all member geos together. */
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
97
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
98 area_t *cur_area, *last_area;
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
99 area_t areas[2];
73
9ab15ebc9061 Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents: 58
diff changeset
100
9ab15ebc9061 Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents: 58
diff changeset
101 subject_t *mouse_event;
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
102 };
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
103 #define GEF_DIRTY 0x1
160
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
104 #define GEF_HIDDEN 0x2 /*!< The geo is hidden. */
158
c1cdd3fcd28f Postponing rdman_coord_free() and rdman_remove_shape().
Thinker K.F. Li <thinker@branda.to>
parents: 151
diff changeset
105 #define GEF_FREE 0x4
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
106
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
107 extern int is_overlay(area_t *r1, area_t *r2);
15
c2ce186a5c37 X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents: 14
diff changeset
108 extern void area_init(area_t *area, int n_pos, co_aix pos[][2]);
17
41f0907b27ac Unittest for rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 16
diff changeset
109 extern void geo_init(geo_t *g);
41f0907b27ac Unittest for rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 16
diff changeset
110 extern void geo_from_positions(geo_t *g, int n_pos, co_aix pos[][2]);
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
111 extern void geo_mark_overlay(geo_t *g, int n_others, geo_t **others,
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
112 int *n_overlays, geo_t **overlays);
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
113 #define geo_get_shape(g) ((g)->shape)
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
114 #define geo_set_shape(g, sh) do {(g)->shape = sh;} while(0)
28
604bc90d509d Refactory
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
115 #define _geo_is_in(a, s, w) ((a) >= (s) && (a) < ((s) + (w)))
604bc90d509d Refactory
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
116 #define geo_pos_is_in(g, _x, _y) \
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 28
diff changeset
117 (_geo_is_in(_x, (g)->cur_area->x, (g)->cur_area->w) && \
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 28
diff changeset
118 _geo_is_in(_y, (g)->cur_area->y, (g)->cur_area->h))
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
119
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
120
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
121 /*! \brief A coordination system.
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
122 *
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
123 * It have a transform function defined by matrix to transform
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
124 * coordination from source space to target space.
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
125 * Source space is where the contained is drawed, and target space
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
126 * is where the coordination of parent container of the element
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
127 * represented by this coord object.
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
128 *
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
129 * \dot
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
130 * digraph G {
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
131 * graph [rankdir=LR];
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
132 * root -> child00 -> child10 -> child20 [label="children" color="blue"];
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
133 * child00 -> child01 -> child02 [label="sibling"];
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
134 * child10 -> child11 [label="sibling"];
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
135 * }
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
136 * \enddot
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
137 */
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
138 typedef struct _coord {
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
139 mb_obj_t obj;
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
140 unsigned int order;
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
141 unsigned int flags;
138
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
142 co_aix opacity;
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
143 /*! Own one or inherit from an ancestor.
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
144 * Setup it when clean coords.
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
145 * \sa
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
146 * - \ref COF_OWN_CANVAS
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
147 * - \ref redraw
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
148 */
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
149 cairo_t *canvas;
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
150 area_t *cur_area, *last_area;
15
c2ce186a5c37 X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents: 14
diff changeset
151 area_t areas[2];
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
152
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
153 co_aix matrix[6];
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
154 co_aix aggr_matrix[6];
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
155
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
156 struct _coord *parent;
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
157 STAILQ(struct _coord) children;
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
158 struct _coord *sibling;
138
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
159 unsigned int before_pmem; /*!< \brief The coord is before nth member
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
160 * of parent. */
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
161
139
1695a4b02b14 Members of coords are geos instead of shapes, now.
Thinker K.F. Li <thinker@branda.to>
parents: 138
diff changeset
162 int num_members;
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
163 STAILQ(geo_t) members; /*!< \brief All geo_t members in this coord. */
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
164
73
9ab15ebc9061 Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents: 58
diff changeset
165 subject_t *mouse_event;
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
166 } coord_t;
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
167 #define COF_DIRTY 0x1
160
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
168 #define COF_HIDDEN 0x2 /*!< A coord is hidden. */
138
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
169 #define COF_OWN_CANVAS 0x4 /*!< A coord owns a canvas or inherit it
160
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
170 * from an ancestor.
138
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
171 */
160
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
172 #define COF_SKIP_TRIVAL 0x8 /*!< temporary skip descendants
151
d11aa8fc06c7 Fix bug of tanks do not show at right places.
Thinker K.F. Li <thinker@branda.to>
parents: 140
diff changeset
173 * when trivaling.
d11aa8fc06c7 Fix bug of tanks do not show at right places.
Thinker K.F. Li <thinker@branda.to>
parents: 140
diff changeset
174 */
158
c1cdd3fcd28f Postponing rdman_coord_free() and rdman_remove_shape().
Thinker K.F. Li <thinker@branda.to>
parents: 151
diff changeset
175 #define COF_FREE 0x10
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
176
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
177 extern void coord_init(coord_t *co, coord_t *parent);
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
178 extern void coord_trans_pos(coord_t *co, co_aix *x, co_aix *y);
31
da770188a44d resize font size for changige of coord.
Thinker K.F. Li <thinker@branda.to>
parents: 30
diff changeset
179 extern co_aix coord_trans_size(coord_t *co, co_aix size);
16
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
180 extern void compute_aggr_of_coord(coord_t *coord);
10
7cfecdce94cc Remove warning messages
Thinker K.F. Li <thinker@branda.to>
parents: 5
diff changeset
181 extern void update_aggr_matrix(coord_t *start);
13
ed55009d96d3 refactory for redrawing
Thinker K.F. Li <thinker@branda.to>
parents: 12
diff changeset
182 extern coord_t *preorder_coord_subtree(coord_t *root, coord_t *last);
138
9f4fc9ecfd1f Make shapes and coords drawed in post-order of tree.
Thinker K.F. Li <thinker@branda.to>
parents: 83
diff changeset
183 extern coord_t *postorder_coord_subtree(coord_t *root, coord_t *last);
151
d11aa8fc06c7 Fix bug of tanks do not show at right places.
Thinker K.F. Li <thinker@branda.to>
parents: 140
diff changeset
184 extern void preorder_coord_skip_subtree(coord_t *subroot);
d11aa8fc06c7 Fix bug of tanks do not show at right places.
Thinker K.F. Li <thinker@branda.to>
parents: 140
diff changeset
185 #define preorder_coord_skip_subtree(sub) \
d11aa8fc06c7 Fix bug of tanks do not show at right places.
Thinker K.F. Li <thinker@branda.to>
parents: 140
diff changeset
186 do { (sub)->flags |= COF_SKIP_TRIVAL; } while(0)
160
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
187 #define coord_hide(co) \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
188 do { \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
189 (co)->flags |= COF_HIDDEN; \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
190 } while(0)
57
ab028c9f0930 Ability to hidden shapes and action of visibility.
Thinker K.F. Li <thinker@branda.to>
parents: 35
diff changeset
191 #define coord_show(co) do { co->flags &= ~COF_HIDDEN; } while(0)
83
ea758bb3bbe2 example
Thinker K.F. Li <thinker@branda.to>
parents: 81
diff changeset
192 #define coord_get_mouse_event(coord) ((coord)->mouse_event)
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
193
222
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
194 /*! \brief Coord operation function
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
195 * These functions are used to move and scale the coord_t. Programmers should use these functions instead of using the matrix directly.
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
196 * The x,y,sx,sy are all in co_aix type.
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
197 *
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
198 */
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
199 #define coord_move(co,x,y) do {(co)->matrix[2] = (x); (co)->matrix[5] = (y);} while(0)
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
200 #define coord_set_scalex(ci,sx) do {(co)->matrix[0] = sx;} while(0)
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
201 #define coord_set_scaley(ci,sy) do {(co)->matrux[3] = sy;} while(0)
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
202 #define coord_scalex(ci) ((co)->matrix[0])
f7057177abbb Add functions to move and scale the coord_t like the actionscript. Users should use these functions instead of the matrix directly.
wycc
parents: 211
diff changeset
203 #define coord_scaley(ci) ((co)->matrix[3])
223
8be36a0d4239 Add coord_x(co) and coord_y(co)
wycc
parents: 222
diff changeset
204 #define coord_x(ci) ((co)->matrix[2])
8be36a0d4239 Add coord_x(co) and coord_y(co)
wycc
parents: 222
diff changeset
205 #define coord_y(ci) ((co)->matrix[5])
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
206
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
207 /*! \brief A grahpic shape.
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
208 *
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
209 * \dot
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
210 * digraph G {
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
211 * "shape" -> "coord";
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
212 * "shape" -> "geo";
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
213 * "geo" -> "shape";
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
214 * "coord" -> "shape" [label="members"]
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
215 * "shape" -> "shape" [label="sibling"];
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
216 * }
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
217 * \enddot
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
218 */
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
219 struct _shape {
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
220 mb_obj_t obj;
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
221 geo_t *geo;
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
222 coord_t *coord;
18
0f3baa488a62 Support solid color paint for fill.
Thinker K.F. Li <thinker@branda.to>
parents: 17
diff changeset
223 paint_t *fill, *stroke;
26
d50f33040de6 Set line width for path.
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
224 co_aix stroke_width;
73
9ab15ebc9061 Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents: 58
diff changeset
225 int stroke_linecap:2;
9ab15ebc9061 Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents: 58
diff changeset
226 int stroke_linejoin:2;
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 158
diff changeset
227 struct _shape *sh_next; /*!< Link all shapes of a rdman together. */
73
9ab15ebc9061 Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents: 58
diff changeset
228 void (*free)(shape_t *shape);
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
229 };
196
c234ee745ceb Start moving to mb_obj_t
Thinker K.F. Li <thinker@branda.to>
parents: 189
diff changeset
230 /* enum { SHT_UNKNOW, SHT_PATH, SHT_TEXT, SHT_RECT }; */
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
231
77
Thinker K.F. Li <thinker@branda.to>
parents: 73
diff changeset
232 #define sh_get_mouse_event_subject(sh) ((sh)->geo->mouse_event)
160
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
233 #define sh_hide(sh) \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
234 do { \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
235 (sh)->geo->flags |= GEF_HIDDEN; \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
236 } while(0)
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
237 #define sh_show(sh) \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
238 do { \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
239 (sh)->geo->flags &= ~GEF_HIDDEN; \
147c93163ef0 Fix bug of tank that bullet is not hidden when go out the map.
Thinker K.F. Li <thinker@branda.to>
parents: 159
diff changeset
240 } while(0)
140
0de8fd11271e Use macro to simplify the code.
Thinker K.F. Li <thinker@branda.to>
parents: 139
diff changeset
241
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
242
208
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
243 /*! \brief A sprite is a set of graphics that being an object in animation.
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
244 *
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
245 * A sprite include graphics comprise an object. For example, a tank, in
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
246 * example tank, is comprised a set of graphics that is represented as a
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
247 * sprite.
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
248 */
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
249 struct _mb_sprite {
209
6f63aa67ed83 Define types for sprite shared object.
Thinker K.F. Li <thinker@branda.to>
parents: 208
diff changeset
250 void (*free)(mb_sprite_t *);
6f63aa67ed83 Define types for sprite shared object.
Thinker K.F. Li <thinker@branda.to>
parents: 208
diff changeset
251 mb_obj_t *(*get_obj_with_name)(mb_sprite_t *sprite, const char *id);
208
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
252 };
e01acb80f0e7 Define mb_sprite_t
Thinker K.F. Li <thinker@branda.to>
parents: 204
diff changeset
253
211
41eab0a10651 Define convenience macros for sprite.
Thinker K.F. Li <thinker@branda.to>
parents: 210
diff changeset
254 #define MB_SPRITE_FREE(sprite) ((mb_sprite_t *)(sprite))->free(sprite)
41eab0a10651 Define convenience macros for sprite.
Thinker K.F. Li <thinker@branda.to>
parents: 210
diff changeset
255 #define MB_SPRITE_GET_OBJ(sprite, name) \
41eab0a10651 Define convenience macros for sprite.
Thinker K.F. Li <thinker@branda.to>
parents: 210
diff changeset
256 ((mb_sprite_t *)(sprite))->get_obj_with_name((sprite), (name))
41eab0a10651 Define convenience macros for sprite.
Thinker K.F. Li <thinker@branda.to>
parents: 210
diff changeset
257
210
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
258
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
259 /*! \defgroup mb_sprite_lsym Sprite with linear symbol table.
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
260 * @{
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
261 */
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
262 struct _mb_sprite_lsym_entry {
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
263 const char *sym;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
264 const int offset;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
265 };
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
266 typedef struct _mb_sprite_lsym_entry mb_sprite_lsym_entry_t;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
267
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
268 /*! \brief A sub-type of mb_sprite_t with linear symbol table.
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
269 *
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
270 * This type of sprite search symbols with linear/or binary searching.
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
271 */
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
272 struct _mb_sprite_lsym {
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
273 mb_sprite_t sprite;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
274 int num_entries;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
275 mb_sprite_lsym_entry_t *entries;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
276 };
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
277 typedef struct _mb_sprite_lsym mb_sprite_lsym_t;
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
278
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
279 /* @} */
3fadd2f2742e M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents: 209
diff changeset
280
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
281 #endif /* __MB_TYPES_H_ */