X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=images%2Fio-main.h;h=a048b67f455c5c329dec4dba61b2bfc699bde496;hb=1481eca416a467e9952dbc5e4852afe66eaf1256;hp=ed4f8537b6f5671dd0cc2daf1b1eece40a64751b;hpb=15e6c8cf18dfb462eebc2875398e58f25e067acc;p=libucw.git diff --git a/images/io-main.h b/images/io-main.h index ed4f8537..a048b67f 100644 --- a/images/io-main.h +++ b/images/io-main.h @@ -1,72 +1,55 @@ #ifndef _IMAGES_IO_MAIN_H #define _IMAGES_IO_MAIN_H +#ifdef CONFIG_UCW_CLEAN_ABI +#define image_io_read_data_break ucw_image_io_read_data_break +#define image_io_read_data_finish ucw_image_io_read_data_finish +#define image_io_read_data_prepare ucw_image_io_read_data_prepare +#define libjpeg_read_data ucw_libjpeg_read_data +#define libjpeg_read_header ucw_libjpeg_read_header +#define libjpeg_write ucw_libjpeg_write +#define libmagick_cleanup ucw_libmagick_cleanup +#define libmagick_init ucw_libmagick_init +#define libmagick_read_data ucw_libmagick_read_data +#define libmagick_read_header ucw_libmagick_read_header +#define libmagick_write ucw_libmagick_write +#define libpng_read_data ucw_libpng_read_data +#define libpng_read_header ucw_libpng_read_header +#define libpng_write ucw_libpng_write +#define libungif_read_data ucw_libungif_read_data +#define libungif_read_header ucw_libungif_read_header +#endif + +static inline int libjpeg_init(struct image_io *io UNUSED) { return 1; } +static inline void libjpeg_cleanup(struct image_io *io UNUSED) {} int libjpeg_read_header(struct image_io *io); int libjpeg_read_data(struct image_io *io); int libjpeg_write(struct image_io *io); +static inline int libpng_init(struct image_io *io UNUSED) { return 1; } +static inline void libpng_cleanup(struct image_io *io UNUSED) {} int libpng_read_header(struct image_io *io); int libpng_read_data(struct image_io *io); int libpng_write(struct image_io *io); +static inline int libungif_init(struct image_io *io UNUSED) { return 1; } +static inline void libungif_cleanup(struct image_io *io UNUSED) {} int libungif_read_header(struct image_io *io); int libungif_read_data(struct image_io *io); +int libmagick_init(struct image_io *io); +void libmagick_cleanup(struct image_io *io); int libmagick_read_header(struct image_io *io); int libmagick_read_data(struct image_io *io); int libmagick_write(struct image_io *io); struct image_io_read_data_internals { struct image *image; - int need_scale; - int need_destroy; + int need_transformations; }; -static inline struct image * -image_io_read_data_prepare(struct image_io_read_data_internals *rdi, struct image_io *io, uns cols, uns rows) -{ - rdi->need_scale = io->cols != cols | io->rows != rows; - rdi->need_destroy = rdi->need_scale || !io->pool; - return rdi->image = rdi->need_scale ? - image_new(io->thread, cols, rows, io->flags & IMAGE_CHANNELS_FORMAT, NULL) : - image_new(io->thread, io->cols, io->rows, io->flags & IMAGE_IO_IMAGE_FLAGS, io->pool); -} - -static inline int -image_io_read_data_finish(struct image_io_read_data_internals *rdi, struct image_io *io) -{ - if (rdi->need_scale) - { - struct image *img = image_new(io->thread, io->cols, io->rows, io->flags & IMAGE_IO_IMAGE_FLAGS, io->pool); - if (unlikely(!img)) - { - if (rdi->need_destroy) - image_destroy(rdi->image); - return 0; - } - if (unlikely(!image_scale(io->thread, img, rdi->image))) - { - image_destroy(rdi->image); - if (!io->pool) - image_destroy(img); - return 0; - } - io->image = img; - io->image_destroy = !io->pool; - } - else - { - io->image = rdi->image; - io->image_destroy = rdi->need_destroy; - } - return 1; -} - -static inline void -image_io_read_data_break(struct image_io_read_data_internals *rdi, struct image_io *io UNUSED) -{ - if (rdi->need_destroy) - image_destroy(rdi->image); -} +struct image *image_io_read_data_prepare(struct image_io_read_data_internals *rdi, struct image_io *io, uint cols, uint rows, uint flags); +int image_io_read_data_finish(struct image_io_read_data_internals *rdi, struct image_io *io); +void image_io_read_data_break(struct image_io_read_data_internals *rdi, struct image_io *io); #endif