o
    'j6h                     @  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ZG dd dejZG dd dejZede 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prefixbytesreturnboolc                 C  s
   |  dS )N)   DanMs   LinS)
startswith)r	    r   a/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-packages/PIL/MspImagePlugin.py_accept'   s   
r   c                   @  s   e Zd ZdZdZdddZdS )	MspImageFileMSPzWindows Paintr   Nonec                 C  s   | j d usJ | j d}t|sd}t|d}tdddD ]	}|t||A }q|dkr3d}t|d| _t|dt|df| _|d	rUt	
d
d| j ddg| _d S 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sizetile)selfsmsgchecksumir   r   r   _open4   s    
zMspImageFile._openN)r   r   )__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ZdS )

MspDecoderTbuffer$bytes | Image.SupportsArrayInterfacer   tuple[int, int]c                 C  s  | j d usJ t }td| jjd d  }z| j d td| jj	 d| j 
| jj	d }W n tjyG } zd}t||d }~ww t|D ]|\}}za|d	kr\|| W qL| j 
|}	t|	|krtd
| d| }t|d	}
|
|k r|	|
 }|
d7 }
|d	krtd|	|
\}}|||  |
d7 }
n|}||	|
|
|   |
|7 }
|
|k szW qL tjy } z
d| }t||d }~ww | | d dS )N)         r   <Hr   zTruncated MSP file in row mapr   zTruncated MSP file, expected z bytes on row r   BczCorrupted MSP file in row r   )r   )fdioBytesIO	bytearraystatexsizeseekstructunpack_fromysizer   errorOSError	enumeratewritelen
set_as_rawgetvalue)r&   r2   img
blank_linerowmaper(   xrowlenrowidxruntyperuncountrunvalr   r   r   decodes   sT    




zMspDecoder.decodeN)r2   r3   r   r4   )r,   r-   r.   	_pulls_fdrX   r   r   r   r   r1   N   s    #r1   r   imImage.Imager   	IO[bytes]filenamestr | bytesr   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 }qH||d< |D ]	}|t| qUt| |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   r6   r7   	      r   r   r   )	moderG   r    r$   rI   o16r   _saver#   )rZ   r   r]   r(   headerr)   hr   r   r   rf      s    


&rf   z.msp)r	   r
   r   r   )rZ   r[   r   r\   r]   r^   r   r   )
__future__r   r=   rC   typingr    r   r   _binaryr   r    r   re   r   r   	PyDecoderr1   register_decoderrf   register_openr/   register_saveregister_extensionr   r   r   r   <module>   s   
	R
