a
    Qh                     @   s   d dl Z d dlZddlmZmZ ddlmZ ddlmZ	 dd Z
G dd	 d	ejZG d
d dejZede dd Zeejee
 eeje eejd dS )    N   )Image	ImageFile)i16le)o16lec                 C   s   | d d dv S )N   )   DanMs   LinS )prefixr	   r	   K/var/www/sistema_ama/venv/lib/python3.9/site-packages/PIL/MspImagePlugin.py_accept%   s    r   c                   @   s   e Zd ZdZdZdd ZdS )MspImageFileMSPzWindows Paintc                 C   s   | j d}t|s d}t|d}tdddD ]}|t||A }q0|dkrXd}t|d| _t|dt|df| _|d d d	krd
d| j ddfg| _	ndd| j dd fg| _	d S )N    znot an MSP filer      zbad MSP checksum1r      r   rawr   r   r   r   r   r   )
fpreadr   SyntaxErrorrangei16_mode_sizesizetile)selfsmsgchecksumir	   r	   r   _open2   s    zMspImageFile._openN)__name__
__module____qualname__formatformat_descriptionr$   r	   r	   r	   r   r   .   s   r   c                   @   s   e Zd ZdZdd ZdS )
MspDecoderTc                 C   s  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rd
| d| }t|d	}
|
|k r^|	|
 }|
d7 }
|d	kr:td|	|
\}}|||  |
d7 }
q|}||	|
|
|   |
|7 }
qW q tjy } z d| }t||W Y d }~qd }~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   )ioBytesIO	bytearraystatexsizefdseekstructunpack_fromysizer   errorOSError	enumeratewritelen
set_as_rawgetvalue)r   bufferimgZ
blank_lineZrowmaper!   xZrowlenrowidxZruntypeZruncountZrunvalr	   r	   r   decodeo   sF      




"zMspDecoder.decodeN)r%   r&   r'   	_pulls_fdrH   r	   r	   r	   r   r*   J   s   #r*   r   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| qt| |dd| j ddfg d S )Nr   zcannot write mode z as MSPr      s   Das   nMr   r      )r   r   r      r   r,   r-   	      r   r   r   r   )moder<   r   r   r>   o16r   _save)imr   filenamer!   headerr"   hr	   r	   r   rQ      s     


rQ   z.msp)r1   r8    r   r   _binaryr   r   r   rP   r   r   	PyDecoderr*   register_decoderrQ   register_openr(   register_saveregister_extensionr	   r	   r	   r   <module>   s   	P