<[c@sddlmZmZddlZddlZddlZdZdZdZdejfdYZ d Z d Z ej e j e e eje j e eje j d d d dddgeje j deje j ddS(i(tImaget ImageFileiNs0.1c Cst|jd}tjd|d}||j|d}tjd|\ }}}}}}} } } } } dg| }dg| }dg| }xFt| D]8}tjd|dd|\||<||<||His >HHIIIIIIIIHs>BBBi$iiiisI;16tLtLAtRGBitRGBAN(treadtstructtunpackt unpack_fromtNonetrange(tfpthdrtlsiztsiztrsiztxsiztysiztxosiztyosiztxtsiztytsiztxtosiztytosiztcsiztssiztxrsiztyrsiztitsizetmode((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyt_parse_codestreams,3   6         cCsd}xtrtjd|jd\}}|dkrdtjd|jdd}d}nd}||krtdn|dkr|j||}Pq |j||tjq W|dkrtd nd}d}d}d}t j |} xtrtjd| jd\}}|dkrctjd| jdd}d}nd}| j||} |d krAtjd | \} } }}} }}| | f}|r|dkr|d @dkrd }nT|dkrd}n?|dkrd}n*|dkr%d}n|dkr:d}nPqq|dkrtj d| \}}}|dkrtj d| dd}|dkr|dkr|d @dkrd }n?|dkrd}n*|dkrd}n|dkrd}nPq|dkr`|dkr2|d @dkr2d }n*|dkrGd}n|dkr\d}nPq|dkr|dkrd}n|dkrd}nPqqqqW|dks|dkrtdn||fS(s~Parse the JP2 header box to extract size, component count and color space information, returning a PIL (size, mode) tuple.s>I4siis>QiisInvalid JP2 header lengthtjp2hscould not find JP2 headertihdrs>IIHBBBBisI;16RiRiRiRtcolrs>BBBs>IiisMalformed jp2 headerN( R tTrueRRRt SyntaxErrortseektostSEEK_CURtiotBytesIOR (R theadertlboxttboxthlenRRtbpctncthiotcontenttheighttwidthtctunkctiprtmethtprectapproxtcs((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyt_parse_jp2_header:s !      !   '                               tJpeg2KImageFilecBs&eZdZdZdZdZRS(tJPEG2000sJPEG 2000 (ISO 15444)cCs|jjd}|dkrEd|_t|j\|_|_nU||jjd}|dkrd|_t|j\|_|_n td|jdks|jdkrtdnd |_ d |_ d }d }y%|jj }t j|j}Wned }yH|jj}|jjd d |jj}|jj|d Wqrd }qrXnXd d |jd |j|j |j ||ffg|_dS(NisOQtj2kis jP tjp2snot a JPEG 2000 filesunable to determine size/modeiiitjpeg2k(ii(R RtcodecR t_sizeRR<R%RR treducetlayerstfilenoR'tfstattst_sizettellR&ttile(tselftsigtfdtlengthtpos((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyt_opens:       cCs|jr\d|j>}|d?}t|jd||t|jd||f|_n|jr|jd}|dd|j|j|dd|ddf}|dd|j|d|fg|_ntjj|S(Niiiii(ii(RDtintRRCRJRERtload(RKtpowertadjusttttt3((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyRRs   $  3*(t__name__t __module__tformattformat_descriptionRPRR(((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyR=s 'cCs|d dkp|d dkS(NisOQi s jP ((tprefix((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyt_acceptsc Cs|jdrd}nd}|j}|jdd}|jdd}|jdd}|jdd}|jd d} |jd d } |jd d} |jd d} |jdt} |jdd}|jdd}d}t|dr%y|j}Wq%d}q%Xn||||| | | | | |||f |_tj ||dd|j d |fgdS(Ns.j2kR?R@toffsett tile_offsett tile_sizet quality_modetratestquality_layerstnum_resolutionsitcodeblock_sizet precinct_sizet irreversiblet progressiontLRCPt cinema_modetnoiRFRA(ii( tendswitht encoderinfotgetR tFalsethasattrRFt encoderconfigRt_saveR(timR tfilenametkindtinfoR]R^R_R`RbRct cblk_sizeReRfRgRiRM((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyRqsD    s.jp2s.j2ks.jpcs.jpfs.jpxs.j2cs image/jp2s image/jpx(tRRRR'R)t __version__R R<R=R\Rqt register_openRYt register_savetregister_extensionst register_mime(((s5/tmp/pip-build-SKekGm/pillow/PIL/Jpeg2KImagePlugin.pyts    # `;  1