77 #include "jasper/jas_image.h" 
   78 #include "jasper/jas_stream.h" 
   87 #define JPC_MAXRLVLS    33 
   90 #define JPC_MAXBANDS    (3 * JPC_MAXRLVLS + 1) 
   93 #define JPC_MAXLYRS     16384 
  104 #define JPC_CS_INIT     0 
  106 #define JPC_CS_MHDR     1 
  108 #define JPC_CS_THDR     2 
  110 #define JPC_CS_MTLR     3 
  112 #define JPC_CS_TDATA    4 
  129         uint_fast16_t numcomps;
 
  140         uint_fast16_t tileno;
 
  150         uint_fast8_t numparts;
 
  189         uint_fast32_t height;
 
  200         uint_fast32_t tilewidth;
 
  203         uint_fast32_t tileheight;
 
  207         uint_fast32_t tilexoff;
 
  211         uint_fast32_t tileyoff;
 
  214         uint_fast16_t numcomps;
 
  217         jpc_sizcomp_t *comps;
 
  230 #define JPC_COX_PRT     0x01 
  232 #define JPC_COD_SOP     0x02 
  234 #define JPC_COD_EPH     0x04 
  242 #define JPC_COD_LRCPPRG 0 
  245 #define JPC_COD_RLCPPRG 1 
  247 #define JPC_COD_RPCLPRG 2 
  249 #define JPC_COD_PCRLPRG 3 
  251 #define JPC_COD_CPRLPRG 4 
  257 #define JPC_COX_LAZY    0x01  
  258 #define JPC_COX_RESET   0x02  
  259 #define JPC_COX_TERMALL 0x04  
  260 #define JPC_COX_VSC             0x08  
  261 #define JPC_COX_PTERM   0x10  
  262 #define JPC_COX_SEGSYM  0x20  
  265 #define JPC_COX_INS     0x00  
  266 #define JPC_COX_RFT     0x01  
  269 #define JPC_COD_NOMCT   0x00  
  270 #define JPC_COD_MCT             0x01  
  273 #define JPC_COX_CBLKSIZEEXPN(x)         ((x) - 2) 
  275 #define JPC_COX_GETCBLKSIZEEXPN(x)      ((x) + 2) 
  282         uint_fast8_t parwidthval;
 
  285         uint_fast8_t parheightval;
 
  297         uint_fast8_t numdlvls;
 
  300         uint_fast8_t cblkwidthval;
 
  303         uint_fast8_t cblkheightval;
 
  306         uint_fast8_t cblksty;
 
  315         jpc_coxrlvl_t rlvls[JPC_MAXRLVLS];
 
  330         uint_fast16_t numlyrs;
 
  333         uint_fast8_t mctrans;
 
  336         jpc_coxcp_t compparms;
 
  345         uint_fast16_t compno;
 
  348         jpc_coxcp_t compparms;
 
  357 #define JPC_RGN_MAXSHIFT        0x00 
  362         uint_fast16_t compno;
 
  368         uint_fast8_t roishift;
 
  380 #define JPC_QCX_NOQNT   0  
  381 #define JPC_QCX_SIQNT   1  
  382 #define JPC_QCX_SEQNT   2  
  388 #define JPC_QCX_GETEXPN(x)      ((x) >> 11) 
  389 #define JPC_QCX_GETMANT(x)      ((x) & 0x07ff) 
  390 #define JPC_QCX_EXPN(x)         (assert(!((x) & (~0x1f))), (((x) & 0x1f) << 11)) 
  391 #define JPC_QCX_MANT(x)         (assert(!((x) & (~0x7ff))), ((x) & 0x7ff)) 
  404         uint_fast16_t *stepsizes;
 
  407         uint_fast8_t numguard;
 
  416         uint_fast16_t compno;
 
  419         jpc_qcxcp_t compparms;
 
  428         jpc_qcxcp_t compparms;
 
  443         uint_fast8_t rlvlnostart;
 
  447         uint_fast8_t rlvlnoend;
 
  451         uint_fast16_t compnostart;
 
  455         uint_fast16_t compnoend;
 
  459         uint_fast16_t lyrnoend;
 
  464 typedef jpc_pocpchg_t jpc_pchg_t;
 
  474         jpc_pocpchg_t *pchgs;
 
  520 #define JPC_COM_BIN             0x00 
  521 #define JPC_COM_LATIN   0x01 
  569         jpc_crgcomp_t *comps;
 
  621 #define JPC_MS_MIN      0xff00 
  624 #define JPC_MS_MAX      0xffff 
  627 #define JPC_MS_INMIN    0xff80 
  629 #define JPC_MS_INMAX    0xffff 
  632 #define JPC_MS_SOC      0xff4f  
  633 #define JPC_MS_SOT      0xff90  
  634 #define JPC_MS_SOD      0xff93  
  635 #define JPC_MS_EOC      0xffd9  
  638 #define JPC_MS_SIZ      0xff51  
  641 #define JPC_MS_COD      0xff52  
  642 #define JPC_MS_COC      0xff53  
  643 #define JPC_MS_RGN      0xff5e  
  644 #define JPC_MS_QCD      0xff5c  
  645 #define JPC_MS_QCC      0xff5d  
  646 #define JPC_MS_POC      0xff5f  
  649 #define JPC_MS_TLM      0xff55  
  650 #define JPC_MS_PLM      0xff57  
  651 #define JPC_MS_PLT      0xff58  
  652 #define JPC_MS_PPM      0xff60  
  653 #define JPC_MS_PPT      0xff61  
  656 #define JPC_MS_SOP      0xff91   
  657 #define JPC_MS_EPH      0xff92   
  660 #define JPC_MS_CRG      0xff63  
  661 #define JPC_MS_COM      0xff64  
  683         struct jpc_msops_s *ops;
 
  689 typedef struct jpc_msops_s {
 
  692         void (*destroyparms)(jpc_ms_t *ms);
 
  695         int (*getparms)(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *in);
 
  698         int (*putparms)(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *out);
 
  701         int (*dumpparms)(jpc_ms_t *ms, FILE *out);
 
  710 jpc_cstate_t *jpc_cstate_create(
void);
 
  713 void jpc_cstate_destroy(jpc_cstate_t *cstate);
 
  716 jpc_ms_t *jpc_ms_create(
int type);
 
  719 void jpc_ms_destroy(jpc_ms_t *ms);
 
  722 #define JPC_MS_HASPARMS(x) \ 
  723         (!((x) == JPC_MS_SOC || (x) == JPC_MS_SOD || (x) == JPC_MS_EOC || \ 
  724           (x) == JPC_MS_EPH || ((x) >= 0xff30 && (x) <= 0xff3f))) 
  727 #define jpc_ms_gettype(ms) \ 
  731 jpc_ms_t *jpc_getms(jas_stream_t *in, jpc_cstate_t *cstate);
 
  734 int jpc_putms(jas_stream_t *out, jpc_cstate_t *cstate, jpc_ms_t *ms);
 
  737 int jpc_getdata(jas_stream_t *in, jas_stream_t *out, 
long n);
 
  740 int jpc_putdata(jas_stream_t *out, jas_stream_t *in, 
long n);
 
  743 void jpc_ms_dump(jpc_ms_t *ms, FILE *out);
 
  746 int jpc_getuint8(jas_stream_t *in, uint_fast8_t *val);
 
  749 int jpc_getuint16(jas_stream_t *in, uint_fast16_t *val);
 
  752 int jpc_getuint32(jas_stream_t *in, uint_fast32_t *val);
 
  755 int jpc_putuint8(jas_stream_t *out, uint_fast8_t val);
 
  758 int jpc_putuint16(jas_stream_t *out, uint_fast16_t val);
 
  761 int jpc_putuint32(jas_stream_t *out, uint_fast32_t val);