
    ,h                       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                $    | j                  d      S )N)   DanMs   LinS)
startswith)prefixs    T/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/PIL/MspImagePlugin.py_acceptr   '   s    /00    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| _        |j                  d	      r,t        j                  d
d| j                  z   dd      g| _        y t        j                  dd| j                  z   d      g| _        y )N    znot an MSP filer      zbad MSP checksum1      r   rawr   r   r   )fpreadr   SyntaxErrorrangei16_mode_sizer   r   _Tile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	)
<< "0BBLMDI"0BBGHDIr   N)returnNone)__name__
__module____qualname__formatformat_descriptionr+    r   r   r   r   0   s    F(I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 	,A || 	&1C#,A%	&4 << *21#6cl)*s8   A9F; G$.B)G$;G!GG!$H7HHN)rO   z$bytes | Image.SupportsArrayInterfacer,   ztuple[int, int])r.   r/   r0   	_pulls_fdr[   r3   r   r   r5   r5   N   s    F I*r   r5   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                  | |t        j                  dd| j                  z   dd      g       y )Nr   zcannot write mode z as MSPr      s   Das   nMr   r      )r   r   r      r   r8   r9   	      r   r   r   )	moderI   r    r$   rK   o16r   _saver#   )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Y__UFRWW4Db#NOPr   z.msp)r   bytesr,   bool)rf   zImage.Imager   z	IO[bytes]rg   zstr | bytesr,   r-   )
__future__r   r?   rE   typingr    r   r   _binaryr   r    r	   rd   r   r   	PyDecoderr5   register_decoderre   register_openr1   register_saveregister_extensionr3   r   r   <module>ru      s   2 # 	    ! !1I9&& I<O$$ Od   uj )Q<   L''w ?   L'' /   ,,f 5r   