| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
#include "imexttypes.h" |
|
2
|
|
|
|
|
|
|
#include "imager.h" |
|
3
|
|
|
|
|
|
|
#include "imio.h" |
|
4
|
|
|
|
|
|
|
#include "imexif.h" |
|
5
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
static im_context_t get_context(void); |
|
7
|
|
|
|
|
|
|
static i_img *mathom_i_img_8_new(i_img_dim, i_img_dim, int); |
|
8
|
|
|
|
|
|
|
static i_img *mathom_i_img_16_new(i_img_dim, i_img_dim, int); |
|
9
|
|
|
|
|
|
|
static i_img *mathom_i_img_double_new(i_img_dim, i_img_dim, int); |
|
10
|
|
|
|
|
|
|
static i_img *mathom_i_img_pal_new(i_img_dim, i_img_dim, int, int); |
|
11
|
|
|
|
|
|
|
static void mathom_i_clear_error(void); |
|
12
|
|
|
|
|
|
|
static void mathom_i_push_error(int, const char *); |
|
13
|
|
|
|
|
|
|
static void mathom_i_push_errorvf(int, const char *, va_list); |
|
14
|
|
|
|
|
|
|
static int mathom_i_set_image_file_limits(i_img_dim, i_img_dim, size_t); |
|
15
|
|
|
|
|
|
|
static int mathom_i_get_image_file_limits(i_img_dim*, i_img_dim*, size_t*); |
|
16
|
|
|
|
|
|
|
static int |
|
17
|
|
|
|
|
|
|
mathom_i_int_check_image_file_limits(i_img_dim, i_img_dim, int, size_t); |
|
18
|
|
|
|
|
|
|
static i_img *mathom_i_img_alloc(void); |
|
19
|
|
|
|
|
|
|
static void mathom_i_img_init(i_img *); |
|
20
|
|
|
|
|
|
|
static i_io_glue_t *mathom_io_new_fd(int); |
|
21
|
|
|
|
|
|
|
static i_io_glue_t *mathom_io_new_bufchain(void); |
|
22
|
|
|
|
|
|
|
static i_io_glue_t * |
|
23
|
|
|
|
|
|
|
mathom_io_new_buffer(const char *data, size_t, i_io_closebufp_t, void *); |
|
24
|
|
|
|
|
|
|
static i_io_glue_t * |
|
25
|
|
|
|
|
|
|
mathom_io_new_cb(void *, i_io_readl_t, i_io_writel_t, i_io_seekl_t, |
|
26
|
|
|
|
|
|
|
i_io_closel_t, i_io_destroyl_t); |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
/* |
|
29
|
|
|
|
|
|
|
DON'T ADD CASTS TO THESE |
|
30
|
|
|
|
|
|
|
*/ |
|
31
|
|
|
|
|
|
|
im_ext_funcs imager_function_table = |
|
32
|
|
|
|
|
|
|
{ |
|
33
|
|
|
|
|
|
|
IMAGER_API_VERSION, |
|
34
|
|
|
|
|
|
|
IMAGER_API_LEVEL, |
|
35
|
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
mymalloc, |
|
37
|
|
|
|
|
|
|
myfree, |
|
38
|
|
|
|
|
|
|
myrealloc, |
|
39
|
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
mymalloc_file_line, |
|
41
|
|
|
|
|
|
|
myfree_file_line, |
|
42
|
|
|
|
|
|
|
myrealloc_file_line, |
|
43
|
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
mathom_i_img_8_new, |
|
45
|
|
|
|
|
|
|
mathom_i_img_16_new, |
|
46
|
|
|
|
|
|
|
mathom_i_img_double_new, |
|
47
|
|
|
|
|
|
|
mathom_i_img_pal_new, |
|
48
|
|
|
|
|
|
|
i_img_destroy, |
|
49
|
|
|
|
|
|
|
i_sametype, |
|
50
|
|
|
|
|
|
|
i_sametype_chans, |
|
51
|
|
|
|
|
|
|
i_img_info, |
|
52
|
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
i_ppix, |
|
54
|
|
|
|
|
|
|
i_gpix, |
|
55
|
|
|
|
|
|
|
i_ppixf, |
|
56
|
|
|
|
|
|
|
i_gpixf, |
|
57
|
|
|
|
|
|
|
i_plin, |
|
58
|
|
|
|
|
|
|
i_glin, |
|
59
|
|
|
|
|
|
|
i_plinf, |
|
60
|
|
|
|
|
|
|
i_glinf, |
|
61
|
|
|
|
|
|
|
i_gsamp, |
|
62
|
|
|
|
|
|
|
i_gsampf, |
|
63
|
|
|
|
|
|
|
i_gpal, |
|
64
|
|
|
|
|
|
|
i_ppal, |
|
65
|
|
|
|
|
|
|
i_addcolors, |
|
66
|
|
|
|
|
|
|
i_getcolors, |
|
67
|
|
|
|
|
|
|
i_colorcount, |
|
68
|
|
|
|
|
|
|
i_maxcolors, |
|
69
|
|
|
|
|
|
|
i_findcolor, |
|
70
|
|
|
|
|
|
|
i_setcolors, |
|
71
|
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
i_new_fill_solid, |
|
73
|
|
|
|
|
|
|
i_new_fill_solidf, |
|
74
|
|
|
|
|
|
|
i_new_fill_hatch, |
|
75
|
|
|
|
|
|
|
i_new_fill_hatchf, |
|
76
|
|
|
|
|
|
|
i_new_fill_image, |
|
77
|
|
|
|
|
|
|
i_new_fill_fount, |
|
78
|
|
|
|
|
|
|
i_fill_destroy, |
|
79
|
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
i_quant_makemap, |
|
81
|
|
|
|
|
|
|
i_quant_translate, |
|
82
|
|
|
|
|
|
|
i_quant_transparent, |
|
83
|
|
|
|
|
|
|
|
|
84
|
|
|
|
|
|
|
mathom_i_clear_error, |
|
85
|
|
|
|
|
|
|
mathom_i_push_error, |
|
86
|
|
|
|
|
|
|
i_push_errorf, |
|
87
|
|
|
|
|
|
|
mathom_i_push_errorvf, |
|
88
|
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
i_tags_new, |
|
90
|
|
|
|
|
|
|
i_tags_set, |
|
91
|
|
|
|
|
|
|
i_tags_setn, |
|
92
|
|
|
|
|
|
|
i_tags_destroy, |
|
93
|
|
|
|
|
|
|
i_tags_find, |
|
94
|
|
|
|
|
|
|
i_tags_findn, |
|
95
|
|
|
|
|
|
|
i_tags_delete, |
|
96
|
|
|
|
|
|
|
i_tags_delbyname, |
|
97
|
|
|
|
|
|
|
i_tags_delbycode, |
|
98
|
|
|
|
|
|
|
i_tags_get_float, |
|
99
|
|
|
|
|
|
|
i_tags_set_float, |
|
100
|
|
|
|
|
|
|
i_tags_set_float2, |
|
101
|
|
|
|
|
|
|
i_tags_get_int, |
|
102
|
|
|
|
|
|
|
i_tags_get_string, |
|
103
|
|
|
|
|
|
|
i_tags_get_color, |
|
104
|
|
|
|
|
|
|
i_tags_set_color, |
|
105
|
|
|
|
|
|
|
|
|
106
|
|
|
|
|
|
|
i_box, |
|
107
|
|
|
|
|
|
|
i_box_filled, |
|
108
|
|
|
|
|
|
|
i_box_cfill, |
|
109
|
|
|
|
|
|
|
i_line, |
|
110
|
|
|
|
|
|
|
i_line_aa, |
|
111
|
|
|
|
|
|
|
i_arc, |
|
112
|
|
|
|
|
|
|
i_arc_aa, |
|
113
|
|
|
|
|
|
|
i_arc_cfill, |
|
114
|
|
|
|
|
|
|
i_arc_aa_cfill, |
|
115
|
|
|
|
|
|
|
i_circle_aa, |
|
116
|
|
|
|
|
|
|
i_flood_fill, |
|
117
|
|
|
|
|
|
|
i_flood_cfill, |
|
118
|
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
i_copyto, |
|
120
|
|
|
|
|
|
|
i_copyto_trans, |
|
121
|
|
|
|
|
|
|
i_copy, |
|
122
|
|
|
|
|
|
|
i_rubthru, |
|
123
|
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
/* IMAGER_API_LEVEL 2 functions */ |
|
125
|
|
|
|
|
|
|
mathom_i_set_image_file_limits, |
|
126
|
|
|
|
|
|
|
mathom_i_get_image_file_limits, |
|
127
|
|
|
|
|
|
|
mathom_i_int_check_image_file_limits, |
|
128
|
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
i_flood_fill_border, |
|
130
|
|
|
|
|
|
|
i_flood_cfill_border, |
|
131
|
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
/* IMAGER_API_LEVEL 3 functions */ |
|
133
|
|
|
|
|
|
|
i_img_setmask, |
|
134
|
|
|
|
|
|
|
i_img_getmask, |
|
135
|
|
|
|
|
|
|
i_img_getchannels, |
|
136
|
|
|
|
|
|
|
i_img_get_width, |
|
137
|
|
|
|
|
|
|
i_img_get_height, |
|
138
|
|
|
|
|
|
|
i_lhead, |
|
139
|
|
|
|
|
|
|
i_loog, |
|
140
|
|
|
|
|
|
|
|
|
141
|
|
|
|
|
|
|
/* IMAGER_API_LEVEL 4 functions */ |
|
142
|
|
|
|
|
|
|
mathom_i_img_alloc, |
|
143
|
|
|
|
|
|
|
mathom_i_img_init, |
|
144
|
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
/* IMAGER_API_LEVEL 5 functions */ |
|
146
|
|
|
|
|
|
|
i_img_is_monochrome, |
|
147
|
|
|
|
|
|
|
i_gsamp_bg, |
|
148
|
|
|
|
|
|
|
i_gsampf_bg, |
|
149
|
|
|
|
|
|
|
i_get_file_background, |
|
150
|
|
|
|
|
|
|
i_get_file_backgroundf, |
|
151
|
|
|
|
|
|
|
i_utf8_advance, |
|
152
|
|
|
|
|
|
|
i_render_new, |
|
153
|
|
|
|
|
|
|
i_render_delete, |
|
154
|
|
|
|
|
|
|
i_render_color, |
|
155
|
|
|
|
|
|
|
i_render_fill, |
|
156
|
|
|
|
|
|
|
i_render_line, |
|
157
|
|
|
|
|
|
|
i_render_linef, |
|
158
|
|
|
|
|
|
|
|
|
159
|
|
|
|
|
|
|
/* level 6 */ |
|
160
|
|
|
|
|
|
|
i_io_getc_imp, |
|
161
|
|
|
|
|
|
|
i_io_peekc_imp, |
|
162
|
|
|
|
|
|
|
i_io_peekn, |
|
163
|
|
|
|
|
|
|
i_io_putc_imp, |
|
164
|
|
|
|
|
|
|
i_io_read, |
|
165
|
|
|
|
|
|
|
i_io_write, |
|
166
|
|
|
|
|
|
|
i_io_seek, |
|
167
|
|
|
|
|
|
|
i_io_flush, |
|
168
|
|
|
|
|
|
|
i_io_close, |
|
169
|
|
|
|
|
|
|
i_io_set_buffered, |
|
170
|
|
|
|
|
|
|
i_io_gets, |
|
171
|
|
|
|
|
|
|
mathom_io_new_fd, |
|
172
|
|
|
|
|
|
|
mathom_io_new_bufchain, |
|
173
|
|
|
|
|
|
|
mathom_io_new_buffer, |
|
174
|
|
|
|
|
|
|
mathom_io_new_cb, |
|
175
|
|
|
|
|
|
|
io_slurp, |
|
176
|
|
|
|
|
|
|
io_glue_destroy, |
|
177
|
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
/* level 8 */ |
|
179
|
|
|
|
|
|
|
im_img_8_new, |
|
180
|
|
|
|
|
|
|
im_img_16_new, |
|
181
|
|
|
|
|
|
|
im_img_double_new, |
|
182
|
|
|
|
|
|
|
im_img_pal_new, |
|
183
|
|
|
|
|
|
|
im_clear_error, |
|
184
|
|
|
|
|
|
|
im_push_error, |
|
185
|
|
|
|
|
|
|
im_push_errorvf, |
|
186
|
|
|
|
|
|
|
im_push_errorf, |
|
187
|
|
|
|
|
|
|
im_set_image_file_limits, |
|
188
|
|
|
|
|
|
|
im_get_image_file_limits, |
|
189
|
|
|
|
|
|
|
im_int_check_image_file_limits, |
|
190
|
|
|
|
|
|
|
im_img_alloc, |
|
191
|
|
|
|
|
|
|
im_img_init, |
|
192
|
|
|
|
|
|
|
im_io_new_fd, |
|
193
|
|
|
|
|
|
|
im_io_new_bufchain, |
|
194
|
|
|
|
|
|
|
im_io_new_buffer, |
|
195
|
|
|
|
|
|
|
im_io_new_cb, |
|
196
|
|
|
|
|
|
|
get_context, |
|
197
|
|
|
|
|
|
|
im_lhead, |
|
198
|
|
|
|
|
|
|
im_loog, |
|
199
|
|
|
|
|
|
|
im_context_refinc, |
|
200
|
|
|
|
|
|
|
im_context_refdec, |
|
201
|
|
|
|
|
|
|
im_errors, |
|
202
|
|
|
|
|
|
|
i_mutex_new, |
|
203
|
|
|
|
|
|
|
i_mutex_destroy, |
|
204
|
|
|
|
|
|
|
i_mutex_lock, |
|
205
|
|
|
|
|
|
|
i_mutex_unlock, |
|
206
|
|
|
|
|
|
|
im_context_slot_new, |
|
207
|
|
|
|
|
|
|
im_context_slot_set, |
|
208
|
|
|
|
|
|
|
im_context_slot_get, |
|
209
|
|
|
|
|
|
|
|
|
210
|
|
|
|
|
|
|
/* level 9 */ |
|
211
|
|
|
|
|
|
|
i_poly_poly_aa, |
|
212
|
|
|
|
|
|
|
i_poly_poly_aa_cfill, |
|
213
|
|
|
|
|
|
|
i_poly_aa_m, |
|
214
|
|
|
|
|
|
|
i_poly_aa_cfill_m, |
|
215
|
|
|
|
|
|
|
|
|
216
|
|
|
|
|
|
|
i_img_alpha_channel, |
|
217
|
|
|
|
|
|
|
i_img_color_model, |
|
218
|
|
|
|
|
|
|
i_img_color_channels, |
|
219
|
|
|
|
|
|
|
|
|
220
|
|
|
|
|
|
|
/* level 10 */ |
|
221
|
|
|
|
|
|
|
im_decode_exif |
|
222
|
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
/* level 11 */ |
|
224
|
|
|
|
|
|
|
}; |
|
225
|
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
/* in general these functions aren't called by Imager internally, but |
|
227
|
|
|
|
|
|
|
only via the pointers above, since faster macros that call the |
|
228
|
|
|
|
|
|
|
image vtable pointers are used. |
|
229
|
|
|
|
|
|
|
|
|
230
|
|
|
|
|
|
|
() are used around the function names to prevent macro replacement |
|
231
|
|
|
|
|
|
|
on the function names. |
|
232
|
|
|
|
|
|
|
*/ |
|
233
|
|
|
|
|
|
|
|
|
234
|
|
|
|
|
|
|
/* |
|
235
|
|
|
|
|
|
|
=item i_ppix(im, x, y, color) |
|
236
|
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
=category Drawing |
|
238
|
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
Sets the pixel at (x,y) to I. |
|
240
|
|
|
|
|
|
|
|
|
241
|
|
|
|
|
|
|
Returns 0 if the pixel was drawn, or -1 if not. |
|
242
|
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
Does no alpha blending, just copies the channels from the supplied |
|
244
|
|
|
|
|
|
|
color to the image. |
|
245
|
|
|
|
|
|
|
|
|
246
|
|
|
|
|
|
|
=cut |
|
247
|
|
|
|
|
|
|
*/ |
|
248
|
|
|
|
|
|
|
|
|
249
|
|
|
|
|
|
|
int |
|
250
|
0
|
|
|
|
|
|
(i_ppix)(i_img *im, i_img_dim x, i_img_dim y, const i_color *val) { |
|
251
|
0
|
|
|
|
|
|
return i_ppix(im, x, y, val); |
|
252
|
|
|
|
|
|
|
} |
|
253
|
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
/* |
|
255
|
|
|
|
|
|
|
=item i_gpix(im, C, C, C) |
|
256
|
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
=category Drawing |
|
258
|
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
Retrieves the C of the pixel (x,y). |
|
260
|
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
Returns 0 if the pixel was retrieved, or -1 if not. |
|
262
|
|
|
|
|
|
|
|
|
263
|
|
|
|
|
|
|
=cut |
|
264
|
|
|
|
|
|
|
*/ |
|
265
|
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
int |
|
267
|
0
|
|
|
|
|
|
(i_gpix)(i_img *im,i_img_dim x,i_img_dim y,i_color *val) { |
|
268
|
0
|
|
|
|
|
|
return i_gpix(im, x, y, val); |
|
269
|
|
|
|
|
|
|
} |
|
270
|
|
|
|
|
|
|
|
|
271
|
|
|
|
|
|
|
/* |
|
272
|
|
|
|
|
|
|
=item i_ppixf(im, C, C, C) |
|
273
|
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
=category Drawing |
|
275
|
|
|
|
|
|
|
|
|
276
|
|
|
|
|
|
|
Sets the pixel at (C,C) to the floating point color C. |
|
277
|
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
Returns 0 if the pixel was drawn, or -1 if not. |
|
279
|
|
|
|
|
|
|
|
|
280
|
|
|
|
|
|
|
Does no alpha blending, just copies the channels from the supplied |
|
281
|
|
|
|
|
|
|
color to the image. |
|
282
|
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
=cut |
|
284
|
|
|
|
|
|
|
*/ |
|
285
|
|
|
|
|
|
|
int |
|
286
|
0
|
|
|
|
|
|
(i_ppixf)(i_img *im, i_img_dim x, i_img_dim y, const i_fcolor *val) { |
|
287
|
0
|
|
|
|
|
|
return i_ppixf(im, x, y, val); |
|
288
|
|
|
|
|
|
|
} |
|
289
|
|
|
|
|
|
|
|
|
290
|
|
|
|
|
|
|
/* |
|
291
|
|
|
|
|
|
|
=item i_gpixf(im, C, C, C) |
|
292
|
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
=category Drawing |
|
294
|
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
Retrieves the color of the pixel (x,y) as a floating point color into |
|
296
|
|
|
|
|
|
|
C. |
|
297
|
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
Returns 0 if the pixel was retrieved, or -1 if not. |
|
299
|
|
|
|
|
|
|
|
|
300
|
|
|
|
|
|
|
=cut |
|
301
|
|
|
|
|
|
|
*/ |
|
302
|
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
int |
|
304
|
0
|
|
|
|
|
|
(i_gpixf)(i_img *im,i_img_dim x,i_img_dim y,i_fcolor *val) { |
|
305
|
0
|
|
|
|
|
|
return i_gpixf(im, x, y, val); |
|
306
|
|
|
|
|
|
|
} |
|
307
|
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
/* |
|
309
|
|
|
|
|
|
|
=item i_plin(im, l, r, y, colors) |
|
310
|
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
=category Drawing |
|
312
|
|
|
|
|
|
|
|
|
313
|
|
|
|
|
|
|
Sets (r-l) pixels starting from (l,y) using (r-l) values from |
|
314
|
|
|
|
|
|
|
I. |
|
315
|
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
Returns the number of pixels set. |
|
317
|
|
|
|
|
|
|
|
|
318
|
|
|
|
|
|
|
=cut |
|
319
|
|
|
|
|
|
|
*/ |
|
320
|
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
i_img_dim |
|
322
|
0
|
|
|
|
|
|
(i_plin)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, const i_color *vals) { |
|
323
|
0
|
|
|
|
|
|
return i_plin(im, l, r, y, vals); |
|
324
|
|
|
|
|
|
|
} |
|
325
|
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
/* |
|
327
|
|
|
|
|
|
|
=item i_glin(im, l, r, y, colors) |
|
328
|
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
=category Drawing |
|
330
|
|
|
|
|
|
|
|
|
331
|
|
|
|
|
|
|
Retrieves (r-l) pixels starting from (l,y) into I. |
|
332
|
|
|
|
|
|
|
|
|
333
|
|
|
|
|
|
|
Returns the number of pixels retrieved. |
|
334
|
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
=cut |
|
336
|
|
|
|
|
|
|
*/ |
|
337
|
|
|
|
|
|
|
|
|
338
|
|
|
|
|
|
|
i_img_dim |
|
339
|
0
|
|
|
|
|
|
(i_glin)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, i_color *vals) { |
|
340
|
0
|
|
|
|
|
|
return i_glin(im, l, r, y, vals); |
|
341
|
|
|
|
|
|
|
} |
|
342
|
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
/* |
|
344
|
|
|
|
|
|
|
=item i_plinf(im, C, C, C) |
|
345
|
|
|
|
|
|
|
|
|
346
|
|
|
|
|
|
|
=category Drawing |
|
347
|
|
|
|
|
|
|
|
|
348
|
|
|
|
|
|
|
Sets (right-left) pixels starting from (left,y) using (right-left) |
|
349
|
|
|
|
|
|
|
floating point colors from C. |
|
350
|
|
|
|
|
|
|
|
|
351
|
|
|
|
|
|
|
Returns the number of pixels set. |
|
352
|
|
|
|
|
|
|
|
|
353
|
|
|
|
|
|
|
=cut |
|
354
|
|
|
|
|
|
|
*/ |
|
355
|
|
|
|
|
|
|
|
|
356
|
|
|
|
|
|
|
i_img_dim |
|
357
|
0
|
|
|
|
|
|
(i_plinf)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, const i_fcolor *vals) { |
|
358
|
0
|
|
|
|
|
|
return i_plinf(im, l, r, y, vals); |
|
359
|
|
|
|
|
|
|
} |
|
360
|
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
/* |
|
362
|
|
|
|
|
|
|
=item i_glinf(im, l, r, y, colors) |
|
363
|
|
|
|
|
|
|
|
|
364
|
|
|
|
|
|
|
=category Drawing |
|
365
|
|
|
|
|
|
|
|
|
366
|
|
|
|
|
|
|
Retrieves (r-l) pixels starting from (l,y) into I as floating |
|
367
|
|
|
|
|
|
|
point colors. |
|
368
|
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
Returns the number of pixels retrieved. |
|
370
|
|
|
|
|
|
|
|
|
371
|
|
|
|
|
|
|
=cut |
|
372
|
|
|
|
|
|
|
*/ |
|
373
|
|
|
|
|
|
|
|
|
374
|
|
|
|
|
|
|
i_img_dim |
|
375
|
0
|
|
|
|
|
|
(i_glinf)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, i_fcolor *vals) { |
|
376
|
0
|
|
|
|
|
|
return i_glinf(im, l, r, y, vals); |
|
377
|
|
|
|
|
|
|
} |
|
378
|
|
|
|
|
|
|
|
|
379
|
|
|
|
|
|
|
/* |
|
380
|
|
|
|
|
|
|
=item i_gsamp(im, left, right, y, samples, channels, channel_count) |
|
381
|
|
|
|
|
|
|
|
|
382
|
|
|
|
|
|
|
=category Drawing |
|
383
|
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
Reads sample values from C for the horizontal line (left, y) to |
|
385
|
|
|
|
|
|
|
(right-1,y) for the channels specified by C, an array of int |
|
386
|
|
|
|
|
|
|
with C elements. |
|
387
|
|
|
|
|
|
|
|
|
388
|
|
|
|
|
|
|
If channels is NULL then the first channels_count channels are retrieved for |
|
389
|
|
|
|
|
|
|
each pixel. |
|
390
|
|
|
|
|
|
|
|
|
391
|
|
|
|
|
|
|
Returns the number of samples read (which should be (right-left) * |
|
392
|
|
|
|
|
|
|
channel_count) |
|
393
|
|
|
|
|
|
|
|
|
394
|
|
|
|
|
|
|
=cut |
|
395
|
|
|
|
|
|
|
*/ |
|
396
|
|
|
|
|
|
|
i_img_dim |
|
397
|
0
|
|
|
|
|
|
(i_gsamp)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, i_sample_t *samp, |
|
398
|
|
|
|
|
|
|
const int *chans, int chan_count) { |
|
399
|
0
|
|
|
|
|
|
return i_gsamp(im, l, r, y, samp, chans, chan_count); |
|
400
|
|
|
|
|
|
|
} |
|
401
|
|
|
|
|
|
|
|
|
402
|
|
|
|
|
|
|
/* |
|
403
|
|
|
|
|
|
|
=item i_gsampf(im, left, right, y, samples, channels, channel_count) |
|
404
|
|
|
|
|
|
|
|
|
405
|
|
|
|
|
|
|
=category Drawing |
|
406
|
|
|
|
|
|
|
|
|
407
|
|
|
|
|
|
|
Reads floating point sample values from C for the horizontal line |
|
408
|
|
|
|
|
|
|
(left, y) to (right-1,y) for the channels specified by C, an |
|
409
|
|
|
|
|
|
|
array of int with channel_count elements. |
|
410
|
|
|
|
|
|
|
|
|
411
|
|
|
|
|
|
|
If C is NULL then the first C channels are |
|
412
|
|
|
|
|
|
|
retrieved for each pixel. |
|
413
|
|
|
|
|
|
|
|
|
414
|
|
|
|
|
|
|
Returns the number of samples read (which should be (C-C) |
|
415
|
|
|
|
|
|
|
* C) |
|
416
|
|
|
|
|
|
|
|
|
417
|
|
|
|
|
|
|
=cut |
|
418
|
|
|
|
|
|
|
*/ |
|
419
|
|
|
|
|
|
|
i_img_dim |
|
420
|
0
|
|
|
|
|
|
(i_gsampf)(i_img *im, i_img_dim l, i_img_dim r, i_img_dim y, i_fsample_t *samp, |
|
421
|
|
|
|
|
|
|
const int *chans, int chan_count) { |
|
422
|
0
|
|
|
|
|
|
return i_gsampf(im, l, r, y, samp, chans, chan_count); |
|
423
|
|
|
|
|
|
|
} |
|
424
|
|
|
|
|
|
|
|
|
425
|
|
|
|
|
|
|
/* |
|
426
|
|
|
|
|
|
|
=item i_gsamp_bits(im, left, right, y, samples, channels, channel_count, bits) |
|
427
|
|
|
|
|
|
|
=category Drawing |
|
428
|
|
|
|
|
|
|
|
|
429
|
|
|
|
|
|
|
Reads integer samples scaled to C bits of precision into the |
|
430
|
|
|
|
|
|
|
C array C. |
|
431
|
|
|
|
|
|
|
|
|
432
|
|
|
|
|
|
|
Expect this to be slow unless C<< bits == im->bits >>. |
|
433
|
|
|
|
|
|
|
|
|
434
|
|
|
|
|
|
|
Returns the number of samples copied, or -1 on error. |
|
435
|
|
|
|
|
|
|
|
|
436
|
|
|
|
|
|
|
Not all image types implement this method. |
|
437
|
|
|
|
|
|
|
|
|
438
|
|
|
|
|
|
|
Pushes errors, but does not call C. |
|
439
|
|
|
|
|
|
|
|
|
440
|
|
|
|
|
|
|
=cut |
|
441
|
|
|
|
|
|
|
*/ |
|
442
|
|
|
|
|
|
|
|
|
443
|
|
|
|
|
|
|
/* |
|
444
|
|
|
|
|
|
|
=item i_psamp_bits(im, left, right, y, samples, channels, channel_count, bits) |
|
445
|
|
|
|
|
|
|
=category Drawing |
|
446
|
|
|
|
|
|
|
|
|
447
|
|
|
|
|
|
|
Writes integer samples scaled to C bits of precision from the |
|
448
|
|
|
|
|
|
|
C array C. |
|
449
|
|
|
|
|
|
|
|
|
450
|
|
|
|
|
|
|
Expect this to be slow unless C<< bits == im->bits >>. |
|
451
|
|
|
|
|
|
|
|
|
452
|
|
|
|
|
|
|
Returns the number of samples copied, or -1 on error. |
|
453
|
|
|
|
|
|
|
|
|
454
|
|
|
|
|
|
|
Not all image types implement this method. |
|
455
|
|
|
|
|
|
|
|
|
456
|
|
|
|
|
|
|
Pushes errors, but does not call C. |
|
457
|
|
|
|
|
|
|
|
|
458
|
|
|
|
|
|
|
=cut |
|
459
|
|
|
|
|
|
|
*/ |
|
460
|
|
|
|
|
|
|
|
|
461
|
|
|
|
|
|
|
/* |
|
462
|
|
|
|
|
|
|
=item i_gpal(im, left, right, y, indexes) |
|
463
|
|
|
|
|
|
|
|
|
464
|
|
|
|
|
|
|
=category Drawing |
|
465
|
|
|
|
|
|
|
|
|
466
|
|
|
|
|
|
|
Reads palette indexes for the horizontal line (left, y) to (right-1, |
|
467
|
|
|
|
|
|
|
y) into C. |
|
468
|
|
|
|
|
|
|
|
|
469
|
|
|
|
|
|
|
Returns the number of indexes read. |
|
470
|
|
|
|
|
|
|
|
|
471
|
|
|
|
|
|
|
Always returns 0 for direct color images. |
|
472
|
|
|
|
|
|
|
|
|
473
|
|
|
|
|
|
|
=cut |
|
474
|
|
|
|
|
|
|
*/ |
|
475
|
|
|
|
|
|
|
i_img_dim |
|
476
|
0
|
|
|
|
|
|
(i_gpal)(i_img *im, i_img_dim x, i_img_dim r, i_img_dim y, i_palidx *vals) { |
|
477
|
0
|
0
|
|
|
|
|
return i_gpal(im, x, r, y, vals); |
|
478
|
|
|
|
|
|
|
} |
|
479
|
|
|
|
|
|
|
|
|
480
|
|
|
|
|
|
|
/* |
|
481
|
|
|
|
|
|
|
=item i_ppal(im, left, right, y, indexes) |
|
482
|
|
|
|
|
|
|
|
|
483
|
|
|
|
|
|
|
=category Drawing |
|
484
|
|
|
|
|
|
|
|
|
485
|
|
|
|
|
|
|
Writes palette indexes for the horizontal line (left, y) to (right-1, |
|
486
|
|
|
|
|
|
|
y) from C. |
|
487
|
|
|
|
|
|
|
|
|
488
|
|
|
|
|
|
|
Returns the number of indexes written. |
|
489
|
|
|
|
|
|
|
|
|
490
|
|
|
|
|
|
|
Always returns 0 for direct color images. |
|
491
|
|
|
|
|
|
|
|
|
492
|
|
|
|
|
|
|
=cut |
|
493
|
|
|
|
|
|
|
*/ |
|
494
|
|
|
|
|
|
|
i_img_dim |
|
495
|
0
|
|
|
|
|
|
(i_ppal)(i_img *im, i_img_dim x, i_img_dim r, i_img_dim y, const i_palidx *vals) { |
|
496
|
0
|
0
|
|
|
|
|
return i_ppal(im, x, r, y, vals); |
|
497
|
|
|
|
|
|
|
} |
|
498
|
|
|
|
|
|
|
|
|
499
|
|
|
|
|
|
|
/* |
|
500
|
|
|
|
|
|
|
=item i_addcolors(im, colors, count) |
|
501
|
|
|
|
|
|
|
|
|
502
|
|
|
|
|
|
|
=category Paletted images |
|
503
|
|
|
|
|
|
|
|
|
504
|
|
|
|
|
|
|
Adds colors to the image's palette. |
|
505
|
|
|
|
|
|
|
|
|
506
|
|
|
|
|
|
|
On success returns the index of the lowest color added. |
|
507
|
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
On failure returns -1. |
|
509
|
|
|
|
|
|
|
|
|
510
|
|
|
|
|
|
|
Always fails for direct color images. |
|
511
|
|
|
|
|
|
|
|
|
512
|
|
|
|
|
|
|
=cut |
|
513
|
|
|
|
|
|
|
*/ |
|
514
|
|
|
|
|
|
|
|
|
515
|
|
|
|
|
|
|
int |
|
516
|
0
|
|
|
|
|
|
(i_addcolors)(i_img *im, const i_color *colors, int count) { |
|
517
|
0
|
0
|
|
|
|
|
return i_addcolors(im, colors, count); |
|
518
|
|
|
|
|
|
|
} |
|
519
|
|
|
|
|
|
|
|
|
520
|
|
|
|
|
|
|
/* |
|
521
|
|
|
|
|
|
|
=item i_getcolors(im, index, colors, count) |
|
522
|
|
|
|
|
|
|
|
|
523
|
|
|
|
|
|
|
=category Paletted images |
|
524
|
|
|
|
|
|
|
|
|
525
|
|
|
|
|
|
|
Retrieves I colors starting from I in the image's |
|
526
|
|
|
|
|
|
|
palette. |
|
527
|
|
|
|
|
|
|
|
|
528
|
|
|
|
|
|
|
On success stores the colors into I and returns true. |
|
529
|
|
|
|
|
|
|
|
|
530
|
|
|
|
|
|
|
On failure returns false. |
|
531
|
|
|
|
|
|
|
|
|
532
|
|
|
|
|
|
|
Always fails for direct color images. |
|
533
|
|
|
|
|
|
|
|
|
534
|
|
|
|
|
|
|
Fails if there are less than I+I colors in the image's |
|
535
|
|
|
|
|
|
|
palette. |
|
536
|
|
|
|
|
|
|
|
|
537
|
|
|
|
|
|
|
=cut |
|
538
|
|
|
|
|
|
|
*/ |
|
539
|
|
|
|
|
|
|
|
|
540
|
|
|
|
|
|
|
int |
|
541
|
0
|
|
|
|
|
|
(i_getcolors)(i_img *im, int i, i_color *colors, int count) { |
|
542
|
0
|
0
|
|
|
|
|
return i_getcolors(im, i, colors, count); |
|
543
|
|
|
|
|
|
|
} |
|
544
|
|
|
|
|
|
|
|
|
545
|
|
|
|
|
|
|
/* |
|
546
|
|
|
|
|
|
|
=item i_colorcount(im) |
|
547
|
|
|
|
|
|
|
|
|
548
|
|
|
|
|
|
|
=category Paletted images |
|
549
|
|
|
|
|
|
|
|
|
550
|
|
|
|
|
|
|
Returns the number of colors in the image's palette. |
|
551
|
|
|
|
|
|
|
|
|
552
|
|
|
|
|
|
|
Returns -1 for direct images. |
|
553
|
|
|
|
|
|
|
|
|
554
|
|
|
|
|
|
|
=cut |
|
555
|
|
|
|
|
|
|
*/ |
|
556
|
|
|
|
|
|
|
|
|
557
|
|
|
|
|
|
|
int |
|
558
|
0
|
|
|
|
|
|
(i_colorcount)(i_img *im) { |
|
559
|
0
|
0
|
|
|
|
|
return i_colorcount(im); |
|
560
|
|
|
|
|
|
|
} |
|
561
|
|
|
|
|
|
|
|
|
562
|
|
|
|
|
|
|
/* |
|
563
|
|
|
|
|
|
|
=item i_maxcolors(im) |
|
564
|
|
|
|
|
|
|
|
|
565
|
|
|
|
|
|
|
=category Paletted images |
|
566
|
|
|
|
|
|
|
|
|
567
|
|
|
|
|
|
|
Returns the maximum number of colors the palette can hold for the |
|
568
|
|
|
|
|
|
|
image. |
|
569
|
|
|
|
|
|
|
|
|
570
|
|
|
|
|
|
|
Returns -1 for direct color images. |
|
571
|
|
|
|
|
|
|
|
|
572
|
|
|
|
|
|
|
=cut |
|
573
|
|
|
|
|
|
|
*/ |
|
574
|
|
|
|
|
|
|
|
|
575
|
|
|
|
|
|
|
int |
|
576
|
0
|
|
|
|
|
|
(i_maxcolors)(i_img *im) { |
|
577
|
0
|
0
|
|
|
|
|
return i_maxcolors(im); |
|
578
|
|
|
|
|
|
|
} |
|
579
|
|
|
|
|
|
|
|
|
580
|
|
|
|
|
|
|
/* |
|
581
|
|
|
|
|
|
|
=item i_findcolor(im, color, &entry) |
|
582
|
|
|
|
|
|
|
|
|
583
|
|
|
|
|
|
|
=category Paletted images |
|
584
|
|
|
|
|
|
|
|
|
585
|
|
|
|
|
|
|
Searches the images palette for the given color. |
|
586
|
|
|
|
|
|
|
|
|
587
|
|
|
|
|
|
|
On success sets *I to the index of the color, and returns true. |
|
588
|
|
|
|
|
|
|
|
|
589
|
|
|
|
|
|
|
On failure returns false. |
|
590
|
|
|
|
|
|
|
|
|
591
|
|
|
|
|
|
|
Always fails on direct color images. |
|
592
|
|
|
|
|
|
|
|
|
593
|
|
|
|
|
|
|
=cut |
|
594
|
|
|
|
|
|
|
*/ |
|
595
|
|
|
|
|
|
|
int |
|
596
|
0
|
|
|
|
|
|
(i_findcolor)(i_img *im, const i_color *color, i_palidx *entry) { |
|
597
|
0
|
0
|
|
|
|
|
return i_findcolor(im, color, entry); |
|
598
|
|
|
|
|
|
|
} |
|
599
|
|
|
|
|
|
|
|
|
600
|
|
|
|
|
|
|
/* |
|
601
|
|
|
|
|
|
|
=item i_setcolors(im, index, colors, count) |
|
602
|
|
|
|
|
|
|
|
|
603
|
|
|
|
|
|
|
=category Paletted images |
|
604
|
|
|
|
|
|
|
|
|
605
|
|
|
|
|
|
|
Sets I colors starting from I in the image's palette. |
|
606
|
|
|
|
|
|
|
|
|
607
|
|
|
|
|
|
|
On success returns true. |
|
608
|
|
|
|
|
|
|
|
|
609
|
|
|
|
|
|
|
On failure returns false. |
|
610
|
|
|
|
|
|
|
|
|
611
|
|
|
|
|
|
|
The image must have at least I+I colors in it's palette |
|
612
|
|
|
|
|
|
|
for this to succeed. |
|
613
|
|
|
|
|
|
|
|
|
614
|
|
|
|
|
|
|
Always fails on direct color images. |
|
615
|
|
|
|
|
|
|
|
|
616
|
|
|
|
|
|
|
=cut |
|
617
|
|
|
|
|
|
|
*/ |
|
618
|
|
|
|
|
|
|
int |
|
619
|
0
|
|
|
|
|
|
(i_setcolors)(i_img *im, int index, const i_color *colors, int count) { |
|
620
|
0
|
0
|
|
|
|
|
return i_setcolors(im, index, colors, count); |
|
621
|
|
|
|
|
|
|
} |
|
622
|
|
|
|
|
|
|
|
|
623
|
|
|
|
|
|
|
/* |
|
624
|
|
|
|
|
|
|
=item im_get_context() |
|
625
|
|
|
|
|
|
|
|
|
626
|
|
|
|
|
|
|
Retrieve the context object for the current thread. |
|
627
|
|
|
|
|
|
|
|
|
628
|
|
|
|
|
|
|
Inside Imager itself this is just a function pointer, which the |
|
629
|
|
|
|
|
|
|
F BOOT handler initializes for use within perl. If you're |
|
630
|
|
|
|
|
|
|
taking the Imager code and embedding it elsewhere you need to |
|
631
|
|
|
|
|
|
|
initialize the C pointer at some point. |
|
632
|
|
|
|
|
|
|
|
|
633
|
|
|
|
|
|
|
=cut |
|
634
|
|
|
|
|
|
|
*/ |
|
635
|
|
|
|
|
|
|
|
|
636
|
|
|
|
|
|
|
static im_context_t |
|
637
|
441
|
|
|
|
|
|
get_context(void) { |
|
638
|
441
|
|
|
|
|
|
return im_get_context(); |
|
639
|
|
|
|
|
|
|
} |
|
640
|
|
|
|
|
|
|
|
|
641
|
|
|
|
|
|
|
static i_img * |
|
642
|
0
|
|
|
|
|
|
mathom_i_img_8_new(i_img_dim xsize, i_img_dim ysize, int channels) { |
|
643
|
0
|
|
|
|
|
|
return i_img_8_new(xsize, ysize, channels); |
|
644
|
|
|
|
|
|
|
} |
|
645
|
|
|
|
|
|
|
|
|
646
|
|
|
|
|
|
|
static i_img * |
|
647
|
0
|
|
|
|
|
|
mathom_i_img_16_new(i_img_dim xsize, i_img_dim ysize, int channels) { |
|
648
|
0
|
|
|
|
|
|
return i_img_16_new(xsize, ysize, channels); |
|
649
|
|
|
|
|
|
|
} |
|
650
|
|
|
|
|
|
|
|
|
651
|
|
|
|
|
|
|
static i_img * |
|
652
|
0
|
|
|
|
|
|
mathom_i_img_double_new(i_img_dim xsize, i_img_dim ysize, int channels) { |
|
653
|
0
|
|
|
|
|
|
return i_img_double_new(xsize, ysize, channels); |
|
654
|
|
|
|
|
|
|
} |
|
655
|
|
|
|
|
|
|
|
|
656
|
|
|
|
|
|
|
static i_img * |
|
657
|
0
|
|
|
|
|
|
mathom_i_img_pal_new(i_img_dim xsize, i_img_dim ysize, int channels, |
|
658
|
|
|
|
|
|
|
int maxpal) { |
|
659
|
0
|
|
|
|
|
|
return i_img_pal_new(xsize, ysize, channels, maxpal); |
|
660
|
|
|
|
|
|
|
} |
|
661
|
|
|
|
|
|
|
|
|
662
|
|
|
|
|
|
|
static void |
|
663
|
0
|
|
|
|
|
|
mathom_i_clear_error(void) { |
|
664
|
0
|
|
|
|
|
|
i_clear_error(); |
|
665
|
0
|
|
|
|
|
|
} |
|
666
|
|
|
|
|
|
|
|
|
667
|
|
|
|
|
|
|
static void |
|
668
|
0
|
|
|
|
|
|
mathom_i_push_error(int code, const char *msg) { |
|
669
|
0
|
|
|
|
|
|
i_push_error(code, msg); |
|
670
|
0
|
|
|
|
|
|
} |
|
671
|
|
|
|
|
|
|
|
|
672
|
|
|
|
|
|
|
static void |
|
673
|
0
|
|
|
|
|
|
mathom_i_push_errorvf(int code, const char *fmt, va_list args) { |
|
674
|
0
|
|
|
|
|
|
i_push_errorvf(code, fmt, args); |
|
675
|
0
|
|
|
|
|
|
} |
|
676
|
|
|
|
|
|
|
|
|
677
|
|
|
|
|
|
|
static int |
|
678
|
0
|
|
|
|
|
|
mathom_i_set_image_file_limits(i_img_dim max_width, i_img_dim max_height, |
|
679
|
|
|
|
|
|
|
size_t max_bytes) { |
|
680
|
0
|
|
|
|
|
|
return i_set_image_file_limits(max_width, max_height, max_bytes); |
|
681
|
|
|
|
|
|
|
} |
|
682
|
|
|
|
|
|
|
|
|
683
|
|
|
|
|
|
|
static int |
|
684
|
0
|
|
|
|
|
|
mathom_i_get_image_file_limits(i_img_dim *pmax_width, i_img_dim *pmax_height, |
|
685
|
|
|
|
|
|
|
size_t *pmax_bytes) { |
|
686
|
0
|
|
|
|
|
|
return i_get_image_file_limits(pmax_width, pmax_height, pmax_bytes); |
|
687
|
|
|
|
|
|
|
} |
|
688
|
|
|
|
|
|
|
|
|
689
|
|
|
|
|
|
|
static int |
|
690
|
0
|
|
|
|
|
|
mathom_i_int_check_image_file_limits(i_img_dim width, i_img_dim height, |
|
691
|
|
|
|
|
|
|
int channels, size_t sample_size) { |
|
692
|
0
|
|
|
|
|
|
return i_int_check_image_file_limits(width, height, channels, sample_size); |
|
693
|
|
|
|
|
|
|
} |
|
694
|
|
|
|
|
|
|
|
|
695
|
|
|
|
|
|
|
static i_img * |
|
696
|
0
|
|
|
|
|
|
mathom_i_img_alloc(void) { |
|
697
|
0
|
|
|
|
|
|
return i_img_alloc(); |
|
698
|
|
|
|
|
|
|
} |
|
699
|
|
|
|
|
|
|
|
|
700
|
|
|
|
|
|
|
static void |
|
701
|
0
|
|
|
|
|
|
mathom_i_img_init(i_img *im) { |
|
702
|
0
|
|
|
|
|
|
i_img_init(im); |
|
703
|
0
|
|
|
|
|
|
} |
|
704
|
|
|
|
|
|
|
|
|
705
|
|
|
|
|
|
|
static i_io_glue_t * |
|
706
|
0
|
|
|
|
|
|
mathom_io_new_fd(int fd) { |
|
707
|
0
|
|
|
|
|
|
return io_new_fd(fd); |
|
708
|
|
|
|
|
|
|
} |
|
709
|
|
|
|
|
|
|
static i_io_glue_t * |
|
710
|
0
|
|
|
|
|
|
mathom_io_new_bufchain(void) { |
|
711
|
0
|
|
|
|
|
|
return io_new_bufchain(); |
|
712
|
|
|
|
|
|
|
} |
|
713
|
|
|
|
|
|
|
|
|
714
|
|
|
|
|
|
|
static i_io_glue_t * |
|
715
|
0
|
|
|
|
|
|
mathom_io_new_buffer(const char *data, size_t size, i_io_closebufp_t closefp, |
|
716
|
|
|
|
|
|
|
void *close_data) { |
|
717
|
0
|
|
|
|
|
|
return io_new_buffer(data, size, closefp, close_data); |
|
718
|
|
|
|
|
|
|
} |
|
719
|
|
|
|
|
|
|
|
|
720
|
|
|
|
|
|
|
static i_io_glue_t * |
|
721
|
0
|
|
|
|
|
|
mathom_io_new_cb(void *p, i_io_readl_t readcb, i_io_writel_t writecb, |
|
722
|
|
|
|
|
|
|
i_io_seekl_t seekcb, i_io_closel_t closecb, |
|
723
|
|
|
|
|
|
|
i_io_destroyl_t destroycb) { |
|
724
|
0
|
|
|
|
|
|
return io_new_cb(p, readcb, writecb, seekcb, closecb, destroycb); |
|
725
|
|
|
|
|
|
|
} |