o
    -׾g                  
   @  s   d dl mZ 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	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 )    )annotationsN   )Image	ImageFileImagePalette)i8)i16be)i32be)si16be)si32be)1r   )Lr   )Pr   )RGB   )CMYK   )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   \/var/www/html/backend_erp/backend_erp_env/lib/python3.10/site-packages/PIL/PsdImagePlugin.py_accept/   s   r   c                   @  s0   e Zd ZdZdZdZdd Zdd Zdd	 Zd
S )PsdImageFilePSDzAdobe PhotoshopFc                 C  sF  | j j}|d}t|rt|ddkrd}t|t|d}t|d}t|d}t||f \}}||kr:d}t||d	krF|dkrFd
}d}|| _t|dt|df| _	t|d}	|	ro||	}
|dkro|	dkrot
d|
| _g | _t|d}	|	r| j  |	 }| j  |k r|d t|d}|t|d}t|d@ s|d |t|d}
t|
d@ r|d | j|||
f |dkr|
| jd< | j  |k sg | _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 channelsr   RGBA      r   i   zRGB;Lr   i  icc_profile)r   r   )"fpreadr   i16SyntaxErrorMODESOSError_modei32_sizer   rawpalette	resourcestellr   lenappendinfolayersioBytesIOr   
_safe_read
_layerinfoseekn_framesis_animated	_maketilesizetile_fpframe
_min_frame)selfr'   smsgpsd_bitspsd_channelspsd_modemodechannelsr?   dataendidname_layer_datar   r   r   _open<   sl   




zPsdImageFile._openc              
   C  sp   |  |sd S z| j|d  \}}}}|| _|| _|| _| j| _||fW S  ty7 } zd}t||d }~ww )Nr   zno such layer)	_seek_checkr6   r,   r@   rB   rA   r&   
IndexErrorEOFError)rD   layerrO   rJ   bboxr@   erF   r   r   r   r;      s   


zPsdImageFile.seekc                 C  s   | j S N)rB   )rD   r   r   r   r2      s   zPsdImageFile.tellN)	__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrQ   r;   r2   r   r   r   r   r   7   s    Tr   c              	     sJ  g } fdd}t |d}|t|d k rd}t|tt|D ]}t|d}t|d}t|d}	t|d}
g }t|d}|dkra |d d tj t	|d} |tj q"t|D ]}t|d}|d	krtd
}nd| }|
| |d qe|  |dgkrd}n|g dkrd}n|g dkrd}nd }|d d}t	|d}|r  | }t	|d}|rǈ |d tj t	|d}|rֈ |tj t|d}|r||dd} | |
|||||
|	ff q"t|D ]&\}\}}}g }|D ]}t ||d}|r|| q||||f||< q|S )Nc                   s   t  | S rX   )r   r9   )r?   r&   r   r   r'      s   z_layerinfo.<locals>.readr      z4Layer block too short for number of layers requestedr      r    i  Ar"   Rr   )BGrc   r   )rb   rd   re   rc       r   zlatin-1replace)si16absr)   rangesi32r(   r;   r7   SEEK_CURr-   r4   sortr2   r   decode	enumerater>   extend)r&   ct_bytesr6   r'   ctrF   _y0x0y1x1rJ   ct_typesr?   typemrO   data_endlengthirV   r@   tr   r_   r   r:      st   




r:   c                 C  s2  d }| j }t|d}|d |d  }|d |d  }|  }	|dkrHg }t|D ]}
||
 }|dkr7|d7 }|d||	|f |	||  }	q)nB|dkrd}g }||| d }|  }	t|D ])}
||
 }|dkrn|d7 }|d||	|f t|D ]}|	t|| }	|d7 }q{q`| |	 |	d@ r|d |S )	Nr   r   r   r   r   z;Ir/   packbits)r'   r(   r2   rk   r4   r;   )filerJ   rV   rK   r@   r'   compressionxsizeysizeoffsetchannelrU   r~   	bytecountyr   r   r   r>      sB   

r>   z.psdzimage/vnd.adobe.photoshop)
__future__r   r7   rf   r   r   r   _binaryr   r   r(   r	   r-   r
   ri   r   rl   r*   r   r   r:   r>   register_openr\   register_extensionregister_mimer   r   r   r   <module>   s2   nX2