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;
22 black.rgba.r = black.rgba.g = black.rgba.b = black.rgba.a = 0;
25 printf("left %" i_DF "\n", i_DFc(x));
26 printf("point (" i_DFp ")\n", i_DFcp(x, y));
29 i_arc(im, 50, 50, 20, 45, 135, &color);
30 i_arc_cfill(im, 50, 50, 35, 90, 135, fill);
31 i_arc_aa(im, 50, 50, 35, 90, 135, &color);
32 i_arc_aa_cfill(im, 50, 50, 35, 90, 135, fill);
33 i_circle_aa(im, 50, 50, 45, &color);
34 i_box(im, 0, 0, im->xsize-1, im->ysize-1, &color).
35 i_box_filled(im, 0, 0, im->xsize-1, im->ysize-1, &color);
36 i_box_cfill(im, 0, 0, im->xsize-1, im->ysize-1, fill);
37 i_flood_fill(im, 50, 50, &color);
38 i_flood_cfill(im, 50, 50, fill);
39 i_flood_fill_border(im, 50, 50, &color, &border);
40 i_flood_cfill_border(im, 50, 50, fill, border);
43 im_clear_error(aIMCTX);
45 i_push_error(0, "Yep, it's broken");
46 i_push_error(errno, "Error writing");
47 im_push_error(aIMCTX, 0, "Something is wrong");
49 va_start(args, lastarg);
50 im_push_errorvf(ctx, code, format, args);
51 i_push_errorf(errno, "Cannot open file %s: %d", filename, errno);
52 im_push_errorf(aIMCTX, errno, "Cannot open file %s: %d", filename, errno);
55 im_set_image_file_limits(aIMCTX, 500, 500, 1000000);
56 i_set_image_file_limits(500, 500, 1000000);
57 im_get_image_file_limits(aIMCTX, &width, &height, &bytes)
58 i_get_image_file_limits(&width, &height, &bytes)
59 im_int_check_image_file_limits(aIMCTX, width, height, channels, sizeof(i_sample_t))
60 i_int_check_image_file_limits(width, height, channels, sizeof(i_sample_t))
63 i_fill_t *fill = i_new_fill_solidf(&fcolor, combine);
64 i_fill_t *fill = i_new_fill_solid(&color, combine);
65 i_fill_t *fill = i_new_fill_hatch(&fg_color, &bg_color, combine, hatch, custom_hatch, dx, dy);
66 i_fill_t *fill = i_new_fill_hatchf(&fg_fcolor, &bg_fcolor, combine, hatch, custom_hatch, dx, dy);
67 i_fill_t *fill = i_new_fill_image(src_img, matrix, x_offset, y_offset, combine);
68 fill = i_new_fill_fount(0, 0, 100, 100, i_ft_linear, i_ft_linear,
69 i_fr_triangle, 0, i_fts_grid, 9, 1, segs);
73 ssize_t count = i_io_peekn(ig, buffer, sizeof(buffer));
74 ssize_t result = i_io_write(io, buffer, size)
76 ssize_t len = i_io_gets(buffer, sizeof(buffer), '\n');
81 # Image creation/destruction
82 i_img *img = i_sametype(src, width, height);
83 i_img *img = i_sametype_chans(src, width, height, channels);
84 i_img *img = im_img_16_new(aIMCTX, width, height, channels);
85 i_img *img = i_img_16_new(width, height, channels);
86 i_img *img = im_img_8_new(aIMCTX, width, height, channels);
87 i_img *img = i_img_8_new(width, height, channels);
88 i_img *img = im_img_double_new(aIMCTX, width, height, channels);
89 i_img *img = i_img_double_new(width, height, channels);
90 i_img *img = im_img_pal_new(aIMCTX, width, height, channels, max_palette_size)
91 i_img *img = i_img_pal_new(width, height, channels, max_palette_size)
94 # Image Implementation
95 i_img *im = im_img_alloc(aIMCTX);
96 i_img *im = i_img_alloc();
97 im_img_init(aIMCTX, im);
101 // only channel 0 writable
102 i_img_setmask(img, 0x01);
103 int mask = i_img_getmask(img);
104 int channels = i_img_getchannels(img);
105 i_img_dim width = i_img_get_width(im);
106 i_img_dim height = i_img_get_height(im);
115 i_tags_set(&img->tags, "i_comment", -1);
116 i_tags_setn(&img->tags, "i_xres", 204);
117 i_tags_setn(&img->tags, "i_yres", 196);
125 =item i_render_color(r, x, y, width, source, color)
127 Render the given color with the coverage specified by C<source[0]> to
130 Renders in normal combine mode.
136 =item i_render_delete(r)
138 Release an C<i_render> object.
144 =item i_render_fill(r, x, y, width, source, fill)
146 Render the given fill with the coverage in C<source[0]> through
153 =item i_render_line(r, x, y, width, source, fill)
155 Render the given fill with the coverage in C<source[0]> through
162 =item i_render_linef(r, x, y, width, source, fill)
164 Render the given fill with the coverage in C<source[0]> through
171 =item i_render_new(im, width)
173 Allocate a new C<i_render> object and initialize it.
190 This is Imager's image type.
192 It contains the following members:
198 C<channels> - the number of channels in the image
202 C<xsize>, C<ysize> - the width and height of the image in pixels
206 C<bytes> - the number of bytes used to store the image data. Undefined
207 where virtual is non-zero.
211 C<ch_mask> - a mask of writable channels. eg. if this is 6 then only
212 channels 1 and 2 are writable. There may be bits set for which there
213 are no channels in the image.
217 C<bits> - the number of bits stored per sample. Should be one of
218 i_8_bits, i_16_bits, i_double_bits.
222 C<type> - either i_direct_type for direct color images, or i_palette_type
227 C<virtual> - if zero then this image is-self contained. If non-zero
228 then this image could be an interface to some other implementation.
232 C<idata> - the image data. This should not be directly accessed. A new
233 image implementation can use this to store its image data.
234 i_img_destroy() will myfree() this pointer if it's non-null.
238 C<tags> - a structure storing the image's tags. This should only be
239 accessed via the i_tags_*() functions.
243 C<ext_data> - a pointer for use internal to an image implementation.
244 This should be freed by the image's destroy handler.
248 C<im_data> - data internal to Imager. This is initialized by
253 i_f_ppix, i_f_ppixf, i_f_plin, i_f_plinf, i_f_gpix, i_f_gpixf,
254 i_f_glin, i_f_glinf, i_f_gsamp, i_f_gampf - implementations for each
255 of the required image functions. An image implementation should
256 initialize these between calling i_img_alloc() and i_img_init().
260 i_f_gpal, i_f_ppal, i_f_addcolors, i_f_getcolors, i_f_colorcount,
261 i_f_maxcolors, i_f_findcolor, i_f_setcolors - implementations for each
262 paletted image function.
266 i_f_destroy - custom image destruction function. This should be used
267 to release memory if necessary.
271 i_f_gsamp_bits - implements i_gsamp_bits() for this image.
275 i_f_psamp_bits - implements i_psamp_bits() for this image.
279 i_f_psamp - implements psamp() for this image.
283 i_f_psampf - implements psamp() for this image.
287 C<im_data> - image specific data internal to Imager.
291 C<context> - the Imager API context this image belongs to.
297 From: File imdatatypes.h
302 black.rgba.r = black.rgba.g = black.rgba.b = black.rgba.a = 0;
304 Type for 8-bit/sample color.
310 i_color is a union of:
316 gray - contains a single element gray_color, eg. C<c.gray.gray_color>
320 C<rgb> - contains three elements C<r>, C<g>, C<b>, eg. C<c.rgb.r>
324 C<rgba> - contains four elements C<r>, C<g>, C<b>, C<a>, eg. C<c.rgba.a>
328 C<cmyk> - contains four elements C<c>, C<m>, C<y>, C<k>,
329 eg. C<c.cmyk.y>. Note that Imager never uses CMYK colors except when
330 reading/writing files.
334 channels - an array of four channels, eg C<c.channels[2]>.
340 From: File imdatatypes.h
344 This is the double/sample color type.
346 Its layout exactly corresponds to i_color.
350 From: File imdatatypes.h
356 This is the "abstract" base type for Imager's fill types.
358 Unless you're implementing a new fill type you'll typically treat this
363 From: File imdatatypes.h
369 A signed integer type that represents an image dimension or ordinate.
371 May be larger than int on some platforms.
375 From: File imdatatypes.h
379 printf("left %" i_DF "\n", i_DFc(x));
381 This is a constant string that can be used with functions like
382 printf() to format i_img_dim values after they're been cast with i_DFc().
384 Does not include the leading C<%>.
388 From: File imdatatypes.h
392 Cast an C<i_img_dim> value to a type for use with the i_DF format
397 From: File imdatatypes.h
401 Casts two C<i_img_dim> values for use with the i_DF (or i_DFp) format.
405 From: File imdatatypes.h
409 printf("point (" i_DFp ")\n", i_DFcp(x, y));
411 Format a pair of C<i_img_dim> values. This format string I<does>
412 include the leading C<%>.
416 From: File imdatatypes.h
425 =item i_arc(im, x, y, rad, d1, d2, color)
428 i_arc(im, 50, 50, 20, 45, 135, &color);
430 Fills an arc centered at (x,y) with radius I<rad> covering the range
431 of angles in degrees from d1 to d2, with the color.
437 =item i_arc_aa(im, x, y, rad, d1, d2, color)
440 i_arc_aa(im, 50, 50, 35, 90, 135, &color);
442 Anti-alias fills an arc centered at (x,y) with radius I<rad> covering
443 the range of angles in degrees from d1 to d2, with the color.
449 =item i_arc_aa_cfill(im, x, y, rad, d1, d2, fill)
452 i_arc_aa_cfill(im, 50, 50, 35, 90, 135, fill);
454 Anti-alias fills an arc centered at (x,y) with radius I<rad> covering
455 the range of angles in degrees from d1 to d2, with the fill object.
461 =item i_arc_cfill(im, x, y, rad, d1, d2, fill)
464 i_arc_cfill(im, 50, 50, 35, 90, 135, fill);
466 Fills an arc centered at (x,y) with radius I<rad> covering the range
467 of angles in degrees from d1 to d2, with the fill object.
473 =item i_box(im, x1, y1, x2, y2, color)
476 i_box(im, 0, 0, im->xsize-1, im->ysize-1, &color).
478 Outlines the box from (x1,y1) to (x2,y2) inclusive with I<color>.
484 =item i_box_cfill(im, x1, y1, x2, y2, fill)
487 i_box_cfill(im, 0, 0, im->xsize-1, im->ysize-1, fill);
489 Fills the box from (x1,y1) to (x2,y2) inclusive with fill.
495 =item i_box_filled(im, x1, y1, x2, y2, color)
498 i_box_filled(im, 0, 0, im->xsize-1, im->ysize-1, &color);
500 Fills the box from (x1,y1) to (x2,y2) inclusive with color.
506 =item i_circle_aa(im, x, y, rad, color)
509 i_circle_aa(im, 50, 50, 45, &color);
511 Anti-alias fills a circle centered at (x,y) for radius I<rad> with
518 =item i_flood_cfill(C<im>, C<seedx>, C<seedy>, C<fill>)
521 i_flood_cfill(im, 50, 50, fill);
523 Flood fills the 4-connected region starting from the point (C<seedx>,
524 C<seedy>) with C<fill>.
526 Returns false if (C<seedx>, C<seedy>) are outside the image.
532 =item i_flood_cfill_border(C<im>, C<seedx>, C<seedy>, C<fill>, C<border>)
535 i_flood_cfill_border(im, 50, 50, fill, border);
537 Flood fills the 4-connected region starting from the point (C<seedx>,
538 C<seedy>) with C<fill>, the fill stops when it reaches pixels of color
541 Returns false if (C<seedx>, C<seedy>) are outside the image.
547 =item i_flood_fill(C<im>, C<seedx>, C<seedy>, C<color>)
550 i_flood_fill(im, 50, 50, &color);
552 Flood fills the 4-connected region starting from the point (C<seedx>,
553 C<seedy>) with I<color>.
555 Returns false if (C<seedx>, C<seedy>) are outside the image.
561 =item i_flood_fill_border(C<im>, C<seedx>, C<seedy>, C<color>, C<border>)
564 i_flood_fill_border(im, 50, 50, &color, &border);
566 Flood fills the 4-connected region starting from the point (C<seedx>,
567 C<seedy>) with C<color>, fill stops when the fill reaches a pixels
568 with color C<border>.
570 Returns false if (C<seedx>, C<seedy>) are outside the image.
576 =item i_glin(im, l, r, y, colors)
579 Retrieves (r-l) pixels starting from (l,y) into I<colors>.
581 Returns the number of pixels retrieved.
587 =item i_glinf(im, l, r, y, colors)
590 Retrieves (r-l) pixels starting from (l,y) into I<colors> as floating
593 Returns the number of pixels retrieved.
599 =item i_gpal(im, left, right, y, indexes)
602 Reads palette indexes for the horizontal line (left, y) to (right-1,
605 Returns the number of indexes read.
607 Always returns 0 for direct color images.
613 =item i_gpix(im, C<x>, C<y>, C<color>)
616 Retrieves the C<color> of the pixel (x,y).
618 Returns 0 if the pixel was retrieved, or -1 if not.
624 =item i_gpixf(im, C<x>, C<y>, C<fcolor>)
627 Retrieves the color of the pixel (x,y) as a floating point color into
630 Returns 0 if the pixel was retrieved, or -1 if not.
636 =item i_gsamp(im, left, right, y, samples, channels, channel_count)
639 Reads sample values from C<im> for the horizontal line (left, y) to
640 (right-1,y) for the channels specified by C<channels>, an array of int
641 with C<channel_count> elements.
643 If channels is NULL then the first channels_count channels are retrieved for
646 Returns the number of samples read (which should be (right-left) *
653 =item i_gsamp_bg(im, l, r, y, samples, out_channels, background)
656 Like C<i_gsampf()> but applies the source image color over a supplied
659 This is intended for output to image formats that don't support alpha
666 =item i_gsamp_bits(im, left, right, y, samples, channels, channel_count, bits)
668 Reads integer samples scaled to C<bits> bits of precision into the
669 C<unsigned int> array C<samples>.
671 Expect this to be slow unless C<< bits == im->bits >>.
673 Returns the number of samples copied, or -1 on error.
675 Not all image types implement this method.
677 Pushes errors, but does not call C<i_clear_error()>.
683 =item i_gsampf(im, left, right, y, samples, channels, channel_count)
686 Reads floating point sample values from C<im> for the horizontal line
687 (left, y) to (right-1,y) for the channels specified by C<channels>, an
688 array of int with channel_count elements.
690 If C<channels> is NULL then the first C<channel_count> channels are
691 retrieved for each pixel.
693 Returns the number of samples read (which should be (C<right>-C<left>)
700 =item i_gsampf_bg(im, l, r, y, samples, out_channels, background)
703 Like C<i_gsampf()> but applies the source image color over a supplied
706 This is intended for output to image formats that don't support alpha
713 =item i_line(C<im>, C<x1>, C<y1>, C<x2>, C<y2>, C<color>, C<endp>)
716 =for stopwords Bresenham's
718 Draw a line to image using Bresenham's line drawing algorithm
720 im - image to draw to
721 x1 - starting x coordinate
722 y1 - starting x coordinate
723 x2 - starting x coordinate
724 y2 - starting x coordinate
725 color - color to write to image
726 endp - endpoint flag (boolean)
732 =item i_line_aa(C<im>, C<x1>, C<x2>, C<y1>, C<y2>, C<color>, C<endp>)
735 Anti-alias draws a line from (x1,y1) to (x2, y2) in color.
737 The point (x2, y2) is drawn only if C<endp> is set.
743 =item i_plin(im, l, r, y, colors)
746 Sets (r-l) pixels starting from (l,y) using (r-l) values from
749 Returns the number of pixels set.
755 =item i_plinf(im, C<left>, C<right>, C<fcolors>)
758 Sets (right-left) pixels starting from (left,y) using (right-left)
759 floating point colors from C<fcolors>.
761 Returns the number of pixels set.
767 =item i_ppal(im, left, right, y, indexes)
770 Writes palette indexes for the horizontal line (left, y) to (right-1,
773 Returns the number of indexes written.
775 Always returns 0 for direct color images.
781 =item i_ppix(im, x, y, color)
784 Sets the pixel at (x,y) to I<color>.
786 Returns 0 if the pixel was drawn, or -1 if not.
788 Does no alpha blending, just copies the channels from the supplied
795 =item i_ppixf(im, C<x>, C<y>, C<fcolor>)
798 Sets the pixel at (C<x>,C<y>) to the floating point color C<fcolor>.
800 Returns 0 if the pixel was drawn, or -1 if not.
802 Does no alpha blending, just copies the channels from the supplied
809 =item i_psamp(im, left, right, y, samples, channels, channel_count)
811 Writes sample values from C<samples> to C<im> for the horizontal line
812 (left, y) to (right-1, y) inclusive for the channels specified by
813 C<channels>, an array of C<int> with C<channel_count> elements.
815 If C<channels> is C<NULL> then the first C<channels_count> channels
816 are written to for each pixel.
818 Returns the number of samples written, which should be (right - left)
819 * channel_count. If a channel not in the image is in channels, left
820 is negative, left is outside the image or y is outside the image,
821 returns -1 and pushes an error.
825 From: File immacros.h
827 =item i_psamp_bits(im, left, right, y, samples, channels, channel_count, bits)
829 Writes integer samples scaled to C<bits> bits of precision from the
830 C<unsigned int> array C<samples>.
832 Expect this to be slow unless C<< bits == im->bits >>.
834 Returns the number of samples copied, or -1 on error.
836 Not all image types implement this method.
838 Pushes errors, but does not call C<i_clear_error()>.
844 =item i_psampf(im, left, right, y, samples, channels, channel_count)
846 Writes floating point sample values from C<samples> to C<im> for the
847 horizontal line (left, y) to (right-1, y) inclusive for the channels
848 specified by C<channels>, an array of C<int> with C<channel_count>
851 If C<channels> is C<NULL> then the first C<channels_count> channels
852 are written to for each pixel.
854 Returns the number of samples written, which should be (right - left)
855 * channel_count. If a channel not in the image is in channels, left
856 is negative, left is outside the image or y is outside the image,
857 returns -1 and pushes an error.
861 From: File immacros.h
866 =head2 Error handling
870 =item i_push_errorf(int code, char const *fmt, ...)
872 i_push_errorf(errno, "Cannot open file %s: %d", filename, errno);
874 A version of i_push_error() that does printf() like formatting.
876 Does not support perl specific format codes.
882 =item im_clear_error(ctx)
883 X<im_clear_error API>X<i_clear_error API>
885 im_clear_error(aIMCTX);
888 Clears the error stack.
890 Called by any Imager function before doing any other processing.
892 Also callable as C<i_clear_error()>.
898 =item im_push_error(ctx, code, message)
899 X<im_push_error API>X<i_push_error API>
901 i_push_error(0, "Yep, it's broken");
902 i_push_error(errno, "Error writing");
903 im_push_error(aIMCTX, 0, "Something is wrong");
905 Called by an Imager function to push an error message onto the stack.
907 No message is pushed if the stack is full (since this means someone
908 forgot to call i_clear_error(), or that a function that doesn't do
909 error handling is calling function that does.).
915 =item im_push_errorf(ctx, code, char const *fmt, ...)
917 im_push_errorf(aIMCTX, errno, "Cannot open file %s: %d", filename, errno);
919 A version of im_push_error() that does printf() like formatting.
921 Does not support perl specific format codes.
927 =item im_push_errorvf(ctx, code, format, args)
928 X<im_push_error_vf API>X<i_push_errorvf API>
931 va_start(args, lastarg);
932 im_push_errorvf(ctx, code, format, args);
934 Intended for use by higher level functions, takes a varargs pointer
935 and a format to produce the finally pushed error message.
937 Does not support perl specific format codes.
939 Also callable as C<i_push_errorvf(code, format, args)>
952 =item i_get_file_background(im, &bg)
955 Retrieve the file write background color tag from the image.
957 If not present, C<bg> is set to black.
959 Returns 1 if the C<i_background> tag was found and valid.
965 =item i_get_file_backgroundf(im, &bg)
968 Retrieve the file write background color tag from the image as a
969 floating point color.
971 Implemented in terms of i_get_file_background().
973 If not present, C<bg> is set to black.
975 Returns 1 if the C<i_background> tag was found and valid.
981 =item im_get_image_file_limits(ctx, &width, &height, &bytes)
982 X<im_get_image_file_limits API>X<i_get_image_file_limits>
984 im_get_image_file_limits(aIMCTX, &width, &height, &bytes)
985 i_get_image_file_limits(&width, &height, &bytes)
987 Retrieves the file limits set by i_set_image_file_limits().
993 i_img_dim *width, *height - the maximum width and height of the image.
997 size_t *bytes - size in memory of the image in bytes.
1001 Also callable as C<i_get_image_file_limits(&width, &height, &bytes)>.
1007 =item im_int_check_image_file_limits(width, height, channels, sample_size)
1008 X<im_int_check_image_file_limits API>X<i_int_check_image_file_limits>
1010 im_int_check_image_file_limits(aIMCTX, width, height, channels, sizeof(i_sample_t))
1011 i_int_check_image_file_limits(width, height, channels, sizeof(i_sample_t))
1013 Checks the size of a file in memory against the configured image file
1016 This also range checks the values to those permitted by Imager and
1017 checks for overflows in calculating the size.
1019 Returns non-zero if the file is within limits.
1021 This function is intended to be called by image file read functions.
1023 Also callable as C<i_int_check_image_file_limits(width, height, channels, sizeof(i_sample_t)>.
1029 =item im_set_image_file_limits(ctx, width, height, bytes)
1030 X<im_set_image_file_limits API>X<i_set_image_file_limits API>
1032 im_set_image_file_limits(aIMCTX, 500, 500, 1000000);
1033 i_set_image_file_limits(500, 500, 1000000);
1035 Set limits on the sizes of images read by Imager.
1037 Setting a limit to 0 means that limit is ignored.
1039 Negative limits result in failure.
1047 i_img_dim width, height - maximum width and height.
1051 size_t bytes - maximum size in memory in bytes. A value of zero sets
1052 this limit to one gigabyte.
1056 Returns non-zero on success.
1058 Also callable as C<i_set_image_file_limits(width, height, bytes)>.
1071 =item i_new_fill_fount(C<xa>, C<ya>, C<xb>, C<yb>, C<type>, C<repeat>, C<combine>, C<super_sample>, C<ssample_param>, C<count>, C<segs>)
1074 fill = i_new_fill_fount(0, 0, 100, 100, i_ft_linear, i_ft_linear,
1075 i_fr_triangle, 0, i_fts_grid, 9, 1, segs);
1078 Creates a new general fill which fills with a fountain fill.
1082 From: File filters.im
1084 =item i_new_fill_hatch(C<fg>, C<bg>, C<combine>, C<hatch>, C<cust_hatch>, C<dx>, C<dy>)
1087 i_fill_t *fill = i_new_fill_hatch(&fg_color, &bg_color, combine, hatch, custom_hatch, dx, dy);
1089 Creates a new hatched fill with the C<fg> color used for the 1 bits in
1090 the hatch and C<bg> for the 0 bits. If C<combine> is non-zero alpha
1091 values will be combined.
1093 If C<cust_hatch> is non-NULL it should be a pointer to 8 bytes of the
1094 hash definition, with the high-bits to the left.
1096 If C<cust_hatch> is NULL then one of the standard hatches is used.
1098 (C<dx>, C<dy>) are an offset into the hatch which can be used to hatch
1099 adjoining areas out of alignment, or to align the origin of a hatch
1100 with the the side of a filled area.
1106 =item i_new_fill_hatchf(C<fg>, C<bg>, C<combine>, C<hatch>, C<cust_hatch>, C<dx>, C<dy>)
1109 i_fill_t *fill = i_new_fill_hatchf(&fg_fcolor, &bg_fcolor, combine, hatch, custom_hatch, dx, dy);
1111 Creates a new hatched fill with the C<fg> color used for the 1 bits in
1112 the hatch and C<bg> for the 0 bits. If C<combine> is non-zero alpha
1113 values will be combined.
1115 If C<cust_hatch> is non-NULL it should be a pointer to 8 bytes of the
1116 hash definition, with the high-bits to the left.
1118 If C<cust_hatch> is NULL then one of the standard hatches is used.
1120 (C<dx>, C<dy>) are an offset into the hatch which can be used to hatch
1121 adjoining areas out of alignment, or to align the origin of a hatch
1122 with the the side of a filled area.
1128 =item i_new_fill_image(C<im>, C<matrix>, C<xoff>, C<yoff>, C<combine>)
1131 i_fill_t *fill = i_new_fill_image(src_img, matrix, x_offset, y_offset, combine);
1133 Create an image based fill.
1135 matrix is an array of 9 doubles representing a transformation matrix.
1137 C<xoff> and C<yoff> are the offset into the image to start filling from.
1143 =item i_new_fill_solid(color, combine)
1146 i_fill_t *fill = i_new_fill_solid(&color, combine);
1148 Create a solid fill based on an 8-bit color.
1150 If combine is non-zero then alpha values will be combined.
1156 =item i_new_fill_solidf(color, combine)
1159 i_fill_t *fill = i_new_fill_solidf(&fcolor, combine);
1161 Create a solid fill based on a float color.
1163 If combine is non-zero then alpha values will be combined.
1169 =item i_fill_destroy(fill)
1171 i_fill_destroy(fill);
1173 Call to destroy any fill object.
1186 =item im_io_new_bufchain(ctx)
1187 X<im_io_new_bufchain API>X<i_io_new_bufchain API>
1189 Returns a new io_glue object that has the 'empty' source and but can
1190 be written to and read from later (like a pseudo file).
1192 Also callable as C<io_new_bufchain()>.
1196 From: File iolayer.c
1198 =item im_io_new_buffer(ctx, data, length)
1199 X<im_io_new_buffer API>X<io_new_buffer API>
1201 Returns a new io_glue object that has the source defined as reading
1202 from specified buffer. Note that the buffer is not copied.
1204 ctx - an Imager context object
1205 data - buffer to read from
1206 length - length of buffer
1208 Also callable as C<io_new_buffer(data, length>.
1212 From: File iolayer.c
1214 =item im_io_new_cb(ctx, p, read_cb, write_cb, seek_cb, close_cb, destroy_cb)
1215 X<im_io_new_cb API>X<io_new_cb API>
1217 Create a new I/O layer object that calls your supplied callbacks.
1219 In general the callbacks should behave like the corresponding POSIX
1226 C<read_cb>(p, buffer, length) should read up to C<length> bytes into
1227 C<buffer> and return the number of bytes read. At end of file, return
1228 0. On error, return -1.
1232 C<write_cb>(p, buffer, length) should write up to C<length> bytes from
1233 C<buffer> and return the number of bytes written. A return value <= 0
1234 will be treated as an error.
1238 C<seekcb>(p, offset, whence) should seek and return the new offset.
1242 C<close_cb>(p) should return 0 on success, -1 on failure.
1246 C<destroy_cb>(p) should release any memory specific to your callback
1251 Also callable as C<io_new_cb(p, readcb, writecb, seekcb, closecb,
1256 From: File iolayer.c
1258 =item im_io_new_fd(ctx, file)
1259 X<io_new_fd API>X<im_io_new_fd API>
1261 Returns a new io_glue object that has the source defined as reading
1262 from specified file descriptor. Note that the the interface to receiving
1263 data from the io_glue callbacks hasn't been done yet.
1265 ctx - and Imager context object
1266 file - file descriptor to read/write from
1268 Also callable as C<io_new_fd(file)>.
1272 From: File iolayer.c
1274 =item i_io_close(io)
1276 Flush any pending output and perform the close action for the stream.
1278 Returns 0 on success.
1282 From: File iolayer.c
1284 =item i_io_flush(io)
1286 Flush any buffered output.
1288 Returns true on success,
1292 From: File iolayer.c
1296 A macro to read a single byte from a buffered I/O glue object.
1298 Returns EOF on failure, or a byte.
1302 From: File iolayer.c
1304 =item i_io_gets(ig, buffer, size, end_of_line)
1307 ssize_t len = i_io_gets(buffer, sizeof(buffer), '\n');
1309 Read up to C<size>-1 bytes from the stream C<ig> into C<buffer>.
1311 If the byte C<end_of_line> is seen then no further bytes will be read.
1313 Returns the number of bytes read.
1315 Always C<NUL> terminates the buffer.
1319 From: File iolayer.c
1321 =item i_io_peekc(ig)
1323 Read the next character from the stream without advancing the stream.
1325 On error or end of file, return EOF.
1327 For unbuffered streams a single character buffer will be setup.
1331 From: File iolayer.c
1333 =item i_io_peekn(ig, buffer, size)
1335 ssize_t count = i_io_peekn(ig, buffer, sizeof(buffer));
1337 Buffer at least C<size> (at most C<< ig->buf_size >> bytes of data
1338 from the stream and return C<size> bytes of it to the caller in
1341 This ignores the buffered state of the stream, and will always setup
1342 buffering if needed.
1344 If no C<type> parameter is provided to Imager::read() or
1345 Imager::read_multi(), Imager will call C<i_io_peekn()> when probing
1346 for the file format.
1348 Returns -1 on error, 0 if there is no data before EOF, or the number
1349 of bytes read into C<buffer>.
1353 From: File iolayer.c
1355 =item i_io_putc(ig, c)
1357 Write a single character to the stream.
1359 On success return c, on error returns EOF
1363 From: File iolayer.c
1365 =item i_io_read(io, buffer, size)
1367 Read up to C<size> bytes from the stream C<io> into C<buffer>.
1369 Returns the number of bytes read. Returns 0 on end of file. Returns
1374 From: File iolayer.c
1376 =item i_io_seek(io, offset, whence)
1378 Seek within the stream.
1380 Acts like perl's seek.
1384 From: File iolayer.c
1386 =item i_io_set_buffered(io, buffered)
1388 Set the buffering mode of the stream.
1390 If you switch buffering off on a stream with buffering on:
1396 any buffered output will be flushed.
1400 any existing buffered input will be consumed before reads become
1405 Returns true on success. This may fail if any buffered output cannot
1410 From: File iolayer.c
1412 =item i_io_write(io, buffer, size)
1414 ssize_t result = i_io_write(io, buffer, size)
1416 Write to the given I/O stream.
1418 Returns the number of bytes written.
1422 From: File iolayer.c
1424 =item io_slurp(ig, c)
1427 Takes the source that the io_glue is bound to and allocates space for
1428 a return buffer and returns the entire content in a single buffer.
1429 Note: This only works for io_glue objects created by
1430 io_new_bufchain(). It is useful for saving to scalars and such.
1433 c - pointer to a pointer to where data should be copied to
1436 size_t size = io_slurp(ig, &data);
1437 ... do something with the data ...
1440 io_slurp() will abort the program if the supplied I/O layer is not
1441 from io_new_bufchain().
1445 From: File iolayer.c
1447 =item io_glue_destroy(ig)
1448 X<io_glue_destroy API>
1450 io_glue_destroy(ig);
1452 Destroy an io_glue objects. Should clean up all related buffers.
1454 ig - io_glue object to destroy.
1458 From: File iolayer.c
1467 =item i_copy(source)
1470 Creates a new image that is a copy of the image C<source>.
1472 Tags are not copied, only the image data.
1480 =item i_copyto(C<dest>, C<src>, C<x1>, C<y1>, C<x2>, C<y2>, C<tx>, C<ty>)
1483 Copies image data from the area (C<x1>,C<y1>)-[C<x2>,C<y2>] in the
1484 source image to a rectangle the same size with it's top-left corner at
1485 (C<tx>,C<ty>) in the destination image.
1487 If C<x1> > C<x2> or C<y1> > C<y2> then the corresponding co-ordinates
1494 =item i_copyto_trans(C<im>, C<src>, C<x1>, C<y1>, C<x2>, C<y2>, C<tx>, C<ty>, C<trans>)
1497 (C<x1>,C<y1>) (C<x2>,C<y2>) specifies the region to copy (in the
1498 source coordinates) (C<tx>,C<ty>) specifies the upper left corner for
1499 the target image. pass NULL in C<trans> for non transparent i_colors.
1505 =item i_img_info(im, info)
1508 Return image information
1511 info - pointer to array to return data
1513 info is an array of 4 integers with the following values:
1518 info[3] - channel mask
1524 =item i_rubthru(C<im>, C<src>, C<tx>, C<ty>, C<src_minx>, C<src_miny>, C<src_maxx>, C<src_maxy>)
1527 Takes the sub image C<src>[C<src_minx>, C<src_maxx>)[C<src_miny>, C<src_maxy>)> and
1528 overlays it at (C<tx>,C<ty>) on the image object.
1530 The alpha channel of each pixel in C<src> is used to control how much
1531 the existing color in C<im> is replaced, if it is 255 then the color
1532 is completely replaced, if it is 0 then the original color is left
1537 From: File rubthru.im
1542 =head2 Image creation/destruction
1546 =item i_sametype(C<im>, C<xsize>, C<ysize>)
1549 i_img *img = i_sametype(src, width, height);
1551 Returns an image of the same type (sample size, channels, paletted/direct).
1553 For paletted images the palette is copied from the source.
1559 =item i_sametype_chans(C<im>, C<xsize>, C<ysize>, C<channels>)
1562 i_img *img = i_sametype_chans(src, width, height, channels);
1564 Returns an image of the same type (sample size).
1566 For paletted images the equivalent direct type is returned.
1572 =item im_img_16_new(ctx, x, y, ch)
1573 X<im_img_16_new API>X<i_img_16_new API>
1575 i_img *img = im_img_16_new(aIMCTX, width, height, channels);
1576 i_img *img = i_img_16_new(width, height, channels);
1578 Create a new 16-bit/sample image.
1580 Returns the image on success, or NULL on failure.
1582 Also callable as C<i_img_16_new(x, y, ch)>
1588 =item im_img_8_new(ctx, x, y, ch)
1589 X<im_img_8_new API>X<i_img_8_new API>
1591 i_img *img = im_img_8_new(aIMCTX, width, height, channels);
1592 i_img *img = i_img_8_new(width, height, channels);
1594 Creates a new image object I<x> pixels wide, and I<y> pixels high with
1601 =item im_img_double_new(ctx, x, y, ch)
1602 X<im_img_double_new API>X<i_img_double_new API>
1604 i_img *img = im_img_double_new(aIMCTX, width, height, channels);
1605 i_img *img = i_img_double_new(width, height, channels);
1607 Creates a new double per sample image.
1609 Also callable as C<i_img_double_new(width, height, channels)>.
1613 From: File imgdouble.c
1615 =item im_img_pal_new(ctx, C<x>, C<y>, C<channels>, C<maxpal>)
1616 X<im_img_pal_new API>X<i_img_pal_new API>
1618 i_img *img = im_img_pal_new(aIMCTX, width, height, channels, max_palette_size)
1619 i_img *img = i_img_pal_new(width, height, channels, max_palette_size)
1621 Creates a new paletted image of the supplied dimensions.
1623 C<maxpal> is the maximum palette size and should normally be 256.
1625 Returns a new image or NULL on failure.
1627 Also callable as C<i_img_pal_new(width, height, channels, max_palette_size)>.
1633 =item i_img_destroy(C<img>)
1637 Destroy an image object
1646 =head2 Image Implementation
1650 =item im_img_alloc(aIMCTX)
1651 X<im_img_alloc API>X<i_img_alloc API>
1653 i_img *im = im_img_alloc(aIMCTX);
1654 i_img *im = i_img_alloc();
1656 Allocates a new i_img structure.
1658 When implementing a new image type perform the following steps in your
1659 image object creation function:
1665 allocate the image with i_img_alloc().
1669 initialize any function pointers or other data as needed, you can
1670 overwrite the whole block if you need to.
1674 initialize Imager's internal data by calling i_img_init() on the image
1683 =item im_img_init(aIMCTX, image)
1684 X<im_img_init API>X<i_img_init API>
1686 im_img_init(aIMCTX, im);
1689 Imager internal initialization of images.
1691 See L</im_img_alloc(aIMCTX)> for more information.
1700 =head2 Image Information
1704 =item i_img_color_channels(C<im>)
1707 The number of channels holding color information.
1711 From: File immacros.h
1713 =item i_img_get_height(C<im>)
1715 i_img_dim height = i_img_get_height(im);
1717 Returns the height in pixels of the image.
1723 =item i_img_get_width(C<im>)
1725 i_img_dim width = i_img_get_width(im);
1727 Returns the width in pixels of the image.
1733 =item i_img_getchannels(C<im>)
1735 int channels = i_img_getchannels(img);
1737 Get the number of channels in C<im>.
1743 =item i_img_getmask(C<im>)
1745 int mask = i_img_getmask(img);
1747 Get the image channel mask for C<im>.
1753 =item i_img_has_alpha(C<im>)
1756 Return true if the image has an alpha channel.
1760 From: File immacros.h
1762 =item i_img_is_monochrome(img, &zero_is_white)
1765 Tests an image to check it meets our monochrome tests.
1767 The idea is that a file writer can use this to test where it should
1768 write the image in whatever bi-level format it uses, eg. C<pbm> for
1771 For performance of encoders we require monochrome images:
1781 have a palette of two colors, containing only C<(0,0,0)> and
1782 C<(255,255,255)> in either order.
1786 C<zero_is_white> is set to non-zero if the first palette entry is white.
1792 =item i_img_setmask(C<im>, C<ch_mask>)
1794 // only channel 0 writable
1795 i_img_setmask(img, 0x01);
1797 Set the image channel mask for C<im> to C<ch_mask>.
1799 The image channel mask gives some control over which channels can be
1800 written to in the image.
1809 =head2 Image quantization
1813 =item i_quant_makemap(C<quant>, C<imgs>, C<count>)
1816 Analyzes the C<count> images in C<imgs> according to the rules in
1817 C<quant> to build a color map (optimal or not depending on
1818 C<< quant->make_colors >>).
1824 =item i_quant_translate(C<quant>, C<img>)
1827 Quantize the image given the palette in C<quant>.
1829 On success returns a pointer to a memory block of C<< img->xsize *
1830 img->ysize >> C<i_palidx> entries.
1832 On failure returns NULL.
1834 You should call myfree() on the returned block when you're done with
1837 This function will fail if the supplied palette contains no colors.
1843 =item i_quant_transparent(C<quant>, C<data>, C<img>, C<trans_index>)
1846 Dither the alpha channel on C<img> into the palette indexes in
1847 C<data>. Pixels to be transparent are replaced with C<trans_pixel>.
1849 The method used depends on the tr_* members of C<quant>.
1862 =item i_lhead(file, line)
1864 This is an internal function called by the mm_log() macro.
1870 =item i_loog(level, format, ...)
1872 This is an internal function called by the mm_log() macro.
1881 =head2 Paletted images
1885 =item i_addcolors(im, colors, count)
1888 Adds colors to the image's palette.
1890 On success returns the index of the lowest color added.
1892 On failure returns -1.
1894 Always fails for direct color images.
1900 =item i_colorcount(im)
1903 Returns the number of colors in the image's palette.
1905 Returns -1 for direct images.
1911 =item i_findcolor(im, color, &entry)
1914 Searches the images palette for the given color.
1916 On success sets *I<entry> to the index of the color, and returns true.
1918 On failure returns false.
1920 Always fails on direct color images.
1926 =item i_getcolors(im, index, colors, count)
1929 Retrieves I<count> colors starting from I<index> in the image's
1932 On success stores the colors into I<colors> and returns true.
1934 On failure returns false.
1936 Always fails for direct color images.
1938 Fails if there are less than I<index>+I<count> colors in the image's
1945 =item i_maxcolors(im)
1948 Returns the maximum number of colors the palette can hold for the
1951 Returns -1 for direct color images.
1957 =item i_setcolors(im, index, colors, count)
1960 Sets I<count> colors starting from I<index> in the image's palette.
1962 On success returns true.
1964 On failure returns false.
1966 The image must have at least I<index>+I<count> colors in it's palette
1967 for this to succeed.
1969 Always fails on direct color images.
1982 =item i_tags_delbycode(tags, code)
1985 Delete any tags with the given code.
1987 Returns the number of tags deleted.
1993 =item i_tags_delbyname(tags, name)
1996 Delete any tags with the given name.
1998 Returns the number of tags deleted.
2004 =item i_tags_delete(tags, index)
2007 Delete a tag by index.
2009 Returns true on success.
2015 =item i_tags_destroy(tags)
2018 Destroys the given tags structure. Called by i_img_destroy().
2024 =item i_tags_find(tags, name, start, &entry)
2027 Searches for a tag of the given I<name> starting from index I<start>.
2029 On success returns true and sets *I<entry>.
2031 On failure returns false.
2037 =item i_tags_findn(tags, code, start, &entry)
2040 Searches for a tag of the given I<code> starting from index I<start>.
2042 On success returns true and sets *I<entry>.
2044 On failure returns false.
2050 =item i_tags_get_color(tags, name, code, &value)
2053 Retrieve a tag specified by name or code as color.
2055 On success sets the i_color *I<value> to the color and returns true.
2057 On failure returns false.
2063 =item i_tags_get_float(tags, name, code, value)
2066 Retrieves a tag as a floating point value.
2068 If the tag has a string value then that is parsed as a floating point
2069 number, otherwise the integer value of the tag is used.
2071 On success sets *I<value> and returns true.
2073 On failure returns false.
2079 =item i_tags_get_int(tags, name, code, &value)
2082 Retrieve a tag specified by name or code as an integer.
2084 On success sets the int *I<value> to the integer and returns true.
2086 On failure returns false.
2092 =item i_tags_get_string(tags, name, code, value, value_size)
2095 Retrieves a tag by name or code as a string.
2097 On success copies the string to value for a max of value_size and
2100 On failure returns false.
2102 value_size must be at least large enough for a string representation
2105 The copied value is always C<NUL> terminated.
2111 =item i_tags_new(i_img_tags *tags)
2114 Initialize a tags structure. Should not be used if the tags structure
2115 has been previously used.
2117 This should be called tags member of an i_img object on creation (in
2118 i_img_*_new() functions).
2120 To destroy the contents use i_tags_destroy()
2126 =item i_tags_set(tags, name, data, size)
2128 i_tags_set(&img->tags, "i_comment", -1);
2130 Sets the given tag to the string I<data>
2132 If size is -1 then the strlen(I<data>) bytes are stored.
2134 Even on failure, if an existing tag I<name> exists, it will be
2141 =item i_tags_set_color(tags, name, code, &value)
2144 Stores the given color as a tag with the given name and code.
2150 =item i_tags_set_float(tags, name, code, value)
2153 Equivalent to i_tags_set_float2(tags, name, code, value, 30).
2159 =item i_tags_set_float2(tags, name, code, value, places)
2162 Sets the tag with the given name and code to the given floating point
2165 Since tags are strings or ints, we convert the value to a string before
2166 storage at the precision specified by C<places>.
2172 =item i_tags_setn(C<tags>, C<name>, C<idata>)
2174 i_tags_setn(&img->tags, "i_xres", 204);
2175 i_tags_setn(&img->tags, "i_yres", 196);
2177 Sets the given tag to the integer C<idata>
2179 Even on failure, if an existing tag C<name> exists, it will be
2189 =head2 Uncategorized functions
2193 =item i_utf8_advance(char **p, size_t *len)
2195 Retrieve a C<UTF-8> character from the stream.
2197 Modifies *p and *len to indicate the consumed characters.
2199 This doesn't support the extended C<UTF-8> encoding used by later
2200 versions of Perl. Since this is typically used to implement text
2201 output by font drivers, the strings supplied shouldn't have such out
2202 of range characters.
2204 This doesn't check that the C<UTF-8> character is using the shortest
2205 possible representation.
2207 Returns ~0UL on failure.
2213 =item im_errors(ctx)
2215 i_errmsg *errors = im_errors(aIMCTX);
2216 i_errmsg *errors = i_errors();
2218 Returns a pointer to the first element of an array of error messages,
2219 terminated by a NULL pointer. The highest level message is first.
2221 Also callable as C<i_errors()>.
2227 =item im_get_context()
2229 Retrieve the context object for the current thread.
2231 Inside Imager itself this is just a function pointer, which the
2232 F<Imager.xs> BOOT handler initializes for use within perl. If you're
2233 taking the Imager code and embedding it elsewhere you need to
2234 initialize the C<im_get_context> pointer at some point.
2247 The following API functions are undocumented so far, hopefully this
2254 B<im_context_refdec>
2258 B<im_context_refinc>
2279 Tony Cook <tonyc@cpan.org>
2283 Imager, Imager::API, Imager::ExtUtils, Imager::Inline