78 #include <jasper/jas_config.h>    80 #include <jasper/jas_stream.h>    81 #include <jasper/jas_seq.h>    82 #include <jasper/jas_cm.h>    98 #define JAS_IMAGE_KIBI                  (JAS_CAST(size_t, 1024))    99 #define JAS_IMAGE_MEBI                  (JAS_IMAGE_KIBI * JAS_IMAGE_KIBI)   102 #define JAS_IMAGE_INMEMTHRESH   (256 * JAS_IMAGE_MEBI)   108 #define JAS_IMAGE_CT_UNKNOWN    0x10000   109 #define JAS_IMAGE_CT_COLOR(n)   ((n) & 0x7fff)   110 #define JAS_IMAGE_CT_OPACITY    0x08000   112 #define JAS_IMAGE_CT_RGB_R      0   113 #define JAS_IMAGE_CT_RGB_G      1   114 #define JAS_IMAGE_CT_RGB_B      2   116 #define JAS_IMAGE_CT_YCBCR_Y    0   117 #define JAS_IMAGE_CT_YCBCR_CB   1   118 #define JAS_IMAGE_CT_YCBCR_CR   2   120 #define JAS_IMAGE_CT_GRAY_Y     0   127 typedef int_fast32_t jas_image_coord_t;
   128 #define JAS_IMAGE_COORD_MAX INT_FAST32_MAX   129 #define JAS_IMAGE_COORD_MIN INT_FAST32_MIN   132 typedef int_fast16_t jas_image_colorspc_t;
   135 typedef int_fast32_t jas_image_cmpttype_t;
   138 typedef int_fast16_t jas_image_smpltype_t;
   148         jas_image_coord_t tlx_;
   151         jas_image_coord_t tly_;
   154         jas_image_coord_t hstep_;
   157         jas_image_coord_t vstep_;
   160         jas_image_coord_t width_;
   163         jas_image_coord_t height_;
   178         jas_stream_t *stream_;
   184         jas_image_cmpttype_t type_;
   193         jas_image_coord_t tlx_;
   196         jas_image_coord_t tly_;
   199         jas_image_coord_t brx_;
   203         jas_image_coord_t bry_;
   214         jas_image_cmpt_t **cmpts_;
   217         jas_clrspc_t clrspc_;
   219         jas_cmprof_t *cmprof_;
   231         jas_image_coord_t tlx;
   234         jas_image_coord_t tly;
   237         jas_image_coord_t hstep;
   240         jas_image_coord_t vstep;
   243         jas_image_coord_t width;
   246         jas_image_coord_t height;
   259 } jas_image_cmptparm_t;
   265 #define JAS_IMAGE_MAXFMTS       32   272         jas_image_t *(*decode)(jas_stream_t *in, 
const char *opts);
   275         int (*encode)(jas_image_t *image, jas_stream_t *out, 
const char *opts);
   278         int (*validate)(jas_stream_t *in);
   281 } jas_image_fmtops_t;
   299         jas_image_fmtops_t ops;
   302 } jas_image_fmtinfo_t;
   309 JAS_DLLEXPORT jas_image_t *jas_image_create(
int numcmpts,
   310   jas_image_cmptparm_t *cmptparms, jas_clrspc_t clrspc);
   313 JAS_DLLEXPORT jas_image_t *jas_image_create0(
void);
   316 JAS_DLLEXPORT jas_image_t *jas_image_copy(jas_image_t *image);
   319 JAS_DLLEXPORT 
void jas_image_destroy(jas_image_t *image);
   322 #define jas_image_width(image) \   323         ((image)->brx_ - (image)->tlx_)   326 #define jas_image_height(image) \   327         ((image)->bry_ - (image)->tly_)   331 #define jas_image_tlx(image) \   336 #define jas_image_tly(image) \   341 #define jas_image_brx(image) \   346 #define jas_image_bry(image) \   350 #define jas_image_numcmpts(image) \   354 #define jas_image_clrspc(image) \   358 #define jas_image_setclrspc(image, clrspc) \   359         ((image)->clrspc_ = (clrspc))   361 #define jas_image_cmpttype(image, cmptno) \   362         ((image)->cmpts_[(cmptno)]->type_)   363 #define jas_image_setcmpttype(image, cmptno, type) \   364         ((image)->cmpts_[(cmptno)]->type_ = (type))   367 #define jas_image_cmptwidth(image, cmptno) \   368         ((image)->cmpts_[cmptno]->width_)   371 #define jas_image_cmptheight(image, cmptno) \   372         ((image)->cmpts_[cmptno]->height_)   375 #define jas_image_cmptsgnd(image, cmptno) \   376         ((image)->cmpts_[cmptno]->sgnd_)   379 #define jas_image_cmptprec(image, cmptno) \   380         ((image)->cmpts_[cmptno]->prec_)   383 #define jas_image_cmpthstep(image, cmptno) \   384         ((image)->cmpts_[cmptno]->hstep_)   387 #define jas_image_cmptvstep(image, cmptno) \   388         ((image)->cmpts_[cmptno]->vstep_)   391 #define jas_image_cmpttlx(image, cmptno) \   392         ((image)->cmpts_[cmptno]->tlx_)   395 #define jas_image_cmpttly(image, cmptno) \   396         ((image)->cmpts_[cmptno]->tly_)   400 #define jas_image_cmptbrx(image, cmptno) \   401         ((image)->cmpts_[cmptno]->tlx_ + (image)->cmpts_[cmptno]->width_ * \   402           (image)->cmpts_[cmptno]->hstep_)   406 #define jas_image_cmptbry(image, cmptno) \   407         ((image)->cmpts_[cmptno]->tly_ + (image)->cmpts_[cmptno]->height_ * \   408           (image)->cmpts_[cmptno]->vstep_)   411 JAS_DLLEXPORT 
bool jas_image_cmpt_domains_same(jas_image_t *image);
   415 JAS_DLLEXPORT uint_fast32_t jas_image_rawsize(jas_image_t *image);
   418 JAS_DLLEXPORT jas_image_t *jas_image_decode(jas_stream_t *in, 
int fmt, 
const char *optstr);
   421 JAS_DLLEXPORT 
int jas_image_encode(jas_image_t *image, jas_stream_t *out, 
int fmt,
   427 JAS_DLLEXPORT 
int jas_image_readcmpt(jas_image_t *image, 
int cmptno, jas_image_coord_t x,
   428   jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height,
   432 JAS_DLLEXPORT 
int jas_image_writecmpt(jas_image_t *image, 
int cmptno, jas_image_coord_t x,
   433   jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height,
   437 JAS_DLLEXPORT 
void jas_image_delcmpt(jas_image_t *image, 
int cmptno);
   440 JAS_DLLEXPORT 
int jas_image_addcmpt(jas_image_t *image, 
int cmptno,
   441   jas_image_cmptparm_t *cmptparm);
   444 JAS_DLLEXPORT 
int jas_image_copycmpt(jas_image_t *dstimage, 
int dstcmptno,
   445   jas_image_t *srcimage, 
int srccmptno);
   447 #define JAS_IMAGE_CDT_GETSGND(dtype) (((dtype) >> 7) & 1)   448 #define JAS_IMAGE_CDT_SETSGND(dtype) (((dtype) & 1) << 7)   449 #define JAS_IMAGE_CDT_GETPREC(dtype) ((dtype) & 0x7f)   450 #define JAS_IMAGE_CDT_SETPREC(dtype) ((dtype) & 0x7f)   452 #define jas_image_cmptdtype(image, cmptno) \   453         (JAS_IMAGE_CDT_SETSGND((image)->cmpts_[cmptno]->sgnd_) | JAS_IMAGE_CDT_SETPREC((image)->cmpts_[cmptno]->prec_))   455 JAS_DLLEXPORT 
int jas_image_depalettize(jas_image_t *image, 
int cmptno, 
int numlutents,
   456   int_fast32_t *lutents, 
int dtype, 
int newcmptno);
   458 JAS_DLLEXPORT 
int jas_image_readcmptsample(jas_image_t *image, 
int cmptno, 
int x, 
int y);
   459 JAS_DLLEXPORT 
void jas_image_writecmptsample(jas_image_t *image, 
int cmptno, 
int x, 
int y,
   462 JAS_DLLEXPORT 
int jas_image_getcmptbytype(jas_image_t *image, 
int ctype);
   469 JAS_DLLEXPORT 
void jas_image_clearfmts(
void);
   472 JAS_DLLEXPORT 
int jas_image_addfmt(
int id, 
char *name, 
char *ext, 
char *desc,
   473   jas_image_fmtops_t *ops);
   476 JAS_DLLEXPORT 
int jas_image_strtofmt(
char *s);
   479 JAS_DLLEXPORT 
char *jas_image_fmttostr(
int fmt);
   482 JAS_DLLEXPORT jas_image_fmtinfo_t *jas_image_lookupfmtbyid(
int id);
   485 JAS_DLLEXPORT jas_image_fmtinfo_t *jas_image_lookupfmtbyname(
const char *name);
   488 JAS_DLLEXPORT 
int jas_image_fmtfromname(
char *filename);
   491 JAS_DLLEXPORT 
int jas_image_getfmt(jas_stream_t *in);
   494 #define jas_image_cmprof(image) ((image)->cmprof_)   495 int jas_image_ishomosamp(jas_image_t *image);
   496 int jas_image_sampcmpt(jas_image_t *image, 
int cmptno, 
int newcmptno,
   497   jas_image_coord_t ho, jas_image_coord_t vo, jas_image_coord_t hs,
   498   jas_image_coord_t vs, 
int sgnd, 
int prec);
   499 int jas_image_writecmpt2(jas_image_t *image, 
int cmptno, jas_image_coord_t x,
   500   jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height,
   502 int jas_image_readcmpt2(jas_image_t *image, 
int cmptno, jas_image_coord_t x,
   503   jas_image_coord_t y, jas_image_coord_t width, jas_image_coord_t height,
   506 #define jas_image_setcmprof(image, cmprof) ((image)->cmprof_ = cmprof)   507 JAS_DLLEXPORT jas_image_t *jas_image_chclrspc(jas_image_t *image, jas_cmprof_t *outprof,
   509 void jas_image_dump(jas_image_t *image, FILE *out);
   515 #if !defined(EXCLUDE_JPG_SUPPORT)   517 jas_image_t *jpg_decode(jas_stream_t *in, 
const char *optstr);
   518 int jpg_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   519 int jpg_validate(jas_stream_t *in);
   522 #if !defined(EXCLUDE_MIF_SUPPORT)   524 jas_image_t *mif_decode(jas_stream_t *in, 
const char *optstr);
   525 int mif_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   526 int mif_validate(jas_stream_t *in);
   529 #if !defined(EXCLUDE_PNM_SUPPORT)   531 jas_image_t *pnm_decode(jas_stream_t *in, 
const char *optstr);
   532 int pnm_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   533 int pnm_validate(jas_stream_t *in);
   536 #if !defined(EXCLUDE_RAS_SUPPORT)   538 jas_image_t *ras_decode(jas_stream_t *in, 
const char *optstr);
   539 int ras_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   540 int ras_validate(jas_stream_t *in);
   543 #if !defined(EXCLUDE_BMP_SUPPORT)   545 jas_image_t *bmp_decode(jas_stream_t *in, 
const char *optstr);
   546 int bmp_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   547 int bmp_validate(jas_stream_t *in);
   550 #if !defined(EXCLUDE_JP2_SUPPORT)   552 jas_image_t *jp2_decode(jas_stream_t *in, 
const char *optstr);
   553 int jp2_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   554 int jp2_validate(jas_stream_t *in);
   557 #if !defined(EXCLUDE_JPC_SUPPORT)   559 jas_image_t *jpc_decode(jas_stream_t *in, 
const char *optstr);
   560 int jpc_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   561 int jpc_validate(jas_stream_t *in);
   564 #if !defined(EXCLUDE_PGX_SUPPORT)   566 jas_image_t *pgx_decode(jas_stream_t *in, 
const char *optstr);
   567 int pgx_encode(jas_image_t *image, jas_stream_t *out, 
const char *optstr);
   568 int pgx_validate(jas_stream_t *in);