B .^1*@sddlZddlZddlmZmZmZddlmZdZdZ dZ dZ d Z d Z d Zd Zd Zede de de de de dedededi ZddddddddddddddddddddddZx4d D],Zd!d"efed#e<d!d"efed$e<qWxsz%ImImageFile._open..)r r r )rr-r-zPA;LzRGB;Lr cSsg|] }t|qSr)r)r.r/rrrr0szF;) bit)rrr1)zRGB;TzRYB;Traw)Grr')Rrr')Brr')+fpread SyntaxErrorseekinfoMODESIZEFRAMESrawmodereadlinelensplitmatchreerrorgroupdecodeSCALEr(tuplemaprOPENCOMMENTappendTAGS_sizemodeLUTrangerZlutrr6paletteframetell_ImImageFile__offset_ImImageFile__fprsizetiler) selfnrmkvrVZ greyscaleZlinearioffsbitsr[rrr_open|s                    0          zImImageFile._opencCs |jtS)N)r>rA)r]rrrn_framesszImImageFile.n_framescCs|jtdkS)Nr)r>rA)r]rrr is_animatedszImImageFile.is_animatedcCs||sdS||_|jdkr$d}ndt|j}|jd|dd|jd}|j||}|j|_dd|j||jddffg|_ dS) Nr rr1rr6)rrr') Z _seek_checkrWrSrDr[rYrZr:rBr\)r]rWrdr[rcrrrr=s   zImImageFile.seekcCs|jS)N)rW)r]rrrrX.szImImageFile.tellcCsBz4y|j|jkr|jWntk r0YnXWdd|_XdS)N)rZr:closeAttributeError)r]rrr _close__fp1s   zImImageFile._close__fpN) __name__ __module__ __qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrepropertyrfrgr=rXrkrrrrr vs  r )z0 1r ) Greyscaler )rrr )zL 32SzI;32S)zL 16zI;16)zL 16LzI;16L)zL 16BzI;16B)zL 32FzF;32F)ZYCCzYCbCr;L)r r rr r-rzI;16zI;16LzI;16Brr rrrrc CsFyt|j\}}Wn"tk r4td|jYnX|jdd}|d|d|rtj tj |\}}d |ddt ||g}|d|d|d |jd|d |d|jd kr|d |d d|d|jd kr||jddt||dd|jd|ddffgdS)NzCannot save %s images as IMframesrzImage type: %s image r+\z Name: %s zImage size (x*y): %d*%d zFile size (no of images): %d )r r-sLut: 1 r$ir%r zRGB;Lr6)rrrr')SAVErSKeyErrorrZ encoderinfogetwriteencodeospathsplitextbasenamejoinrDr[rXimZ getpaletter_save)rr:filenameZ image_typerBrsnameextrrrrTs$   rz.im)r{rGrtrrr_binaryrrOZDATEZ EQUIPMENTrArTNAMErKr@r?rQrNrbrUcompilerErr rvrZ register_openroZ register_saveZregister_extensionrrrrs      M"