o
    eY  ã                
   @   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   úBD:\Projects\ConvertPro\env\Lib\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 )Ú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r6tdƒ‚|d	krB|dkrBd
}d}|| _t|dƒt|dƒf| _	t|dƒƒ}|rk||ƒ}	|dkrk|dkrkt
 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 s„g | _t|dƒƒ}|rû| j  ¡ | }
t|dƒƒ}|rõt 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  Z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ÚseekZn_framesZis_animatedÚ	_maketileÚsizeÚtileÚ_fpÚframeZ
_min_frame)Úselfr"   ÚsZpsd_bitsZpsd_channelsZpsd_moder'   Úchannelsr8   ÚdataÚendÚidÚnameZ_layer_datar   r   r   Ú_open;   sh   



õ
zPsdImageFile._openc              
   C   sl   |   |¡sd S z| j|d  \}}}}|| _|| _|| _| j| _||fW S  ty5 } ztdƒ|‚d }~ww )Nr   zno such layer)	Z_seek_checkr1   r'   r9   r;   r:   r!   Ú
IndexErrorÚEOFError)r<   ÚlayerrB   r'   Úbboxr9   Úer   r   r   r6   Ž   s   


€ÿzPsdImageFile.seekc                 C   s   | j S ©N)r;   )r<   r   r   r   r-      s   zPsdImageFile.tellN)	Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingrC   r6   r-   r   r   r   r   r   5   s    Sr   c              	      s$  g }‡ fdd„}t |dƒƒ}|t|ƒd k rtdƒ‚tt|ƒƒD ]Ã}t|dƒƒ}t|dƒƒ}t|dƒƒ}t|dƒƒ}	g }
t|dƒƒ}tt|ƒƒ}t|ƒdkrOq |D ]}t|dƒƒ}|dkr`d}nd	| }|
 |¡ |dƒ qQ|
 	¡  |
d
gkrzd}
n|
g d¢krƒd}
n|
g d¢krŒd	}
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 d}|D ]'\}}
}g }|
D ]}tˆ ||dƒ}|r| |¡ qñ||
||f||< |d7 }qè|S )Nc                    s   t  ˆ | ¡S rI   )r   r4   )r8   ©r!   r   r   r"   ¦   s   z_layerinfo.<locals>.readr   é   z4Layer block too short for number of layers requestedr   iÿÿ  ÚAr   ÚRr   )ÚBÚGrR   r   )rQ   rS   rT   rR   r   Ú é   r   zlatin-1Úreplacer   )Úsi16Úabsr$   Úranger(   r#   Úlistr.   r/   Úsortr-   r6   r2   ÚSEEK_CURr   Údecoder7   Úextend)r!   Zct_bytesr1   r"   ÚctÚ_Zy0Zx0Úy1Úx1r'   Zct_typesÚtypesÚtypeÚmrB   r8   Zdata_endÚlengthÚirG   r9   Útr   rO   r   r5   ¢   sr   




€
r5   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rŠd}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*   Zpackbits)r"   r#   r-   rZ   r/   r6   )Úfiler'   rG   r>   r9   r"   ÚcompressionZxsizeZysizeÚoffsetZchannelrF   rh   Z	bytecountÚyr   r   r   r7   ú   sB   û
þ
r7   z.psdzimage/vnd.adobe.photoshop)r2   rU   r   r   r   Ú_binaryr   r   r#   r   r(   r	   rX   r%   r   r   r5   r7   Zregister_openrM   Zregister_extensionZregister_mimer   r   r   r   Ú<module>   s.   ömX3