1 #include "imexttypes.h"
5 DON'T ADD CASTS TO THESE
7 im_ext_funcs imager_function_table =
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,
106 i_flood_cfill_border,
108 /* IMAGER_API_LEVEL 3 functions */
117 /* IMAGER_API_LEVEL 4 functions */
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.
126 () are used around the function names to prevent macro replacement
127 on the function names.
131 =item i_ppix(im, x, y, color)
135 Sets the pixel at (x,y) to I<color>.
137 Returns 0 if the pixel was drawn, or -1 if not.
139 Does no alpha blending, just copies the channels from the supplied
146 (i_ppix)(i_img *im, int x, int y, const i_color *val) {
147 return i_ppix(im, x, y, val);
151 =item i_gpix(im, C<x>, C<y>, C<color>)
155 Retrieves the C<color> of the pixel (x,y).
157 Returns 0 if the pixel was retrieved, or -1 if not.
163 (i_gpix)(i_img *im,int x,int y,i_color *val) {
164 return i_gpix(im, x, y, val);
168 =item i_ppixf(im, C<x>, C<y>, C<fcolor>)
172 Sets the pixel at (C<x>,C<y>) to the floating point color C<fcolor>.
174 Returns 0 if the pixel was drawn, or -1 if not.
176 Does no alpha blending, just copies the channels from the supplied
182 (i_ppixf)(i_img *im, int x, int y, const i_fcolor *val) {
183 return i_ppixf(im, x, y, val);
187 =item i_gpixf(im, C<x>, C<y>, C<fcolor>)
191 Retrieves the color of the pixel (x,y) as a floating point color into
194 Returns 0 if the pixel was retrieved, or -1 if not.
200 (i_gpixf)(i_img *im,int x,int y,i_fcolor *val) {
201 return i_gpixf(im, x, y, val);
205 =item i_plin(im, l, r, y, colors)
209 Sets (r-l) pixels starting from (l,y) using (r-l) values from
212 Returns the number of pixels set.
218 (i_plin)(i_img *im, int l, int r, int y, const i_color *vals) {
219 return i_plin(im, l, r, y, vals);
223 =item i_glin(im, l, r, y, colors)
227 Retrieves (r-l) pixels starting from (l,y) into I<colors>.
229 Returns the number of pixels retrieved.
235 (i_glin)(i_img *im, int l, int r, int y, i_color *vals) {
236 return i_glin(im, l, r, y, vals);
240 =item i_plinf(im, C<left>, C<right>, C<fcolors>)
244 Sets (right-left) pixels starting from (left,y) using (right-left)
245 floating point colors from C<fcolors>.
247 Returns the number of pixels set.
253 (i_plinf)(i_img *im, int l, int r, int y, const i_fcolor *vals) {
254 return i_plinf(im, l, r, y, vals);
258 =item i_glinf(im, l, r, y, colors)
262 Retrieves (r-l) pixels starting from (l,y) into I<colors> as floating
265 Returns the number of pixels retrieved.
271 (i_glinf)(i_img *im, int l, int r, int y, i_fcolor *vals) {
272 return i_glinf(im, l, r, y, vals);
276 =item i_gsamp(im, left, right, y, samples, channels, channel_count)
280 Reads 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
282 with C<channel_count> elements.
284 If channels is NULL then the first channels_count channels are retrieved for
287 Returns the number of samples read (which should be (right-left) *
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);
299 =item i_gsampf(im, left, right, y, samples, channels, channel_count)
303 Reads 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
305 array of int with channel_count elements.
307 If C<channels> is NULL then the first C<channel_count> channels are
308 retrieved for each pixel.
310 Returns the number of samples read (which should be (C<right>-C<left>)
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);
322 =item i_gpal(im, left, right, y, indexes)
326 Reads palette indexes for the horizontal line (left, y) to (right-1,
329 Returns the number of indexes read.
331 Always returns 0 for direct color images.
336 (i_gpal)(i_img *im, int x, int r, int y, i_palidx *vals) {
337 return i_gpal(im, x, r, y, vals);
341 =item i_ppal(im, left, right, y, indexes)
345 Writes palette indexes for the horizontal line (left, y) to (right-1,
348 Returns the number of indexes written.
350 Always returns 0 for direct color images.
355 (i_ppal)(i_img *im, int x, int r, int y, const i_palidx *vals) {
356 return i_ppal(im, x, r, y, vals);
360 =item i_addcolors(im, colors, count)
362 =category Paletted images
364 Adds colors to the image's palette.
366 On success returns the index of the lowest color added.
368 On failure returns -1.
370 Always fails for direct color images.
376 (i_addcolors)(i_img *im, const i_color *colors, int count) {
377 return i_addcolors(im, colors, count);
381 =item i_getcolors(im, index, colors, count)
383 =category Paletted images
385 Retrieves I<count> colors starting from I<index> in the image's
388 On success stores the colors into I<colors> and returns true.
390 On failure returns false.
392 Always fails for direct color images.
394 Fails if there are less than I<index>+I<count> colors in the image's
401 (i_getcolors)(i_img *im, int i, i_color *colors, int count) {
402 return i_getcolors(im, i, colors, count);
406 =item i_colorcount(im)
408 =category Paletted images
410 Returns the number of colors in the image's palette.
412 Returns -1 for direct images.
418 (i_colorcount)(i_img *im) {
419 return i_colorcount(im);
423 =item i_maxcolors(im)
425 =category Paletted images
427 Returns the maximum number of colors the palette can hold for the
430 Returns -1 for direct color images.
436 (i_maxcolors)(i_img *im) {
437 return i_maxcolors(im);
441 =item i_findcolor(im, color, &entry)
443 =category Paletted images
445 Searches the images palette for the given color.
447 On success sets *I<entry> to the index of the color, and returns true.
449 On failure returns false.
451 Always fails on direct color images.
456 (i_findcolor)(i_img *im, const i_color *color, i_palidx *entry) {
457 return i_findcolor(im, color, entry);
461 =item i_setcolors(im, index, colors, count)
463 =category Paletted images
465 Sets I<count> colors starting from I<index> in the image's palette.
467 On success returns true.
469 On failure returns false.
471 The image must have at least I<index>+I<count> colors in it's palette
474 Always fails on direct color images.
479 (i_setcolors)(i_img *im, int index, const i_color *colors, int count) {
480 return i_setcolors(im, index, colors, count);