
    g                    Z   d dl mZ d dlZd dlZd dlmZ ddlmZmZ ddl	m
Z ddl	mZ ddZ G d dej                  Z G d dej                  Z ej        de           ddZ ej        ej        ee            ej        ej        e            ej        ej        d           dS )    )annotationsN)IO   )Image	ImageFile)i16le)o16leprefixbytesreturnboolc                    | d d         dv S )N   )   DanMs   LinS )r
   s    N/var/www/html/ai-engine/env/lib/python3.11/site-packages/PIL/MspImagePlugin.py_acceptr   '   s    "1":+++    c                      e Zd ZdZdZddZdS )MspImageFileMSPzWindows Paintr   Nonec                   | j         J | 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't          j	        d
d| j
        z   dd          g| _        d S t          j	        dd| j
        z   dd           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_sizer   _Tilesizetile)selfsmsgchecksumis        r   _openzMspImageFile._open4   s   w"""GLLqzz 	##Cc""" q"a 	, 	,A#a))+HHq==$Cc"""
AYYAq		)
RaR5G"0BBTTUDIII"0BBMMNDIIIr   N)r   r   )__name__
__module____qualname__formatformat_descriptionr0   r   r   r   r   r   0   s9        F(O O O O O Or   r   c                      e Zd ZdZddZdS )	
MspDecoderTbuffer$bytes | Image.SupportsArrayInterfacer   tuple[int, int]c                0   | j         J 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   )fdioBytesIO	bytearraystatexsizeseekstructunpack_fromysizer"   errorOSError	enumeratewritelen
set_as_rawgetvalue)r+   r8   img
blank_linerowmaper-   xrowlenrowidxruntyperuncountrunvals                 r   decodezMspDecoder.decodes   sQ   w"""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)* 	,,,us8    A"B# #C	2CC	"G>CGG+G&&G+N)r8   r9   r   r:   )r1   r2   r3   	_pulls_fdr_   r   r   r   r7   r7   N   s0        F I* * * * * *r   r7   r   imImage.Imager!   	IO[bytes]filenamestr | bytesr   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        | |t          j        dd| j        z   dd          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    )	moderN   r%   r)   rP   o16r   _saver(   )ra   r!   rd   r-   headerr.   hs          r   rn   rn      s.   	w#~~327333cll S2XFu::s5zzF1Ivay7F1IvayF1IvayF1Ivay7F1IvayH    a<F2J   
Q OBY_UFRW4Db+VVWXXXXXr   z.msp)r
   r   r   r   )ra   rb   r!   rc   rd   re   r   r   )
__future__r   rD   rJ   typingr    r   r   _binaryr   r%   r	   rm   r   r   	PyDecoderr7   register_decoderrn   register_openr4   register_saveregister_extensionr   r   r   <module>rz      sy  2 # " " " " " 				                ! ! ! ! ! ! ! ! ! ! ! !, , , ,O O O O O9& O O O<O O O O O$ O O Od  uj ) ) )Y Y Y Y<  L'w ? ? ?  L' / / /  ,f 5 5 5 5 5r   