3

h                 @   s   d dl Z ddlmZmZ ddlmZ dd#d$d%d&d'd(d)d*d+d,d-d.d/iZdd ZG d d! d!ejZ	ej
e	je	e eje	jd" dS )0    N   )Image	ImageFile)i32lei  AL      RGBALA       RGBYCC;P     YCCA;P            c             C   s   | d d t jkS )N   )olefileMAGIC)prefix r"   R/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/FpxImagePlugin.py_accept*   s    r$   c               @   s8   e Zd ZdZdZdd ZdddZdd	d
Zdd ZdS )FpxImageFileZFPXZFlashPixc             C   sd   yt j| j| _W n, tk
r> } ztd|W Y d d }~X nX | jjjdkrVtd| 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OSErrorSyntaxErrorrootZclsid_open_index)selfer"   r"   r#   _open7   s    zFpxImageFile._openr   c       	      C   s"  | j jd|ddg}|d |d f| _t| j}d}x|dkrT|d }|d7 }q:W |d | _| jd	> }|d
|B  }g }t|d}|dkrtdx,t|D ] }|j	t|d|d  d@  qW t
t| \| _| _i | _x2tdD ]&}d|d	> B }||kr|| | j|< qW | jd| j d S )NzData Object Store 06dzImage Contentsi  i  r   @         i     zInvalid number of bandsr   i   i  )r'   Zgetproperties_sizemaxsizeZmaxidi32r(   rangeappendMODEStuplemoderawmodejpeg_open_subimage)	r,   indexpropr7   iidscolorsZbandsr"   r"   r#   r+   F   s0    




 zFpxImageFile._open_indexr   c          	   C   sB  d|d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rtd|jd|  |jt|d|	 }d }
}|\}}|\}}g | _xftdt	||	D ]P}t||d	 }|dkr,| jj
d|
||
| || ft||d | jf n|dkrt| jj
d|
||
| || ft||d | j|dd
 ff n|dkr|d }|d }| j}|r|dkrd\}}nd }n|}| jj
d|
||
| || ft||d ||ff |r| j| | _ntd|
| }
|
|krd||  }
}||krP qW || _d | _d S )NzData Object Store r/   zResolution Z04dzSubimage 0000 Header   $   r3   r   r2          zsubimage mismatch   r   rawr   fillr1         r   YCbCrKCMYKr?   zunknown/invalid compression)rP   rQ   )r'   
openstreamreadr8   r7   r(   seekZtiler9   lenr:   r>   r?   Ztile_prefixstreamr&   )r,   rA   ZsubimagerV   r&   rE   r7   ZtilesizeoffsetlengthxyZxsizeZysizeZxtileZytilerC   compressionZinternal_color_conversionZjpeg_tablesr>   Zjpegmoder"   r"   r#   r@   v   sp    











zFpxImageFile._open_subimagec             C   s0   | j s$| jj| jd d dg | _ tjj| S )Nr1   zSubimage 0000 Data)r&   r'   rR   rV   r   load)r,   r"   r"   r#   r\      s    zFpxImageFile.loadN)r   )r   r   )	__name__
__module____qualname__formatformat_descriptionr.   r+   r@   r\   r"   r"   r"   r#   r%   2   s   
0
nr%   z.fpx)r   r   )r   )r   r   )r	   r
   )r   r   )r   r   r   )r   r   )r   r   r   r   )r   r   )r   r   r   )r   r   )r   r   r   r   )r   r   )r    r   r   _binaryr   r8   r;   r$   r%   Zregister_openr`   Zregister_extensionr"   r"   r"   r#   <module>   s    ?