a
    ׶a                  
   @   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	Zdd ZG dd dejZdd Zdd Zeejee eejd eejd dS )    N   )Image	ImageFileImagePalette)i8)i16be)i32be)si16be)1r   )Lr   )Pr   )RGB   )CMYK   )ZLABr   )	)r   r   )r      )r   r   )   r   )r   r   )r   r   )   r   )r   r   )	   r   c                 C   s   | d d dkS )Nr   s   8BPS )prefixr   r   b/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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|r&t|ddkr.tdt|d}t|d}t|d}t||f \}}||krltd|| _t|d	t|d
f| _	t|d}|r||}	|dkr|dkrt
d|	| _g | _t|d}|rz| j  | }
| j  |
k rz|d t|d}|t|d}t|d@ s.|d |t|d}	t|	d@ rT|d | j|||	f |dkr|	| jd< qg | _t|d}|r| j  | }
t|d}|rtt| j |}t||| _| 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_profile)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&   channelsr6   dataendidnameZ_layer_datar   r   r   _open;   s`    


zPsdImageFile._openc              
   C   s|   |  |sd S z:| j|d  \}}}}|| _|| _|| _| j| _||fW S  tyv } ztd|W Y d }~n
d }~0 0 d S )Nr   zno such layer)	Z_seek_checkr/   r&   r7   r9   r8   r    
IndexErrorEOFError)r:   layerr@   r&   bboxr7   er   r   r   r4      s    

zPsdImageFile.seekc                 C   s   | j S N)r9   r:   r   r   r   r+      s    zPsdImageFile.tellc                 C   sR   | j r"| j j| jks"| j j| jkr8tj| j| jd| _ | jdkrNtj|  d S )Nr   r   )Zimr&   r6   r   corefillloadrH   r   r   r   load_prepare   s    "
zPsdImageFile.load_preparec                 C   sF   z8z| j | jkr| j   W n ty.   Y n0 W d | _ nd | _ 0 d S rG   )r8   r    closeAttributeErrorrH   r   r   r   
_close__fp   s    zPsdImageFile._close__fpN)__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrA   r4   r+   rL   rO   r   r   r   r   r   5   s   Pr   c              	      sv  g } fdd}t |d}|t|d k r4tdtt|D ]}t|d}t|d}t|d}t|d}	g }
g }t|d}tt|}t|dkrq@|D ]J}t|d}|dkrd}nd	| }|| t|d}|
||f q|	  |d
gkrd}n,|g dkr"d}n|g dkr6d	}nd }|d d}t|d}d}|r 
 | }t|d}|r |d tj ||d 7 }t|d}|r |tj ||d 7 }t|d}|r||dd}||d 7 } | ||||||	|ff q@d}|D ]R\}}}g }|D ]$}t ||d}|r0|| q0||||f||< |d7 }q|S )Nc                    s   t  | S rG   )r   r2   )r6   r    r   r   r!      s    z_layerinfo.<locals>.readr      z4Layer block too short for number of layers requestedr   i  AZRGBARr   )BGrX   r   )rW   rY   rZ   rX   r    r      r   zlatin-1replace)si16absr#   ranger'   r"   listr,   r-   sortr+   r4   r0   SEEK_CURr   decoder5   extend)r    Zct_bytesr/   r!   ctiZy0Zx0y1x1r.   r&   Zct_typestypestypemr6   r@   ZcombinedZdata_endlengthrE   r7   tr   rU   r   r3      s|    

r3   c                 C   s6  d }| j }t|d}|d |d  }|d |d  }|  }	|dkrg }t|D ]:}
||
 }|dkrn|d7 }|d||	|f |	||  }	qRn|dkrd}g }||| d }|  }	t|D ]R}
||
 }|dkr|d7 }|d||	|f t|D ]}|	t|| }	|d7 }qq| |	 |	d@ r2|d |S )	Nr   r   r   r   r   z;Ir)   Zpackbits)r!   r"   r+   r`   r-   r4   )filer&   rE   r<   r7   r!   compressionZxsizeZysizeoffsetZchannelrD   rg   Z	bytecountyr   r   r   r5     s>    


r5   z.psdzimage/vnd.adobe.photoshop)r0   r[   r   r   r   _binaryr   r   r"   r   r'   r	   r^   r$   r   r   r3   r5   Zregister_openrS   Zregister_extensionZregister_mimer   r   r   r   <module>   s,   {^3