a
    ç´«j  ã                   @  sÔ   d dl mZ d dlZd dlZd dlmZ ddlmZmZ ddl	m
Z ddl	mZ dd	d
œdd„ZG dd„ dejƒZG dd„ dejƒZe de¡ dddddœdd„Ze ejee¡ e eje¡ e ejd¡ dS )é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi16le)Úo16leÚbytesÚbool)ÚprefixÚreturnc                 C  s
   |   d¡S )N)ó   DanMs   LinS)Ú
startswith)r   © r   úQ/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/MspImagePlugin.pyÚ_accept'   s    r   c                   @  s"   e Zd ZdZdZddœdd„ZdS )ÚMspImageFileÚMSPzWindows PaintÚNone)r   c                 C  sÄ   | j d usJ ‚| j  d¡}t|ƒs.d}t|ƒ‚d}tdddƒD ]}|t||ƒA }q>|dkrfd}t|ƒ‚d| _t|dƒt|dƒf| _| d	¡r¨t	 
d
d| j dd¡g| _nt	 
dd| j d¡g| _d S )Né    znot an MSP filer   é   zbad MSP checksumÚ1é   é   r   Úraw©r   r   r   )ÚfpÚreadr   ÚSyntaxErrorÚrangeÚi16Ú_modeÚ_sizer   r   Ú_TileÚsizeZtile)ÚselfÚsÚmsgÚchecksumÚir   r   r   Ú_open4   s     
zMspImageFile._openN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr*   r   r   r   r   r   0   s   r   c                   @  s    e Zd ZdZdddœdd„ZdS )Ú
MspDecoderTz$bytes | Image.SupportsArrayInterfaceztuple[int, int])Úbufferr   c                 C  sÂ  | j d usJ ‚t ¡ }td| jjd d  ƒ}z8| j  d¡ t d| jj	› d�| j  
| jj	d ¡¡}W n4 tjyš } zd}t|ƒ|‚W Y d }~n
d }~0 0 t|ƒD �]\}}zÀ|d	krÆ| |¡ W q¤| j  
|¡}	t|	ƒ|kröd
|› d|› �}t|ƒ‚d	}
|
|k �rl|	|
 }|
d7 }
|d	k�rHt d|	|
¡\}}| || ¡ |
d7 }
qú|}| |	|
|
| … ¡ |
|7 }
qúW q¤ tj�yª } z d|› �}t|ƒ|‚W Y d }~q¤d }~0 0 q¤|  | ¡ d¡ dS )N)éÿ   é   é   r   ú<ÚHr   zTruncated MSP file in row mapr   zTruncated MSP file, expected z bytes on row r   ZBczCorrupted MSP file in row r   )éÿÿÿÿr   )ÚfdÚioÚBytesIOÚ	bytearrayÚstateZxsizeÚseekÚstructÚunpack_fromZysizer   ÚerrorÚOSErrorÚ	enumerateÚwriteÚlenZ
set_as_rawÚgetvalue)r%   r1   ÚimgÚ
blank_lineZrowmapÚer'   ÚxZrowlenÚrowÚidxZruntypeZruncountZrunvalr   r   r   Údecodes   sH     ÿ 




"zMspDecoder.decodeN)r+   r,   r-   Z	_pulls_fdrL   r   r   r   r   r0   N   s   #r0   r   zImage.Imagez	IO[bytes]zstr | bytesr   )Úimr   Úfilenamer   c              
   C  sä   | j dkr d| j › d�}t|ƒ‚dgd }tdƒtdƒ |d< |d< | j\|d	< |d
< d\|d< |d< d\|d< |d< | j\|d< |d< d}|D ]}||A }q�||d< |D ]}| t|ƒ¡ qªt | |t dd| j dd¡g¡ d S )Nr   zcannot write mode z as MSPr   é   s   Das   nMr   r   é   )r   r   r   é   r   r3   r4   é	   é   r   r   r   )	ÚmoderA   r    r$   rC   Úo16r   Ú_saver#   )rM   r   rN   r'   Úheaderr(   Úhr   r   r   rV   §   s     


rV   z.msp)Ú
__future__r   r9   r>   Útypingr   Ú r   r   Ú_binaryr   r    r   rU   r   r   Z	PyDecoderr0   Zregister_decoderrV   Zregister_openr.   Zregister_saveZregister_extensionr   r   r   r   Ú<module>   s   	R