o
    ]oi                     @  s   d dl mZ 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 )    )annotationsN   )Image	ImageFile)i16le)o16lec                 C  s   | d d dv S )N   )   DanMs   LinS )prefixr
   r
   Z/var/www/html/kuke-dev/django-kuke/venv/lib/python3.10/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 }q|dkr,d}t|d| _t|dt|df| _|d d d	krOd
d| j ddfg| _	d S 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sizeZtile)selfsmsgchecksumir
   r
   r   _open3   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  }z| jd td| jj	 d| j
| jj	d }W n tjy@ } zd}t||d }~ww t|D ]|\}}za|d	krU|| W qE| j
|}	t|	|krmd
| d| }t|d	}
|
|k r|	|
 }|
d7 }
|d	krtd|	|
\}}|||  |
d7 }
n|}||	|
|
|   |
|7 }
|
|k ssW qE 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   ZBczCorrupted MSP file in row r   )r   )ioBytesIO	bytearraystateZxsizefdseekstructunpack_fromZysizer   errorOSError	enumeratewritelenZ
set_as_rawgetvalue)r   bufferZimg
blank_lineZrowmaper!   xZrowlenrowidxZruntypeZruncountZrunvalr
   r
   r   decodep   sR    




zMspDecoder.decodeN)r%   r&   r'   Z	_pulls_fdrE   r
   r
   r
   r   r*   K   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 }qH||d< |D ]	}|t| qUt| |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)Zimr   filenamer!   headerr"   hr
   r
   r   rM      s    


"rM   z.msp)
__future__r   r1   r7    r   r   _binaryr   r   r   rL   r   r   Z	PyDecoderr*   Zregister_decoderrM   Zregister_openr(   Zregister_saveZregister_extensionr
   r
   r
   r   <module>   s   	P