
    g                       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       y)    )annotationsN)IO   )Image	ImageFile)i16le)o16lec                    | d d dv S )N   )   DanMs   LinS )prefixs    G/var/www/openai/venv/lib/python3.12/site-packages/PIL/MspImagePlugin.py_acceptr   '   s    "1:+++    c                      e Zd ZdZdZddZy)MspImageFileMSPzWindows Paintc                   | j                   J | j                   j                  d      }t        |      sd}t        |      d}t	        ddd      D ]  }|t        ||      z  } |dk7  rd}t        |      d| _        t        |d      t        |d      f| _        |d d d	k(  rd
d| j                  z   ddfg| _	        y dd| j                  z   dd fg| _	        y )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._open4   s    ww"""GGLLqz#Cc"" q"aA#a)+H !q=$Cc""
AYAq	)
Ra5G$))!3REFDI$))!3R>?DIr   N)returnNone)__name__
__module____qualname__formatformat_descriptionr+   r   r   r   r   r   0   s    F(@r   r   c                      e Zd ZdZddZy)
MspDecoderTc                    | j                   J t        j                         }t        d| j                  j
                  dz   dz  z        }	 | j                   j                  d       t        j                  d| j                  j                   d| j                   j                  | j                  j                  dz              }t        |      D ]  \  }}	 |d	k(  r|j                  |       | j                   j                  |      }	t        |	      |k7  rd
| d| }t        |      d	}
|
|k  rg|	|
   }|
dz  }
|d	k(  r4t        j                  d|	|
      \  }}|j                  ||z         |
dz  }
n|}|j                  |	|
|
|z           |
|z  }
|
|k  rg | j!                  |j#                         d       y# t        j                  $ r}d}t        |      |d }~ww xY w# t        j                  $ r}d| }t        |      |d }~ww xY w)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&   bufferimg
blank_linerowmaper(   xrowlenrowidxruntyperuncountrunvals                 r   decodezMspDecoder.decodes   s   ww"""jjlw4::+;+;a+?A*EFG
	&GGLL''DJJ$$%Q'djj6F6F6J)KF #6*IAv*Q;IIj)ggll6*s8v%9&PQsSC!#,&Fl!#hG1HC!|-3-?-?c3-O*6		&8"34q#*		#cC(N";<x Fl +4 	4A || 	&1C#,A%	&4 << *21#6cl)*s8   A9F; G$.B)G$;G!GG!$H7HHN)rN   bytesr,   ztuple[int, int])r.   r/   r0   	_pulls_fdrZ   r   r   r   r4   r4   N   s    F I*r   r4   r   c                   | j                   dk7  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 ]  }|j	                  t        |              t        j                  | |dd| j                  z   ddfg       y )Nr   zcannot write mode z as MSPr      s   Das   nMr   r      )r   r   r      r   r7   r8   	      r   r   r   r   )moderH   r!   r$   rJ   o16r   _save)imr   filenamer(   headerr)   hs          r   re   re      s   	ww#~"277)73cl S2XFu:s5zF1Ivay77F1IvayF1IvayF1Ivay77F1IvayHa< F2J 
Q  OOBeVbgg%5r;GHIr   z.msp)r   r[   r,   bool)rf   zImage.Imager   z	IO[bytes]rg   zstr | bytesr,   r-   )
__future__r   r>   rD   typingr    r   r   _binaryr   r!   r	   rd   r   r   	PyDecoderr4   register_decoderre   register_openr1   register_saveregister_extensionr   r   r   <module>rt      s   2 # 	    ! !,@9&& @<O$$ Od   uj )J<   L''w ?   L'' /   ,,f 5r   