File: //lib/python3/dist-packages/PIL/__pycache__/MspImagePlugin.cpython-38.pyc
U
g�
^� � @ s� d dl Z d dlZddlmZmZ ddlmZmZm Z
dd� ZG dd� dej�ZG d d
� d
ej
�Ze�de� dd
� Ze�ejee� e�eje� e�ejd� dS )� N� )�Image� ImageFile)�i8�i16le�o16lec C s | d d� dkS )N� �� DanMs LinS� )�prefixr r �4/usr/lib/python3/dist-packages/PIL/MspImagePlugin.py�_accept$ s r c @ s e Zd ZdZdZdd� ZdS )�MspImageFile�MSPz
Windows Paintc C s� | j �d�}|d d� dkr$td��d}tddd�D ]}|t|||d � �A }q4|dkrbtd��d| _t|dd � �t|d d � �f| _|d d� d
kr�dd| j dd
fg| _ndd| j dd fg| _d S )N� r r znot an MSP filer � zbad MSP checksum�1� r
�raw�r r �r r r r ) �fp�read�SyntaxError�range�i16�modeZ_size�sizeZtile)�self�s�checksum�ir r r
�_open2 s "zMspImageFile._openN)�__name__�
__module__�__qualname__�formatZformat_descriptionr# r r r r
r - s r c @ s e Zd ZdZdd� ZdS )�
MspDecoderTc C sz t �� }td| jjd d �}z4| j�d� t�d| jj | j�
| jj d ��}W n tjk
rr td��Y nX t
|�D ]�\}}z�|dkr�|�|� W q|| j�
|�}t|�|kr�td ||f��d}||k �r<t|| �} |d
7 }| dk�rt�d||�\}
}|�||
� |d7 }q�| }
|�||||
� � ||
7 }q�W q| tjk
�rb td| ��Y q|X q|| �|�� d
� dS )N)� � � r z<%dHr zTruncated MSP file in row mapr z/Truncated MSP file, expected %d bytes on row %sr ZBczCorrupted MSP file in row %dr r )�io�BytesIO� bytearray�stateZxsize�fd�seek�structZunpack_fromZysizer �error�OSError� enumerate�write�lenr Z
set_as_raw�getvalue)r �bufferZimgZ
blank_lineZrowmap�xZrowlen�row�idxZruntypeZruncountZrunvalr r r
�decoden sH
�
�
zMspDecoder.decodeN)r$ r% r&