î
úÙ X³  ã               @   sÇ   d  d l  m Z m Z d  d l m Z m Z m Z m Z d Z i d# d 6d$ d% 6d& d' 6d( d) 6d* d+ 6d, d- 6d. d/ 6Z	 d d „  Z
 Gd d  „  d  e j ƒ Z e j e j e e
 ƒ e j e j d! ƒ d" S)0é    )ÚImageÚ	ImageFile)Úi8Úi32ÚMAGICÚ	OleFileIOz0.1ÚAÚLiþ  é   ÚRGBAÚLAé € éþ ÚRGBúYCC;Pé   é  é  úYCCA;Pé € é€ é€ éþ é   é  é  é € é€ é€ éþ c             C   s   |  d  d … t  k S)Né   )r   )Úprefix© r"   úO/home/ubuntu/projects/ifolica/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   sl   y t  |  j ƒ |  _ Wn t k
 r6 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 CLSIDé   )r   ÚfpÚoleÚIOErrorÚSyntaxErrorÚrootZclsidÚ_open_index)Úselfr"   r"   r#   Ú_open8   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Úranger   ÚappendÚMODESÚtupleÚmodeÚrawmodeÚjpegÚ_open_subimage)r-   ÚindexÚpropr4   ÚiÚidÚsZcolorsr"   r"   r#   r,   G   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é   é$   r2   r    r1   é   é    zsubimage mismatché   r   Úrawr&   Úfillr0   é   é   r   ÚYCbCrKÚCMYKr<   zunknown/invalid compression)rL   rM   )r(   Ú
openstreamÚreadr   r4   r)   ÚseekZtiler6   Úlenr7   r;   r   r<   Ztile_prefixÚstreamr'   )r-   r>   ZsubimagerR   r'   rB   r4   ZtilesizeÚoffsetÚlengthÚxÚyZxsizeZysizeZxtileZytiler@   ÚcompressionZinternal_color_conversionZjpeg_tablesr;   Zjpegmoder"   r"   r#   r=   w   s^    	
	# #0		# 
	zFpxImageFile._open_subimagec             C   sE   |  j  s5 |  j j |  j d  d … d g ƒ |  _  n  t j j |  ƒ S)Nr0   zSubimage 0000 Data)r'   r(   rN   rR   r   Úload)r-   r"   r"   r#   rX   Õ   s    	zFpxImageFile.loadN)	Ú__name__Ú
__module__Ú__qualname__ÚformatZformat_descriptionr.   r,   r=   rX   r"   r"   r"   r#   r%   3   s   0^r%   z.fpxN)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   )ZPILr   r   ZPIL.OleFileIOr   r   r   r   Ú__version__r8   r$   r%   Zregister_openr\   Zregister_extensionr"   r"   r"   r#   Ú<module>   s   "
­