a
    ¥Q•hí  ã                   @   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rœd
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rèd
|› d|› �}t|ƒ‚d	}
|
|k �r^|	|
 }|
d7 }
|d	k�r:t 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   )Ú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|ƒ¡ qªt | |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