B .^@sxddlZddlmZmZddlmZmZddddd d d d Zd dZ GdddejZ e e j e e e e j ddS)N)Image ImageFile)i8i32le)AL)rr)RGBAZLA)RGBzYCC;P)r zYCCA;P)r r )r r )i)i)ii)iii)iiii)iii)iiiicCs|ddtjkS)N)olefileMAGIC)prefixr6/tmp/pip-install-mwhup7aw/Pillow/PIL/FpxImagePlugin.py_accept*src@s8eZdZdZdZddZdddZdd d Zd d Zd S) FpxImageFileZFPXZFlashPixcCsTyt|j|_Wntk r.tdYnX|jjjdkrFtd|ddS)Nz!not an FPX file; invalid OLE filez$56616700-C154-11CE-8553-00AA00A1F95Bznot an FPX file; bad root CLSIDr) r Z OleFileIOfpoleOSError SyntaxErrorrootZclsid _open_index)selfrrr_open7szFpxImageFile._openrc Cs|jd|dg}|d|df|_t|j}d}x|dkrP|d}|d7}q6W|d|_|jd>}|d |B}g}t|d }|d krtd x,t|D] }| t|d |d d @qWt t |\|_ |_ i|_x2tdD]&}d|d>B}||kr|||j|<qW|d|jdS)NzData Object Store %06dzImage Contentsiir@izInvalid number of bandsr ii)rZ getproperties_sizemaxsizeZmaxidi32IOErrorrangeappendMODEStuplemoderawmodejpeg_open_subimage) rindexpropr"iidscolorsZbandsrrrrFs0         zFpxImageFile._open_indexrc CsBd|d|dg}|j|}|d|d}t|dt|df}t|dt|d f}t|d}t|d } ||jkrtd |d||t|d | }d } } |\} } |\}}g|_xntd t || D]X}t||d}|d kr$|j d| | | || |ft||d|j fn|dkrl|j d| | | || |ft||d|j |d dffn|dkrt |d}t |d}|j }|r|dkrd\}}nd}n|}|j d| | | || |ft||d||ff|r|j ||_ntd| |} | | krd | |} } | | krPqW||_d|_dS)NzData Object Store %06dzResolution %04dzSubimage 0000 Header$rr r zsubimage mismatch rrawrfillrr )ZYCbCrKZCMYKr+zunknown/invalid compression)r openstreamreadr#r"rseekZtiler%lenr&r*rr+Z tile_prefixstreamr)rr-Zsubimager@rr1r"ZtilesizeoffsetlengthxyZxsizeZysizeZxtileZytiler/ compressionZinternal_color_conversionZ jpeg_tablesr*Zjpegmoderrrr,vsp                  zFpxImageFile._open_subimagecCs0|js$|j|jdddg|_tj|S)NrzSubimage 0000 Data)rrr<r@rload)rrrrrFszFpxImageFile.loadN)r)rr) __name__ __module__ __qualname__formatformat_descriptionrrr,rFrrrrr2s  0 nrz.fpx)r rr_binaryrrr#r'rrZ register_openrJZregister_extensionrrrrs?