]> git.imager.perl.org - imager.git/blame - imext.c
return the real giflib version, rather than the dummy
[imager.git] / imext.c
CommitLineData
92bda632
TC
1#include "imexttypes.h"
2#include "imager.h"
3
4/*
5 DON'T ADD CASTS TO THESE
6*/
7im_ext_funcs imager_function_table =
8 {
d1f5892c
TC
9 IMAGER_API_VERSION,
10 IMAGER_API_LEVEL,
11
92bda632
TC
12 mymalloc,
13 myfree,
14 myrealloc,
15
e310e5f9
TC
16 mymalloc_file_line,
17 myfree_file_line,
18 myrealloc_file_line,
19
92bda632
TC
20 i_img_8_new,
21 i_img_16_new,
22 i_img_double_new,
23 i_img_pal_new,
24 i_img_destroy,
25 i_sametype,
26 i_sametype_chans,
27 i_img_info,
28
29 i_ppix,
30 i_gpix,
31 i_ppixf,
32 i_gpixf,
33 i_plin,
34 i_glin,
35 i_plinf,
36 i_glinf,
37 i_gsamp,
38 i_gsampf,
39 i_gpal,
40 i_ppal,
41 i_addcolors,
42 i_getcolors,
43 i_colorcount,
44 i_maxcolors,
45 i_findcolor,
46 i_setcolors,
47
48 i_new_fill_solid,
49 i_new_fill_solidf,
50 i_new_fill_hatch,
51 i_new_fill_hatchf,
52 i_new_fill_image,
53 i_new_fill_fount,
54 i_fill_destroy,
55
56 i_quant_makemap,
57 i_quant_translate,
58 i_quant_transparent,
59
60 i_clear_error,
61 i_push_error,
62 i_push_errorf,
63 i_push_errorvf,
64
65 i_tags_new,
66 i_tags_set,
67 i_tags_setn,
68 i_tags_destroy,
69 i_tags_find,
70 i_tags_findn,
71 i_tags_delete,
72 i_tags_delbyname,
73 i_tags_delbycode,
74 i_tags_get_float,
75 i_tags_set_float,
76 i_tags_set_float2,
77 i_tags_get_int,
78 i_tags_get_string,
79 i_tags_get_color,
80 i_tags_set_color,
81
82 i_box,
83 i_box_filled,
84 i_box_cfill,
85 i_line,
86 i_line_aa,
87 i_arc,
88 i_arc_aa,
89 i_arc_cfill,
90 i_arc_aa_cfill,
91 i_circle_aa,
92 i_flood_fill,
93 i_flood_cfill,
94
95 i_copyto,
96 i_copyto_trans,
97 i_copy,
98 i_rubthru,
2b405c9e
TC
99
100 /* IMAGER_API_LEVEL 2 functions */
101 i_set_image_file_limits,
102 i_get_image_file_limits,
103 i_int_check_image_file_limits,
3efb0915
TC
104
105 i_flood_fill_border,
106 i_flood_cfill_border,
d5477d3d
TC
107
108 /* IMAGER_API_LEVEL 3 functions */
109 i_img_setmask,
110 i_img_getmask,
111 i_img_getchannels,
112 i_img_get_width,
113 i_img_get_height,
114 i_lhead,
bd8052a6
TC
115 i_loog,
116
117 /* IMAGER_API_LEVEL 4 functions */
118 i_img_alloc,
119 i_img_init,
92bda632
TC
120 };
121
122/* in general these functions aren't called by Imager internally, but
123 only via the pointers above, since faster macros that call the
124 image vtable pointers are used.
125
126 () are used around the function names to prevent macro replacement
127 on the function names.
128*/
129
130/*
131=item i_ppix(im, x, y, color)
132
133=category Drawing
134
135Sets the pixel at (x,y) to I<color>.
136
137Returns 0 if the pixel was drawn, or -1 if not.
138
139Does no alpha blending, just copies the channels from the supplied
140color to the image.
141
142=cut
143*/
144
145int
97ac0a96 146(i_ppix)(i_img *im, int x, int y, const i_color *val) {
92bda632
TC
147 return i_ppix(im, x, y, val);
148}
149
150/*
5715f7c3 151=item i_gpix(im, C<x>, C<y>, C<color>)
92bda632
TC
152
153=category Drawing
154
5715f7c3 155Retrieves the C<color> of the pixel (x,y).
92bda632
TC
156
157Returns 0 if the pixel was retrieved, or -1 if not.
158
159=cut
160*/
161
162int
163(i_gpix)(i_img *im,int x,int y,i_color *val) {
164 return i_gpix(im, x, y, val);
165}
166
167/*
5715f7c3 168=item i_ppixf(im, C<x>, C<y>, C<fcolor>)
92bda632
TC
169
170=category Drawing
171
5715f7c3 172Sets the pixel at (C<x>,C<y>) to the floating point color C<fcolor>.
92bda632
TC
173
174Returns 0 if the pixel was drawn, or -1 if not.
175
176Does no alpha blending, just copies the channels from the supplied
177color to the image.
178
179=cut
180*/
181int
97ac0a96 182(i_ppixf)(i_img *im, int x, int y, const i_fcolor *val) {
92bda632
TC
183 return i_ppixf(im, x, y, val);
184}
185
186/*
5715f7c3 187=item i_gpixf(im, C<x>, C<y>, C<fcolor>)
92bda632
TC
188
189=category Drawing
190
191Retrieves the color of the pixel (x,y) as a floating point color into
5715f7c3 192C<fcolor>.
92bda632
TC
193
194Returns 0 if the pixel was retrieved, or -1 if not.
195
196=cut
197*/
198
199int
200(i_gpixf)(i_img *im,int x,int y,i_fcolor *val) {
201 return i_gpixf(im, x, y, val);
202}
203
204/*
205=item i_plin(im, l, r, y, colors)
206
207=category Drawing
208
209Sets (r-l) pixels starting from (l,y) using (r-l) values from
210I<colors>.
211
212Returns the number of pixels set.
213
214=cut
215*/
216
217int
97ac0a96 218(i_plin)(i_img *im, int l, int r, int y, const i_color *vals) {
92bda632
TC
219 return i_plin(im, l, r, y, vals);
220}
221
222/*
223=item i_glin(im, l, r, y, colors)
224
225=category Drawing
226
227Retrieves (r-l) pixels starting from (l,y) into I<colors>.
228
229Returns the number of pixels retrieved.
230
231=cut
232*/
233
234int
235(i_glin)(i_img *im, int l, int r, int y, i_color *vals) {
236 return i_glin(im, l, r, y, vals);
237}
238
239/*
5715f7c3 240=item i_plinf(im, C<left>, C<right>, C<fcolors>)
92bda632
TC
241
242=category Drawing
243
5715f7c3
TC
244Sets (right-left) pixels starting from (left,y) using (right-left)
245floating point colors from C<fcolors>.
92bda632
TC
246
247Returns the number of pixels set.
248
249=cut
250*/
251
252int
97ac0a96 253(i_plinf)(i_img *im, int l, int r, int y, const i_fcolor *vals) {
92bda632
TC
254 return i_plinf(im, l, r, y, vals);
255}
256
257/*
258=item i_glinf(im, l, r, y, colors)
259
260=category Drawing
261
262Retrieves (r-l) pixels starting from (l,y) into I<colors> as floating
263point colors.
264
265Returns the number of pixels retrieved.
266
267=cut
268*/
269
270int
271(i_glinf)(i_img *im, int l, int r, int y, i_fcolor *vals) {
272 return i_glinf(im, l, r, y, vals);
273}
274
275/*
5715f7c3 276=item i_gsamp(im, left, right, y, samples, channels, channel_count)
92bda632
TC
277
278=category Drawing
279
5715f7c3
TC
280Reads sample values from C<im> for the horizontal line (left, y) to
281(right-1,y) for the channels specified by C<channels>, an array of int
282with C<channel_count> elements.
92bda632 283
5715f7c3 284If channels is NULL then the first channels_count channels are retrieved for
92bda632
TC
285each pixel.
286
5715f7c3
TC
287Returns the number of samples read (which should be (right-left) *
288channel_count)
92bda632
TC
289
290=cut
291*/
292int
293(i_gsamp)(i_img *im, int l, int r, int y, i_sample_t *samp,
294 const int *chans, int chan_count) {
295 return i_gsamp(im, l, r, y, samp, chans, chan_count);
296}
297
298/*
5715f7c3 299=item i_gsampf(im, left, right, y, samples, channels, channel_count)
92bda632
TC
300
301=category Drawing
302
5715f7c3
TC
303Reads floating point sample values from C<im> for the horizontal line
304(left, y) to (right-1,y) for the channels specified by C<channels>, an
305array of int with channel_count elements.
92bda632 306
5715f7c3
TC
307If C<channels> is NULL then the first C<channel_count> channels are
308retrieved for each pixel.
92bda632 309
5715f7c3
TC
310Returns the number of samples read (which should be (C<right>-C<left>)
311* C<channel_count>)
92bda632
TC
312
313=cut
314*/
315int
316(i_gsampf)(i_img *im, int l, int r, int y, i_fsample_t *samp,
317 const int *chans, int chan_count) {
318 return i_gsampf(im, l, r, y, samp, chans, chan_count);
319}
320
321/*
5715f7c3 322=item i_gpal(im, left, right, y, indexes)
92bda632
TC
323
324=category Drawing
325
5715f7c3
TC
326Reads palette indexes for the horizontal line (left, y) to (right-1,
327y) into C<indexes>.
92bda632
TC
328
329Returns the number of indexes read.
330
331Always returns 0 for direct color images.
332
333=cut
334*/
335int
336(i_gpal)(i_img *im, int x, int r, int y, i_palidx *vals) {
337 return i_gpal(im, x, r, y, vals);
338}
339
340/*
5715f7c3 341=item i_ppal(im, left, right, y, indexes)
92bda632
TC
342
343=category Drawing
344
5715f7c3
TC
345Writes palette indexes for the horizontal line (left, y) to (right-1,
346y) from C<indexes>.
92bda632
TC
347
348Returns the number of indexes written.
349
350Always returns 0 for direct color images.
351
352=cut
353*/
354int
97ac0a96 355(i_ppal)(i_img *im, int x, int r, int y, const i_palidx *vals) {
92bda632
TC
356 return i_ppal(im, x, r, y, vals);
357}
358
359/*
360=item i_addcolors(im, colors, count)
361
362=category Paletted images
363
364Adds colors to the image's palette.
365
366On success returns the index of the lowest color added.
367
368On failure returns -1.
369
370Always fails for direct color images.
371
372=cut
373*/
374
375int
97ac0a96 376(i_addcolors)(i_img *im, const i_color *colors, int count) {
92bda632
TC
377 return i_addcolors(im, colors, count);
378}
379
380/*
381=item i_getcolors(im, index, colors, count)
382
383=category Paletted images
384
385Retrieves I<count> colors starting from I<index> in the image's
386palette.
387
388On success stores the colors into I<colors> and returns true.
389
390On failure returns false.
391
392Always fails for direct color images.
393
394Fails if there are less than I<index>+I<count> colors in the image's
395palette.
396
397=cut
398*/
399
400int
401(i_getcolors)(i_img *im, int i, i_color *colors, int count) {
402 return i_getcolors(im, i, colors, count);
403}
404
405/*
406=item i_colorcount(im)
407
408=category Paletted images
409
410Returns the number of colors in the image's palette.
411
412Returns -1 for direct images.
413
414=cut
415*/
416
417int
418(i_colorcount)(i_img *im) {
419 return i_colorcount(im);
420}
421
422/*
423=item i_maxcolors(im)
424
425=category Paletted images
426
427Returns the maximum number of colors the palette can hold for the
428image.
429
430Returns -1 for direct color images.
431
432=cut
433*/
434
435int
436(i_maxcolors)(i_img *im) {
437 return i_maxcolors(im);
438}
439
440/*
441=item i_findcolor(im, color, &entry)
442
443=category Paletted images
444
445Searches the images palette for the given color.
446
447On success sets *I<entry> to the index of the color, and returns true.
448
449On failure returns false.
450
451Always fails on direct color images.
452
453=cut
454*/
455int
97ac0a96 456(i_findcolor)(i_img *im, const i_color *color, i_palidx *entry) {
92bda632
TC
457 return i_findcolor(im, color, entry);
458}
459
460/*
461=item i_setcolors(im, index, colors, count)
462
463=category Paletted images
464
465Sets I<count> colors starting from I<index> in the image's palette.
466
5715f7c3 467On success returns true.
92bda632
TC
468
469On failure returns false.
470
471The image must have at least I<index>+I<count> colors in it's palette
472for this to succeed.
473
474Always fails on direct color images.
475
476=cut
477*/
478int
97ac0a96 479(i_setcolors)(i_img *im, int index, const i_color *colors, int count) {
92bda632
TC
480 return i_setcolors(im, index, colors, count);
481}
482