
    &Th                     r   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       y)    N   )Image	ImageFile)i16le)o16lec                     | d d dv S )N   )   DanMs   LinS )prefixs    Z/home/stella.sw7ft.com/public_html/venv/lib/python3.12/site-packages/PIL/MspImagePlugin.py_acceptr   %   s    "1:+++    c                       e Zd ZdZdZd Zy)MspImageFileMSPzWindows Paintc                    | 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._open2   s    GGLLqz#Cc"" q"a 	,A#a)+H	,q=$Cc""	AYAq	)
Ra5G$))!3REFDI$))!3R>?DIr   N)__name__
__module____qualname__formatformat_descriptionr)   r   r   r   r   r   .   s    F(@r   r   c                       e Zd ZdZd Zy)
MspDecoderTc                    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   )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.decodeo   s   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)*s7   A9F- 	G B)G-G GGG?)G::G?N)r*   r+   r,   	_pulls_fdrV   r   r   r   r0   r0   J   s    F I(r   r0   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   r3   r4   	      r   r   r   r   )r    rD   r   r"   rF   o16r   _save)imr   filenamer&   headerr'   hs          r   r_   r_      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)r9   r@    r   r   _binaryr   r   r   r^   r   r   	PyDecoderr0   register_decoderr_   register_openr-   register_saveregister_extensionr   r   r   <module>rk      s   4 
   ! !,@9&& @8M$$ M`   uj )J<   L''w ?   L'' /   ,,f 5r   