
    Rf                    J   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 Z G d d	ej                  Z G d
 dej                  Z ej        de           d Z ej        ej        ee            ej        ej        e            ej        ej        d           dS )    )annotationsN   )Image	ImageFile)i16le)o16lec                    | d d         dv S )N   )   DanMs   LinS )prefixs    D/var/www/html/env/lib/python3.11/site-packages/PIL/MspImagePlugin.py_acceptr   &   s    "1":+++    c                      e Zd ZdZdZd ZdS )MspImageFileMSPzWindows Paintc                   | j                             d          }t          |          sd}t          |          d}t	          ddd          D ]}|t          ||          z  }|dk    rd}t          |          d| _        t          |d          t          |d          f| _        |d d         d	k    rd
d| j        z   ddfg| _	        d S dd| j        z   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is        r   _openzMspImageFile._open3   s    GLLqzz 	##Cc""" q"a 	, 	,A#a))+HHq==$Cc"""
AYYAq		)
RaR5G$)!3REFDIII$)!3R>?DIIIr   N)__name__
__module____qualname__formatformat_descriptionr*   r   r   r   r   r   /   s3        F(@ @ @ @ @r   r   c                      e Zd ZdZd ZdS )
MspDecoderTc                   t          j                    }t          d| j        j        dz   dz  z            }	 | j                            d           t          j        d| j        j	         d| j        
                    | j        j	        dz                      }n)# t          j        $ r}d}t          |          |d }~ww xY wt          |          D ]\  }}	 |d	k    r|                    |           #| j        
                    |          }	t          |	          |k    rd
| d| }t          |          d	}
|
|k     rw|	|
         }|
dz  }
|d	k    r7t          j        d|	|
          \  }}|                    ||z             |
dz  }
n'|}|                    |	|
|
|z                       |
|z  }
|
|k     w# t          j        $ r}d| }t          |          |d }~ww xY 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   )ioBytesIO	bytearraystatexsizefdseekstructunpack_fromysizer   errorOSError	enumeratewritelen
set_as_rawgetvalue)r%   bufferimg
blank_linerowmaper'   xrowlenrowidxruntyperuncountrunvals                 r   decodezMspDecoder.decodep   sC   jllw4:+;a+?A*EFGG
	&GLL''DJ$'''dj6F6J)K)K FF | 	& 	& 	&1C#,,A%	& #6** 	* 	*IAv*Q;;IIj)))gll6**s88v%%S&SSPQSSC!#,,&Fll!#hG1HC!||-3-?c3-O-O*6		&8"3444q#*		#cC(N&:";<<<x Fll < * * *6166cll)* 	444us7   A"B C )B;;C F95CF99G"GG"N)r+   r,   r-   	_pulls_fdrW   r   r   r   r1   r1   K   s+        F I( ( ( ( (r   r1   r   c                   | j         dk    rd| j          d}t          |          dgdz  }t          d          t          d          c|d<   |d<   | j        \  |d	<   |d
<   d\  |d<   |d<   d\  |d<   |d<   | j        \  |d<   |d<   d}|D ]}||z  }||d<   |D ]$}|                    t          |                     %t          j        | |dd| j        z   ddfg           d S )Nr   zcannot write mode z as MSPr      s   Das   nMr   r      )r   r   r
      r   r4   r5   	      r   r   r   r   )moderE   r    r#   rG   o16r   _save)imr   filenamer'   headerr(   hs          r   ra   ra      s'   	w#~~327333cll S2XFu::s5zzF1Ivay7F1IvayF1IvayF1Ivay7F1IvayH    a<F2J   
Q OBeVbg%5r;GHIIIIIr   z.msp)
__future__r   r:   rA    r   r   _binaryr   r    r   r`   r   r   	PyDecoderr1   register_decoderra   register_openr.   register_saveregister_extensionr   r   r   <module>rn      s\  2 # " " " " " 				          ! ! ! ! ! ! ! ! ! ! ! !, , ,@ @ @ @ @9& @ @ @8M M M M M$ M M M`  uj ) ) )J J J<  L'w ? ? ?  L' / / /  ,f 5 5 5 5 5r   