fz_pixmap * fz_load_jxr(fz_context *ctx, unsigned char *data, size_t size) { struct info info = { 0 }; fz_pixmap *image = NULL; fz_var(image); jxr_read_image(ctx, data, size, &info, 0); image = fz_new_pixmap(ctx, info.cspace, info.width, info.height, NULL, 1); image->xres = info.xres; image->yres = info.yres; fz_try(ctx) { fz_unpack_tile(ctx, image, info.samples, fz_colorspace_n(ctx, info.cspace) + 1, 8, info.stride, 0); if (info.has_alpha && !info.has_premul) fz_premultiply_pixmap(ctx, image); } fz_always(ctx) { fz_free(ctx, info.samples); fz_drop_colorspace(ctx, info.cspace); } fz_catch(ctx) { fz_drop_pixmap(ctx, image); fz_rethrow(ctx); } return image; }
void fz_load_jxr_info(fz_context *ctx, const unsigned char *data, size_t size, int *wp, int *hp, int *xresp, int *yresp, fz_colorspace **cspacep) { struct info info = { 0 }; jxr_read_image(ctx, data, size, &info, 1); *cspacep = fz_keep_colorspace(ctx, info.cspace); /* info.cspace is a borrowed device colorspace */ *wp = info.width; *hp = info.height; *xresp = info.xres; *yresp = info.yres; }
void fz_load_jxr_info(fz_context *ctx, unsigned char *data, size_t size, int *wp, int *hp, int *xresp, int *yresp, fz_colorspace **cspacep) { struct info info = { 0 }; jxr_read_image(ctx, data, size, &info, 1); *xresp = info.xres; *yresp = info.yres; *wp = info.width; *hp = info.height; *cspacep = info.cspace; }