X-Git-Url: http://git.imager.perl.org/imager.git/blobdiff_plain/a482206ee8b4a6d97081ef70ccd3c324461fbb55..d153c79b0beaa3dce3de341ee892c7ebf302360e:/imext.h diff --git a/imext.h b/imext.h index 2bb7a70b..bc7bae81 100644 --- a/imext.h +++ b/imext.h @@ -31,6 +31,8 @@ extern im_ext_funcs *imager_function_ext_table; #define im_extt imager_function_ext_table #define im_get_context() ((im_extt->f_im_get_context)()) +#define im_context_refinc(ctx, where) ((im_extt->f_im_context_refinc)((ctx), (where))) +#define im_context_refdec(ctx, where) ((im_extt->f_im_context_refdec)((ctx), (where))) #ifdef IMAGER_DEBUG_MALLOC @@ -60,43 +62,8 @@ extern im_ext_funcs *imager_function_ext_table; #define IMAGER_DIRECT_IMAGE_CALLS 1 #endif -#if IMAGER_DIRECT_IMAGE_CALLS -#define i_ppix(im, x, y, val) (((im)->i_f_ppix)((im), (x), (y), (val))) -#define i_gpix(im, x, y, val) (((im)->i_f_gpix)((im), (x), (y), (val))) -#define i_ppixf(im, x, y, val) (((im)->i_f_ppixf)((im), (x), (y), (val))) -#define i_gpixf(im, x, y, val) (((im)->i_f_gpixf)((im), (x), (y), (val))) -#define i_plin(im, l, r, y, val) (((im)->i_f_plin)(im, l, r, y, val)) -#define i_glin(im, l, r, y, val) (((im)->i_f_glin)(im, l, r, y, val)) -#define i_plinf(im, l, r, y, val) (((im)->i_f_plinf)(im, l, r, y, val)) -#define i_glinf(im, l, r, y, val) (((im)->i_f_glinf)(im, l, r, y, val)) +#if !IMAGER_DIRECT_IMAGE_CALLS -#define i_gsamp(im, l, r, y, samps, chans, count) \ - (((im)->i_f_gsamp)((im), (l), (r), (y), (samps), (chans), (count))) -#define i_gsampf(im, l, r, y, samps, chans, count) \ - (((im)->i_f_gsampf)((im), (l), (r), (y), (samps), (chans), (count))) - -#define i_findcolor(im, color, entry) \ - (((im)->i_f_findcolor) ? ((im)->i_f_findcolor)((im), (color), (entry)) : 0) - -#define i_gpal(im, l, r, y, vals) \ - (((im)->i_f_gpal) ? ((im)->i_f_gpal)((im), (l), (r), (y), (vals)) : 0) -#define i_ppal(im, l, r, y, vals) \ - (((im)->i_f_ppal) ? ((im)->i_f_ppal)((im), (l), (r), (y), (vals)) : 0) -#define i_addcolors(im, colors, count) \ - (((im)->i_f_addcolors) ? ((im)->i_f_addcolors)((im), (colors), (count)) : -1) -#define i_getcolors(im, index, color, count) \ - (((im)->i_f_getcolors) ? \ - ((im)->i_f_getcolors)((im), (index), (color), (count)) : 0) -#define i_setcolors(im, index, color, count) \ - (((im)->i_f_setcolors) ? \ - ((im)->i_f_setcolors)((im), (index), (color), (count)) : 0) -#define i_colorcount(im) \ - (((im)->i_f_colorcount) ? ((im)->i_f_colorcount)(im) : -1) -#define i_maxcolors(im) \ - (((im)->i_f_maxcolors) ? ((im)->i_f_maxcolors)(im) : -1) -#define i_findcolor(im, color, entry) \ - (((im)->i_f_findcolor) ? ((im)->i_f_findcolor)((im), (color), (entry)) : 0) -#else #define i_ppix(im, x, y, val) ((im_extt->f_i_ppix)((im), (x), (y), (val))) #define i_gpix(im, x, y, val) ((im_extt->f_i_gpix)((im), (x), (y), (val))) #define i_ppixf(im, x, y, val) ((im_extt->f_i_ppixf)((im), (x), (y), (val))) @@ -188,6 +155,11 @@ extern im_ext_funcs *imager_function_ext_table; #define i_flood_fill_border(im, seedx, seedy, dcol, border) ((im_extt->f_i_flood_fill_border)((im), (seedx), (seedy), (dcol), (border))) #define i_flood_cfill_border(im, seedx, seedy, fill, border) ((im_extt->f_i_flood_cfill_border)((im), (seedx), (seedy), (fill), (border))) +#define i_poly_aa_m(im, count, x, y, mode, c) ((im_extt->f_i_poly_aa_m)((im), (count), (x), (y), (mode), (c))) +#define i_poly_aa_cfill_m(im, count, x, y, mode, fill) ((im_extt->f_i_poly_aa_m)((im), (count), (x), (y), (mode), (fill))) +#define i_poly_poly_aa(im, count, polys, mode, c) ((im_extt->f_i_poly_poly_aa)((im), (count), (polys), (mode), (c))) +#define i_poly_poly_aa_cfill(im, count, polys, mode, fill) ((im_extt->f_i_poly_poly_aa_cfill)((im), (count), (polys), (mode), (fill))) + #define i_copyto(im, src, x1, y1, x2, y2, tx, ty) \ ((im_extt->f_i_copyto)((im), (src), (x1), (y1), (x2), (y2), (tx), (ty))) #define i_copyto_trans(im, src, x1, y1, x2, y2, tx, ty, trans) \ @@ -210,6 +182,8 @@ extern im_ext_funcs *imager_function_ext_table; #define i_img_get_height(img) ((im_extt->f_i_img_get_height)(img)) #define i_lhead(file, line) ((im_extt->f_i_lhead)((file), (line))) #define i_loog (im_extt->f_i_loog) +#define im_lhead(ctx, file, line) ((im_extt->f_im_lhead)((ctx), (file), (line))) +#define im_loog (im_extt->f_im_loog) #define im_img_alloc(ctx) ((im_extt->f_im_img_alloc)(ctx)) #define im_img_init(ctx, img) ((im_extt->fm_i_img_init)((ctx), (img))) @@ -249,17 +223,37 @@ extern im_ext_funcs *imager_function_ext_table; #define i_io_close (im_extt->f_i_io_close) #define i_io_set_buffered (im_extt->f_i_io_set_buffered) #define i_io_gets (im_extt->f_i_io_gets) -#define io_new_fd(fd) ((im_extt->f_io_new_fd)(fd)) -#define io_new_bufchain() ((im_extt->f_io_new_bufchain)()) -#define io_new_buffer(data, len, closecb, closedata) \ - ((im_extt->f_io_new_buffer)((data), (len), (closecb), (closedata))) -#define io_new_cb(p, readcb, writecb, seekcb, closecb, destroycb) \ - ((im_extt->f_io_new_cb)((p), (readcb), (writecb), (seekcb), (closecb), (destroycb))) +#define im_io_new_fd(ctx, fd) ((im_extt->f_im_io_new_fd)(ctx, fd)) +#define im_io_new_bufchain(ctx) ((im_extt->f_im_io_new_bufchain)(ctx)) +#define im_io_new_buffer(ctx, data, len, closecb, closedata) \ + ((im_extt->f_im_io_new_buffer)((ctx), (data), (len), (closecb), (closedata))) +#define im_io_new_cb(ctx, p, readcb, writecb, seekcb, closecb, destroycb) \ + ((im_extt->f_im_io_new_cb)((ctx), (p), (readcb), (writecb), (seekcb), (closecb), (destroycb))) #define io_slurp(ig, datap) ((im_extt->f_io_slurp)((ig), (datap))) #define io_glue_destroy(ig) ((im_extt->f_io_glue_destroy)(ig)) +#define i_mutex_new() ((im_extt->f_i_mutex_new)()) +#define i_mutex_destroy(m) ((im_extt->f_i_mutex_destroy)(m)) +#define i_mutex_lock(m) ((im_extt->f_i_mutex_lock)(m)) +#define i_mutex_unlock(m) ((im_extt->f_i_mutex_unlock)(m)) + +#define im_context_slot_new(destructor) ((im_extt->f_im_context_slot_new)(destructor)) +#define im_context_slot_get(ctx, slot) ((im_extt->f_im_context_slot_get)((ctx), (slot))) +#define im_context_slot_set(ctx, slot, value) ((im_extt->f_im_context_slot_set)((ctx), (slot), (value))) + +#define im_push_errorf (im_extt->f_im_push_errorf) + +#define i_img_alpha_channel(im, channel) ((im_extt->f_i_img_alpha_channel)((im), (channel))) +#define i_img_color_model(im) ((im_extt->f_i_img_color_model)((im))) +#define i_img_color_channels(im) ((im_extt->f_i_img_color_channels)((im))) + +#define im_decode_exif(im, data, len) ((im_extt->f_im_decode_exif)((im), (data), (len))) + #ifdef IMAGER_LOG +#ifndef IMAGER_NO_CONTEXT #define mm_log(x) { i_lhead(__FILE__,__LINE__); i_loog x; } +#endif +#define im_log(x) { im_lhead(aIMCTX, __FILE__,__LINE__); im_loog x; } #else #define mm_log(x) #endif