
    zvg                    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    O/var/www/pixelcanvas.ch/venv/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          g| _        d S )N    znot an MSP filer      zbad MSP checksum1r      r   raw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LLMDIII"0BBGGHDIIIr   N)r   r   )__name__
__module____qualname__formatformat_descriptionr/   r   r   r   r   r   0   s9        F(I I I I I I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*   r7   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)r7   r8   r   r9   )r0   r1   r2   	_pulls_fdr^   r   r   r   r6   r6   N   s0        F I* * * * * *r   r6   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   )	moderM   r$   r(   rO   o16r   _saver'   )r`   r    rc   r,   headerr-   hs          r   rm   rm      s.   	w#~~327333cll S2XFu::s5zzF1Ivay7F1IvayF1IvayF1Ivay7F1IvayH    a<F2J   
Q OBY_UFRW4Db#NNOPPPPPr   z.msp)r
   r   r   r   )r`   ra   r    rb   rc   rd   r   r   )
__future__r   rC   rI   typingr    r   r   _binaryr   r$   r	   rl   r   r   	PyDecoderr6   register_decoderrm   register_openr3   register_saveregister_extensionr   r   r   <module>ry      sy  2 # " " " " " 				                ! ! ! ! ! ! ! ! ! ! ! !, , , ,I I I I I9& I I I<O O O O O$ O O Od  uj ) ) )Q Q Q Q<  L'w ? ? ?  L' / / /  ,f 5 5 5 5 5r   