3

h                 @   s   d dl Z ddlmZmZmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ ddd d!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dd Zdd Zejejee ejejd ejejd dS )0    N   )Image	ImageFileImagePalette)i8)i16be)i32be)si16be1   L   P   RGB   CMYK   	   LABc             C   s   | d d dkS )Nr   s   8BPS )prefixr   r   R/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/PsdImagePlugin.py_accept-   s    r   c               @   s@   e Zd ZdZdZdZdd Zdd Zdd	 Zd
d Z	dd Z
dS )PsdImageFileZPSDzAdobe PhotoshopFc             C   s,  | j j}|d}t| s(t|ddkr0tdt|d}t|d}t|d}t||f \}}||krntd|| _t|d	t|d
f| _	t|d}|r||}	|dkr|dkrt
jd|	| _g | _t|d}|r| j j | }
x| j j |
k r~|d t|d}|t|d}t|d@ s2|d |t|d}	t|	d@ rX|d | jj|||	f |dkr|	| jd< qW g | _t|d}|r| j j | }
t|d}|rtjtj| j |}t||| _| j j|
 t| j| _| jdk| _t| j |d| j || _| j | _d| _ d| _!d S )N   r   r   znot a PSD file         znot enough channels      r   i   zRGB;Lr   i  Zicc_profiler   )r   r   )"fpreadr   i16SyntaxErrorMODESOSErrormodei32_sizer   rawZpalette	resourcestellr   lenappendinfolayersioBytesIOr   
_safe_read
_layerinfoseekZn_framesZis_animated	_maketilesizetile_PsdImageFile__fpframeZ
_min_frame)selfr"   sZpsd_bitsZpsd_channelsZpsd_moder'   channelsr7   dataendidnameZ_layer_datar   r   r   _open;   s`    


zPsdImageFile._openc             C   sx   | j |sd S y8| j|d  \}}}}|| _|| _|| _| j| _||fS  tk
rr } ztd|W Y d d }~X nX d S )Nr   zno such layer)	Z_seek_checkr0   r'   r8   r:   r9   r!   
IndexErrorEOFError)r;   layerrA   r'   bboxr8   er   r   r   r5      s    
zPsdImageFile.seekc             C   s   | j S )N)r:   )r;   r   r   r   r,      s    zPsdImageFile.tellc             C   sT   | j  s$| j j| jks$| j j| jkr:tjj| j| jd| _ | jdkrPtjj|  d S )Nr   r   )Zimr'   r7   r   corefillload)r;   r   r   r   load_prepare   s    $
zPsdImageFile.load_preparec             C   sB   z4y| j | jkr| j j  W n tk
r0   Y nX W d d | _ X d S )N)r9   r!   closeAttributeError)r;   r   r   r   
_close__fp   s    
zPsdImageFile._close__fpN)__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrB   r5   r,   rK   rN   r   r   r   r   r   5   s   Pr   c                s  g } fdd}t |d}|t|d k r4tdxtt|D ]}t|d}t|d}t|d}t|d}	g }
g }t|d}tt|}t|dkrqDxR|D ]J}t|d}|dkrd}nd	| }|j| t|d}|
j||f qW |j	  |d
gkrd}n2|ddd
gkr,d}n|dddd
gkrDd	}nd }|d d}t|d}d}|r
 j
 | }t|d}|r j|d tj ||d 7 }t|d}|rƈ j|tj ||d 7 }t|d}|r||jdd}||d 7 } j| |j|||||	|ff qDW d}x^|D ]V\}}}g }x,|D ]$}t ||d}|rD|j| qDW ||||f||< |d7 }q0W |S )Nc                s   t j | S )N)r   r3   )r7   )r!   r   r   r"      s    z_layerinfo.<locals>.readr      z4Layer block too short for number of layers requestedr   i  AZRGBARr   BGr   r    r      r   zlatin-1replace)si16absr$   ranger(   r#   listr-   r.   sortr,   r5   r1   SEEK_CURr   decoder6   extend)r!   Zct_bytesr0   r"   ctiZy0Zx0y1x1r/   r'   Zct_typestypestypemr7   rA   ZcombinedZdata_endlengthrF   r8   tr   )r!   r   r4      s|    



r4   c             C   sD  d }| j }t|d}|d |d  }|d |d  }| j }	|dkrg }xt|D ]:}
||
 }|dkrp|d7 }|jd||	|f |	||  }	qTW n|dkr$d}g }||| d }| j }	xdt|D ]X}
||
 }|dkr|d7 }|jd||	|f x(t|D ]}|	t|| }	|d7 }q W qW | j|	 |	d@ r@|d |S )	Nr   r   r   r   r   z;Ir*   Zpackbits)r"   r#   r,   r^   r.   r5   )filer'   rF   r=   r8   r"   compressionZxsizeZysizeoffsetZchannelrE   re   Z	bytecountyr   r   r   r6     s>    


r6   z.psdzimage/vnd.adobe.photoshop)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   )r   r   )r1   rY   r   r   r   _binaryr   r   r#   r   r(   r	   r\   r%   r   r   r4   r6   Zregister_openrR   Zregister_extensionZregister_mimer   r   r   r   <module>   s*   {^3