î
hÐR\ê  ã               @   s×   d  d l  m Z d d l m Z m Z d d l m Z m Z d  d l	 Z	 d Z
 i d% d	 6d& d' 6d( d) 6d* d+ 6d, d- 6d. d/ 6d0 d1 6Z d  d! „  Z Gd" d# „  d# e j ƒ Z e j e j e e ƒ e j e j d$ ƒ d S)2é    )Úprint_functioné   )ÚImageÚ	ImageFile)Úi32leÚi8Nz0.1ÚAÚLiþ  é   ÚRGBAÚLAé € éþ ÚRGBúYCC;Pé   é  é  úYCCA;Pé € é€ é€ éþ é   é  é  é € é€ é€ éþ c             C   s   |  d  d … t  j k S)Né   )ÚolefileÚMAGIC)Úprefix© r$   úG/var/www/dbchiro/venv/lib/python3.4/site-packages/PIL/FpxImagePlugin.pyÚ_accept.   s    r&   c               @   sU   e  Z d  Z d Z d Z d d „  Z d d d „ Z d d d	 d
 „ Z d d „  Z d S)ÚFpxImageFileZFPXZFlashPixc             C   so   y t  j |  j ƒ |  _ Wn t k
 r9 t d ƒ ‚ Yn X|  j j j d k r^ t d ƒ ‚ n  |  j d ƒ d  S)Nz!not an FPX file; invalid OLE filez$56616700-C154-11CE-8553-00AA00A1F95Bznot an FPX file; bad root CLSIDr   )	r!   Z	OleFileIOÚfpÚoleÚIOErrorÚSyntaxErrorÚrootZclsidÚ_open_index)Úselfr$   r$   r%   Ú_open:   s    zFpxImageFile._openr   c             C   s`  |  j  j d | d g ƒ } | d | d f |  _ t |  j ƒ } d } x$ | d k rn | d } | d 7} qK W| d |  _ |  j d >} | d	 | B} g  } x? t t | d
 ƒ ƒ D]( } | j t | d | d
 ƒ d @ƒ q³ Wt t	 | ƒ \ |  _
 |  _ i  |  _ xB t d ƒ D]4 } d | d >B} | | k r| | |  j | <qqW|  j d |  j ƒ d  S)NzData Object Store %06dzImage Contentsi  i  r   é@   é   é   i  é   r    iÿÿÿé   i  )r)   ZgetpropertiesÚsizeÚmaxZmaxidÚrangeÚi32ÚappendÚMODESÚtupleÚmodeÚrawmodeÚjpegÚ_open_subimage)r.   ÚindexÚpropr5   ÚiÚidÚsZcolorsr$   r$   r%   r-   I   s,    	
&	zFpxImageFile._open_indexr   c          	   C   s  d | d | d g } |  j  j | ƒ } | j d ƒ | j d ƒ } t | d ƒ t | d ƒ f } t | d ƒ t | d	 ƒ f } t | d ƒ } t | d
 ƒ }	 | |  j k r½ t d ƒ ‚ n  | j d | ƒ | j t | d ƒ |	 ƒ } d }
 } | \ } } | \ } } g  |  _ xët d t	 | ƒ |	 ƒ D]Ñ} t | | d ƒ } | d k r–|  j j
 d |
 | |
 | | | f t | | ƒ d |  j f ƒ n/| d k rõ|  j j
 d |
 | |
 | | | f t | | ƒ d |  j | d d … f f ƒ nÐ | d k r¹t | d ƒ } t | d ƒ } |  j } | rT| d k rKd \ } } qZd  } n | } |  j j
 d |
 | |
 | | | f t | | ƒ d | | f f ƒ | rÅ|  j | |  _ qÅn t d ƒ ‚ |
 | }
 |
 | k r.d | | }
 } | | k rÿPqÿq.q.W| |  _ d  |  _ d  S)NzData Object Store %06dzResolution %04dzSubimage 0000 Headeré   é$   r3   r    r2   é   é    zsubimage mismatché   r   Úrawr   Úfillr1   é   é   r   ÚYCbCrKÚCMYKr>   zunknown/invalid compression)rN   rO   )r)   Ú
openstreamÚreadr8   r5   r*   ÚseekZtiler7   Úlenr9   r=   r   r>   Ztile_prefixÚstreamr(   )r.   r@   ZsubimagerT   r(   rD   r5   ZtilesizeÚoffsetÚlengthÚxÚyZxsizeZysizeZxtileZytilerB   ÚcompressionZinternal_color_conversionZjpeg_tablesr=   Zjpegmoder$   r$   r%   r?   y   s^    	
	# #0		# 
	zFpxImageFile._open_subimagec             C   sE   |  j  s5 |  j j |  j d  d … d g ƒ |  _  n  t j j |  ƒ S)Nr1   zSubimage 0000 Data)r(   r)   rP   rT   r   Úload)r.   r$   r$   r%   rZ   ×   s    	zFpxImageFile.loadN)	Ú__name__Ú
__module__Ú__qualname__ÚformatZformat_descriptionr/   r-   r?   rZ   r$   r$   r$   r%   r'   5   s   0^r'   z.fpx)r   r	   )r	   r	   )r
   )úRGBAr   )r   r   )r   r   )r   r   r   )r_   r   )r   r   r   r   )r   r   )r   r   r   )r_   r_   )r   r   r   r   )Ú
__future__r   Ú r   r   Z_binaryr   r8   r   r!   Ú__version__r:   r&   r'   Zregister_openr^   Zregister_extensionr$   r$   r$   r%   Ú<module>   s    
­