1 Do not edit this file, it is generated automatically by apidocs.perl
2 from Imager's source files.
4 Each function description has a comment listing the source file where
5 you can find the documentation.
9 Imager::APIRef - Imager's C API - reference.
14 color.rgba.r = 255; color.rgba.g = 0; color.rgba.b = 255;
20 black.rgba.r = black.rgba.g = black.rgba.b = black.rgba.a = 0;
25 i_arc(im, 50, 50, 20, 45, 135, &color);
26 i_arc_cfill(im, 50, 50, 35, 90, 135, fill);
27 i_arc_aa(im, 50, 50, 35, 90, 135, &color);
28 i_arc_aa_cfill(im, 50, 50, 35, 90, 135, fill);
29 i_circle_aa(im, 50, 50, 45, &color);
30 i_box(im, 0, 0, im->xsize-1, im->ysize-1, &color).
31 i_box_filled(im, 0, 0, im->xsize-1, im->ysize-1, &color);
32 i_box_cfill(im, 0, 0, im->xsize-1, im->ysize-1, fill);
33 i_flood_fill(im, 50, 50, &color);
34 i_flood_cfill(im, 50, 50, fill);
35 i_flood_fill_border(im, 50, 50, &color, &border);
36 i_flood_cfill_border(im, 50, 50, fill, border);
40 i_push_error(0, "Yep, it's broken");
41 i_push_error(errno, "Error writing");
42 i_push_errorf(errno, "Cannot open file %s: %d", filename, errno);
45 i_set_image_file_limits(500, 500, 1000000);
46 i_get_image_file_limits(&width, &height, &bytes)
47 i_i_int_check_image_file_limits(width, height, channels, sizeof(i_sample_t))
50 i_fill_t *fill = i_new_fill_solidf(&fcolor, combine);
51 i_fill_t *fill = i_new_fill_solid(&color, combine);
52 i_fill_t *fill = i_new_fill_hatch(&fg_color, &bg_color, combine, hatch, custom_hatch, dx, dy);
53 i_fill_t *fill = i_new_fill_hatchf(&fg_fcolor, &bg_fcolor, combine, hatch, custom_hatch, dx, dy);
54 i_fill_t *fill = i_new_fill_image(src_img, matrix, x_offset, y_offset, combine);
55 fill = i_new_fill_fount(0, 0, 100, 100, i_ft_linear, i_ft_linear,
56 i_fr_triangle, 0, i_fts_grid, 9, 1, segs);
61 # Image creation/destruction
62 i_img *img = i_img_8_new(width, height, channels);
63 i_img *img = i_sametype(src, width, height);
64 i_img *img = i_sametype_chans(src, width, height, channels);
65 i_img *img = i_img_pal_new(width, height, channels, max_palette_size)
66 i_img *img = i_img_double_new(width, height, channels);
67 i_img *img = i_img_16_new(width, height, channels);
70 # Image Implementation
73 // only channel 0 writeable
74 i_img_setmask(img, 0x01);
75 int mask = i_img_getmask(img);
76 int channels = i_img_getchannels(img);
77 i_img_dim width = i_img_get_width(im);
78 i_img_dim height = i_img_get_height(im);
87 i_tags_set(&img->tags, "i_comment", -1);
88 i_tags_setn(&img->tags, "i_xres", 204);
89 i_tags_setn(&img->tags, "i_yres", 196);
99 This is Imager's image type.
101 It contains the following members:
107 channels - the number of channels in the image
111 xsize, ysize - the width and height of the image in pixels
115 bytes - the number of bytes used to store the image data. Undefined
116 where virtual is non-zero.
120 ch_mask - a mask of writable channels. eg. if this is 6 then only
121 channels 1 and 2 are writable. There may be bits set for which there
122 are no channels in the image.
126 bits - the number of bits stored per sample. Should be one of
127 i_8_bits, i_16_bits, i_double_bits.
131 type - either i_direct_type for direct color images, or i_palette_type
136 virtual - if zero then this image is-self contained. If non-zero then
137 this image could be an interface to some other implementation.
141 idata - the image data. This should not be directly accessed. A new
142 image implementation can use this to store its image data.
143 i_img_destroy() will myfree() this pointer if it's non-null.
147 tags - a structure storing the image's tags. This should only be
148 accessed via the i_tags_*() functions.
152 ext_data - a pointer for use internal to an image implementation.
153 This should be freed by the image's destroy handler.
157 im_data - data internal to Imager. This is initialized by
162 i_f_ppix, i_f_ppixf, i_f_plin, i_f_plinf, i_f_gpix, i_f_gpixf,
163 i_f_glin, i_f_glinf, i_f_gsamp, i_f_gampf - implementations for each
164 of the required image functions. An image implementation should
165 initialize these between calling i_img_alloc() and i_img_init().
169 i_f_gpal, i_f_ppal, i_f_addcolors, i_f_getcolors, i_f_colorcount,
170 i_f_maxcolors, i_f_findcolor, i_f_setcolors - implementations for each
171 paletted image function.
175 i_f_destroy - custom image destruction function. This should be used
176 to release memory if necessary.
180 i_f_gsamp_bits - implements i_gsamp_bits() for this image.
184 i_f_psamp_bits - implements i_psamp_bits() for this image.
190 From: File imdatatypes.h
194 Type for 8-bit/sample color.
200 i_color is a union of:
206 gray - contains a single element gray_color, eg. c.gray.gray_color
210 rgb - contains three elements r, g, b, eg. c.rgb.r
214 rgba - contains four elements r, g, b, a, eg. c.rgba.a
218 cmyk - contains four elements c, m, y, k, eg. C<c.cmyk.y>. Note that
219 Imager never uses CMYK colors except when reading/writing files.
223 channels - an array of four channels, eg C<c.channels[2]>.
229 From: File imdatatypes.h
233 This is the double/sample color type.
235 Its layout exactly corresponds to i_color.
239 From: File imdatatypes.h
243 This is the "abstract" base type for Imager's fill types.
245 Unless you're implementing a new fill type you'll typically treat this
250 From: File imdatatypes.h
254 A signed integer type that represents an image dimension or ordinate.
256 May be larger than int on some platforms.
260 From: File imdatatypes.h
269 =item i_arc(im, x, y, rad, d1, d2, color)
272 Fills an arc centered at (x,y) with radius I<rad> covering the range
273 of angles in degrees from d1 to d2, with the color.
279 =item i_arc_aa(im, x, y, rad, d1, d2, color)
282 Antialias fills an arc centered at (x,y) with radius I<rad> covering
283 the range of angles in degrees from d1 to d2, with the color.
289 =item i_arc_aa_cfill(im, x, y, rad, d1, d2, fill)
292 Antialias fills an arc centered at (x,y) with radius I<rad> covering
293 the range of angles in degrees from d1 to d2, with the fill object.
299 =item i_arc_cfill(im, x, y, rad, d1, d2, fill)
302 Fills an arc centered at (x,y) with radius I<rad> covering the range
303 of angles in degrees from d1 to d2, with the fill object.
309 =item i_box(im, x1, y1, x2, y2, color)
312 Outlines the box from (x1,y1) to (x2,y2) inclusive with I<color>.
318 =item i_box_cfill(im, x1, y1, x2, y2, fill)
321 Fills the box from (x1,y1) to (x2,y2) inclusive with fill.
327 =item i_box_filled(im, x1, y1, x2, y2, color)
330 Fills the box from (x1,y1) to (x2,y2) inclusive with color.
336 =item i_circle_aa(im, x, y, rad, color)
339 Antialias fills a circle centered at (x,y) for radius I<rad> with
346 =item i_flood_cfill(im, seedx, seedy, fill)
349 Flood fills the 4-connected region starting from the point (seedx,
352 Returns false if (seedx, seedy) are outside the image.
358 =item i_flood_cfill_border(im, seedx, seedy, fill, border)
361 Flood fills the 4-connected region starting from the point (seedx,
362 seedy) with I<fill>, the fill stops when it reaches pixels of color
365 Returns false if (seedx, seedy) are outside the image.
371 =item i_flood_fill(im, seedx, seedy, color)
374 Flood fills the 4-connected region starting from the point (seedx,
375 seedy) with I<color>.
377 Returns false if (seedx, seedy) are outside the image.
383 =item i_flood_fill_border(im, seedx, seedy, color, border)
386 Flood fills the 4-connected region starting from the point (seedx,
387 seedy) with I<color>, fill stops when the fill reaches a pixels with
390 Returns false if (seedx, seedy) are outside the image.
396 =item i_glin(im, l, r, y, colors)
399 Retrieves (r-l) pixels starting from (l,y) into I<colors>.
401 Returns the number of pixels retrieved.
407 =item i_glinf(im, l, r, y, colors)
410 Retrieves (r-l) pixels starting from (l,y) into I<colors> as floating
413 Returns the number of pixels retrieved.
419 =item i_gpal(im, x, r, y, indexes)
422 Reads palette indexes for the horizontal line (x, y) to (r-1, y) into
425 Returns the number of indexes read.
427 Always returns 0 for direct color images.
433 =item i_gpix(im, x, y, color)
436 Retrieves the I<color> of the pixel (x,y).
438 Returns 0 if the pixel was retrieved, or -1 if not.
444 =item i_gpixf(im, x, y, fcolor)
447 Retrieves the color of the pixel (x,y) as a floating point color into
450 Returns 0 if the pixel was retrieved, or -1 if not.
456 =item i_gsamp(im, l, r, y, samp, chans, chan_count)
459 Reads sample values from im for the horizontal line (l, y) to (r-1,y)
460 for the channels specified by chans, an array of int with chan_count
463 If chans is NULL then the first chan_count channels are retrieved for
466 Returns the number of samples read (which should be (r-l) *
473 =item i_gsampf(im, l, r, y, samp, chans, chan_count)
476 Reads floating point sample values from im for the horizontal line (l,
477 y) to (r-1,y) for the channels specified by chans, an array of int
478 with chan_count elements.
480 If chans is NULL then the first chan_count channels are retrieved for
483 Returns the number of samples read (which should be (r-l) *
490 =item i_line(im, x1, y1, x2, y2, val, endp)
493 Draw a line to image using bresenhams linedrawing algorithm
495 im - image to draw to
496 x1 - starting x coordinate
497 y1 - starting x coordinate
498 x2 - starting x coordinate
499 y2 - starting x coordinate
500 val - color to write to image
501 endp - endpoint flag (boolean)
507 =item i_line_aa(im, x1, x2, y1, y2, color, endp)
510 Antialias draws a line from (x1,y1) to (x2, y2) in color.
512 The point (x2, y2) is drawn only if endp is set.
518 =item i_plin(im, l, r, y, colors)
521 Sets (r-l) pixels starting from (l,y) using (r-l) values from
524 Returns the number of pixels set.
530 =item i_plinf(im, l, r, fcolors)
533 Sets (r-l) pixels starting from (l,y) using (r-l) floating point
534 colors from I<colors>.
536 Returns the number of pixels set.
542 =item i_ppal(im, x, r, y, indexes)
545 Writes palette indexes for the horizontal line (x, y) to (r-1, y) from
548 Returns the number of indexes written.
550 Always returns 0 for direct color images.
556 =item i_ppix(im, x, y, color)
559 Sets the pixel at (x,y) to I<color>.
561 Returns 0 if the pixel was drawn, or -1 if not.
563 Does no alpha blending, just copies the channels from the supplied
570 =item i_ppixf(im, x, y, fcolor)
573 Sets the pixel at (x,y) to the floating point color I<fcolor>.
575 Returns 0 if the pixel was drawn, or -1 if not.
577 Does no alpha blending, just copies the channels from the supplied
587 =head2 Error handling
591 =item i_clear_error()
593 Clears the error stack.
595 Called by any imager function before doing any other processing.
601 =item i_push_error(int code, char const *msg)
603 Called by an Imager function to push an error message onto the stack.
605 No message is pushed if the stack is full (since this means someone
606 forgot to call i_clear_error(), or that a function that doesn't do
607 error handling is calling function that does.).
613 =item i_push_errorf(int code, char const *fmt, ...)
615 A version of i_push_error() that does printf() like formating.
617 Does not support perl specific format codes.
623 =item i_push_errorvf(int code, char const *fmt, va_list ap)
626 Intended for use by higher level functions, takes a varargs pointer
627 and a format to produce the finally pushed error message.
629 Does not support perl specific format codes.
642 =item i_get_image_file_limits(&width, &height, &bytes)
645 Retrieves the file limits set by i_set_image_file_limits().
651 =item i_int_check_image_file_limits(width, height, channels, sample_size)
654 Checks the size of a file in memory against the configured image file
657 This also range checks the values to those permitted by Imager and
658 checks for overflows in calculating the size.
660 Returns non-zero if the file is within limits.
662 This function is intended to be called by image file read functions.
668 =item i_set_image_file_limits(width, height, bytes)
671 Set limits on the sizes of images read by Imager.
673 Setting a limit to 0 means that limit is ignored.
675 Negative limits result in failure.
677 Returns non-zero on success.
690 =item i_new_fill_fount(xa, ya, xb, yb, type, repeat, combine, super_sample, ssample_param, count, segs)
694 Creates a new general fill which fills with a fountain fill.
698 From: File filters.im
700 =item i_new_fill_hatch(fg, bg, combine, hatch, cust_hatch, dx, dy)
703 Creates a new hatched fill with the fg color used for the 1 bits in
704 the hatch and bg for the 0 bits. If combine is non-zero alpha values
707 If cust_hatch is non-NULL it should be a pointer to 8 bytes of the
708 hash definition, with the high-bits to the left.
710 If cust_hatch is NULL then one of the standard hatches is used.
712 (dx, dy) are an offset into the hatch which can be used to unalign adjoining areas, or to align the origin of a hatch with the the side of a filled area.
718 =item i_new_fill_hatchf(fg, bg, combine, hatch, cust_hatch, dx, dy)
721 Creates a new hatched fill with the fg color used for the 1 bits in
722 the hatch and bg for the 0 bits. If combine is non-zero alpha values
725 If cust_hatch is non-NULL it should be a pointer to 8 bytes of the
726 hash definition, with the high-bits to the left.
728 If cust_hatch is NULL then one of the standard hatches is used.
730 (dx, dy) are an offset into the hatch which can be used to unalign adjoining areas, or to align the origin of a hatch with the the side of a filled area.
736 =item i_new_fill_image(im, matrix, xoff, yoff, combine)
739 Create an image based fill.
741 matrix is an array of 9 doubles representing a transformation matrix.
743 xoff and yoff are the offset into the image to start filling from.
749 =item i_new_fill_solid(color, combine)
752 Create a solid fill based on an 8-bit color.
754 If combine is non-zero then alpha values will be combined.
760 =item i_new_fill_solidf(color, combine)
763 Create a solid fill based on a float color.
765 If combine is non-zero then alpha values will be combined.
771 =item i_fill_destroy(fill)
773 Call to destroy any fill object.
789 Creates a new image that is a copy of src.
791 Tags are not copied, only the image data.
799 =item i_copyto(dest, src, x1, y1, x2, y2, tx, ty)
802 Copies image data from the area (x1,y1)-[x2,y2] in the source image to
803 a rectangle the same size with it's top-left corner at (tx,ty) in the
806 If x1 > x2 or y1 > y2 then the corresponding co-ordinates are swapped.
812 =item i_copyto_trans(im, src, x1, y1, x2, y2, tx, ty, trans)
815 (x1,y1) (x2,y2) specifies the region to copy (in the source coordinates)
816 (tx,ty) specifies the upper left corner for the target image.
817 pass NULL in trans for non transparent i_colors.
823 =item i_img_info(im, info)
826 Return image information
829 info - pointer to array to return data
831 info is an array of 4 integers with the following values:
836 info[3] - channel mask
842 =item i_rubthru(im, src, tx, ty, src_minx, src_miny, src_maxx, src_maxy )
845 Takes the sub image I<src[src_minx, src_maxx)[src_miny, src_maxy)> and
846 overlays it at (I<tx>,I<ty>) on the image object.
848 The alpha channel of each pixel in I<src> is used to control how much
849 the existing colour in I<im> is replaced, if it is 255 then the colour
850 is completely replaced, if it is 0 then the original colour is left
855 From: File rubthru.im
860 =head2 Image creation/destruction
864 =item i_img_16_new(x, y, ch)
867 Create a new 16-bit/sample image.
869 Returns the image on success, or NULL on failure.
875 =item i_img_8_new(x, y, ch)
879 Creates a new image object I<x> pixels wide, and I<y> pixels high with
886 =item i_img_double_new(int x, int y, int ch)
888 Creates a new double per sample image.
892 From: File imgdouble.c
894 =item i_img_pal_new(x, y, channels, maxpal)
897 Creates a new paletted image of the supplied dimensions.
899 I<maxpal> is the maximum palette size and should normally be 256.
901 Returns a new image or NULL on failure.
907 =item i_sametype(i_img *im, int xsize, int ysize)
910 Returns an image of the same type (sample size, channels, paletted/direct).
912 For paletted images the palette is copied from the source.
918 =item i_sametype_chans(i_img *im, int xsize, int ysize, int channels)
921 Returns an image of the same type (sample size).
923 For paletted images the equivalent direct type is returned.
929 =item i_img_destroy(img)
931 Destroy an image object
940 =head2 Image Implementation
946 Allocates a new i_img structure.
948 When implementing a new image type perform the following steps in your
949 image object creation function:
955 allocate the image with i_img_alloc().
959 initialize any function pointers or other data as needed, you can
960 overwrite the whole block if you need to.
964 initialize Imager's internal data by calling i_img_init() on the image
973 =item i_img_init(img)
975 Imager interal initialization of images.
977 Currently this does very little, in the future it may be used to
978 support threads, or color profiles.
987 =head2 Image Information
991 =item i_img_color_channels(im)
994 The number of channels holding color information.
998 From: File immacros.h
1000 =item i_img_get_height(im)
1002 Returns the height in pixels of the image.
1008 =item i_img_get_width(im)
1010 Returns the width in pixels of the image.
1016 =item i_img_getchannels(im)
1018 Get the number of channels in I<im>.
1024 =item i_img_getmask(im)
1026 Get the image channel mask for I<im>.
1032 =item i_img_has_alpha(im)
1035 Return true if the image has an alpha channel.
1039 From: File immacros.h
1041 =item i_img_setmask(im, ch_mask)
1043 Set the image channel mask for I<im> to I<ch_mask>.
1045 The image channel mask gives some control over which channels can be
1046 written to in the image.
1055 =head2 Image quantization
1059 =item i_quant_makemap(quant, imgs, count)
1062 Analyzes the I<count> images in I<imgs> according to the rules in
1063 I<quant> to build a color map (optimal or not depending on
1064 quant->make_colors).
1070 =item i_quant_translate(quant, img)
1073 Quantize the image given the palette in quant.
1075 On success returns a pointer to a memory block of img->xsize *
1076 img->ysize i_palidx entries.
1078 On failure returns NULL.
1080 You should call myfree() on the returned block when you're done with
1083 This function will fail if the supplied palette contains no colors.
1089 =item i_quant_transparent(quant, data, img, trans_index)
1092 Dither the alpha channel on I<img> into the palette indexes in
1093 I<data>. Pixels to be transparent are replaced with I<trans_pixel>.
1095 The method used depends on the tr_* members of quant.
1108 =item i_lhead(file, line)
1110 This is an internal function called by the mm_log() macro.
1116 =item i_loog(level, format, ...)
1118 This is an internal function called by the mm_log() macro.
1124 =item mm_log((level, format, ...))
1126 This is the main entry point to logging. Note that the extra set of
1127 parentheses are required due to limitations in C89 macros.
1129 This will format a string with the current file and line number to the
1130 log file if logging is enabled.
1139 =head2 Paletted images
1143 =item i_addcolors(im, colors, count)
1146 Adds colors to the image's palette.
1148 On success returns the index of the lowest color added.
1150 On failure returns -1.
1152 Always fails for direct color images.
1158 =item i_colorcount(im)
1161 Returns the number of colors in the image's palette.
1163 Returns -1 for direct images.
1169 =item i_findcolor(im, color, &entry)
1172 Searches the images palette for the given color.
1174 On success sets *I<entry> to the index of the color, and returns true.
1176 On failure returns false.
1178 Always fails on direct color images.
1184 =item i_getcolors(im, index, colors, count)
1187 Retrieves I<count> colors starting from I<index> in the image's
1190 On success stores the colors into I<colors> and returns true.
1192 On failure returns false.
1194 Always fails for direct color images.
1196 Fails if there are less than I<index>+I<count> colors in the image's
1203 =item i_maxcolors(im)
1206 Returns the maximum number of colors the palette can hold for the
1209 Returns -1 for direct color images.
1215 =item i_setcolors(im, index, colors, count)
1218 Sets I<count> colors starting from I<index> in the image's palette.
1220 On sucess returns true.
1222 On failure returns false.
1224 The image must have at least I<index>+I<count> colors in it's palette
1225 for this to succeed.
1227 Always fails on direct color images.
1240 =item i_tags_delbycode(tags, code)
1243 Delete any tags with the given code.
1245 Returns the number of tags deleted.
1251 =item i_tags_delbyname(tags, name)
1254 Delete any tags with the given name.
1256 Returns the number of tags deleted.
1262 =item i_tags_delete(tags, index)
1265 Delete a tag by index.
1267 Returns true on success.
1273 =item i_tags_destroy(tags)
1276 Destroys the given tags structure. Called by i_img_destroy().
1282 =item i_tags_find(tags, name, start, &entry)
1285 Searchs for a tag of the given I<name> starting from index I<start>.
1287 On success returns true and sets *I<entry>.
1289 On failure returns false.
1295 =item i_tags_findn(tags, code, start, &entry)
1298 Searchs for a tag of the given I<code> starting from index I<start>.
1300 On success returns true and sets *I<entry>.
1302 On failure returns false.
1308 =item i_tags_get_color(tags, name, code, &value)
1311 Retrieve a tag specified by name or code as color.
1313 On success sets the i_color *I<value> to the color and returns true.
1315 On failure returns false.
1321 =item i_tags_get_float(tags, name, code, value)
1324 Retrieves a tag as a floating point value.
1326 If the tag has a string value then that is parsed as a floating point
1327 number, otherwise the integer value of the tag is used.
1329 On success sets *I<value> and returns true.
1331 On failure returns false.
1337 =item i_tags_get_int(tags, name, code, &value)
1340 Retrieve a tag specified by name or code as an integer.
1342 On success sets the int *I<value> to the integer and returns true.
1344 On failure returns false.
1350 =item i_tags_get_string(tags, name, code, value, value_size)
1353 Retrieves a tag by name or code as a string.
1355 On success copies the string to value for a max of value_size and
1358 On failure returns false.
1360 value_size must be at least large enough for a string representation
1363 The copied value is always NUL terminated.
1369 =item i_tags_new(i_img_tags *tags)
1372 Initialize a tags structure. Should not be used if the tags structure
1373 has been previously used.
1375 This should be called tags member of an i_img object on creation (in
1376 i_img_*_new() functions).
1378 To destroy the contents use i_tags_destroy()
1384 =item i_tags_set(tags, name, data, size)
1386 Sets the given tag to the string I<data>
1388 If size is -1 then the strlen(I<data>) bytes are stored.
1390 Even on failure, if an existing tag I<name> exists, it will be
1397 =item i_tags_set_color(tags, name, code, &value)
1400 Stores the given color as a tag with the given name and code.
1406 =item i_tags_set_float(tags, name, code, value)
1409 Equivalent to i_tags_set_float2(tags, name, code, value, 30).
1415 =item i_tags_set_float2(tags, name, code, value, places)
1418 Sets the tag with the given name and code to the given floating point
1421 Since tags are strings or ints, we convert the value to a string before
1422 storage at the precision specified by C<places>.
1428 =item i_tags_setn(tags, name, idata)
1430 Sets the given tag to the integer I<idata>
1432 Even on failure, if an existing tag I<name> exists, it will be
1445 Tony Cook <tony@imager.perl.org>
1449 Imager, Imager::ExtUtils, Imager::Inline