B ]B@sddlmZddlZddlmZmZddlmZmZ dZ ddd d d d d dZ ddZ GdddejZ ee je e ee jddS))print_functionN)Image ImageFile)i8i32lez0.1)AL)r r )RGBAZLA)RGBzYCC;P)r zYCCA;P)r r )r r )i)i)ii)iii)iiii)iii)iiiicCs|ddtjkS)N)olefileMAGIC)prefixr4/tmp/pip-build-ktz6qwqq/Pillow/PIL/FpxImagePlugin.py_accept1src@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 OleFileIOfpoleIOError SyntaxErrorrootZclsid _open_index)selfrrr_open>szFpxImageFile._openrcCs |jd|dg}|d|df|_t|j}d}x|dkrP|d}|d7}q6W|d|_|jd>}|d |B}g}x2tt|d D] }|t|d |d d @qWt t |\|_ |_ i|_ x2td D]&}d|d>B}||kr|||j |<qW|d|jdS)NzData Object Store %06dzImage Contentsiir@ir ii)rZ getproperties_sizemaxsizeZmaxidrangei32appendMODEStuplemoderawmodejpeg_open_subimage)rindexpropr#iidscolorsrrrrMs*        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,zsp                  zFpxImageFile._open_subimagecCs0|js$|j|jdddg|_tj|S)NrzSubimage 0000 Data)rrr<r@rload)rrrrrFszFpxImageFile.loadN)r)rr) __name__ __module__ __qualname__formatformat_descriptionrrr,rFrrrrr9s  - nrz.fpx) __future__rr rr_binaryrrr% __version__r'rrZ register_openrJZregister_extensionrrrrs <