Mercurial > MadButterfly
annotate tools/mb_c_source.m4 @ 278:a90fd749af82 mbtext
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
author | wycc |
---|---|
date | Sat, 31 Jan 2009 09:41:04 +0800 |
parents | d36abace2ce4 |
children | c8b6ca46950b |
rev | line source |
---|---|
63 | 1 changequote(`[', `]')dnl |
2 include([foreach.m4])dnl | |
3 divert([-1]) | |
4 | |
64 | 5 define([UNQUOTE], [$*]) |
6 | |
7 define([QUOTE], [[[$*]]]) | |
63 | 8 |
64 | 9 define([COUNT],[ifelse([$*],[],0,[$#])]) |
63 | 10 |
64 | 11 define([IMPORT],[define([$1],[$2$1(]$[]@[)])]) |
63 | 12 |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
13 define([DECLARE_EMPTIES], [ |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
14 define([ADD_LINEAR_PAINT]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
15 define([ADD_RADIAL_PAINT]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
16 define([COLOR_STOP]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
17 define([REF_STOPS_RADIAL]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
18 define([REF_STOPS_LINEAR]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
19 define([ADD_PATH]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
20 define([ADD_RECT]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
21 define([ADD_COORD]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
22 define([ADD_TEXT],) |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
23 define([PANGO_BEGIN_TEXT],) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
24 define([PANGO_END_TEXT],) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
25 define([PANGO_SIZE],) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
26 define([PANGO_STYLE],) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
27 define([PANGO_WEIGHT],) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
28 define([PANGO_FAMILY],) |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
29 define([FILL_SHAPE]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
30 define([STROKE_SHAPE]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
31 define([FILL_SHAPE_WITH_PAINT]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
32 define([STROKE_SHAPE_WITH_PAINT]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
33 define([STROKE_WIDTH]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
34 define([GROUP_HIDE],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
35 define([RECT_HIDE],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
36 define([PATH_HIDE],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
37 define([COORD_TRANSLATE],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
38 define([COORD_MATRIX],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
39 define([SHAPE_TRANSLATE],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
40 define([SHAPE_MATRIX],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
41 define([ADD_SYMBOL],) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
42 define([SCENE]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
43 ]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
44 |
64 | 45 define([D_COLOR_STOP],[ |
46 {$6,$2,$3,$4,$5}]) | |
63 | 47 |
48 define([D_ADD_LINEAR_PAINT],[dnl | |
64 | 49 ifelse(COUNT($6),0,,[dnl |
50 static const int n_$1_stops = COUNT($6); | |
51 static const grad_stop_t $1_stops[[]] = {UNQUOTE($6)}; | |
63 | 52 ])dnl |
53 ]) | |
54 | |
55 define([D_ADD_RADIAL_PAINT],[dnl | |
64 | 56 ifelse(COUNT($5),0,,[dnl |
57 static const int n_$1_stops = COUNT($5); | |
58 static const grad_stop_t $1_stops[[]] = {UNQUOTE($5)}; | |
63 | 59 ])dnl |
60 ]) | |
61 | |
62 define([DECLARE_VARS], [divert([-1]) | |
64 | 63 define([DIMPORT],[IMPORT(]QUOTE($[]1)[,[D_])]) |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
64 DECLARE_EMPTIES |
64 | 65 DIMPORT([ADD_LINEAR_PAINT]) |
66 DIMPORT([ADD_RADIAL_PAINT]) | |
67 DIMPORT([COLOR_STOP]) | |
63 | 68 divert[]]) |
69 | |
70 define([S_ADD_LINEAR_PAINT],[ | |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
71 obj->$1 = rdman_paint_linear_new(rdman, $2, $3, $4, $5); |
64 | 72 ifelse(COUNT($6),0,,[dnl |
73 stops = (grad_stop_t *)malloc(sizeof(grad_stop_t) * n_$1_stops); | |
74 memcpy(stops, $1_stops, sizeof(grad_stop_t) * n_$1_stops); | |
75 paint_linear_stops(obj->$1, n_$1_stops, stops); | |
76 ])dnl | |
63 | 77 ]) |
64 | 78 |
63 | 79 define([S_ADD_RADIAL_PAINT],[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
80 obj->$1 = rdman_paint_radial_new(rdman, $2, $3, $4); |
64 | 81 ifelse(COUNT($5),0,,[ |
82 stops = (grad_stop_t *)malloc(sizeof(grad_stop_t) * n_$1_stops); | |
83 memcpy(stops, $1_stops, sizeof(grad_stop_t) * n_$1_stops); | |
84 paint_radial_stops(obj->$1, n_$1_stops, stops); | |
85 ])dnl | |
63 | 86 ]) |
87 | |
64 | 88 define([S_COLOR_STOP],[]) |
78 | 89 |
90 define([S_REF_STOPS_RADIAL],[dnl | |
64 | 91 [ stops = (grad_stop_t *)malloc(sizeof(grad_stop_t) * n_$2_stops); |
92 memcpy(stops, $2_stops, sizeof(grad_stop_t) * n_$2_stops); | |
93 paint_radial_stops(obj->$1, n_$2_stops, stops); | |
94 ]]) | |
95 | |
78 | 96 define([S_REF_STOPS_LINEAR],[dnl |
97 [ stops = (grad_stop_t *)malloc(sizeof(grad_stop_t) * n_$2_stops); | |
98 memcpy(stops, $2_stops, sizeof(grad_stop_t) * n_$2_stops); | |
99 paint_linear_stops(obj->$1, n_$2_stops, stops); | |
100 ]]) | |
101 | |
64 | 102 define([S_ADD_RECT],[[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
103 obj->$1 = rdman_shape_rect_new(rdman, $2, $3, $4, $5, $6, $7); |
197
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
104 |
80
e548221c04eb
svg2code.py support stroke
Thinker K.F. Li <thinker@branda.to>
parents:
78
diff
changeset
|
105 rdman_add_shape(rdman, obj->$1, obj->$8); |
64 | 106 ]]) |
107 | |
108 define([S_ADD_PATH],[[ | |
197
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
109 { |
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
110 char _cmds[] = "$3"; |
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
111 float _args[] = {$4}; |
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
112 int _fix_args[] = {$6}; |
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
113 obj->$1 = rdman_shape_path_new_from_binary(rdman, _cmds,_args,$5,_fix_args,$7); |
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
114 rdman_add_shape(rdman, obj->$1, obj->$2); |
bcad1ccdf45c
Translate the path string into binary array to save the parsing in the runtime. It can reduce the size as well.
wycc@wycc-desktop
parents:
186
diff
changeset
|
115 } |
64 | 116 ]]) |
117 | |
118 define([S_ADD_COORD],[[ | |
66
309f1eefbec0
create new coords from redraw_man
Thinker K.F. Li <thinker@branda.to>
parents:
64
diff
changeset
|
119 obj->$1 = rdman_coord_new(rdman, obj->$2); |
64 | 120 ]]) |
121 | |
83 | 122 define([S_ADD_TEXT],[[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
123 obj->$1 = rdman_shape_text_new(rdman, "$2", $3, $4, $5, |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
124 cairo_get_font_face(rdman->cr)); |
83 | 125 rdman_add_shape(rdman, obj->$1, obj->$6); |
126 ]]) | |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
127 define([S_PANGO_BEGIN_TEXT],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
128 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
129 PangoAttribute *attr; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
130 PangoAttrList *attrs = pango_attr_list_new(); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
131 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
132 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
133 define([S_PANGO_END_TEXT],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
134 obj->$1 = rdman_shape_text_new(rdman, "$2", $3, $4, $5, |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
135 cairo_get_font_face(rdman->cr),attrs); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
136 rdman_add_shape(rdman, obj->$1, obj->$6); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
137 } |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
138 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
139 define([S_PANGO_SIZE],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
140 attr = pango_attr_size_new($1); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
141 attr->start_index = $2; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
142 attr->end_index = $3; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
143 pango_attr_list_insert(attrs,attr); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
144 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
145 define([S_PANGO_WEIGHT],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
146 attr = pango_attr_weight_new($1); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
147 attr->start_index = $2; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
148 attr->end_index = $3; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
149 pango_attr_list_insert(attrs,attr); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
150 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
151 define([S_PANGO_FAMILY],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
152 attr = pango_attr_family_new("$1"); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
153 attr->start_index = $2; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
154 attr->end_index = $3; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
155 pango_attr_list_insert(attrs,attr); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
156 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
157 define([S_PANGO_STYLE],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
158 attr = pango_attr_style_new($1); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
159 attr->start_index = $2; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
160 attr->end_index = $3; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
161 pango_attr_list_insert(attrs,attr); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
162 ]]) |
83 | 163 |
64 | 164 define([S_FILL_SHAPE_WITH_PAINT],[dnl |
165 [ rdman_paint_fill(rdman, obj->$2, obj->$1); | |
166 ]]) | |
167 | |
168 define([S_STROKE_SHAPE_WITH_PAINT],[dnl | |
169 [ rdman_paint_stroke(rdman, obj->$2, obj->$1); | |
170 ]]) | |
171 | |
172 define([S_FILL_SHAPE],[dnl | |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
173 [ obj->$1_fill = rdman_paint_color_new(rdman, $2, $3, $4, $5); |
64 | 174 rdman_paint_fill(rdman, obj->$1_fill, obj->$1); |
175 ]]) | |
176 | |
177 define([S_STROKE_SHAPE],[dnl | |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
178 [ obj->$1_stroke = rdman_paint_color_new(rdman, $2, $3, $4, $5); |
64 | 179 rdman_paint_stroke(rdman, obj->$1_stroke, obj->$1); |
180 ]]) | |
181 | |
80
e548221c04eb
svg2code.py support stroke
Thinker K.F. Li <thinker@branda.to>
parents:
78
diff
changeset
|
182 define([S_STROKE_WIDTH],[dnl |
e548221c04eb
svg2code.py support stroke
Thinker K.F. Li <thinker@branda.to>
parents:
78
diff
changeset
|
183 [ obj->$1->stroke_width = $2; |
e548221c04eb
svg2code.py support stroke
Thinker K.F. Li <thinker@branda.to>
parents:
78
diff
changeset
|
184 ]]) |
e548221c04eb
svg2code.py support stroke
Thinker K.F. Li <thinker@branda.to>
parents:
78
diff
changeset
|
185 |
81 | 186 define([S_GROUP_HIDE],[dnl |
187 [ coord_hide(obj->$1); | |
188 ]]) | |
189 | |
190 define([S_RECT_HIDE],[dnl | |
191 [ sh_hide(obj->$1); | |
192 ]]) | |
193 | |
194 define([S_PATH_HIDE],[dnl | |
195 [ sh_hide(obj->$1); | |
196 ]]) | |
197 | |
84
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
198 define([S_COORD_TRANSLATE],[dnl |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
199 [ memset(obj->$1->matrix, 0, sizeof(obj->$1->matrix)); |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
200 obj->$1->matrix[0] = 1; |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
201 obj->$1->matrix[2] = $2; |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
202 obj->$1->matrix[4] = 1; |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
203 obj->$1->matrix[5] = $3; |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
204 rdman_coord_changed(rdman, obj->$1); |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
205 ]]) |
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
206 |
85
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
207 define([S_COORD_MATRIX],[dnl |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
208 [ obj->$1->matrix[0] = $2; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
209 obj->$1->matrix[3] = $3; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
210 obj->$1->matrix[1] = $4; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
211 obj->$1->matrix[4] = $5; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
212 obj->$1->matrix[2] = $6; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
213 obj->$1->matrix[5] = $7; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
214 rdman_coord_changed(rdman, obj->$1); |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
215 ]]) |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
216 |
100
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
217 define([S_SHAPE_TRANSLATE],[dnl |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
218 [ memset(obj->$1->matrix, 0, sizeof(obj->$1->matrix)); |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
219 obj->$1->matrix[0] = 1; |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
220 obj->$1->matrix[2] = $2; |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
221 obj->$1->matrix[4] = 1; |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
222 obj->$1->matrix[5] = $3; |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
223 rdman_coord_changed(rdman, obj->$1); |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
224 ]]) |
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
225 |
85
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
226 define([S_SHAPE_MATRIX],[dnl |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
227 [ obj->$1->matrix[0] = $2; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
228 obj->$1->matrix[3] = $3; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
229 obj->$1->matrix[1] = $4; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
230 obj->$1->matrix[4] = $5; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
231 obj->$1->matrix[2] = $6; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
232 obj->$1->matrix[5] = $7; |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
233 rdman_coord_changed(rdman, obj->$1); |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
234 ]]) |
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
235 |
63 | 236 define([SETUP_VARS],[divert([-1]) |
64 | 237 define([SIMPORT],[IMPORT(]QUOTE($[]1)[,[S_])]) |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
238 DECLARE_EMPTIES |
64 | 239 SIMPORT([ADD_LINEAR_PAINT]) |
240 SIMPORT([ADD_RADIAL_PAINT]) | |
241 SIMPORT([COLOR_STOP]) | |
78 | 242 SIMPORT([REF_STOPS_RADIAL]) |
243 SIMPORT([REF_STOPS_LINEAR]) | |
64 | 244 SIMPORT([ADD_PATH],) |
245 SIMPORT([ADD_RECT]) | |
246 SIMPORT([ADD_COORD]) | |
83 | 247 SIMPORT([ADD_TEXT]) |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
248 SIMPORT([PANGO_BEGIN_TEXT]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
249 SIMPORT([PANGO_END_TEXT]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
250 SIMPORT([PANGO_SIZE]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
251 SIMPORT([PANGO_WEIGHT]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
252 SIMPORT([PANGO_FAMILY]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
253 SIMPORT([PANGO_STYLE]) |
64 | 254 SIMPORT([FILL_SHAPE]) |
255 SIMPORT([STROKE_SHAPE]) | |
256 SIMPORT([FILL_SHAPE_WITH_PAINT]) | |
257 SIMPORT([STROKE_SHAPE_WITH_PAINT]) | |
81 | 258 SIMPORT([STROKE_WIDTH]) |
259 SIMPORT([GROUP_HIDE]) | |
260 SIMPORT([RECT_HIDE]) | |
261 SIMPORT([PATH_HIDE]) | |
84
42698de1f653
Support translate() function for transform attribute of 'g' tag.
Thinker K.F. Li <thinker@branda.to>
parents:
83
diff
changeset
|
262 SIMPORT([COORD_TRANSLATE]) |
85
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
263 SIMPORT([COORD_MATRIX]) |
100
1a1dda98730c
Fix the bug of order of cross & inner product of vectors
Thinker K.F. Li <thinker@branda.to>
parents:
85
diff
changeset
|
264 SIMPORT([SHAPE_TRANSLATE]) |
85
9b4a02bcaeb1
matrix() function in transform attribute of group and shapes
Thinker K.F. Li <thinker@branda.to>
parents:
84
diff
changeset
|
265 SIMPORT([SHAPE_MATRIX]) |
63 | 266 divert[]]) |
267 | |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
268 define([F_ADD_LINEAR_PAINT],[[ |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
269 stops = paint_linear_stops(obj->$1, 0, NULL); |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
270 free(stops); |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
271 rdman_paint_free(rdman, obj->$1); |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
272 ]]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
273 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
274 define([F_ADD_RADIAL_PAINT],[[ |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
275 stops = paint_radial_stops(obj->$1, 0, NULL); |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
276 free(stops); |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
277 rdman_paint_free(rdman, obj->$1); |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
278 ]]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
279 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
280 define([F_ADD_PATH],[[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
281 rdman_shape_free(rdman, obj->$1); |
83 | 282 ]]) |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
283 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
284 define([F_ADD_RECT],[[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
285 rdman_shape_free(rdman, obj->$1); |
83 | 286 ]]) |
287 | |
288 define([F_ADD_TEXT],[[ | |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
289 rdman_shape_free(rdman, obj->$1); |
83 | 290 ]]) |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
291 define([F_PANGO_BEGIN_TEXT],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
292 rdman_shape_free(rdman, obj->$1); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
293 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
294 define([F_PANGO_SIZE],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
295 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
296 define([F_PANGO_STYLE],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
297 ]]) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
298 define([F_PANGO_WEIGHT],[[ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
299 ]]) |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
300 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
301 define([F_FILL_SHAPE],[[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
302 rdman_paint_free(rdman, obj->$1_fill); |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
303 ]]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
304 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
305 define([F_STROKE_SHAPE],[[ |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
154
diff
changeset
|
306 rdman_paint_free(rdman, obj->$1_stroke); |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
307 ]]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
308 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
309 define([CLEAR_VARS],[divert([-1]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
310 define([FIMPORT],[IMPORT(]QUOTE($[]1)[,[F_])]) |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
311 DECLARE_EMPTIES |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
312 FIMPORT([ADD_LINEAR_PAINT]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
313 FIMPORT([ADD_RADIAL_PAINT]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
314 FIMPORT([ADD_PATH],) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
315 FIMPORT([ADD_RECT]) |
83 | 316 FIMPORT([ADD_TEXT]) |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
317 FIMPORT([PANGO_BEGIN_TEXT]) |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
318 FIMPORT([FILL_SHAPE]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
319 FIMPORT([STROKE_SHAPE]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
320 divert[]]) |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
321 |
154 | 322 define([REVERSE_VARS],[divert([-1]) |
323 define([__REV_VAR],[]) | |
324 define([PUSH_REV], [ | |
325 pushdef([__REV_VAR]) | |
326 define([__REV_VAR], ]QUOTE(QUOTE($[]1))[)]) | |
327 define([POP_ALL_REV], [dnl | |
328 ifelse(__REV_VAR, [], ,[UNQUOTE(__REV_VAR)[]dnl | |
329 popdef([__REV_VAR])[]POP_ALL_REV[]])]) | |
330 define([RIMPORT], [ | |
331 define(]QUOTE($[]1)[, | |
332 [PUSH_REV(]]QUOTE(QUOTE($[]1))[[(]QUOTE($[]@)[))]) | |
333 ]) | |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
334 DECLARE_EMPTIES |
154 | 335 RIMPORT([ADD_LINEAR_PAINT]) |
336 RIMPORT([ADD_RADIAL_PAINT]) | |
337 RIMPORT([COLOR_STOP]) | |
338 RIMPORT([REF_STOPS_RADIAL]) | |
339 RIMPORT([REF_STOPS_LINEAR]) | |
340 RIMPORT([ADD_PATH]) | |
341 RIMPORT([ADD_RECT]) | |
342 RIMPORT([ADD_COORD]) | |
343 RIMPORT([ADD_TEXT]) | |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
244
diff
changeset
|
344 RIMPORT([PANGO_BEGIN_TEXT]) |
154 | 345 RIMPORT([FILL_SHAPE]) |
346 RIMPORT([STROKE_SHAPE]) | |
347 RIMPORT([FILL_SHAPE_WITH_PAINT]) | |
348 RIMPORT([STROKE_SHAPE_WITH_PAINT]) | |
349 RIMPORT([STROKE_WIDTH]) | |
350 RIMPORT([GROUP_HIDE]) | |
351 RIMPORT([RECT_HIDE]) | |
352 RIMPORT([PATH_HIDE]) | |
353 RIMPORT([COORD_TRANSLATE]) | |
354 RIMPORT([COORD_MATRIX]) | |
355 RIMPORT([SHAPE_TRANSLATE]) | |
356 RIMPORT([SHAPE_MATRIX]) | |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
357 divert[]dnl |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
358 ]) |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
359 |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
360 define([Y_ADD_SYMBOL],[[{"$1", MB_SPRITE_OFFSET($1)},]]) |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
361 |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
362 define([DECLARE_SYMS], [divert([-1]) |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
363 define([YIMPORT],[IMPORT(]QUOTE($[]1)[,[Y_])]) |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
364 DECLARE_EMPTIES |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
365 YIMPORT([ADD_SYMBOL]) |
154 | 366 divert[]dnl |
367 ]) | |
368 | |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
369 define([SC_SCENE], [[static const int scene_$1[] = {] |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
370 foreach([GROUP_NAME], ($2), [[ MB_SPRITE_OFFSET(]GROUP_NAME[), |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
371 ]])dnl |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
372 [ 0 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
373 }; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
374 ]]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
375 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
376 define([DEFINE_SCENES], [divert([-1]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
377 define([SCIMPORT],[IMPORT(]QUOTE($[]1)[,[SC_])]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
378 DECLARE_EMPTIES |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
379 SCIMPORT([SCENE]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
380 divert[]dnl |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
381 ]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
382 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
383 define([SCA_SCENE], [[ scene_$1, |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
384 ]]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
385 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
386 define([DEFINE_SCENES_ARRAY], [divert([-1]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
387 define([SCAIMPORT],[IMPORT(]QUOTE($[]1)[,[SCA_])]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
388 DECLARE_EMPTIES |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
389 SCAIMPORT([SCENE]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
390 divert[]dnl |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
391 ]) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
392 |
63 | 393 define([MADBUTTERFLY],[dnl |
394 [#include <stdio.h> | |
69
a6150b4e0667
Fix bug of newing linear & radial paints
Thinker K.F. Li <thinker@branda.to>
parents:
68
diff
changeset
|
395 #include <stdlib.h> |
a6150b4e0667
Fix bug of newing linear & radial paints
Thinker K.F. Li <thinker@branda.to>
parents:
68
diff
changeset
|
396 #include <string.h> |
186
530bb7728546
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents:
159
diff
changeset
|
397 #include <mb_types.h> |
530bb7728546
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents:
159
diff
changeset
|
398 #include <mb_redraw_man.h> |
530bb7728546
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents:
159
diff
changeset
|
399 #include <mb_shapes.h> |
530bb7728546
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents:
159
diff
changeset
|
400 #include <mb_paint.h> |
63 | 401 #include "$1.h" |
402 | |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
403 #ifdef MB_SPRITE_OFFSET |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
404 #undef MB_SPRITE_OFFSET |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
405 #endif |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
406 #define MB_SPRITE_OFFSET(x) ((int)&((($1_t *)0)->x)) |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
407 |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
408 #ifndef MB_LSYM_GET_OBJ_WITH_NAME |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
409 #define MB_LSYM_GET_OBJ_WITH_NAME |
213
a0a3196b1a05
Refactory pointer computation into a macro.
Thinker K.F. Li <thinker@branda.to>
parents:
212
diff
changeset
|
410 |
a0a3196b1a05
Refactory pointer computation into a macro.
Thinker K.F. Li <thinker@branda.to>
parents:
212
diff
changeset
|
411 #define MB_SPRITE_OFF_2_PTR(x, off) (((void *)(x)) + (off)) |
a0a3196b1a05
Refactory pointer computation into a macro.
Thinker K.F. Li <thinker@branda.to>
parents:
212
diff
changeset
|
412 |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
413 static |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
414 mb_obj_t *mb_lsym_get_obj_with_name(mb_sprite_lsym_t *lsym, const char *sym) { |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
415 int i; |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
416 |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
417 for(i = 0; i < lsym->num_entries; i++) { |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
418 if(strcmp(lsym->entries[i].sym, sym) != 0) |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
419 continue; |
213
a0a3196b1a05
Refactory pointer computation into a macro.
Thinker K.F. Li <thinker@branda.to>
parents:
212
diff
changeset
|
420 return *(mb_obj_t **)MB_SPRITE_OFF_2_PTR(lsym, |
a0a3196b1a05
Refactory pointer computation into a macro.
Thinker K.F. Li <thinker@branda.to>
parents:
212
diff
changeset
|
421 lsym->entries[i].offset); |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
422 } |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
423 return NULL; |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
424 } |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
425 #endif /* MB_LSYM_GET_OBJ_WITH_NAME */ |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
426 |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
427 static |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
428 mb_sprite_lsym_entry_t $1_symbols[] = {]DECLARE_SYMS |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
429 $2[ |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
430 }; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
431 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
432 ]DEFINE_SCENES |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
433 $2 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
434 DEFINE_SCENES_ARRAY |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
435 static const int *$1_scenes[[]] = { |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
436 $2[]dnl |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
437 NULL |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
438 };[ |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
439 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
440 #define SCENES_NUM ((sizeof($1_scenes) / sizeof(const int *)) - 1) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
441 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
442 static |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
443 int $1_goto_scene($1_t *sprite, int scene_no) { |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
444 coord_t *coord; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
445 const int *p; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
446 const int *scene; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
447 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
448 if(scene_no >= SCENES_NUM || scene_no < -1) |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
449 return 1; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
450 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
451 if(sprite->last_scene) { |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
452 p = sprite->last_scene; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
453 while(*p != 0) { |
244
d36abace2ce4
Fix bug in *_goto_scene()
Thinker K.F. Li <thinker@branda.to>
parents:
241
diff
changeset
|
454 coord = *(coord_t **)MB_SPRITE_OFF_2_PTR(sprite, *p); |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
455 coord_hide(coord); |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
456 rdman_coord_changed(sprite->rdman, coord); |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
457 p++; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
458 } |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
459 } |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
460 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
461 if(scene_no == -1) { |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
462 sprite->last_scene = NULL; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
463 return 0; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
464 } |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
465 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
466 scene = $1_scenes[scene_no]; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
467 p = scene; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
468 while(*p != 0) { |
244
d36abace2ce4
Fix bug in *_goto_scene()
Thinker K.F. Li <thinker@branda.to>
parents:
241
diff
changeset
|
469 coord = *(coord_t **)MB_SPRITE_OFF_2_PTR(sprite, *p); |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
470 coord_show(coord); |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
471 rdman_coord_changed(sprite->rdman, coord); |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
472 p++; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
473 } |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
474 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
475 sprite->last_scene = scene; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
476 |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
477 return 0; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
478 } |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
479 |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
480 void $1_free($1_t *); |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
481 |
130
3a4d6179e6a9
change mb_c_source.m4 and mb_c_header.m4 to specify parent for SVG object
Thinker K.F. Li <thinker@branda.to>
parents:
113
diff
changeset
|
482 $1_t *$1_new(redraw_man_t *rdman, coord_t *parent_coord) { |
64 | 483 $1_t *obj; |
484 grad_stop_t *stops = NULL;]DECLARE_VARS | |
63 | 485 $2[]dnl |
486 [ | |
487 obj = ($1_t *)malloc(sizeof($1_t)); | |
488 if(obj == NULL) return NULL; | |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
489 |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
490 obj->lsym.sprite.free = (void (*)(mb_sprite_t *))$1_free; |
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
491 obj->lsym.sprite.goto_scene = (int (*)(mb_sprite_t *, int))$1_goto_scene; |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
492 obj->lsym.sprite.get_obj_with_name = |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
493 (mb_obj_t *(*)(mb_sprite_t *, const char *))mb_lsym_get_obj_with_name; |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
494 obj->lsym.num_entries = |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
495 sizeof($1_symbols) / sizeof(mb_sprite_lsym_entry_t); |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
496 obj->lsym.entries = $1_symbols; |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
497 |
154 | 498 obj->rdman = rdman; |
241
104d83378582
Add scene support in svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
213
diff
changeset
|
499 obj->last_scene = NULL; |
210
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
500 ]SETUP_VARS[ |
3fadd2f2742e
M4 macros to generate code for dynamic loading.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
501 obj->root_coord = rdman_coord_new(rdman, parent_coord);] |
63 | 502 $2 |
503 [ return obj; | |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
504 } |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
505 |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
506 void $1_free($1_t *obj) { |
68 | 507 grad_stop_t *stops = NULL; |
154 | 508 redraw_man_t *rdman; |
509 | |
510 rdman = obj->rdman; | |
511 ]REVERSE_VARS[]dnl | |
512 divert([-1])dnl | |
513 $2[]dnl | |
514 divert[]dnl | |
515 CLEAR_VARS[]dnl | |
516 POP_ALL_REV[ | |
517 rdman_coord_subtree_free(rdman, obj->root_coord); | |
67
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
518 free(obj); |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
519 } |
3f2872a1a2fe
clear objects in *_free() for generated code
Thinker K.F. Li <thinker@branda.to>
parents:
66
diff
changeset
|
520 ]dnl |
63 | 521 ]) |
522 divert[]dnl |