zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
U
T±d®ã@s¨ddlZddlZddlmZmZddlmZddlmZ    dd„Z
Gdd    „d    ejƒZ Gd
d „d ej ƒZ e d e ¡d d„Ze e je e
¡e e je¡e e jd¡dS)éNé)ÚImageÚ    ImageFile)Úi16le)Úo16lecCs|dd…dkS)Né)óDanMsLinS©)Úprefixr    r    úId:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/MspImagePlugin.pyÚ_accept%sr c@seZdZdZdZdd„ZdS)Ú MspImageFileÚMSPz Windows PaintcCs¶|j d¡}t|ƒs d}t|ƒ‚d}tdddƒD]}|t||ƒA}q0|dkrXd}t|ƒ‚d|_t|dƒt|dƒf|_|dd…d    krœd
d |jdd fg|_    nd d |jddfg|_    dS)Né znot an MSP filerézbad MSP checksumÚ1rérÚraw©rr©rrrr)
ÚfpÚreadr Ú SyntaxErrorÚrangeÚi16ÚmodeÚ_sizeÚsizeZtile)ÚselfÚsÚmsgÚchecksumÚir    r    r Ú_open2s zMspImageFile._openN)Ú__name__Ú
__module__Ú __qualname__ÚformatÚformat_descriptionr#r    r    r    r r .sr c@seZdZdZdd„ZdS)Ú
MspDecoderTc Cs°t ¡}td|jjddƒ}z8|j d¡t d|jj    ›d|j 
|jj    d¡¡}Wn2tj k
rŠ}zd}t |ƒ|‚W5d}~XYnXt |ƒD]\}}zÀ|d    kr¶| |¡Wq”|j 
|¡}    t|    ƒ|kræd
|›d |›}t |ƒ‚d    }
|
|kr\|    |
} |
d 7}
| d    kr8t d |    |
¡\} } | | | ¡|
d7}
qê| } | |    |
|
| …¡|
| 7}
qêWq”tj k
r˜}zd|›}t |ƒ|‚W5d}~XYq”Xq”| | ¡d¡dS)N)éÿéérú<ÚHrzTruncated MSP file in row maprzTruncated MSP file, expected z bytes on row rZBczCorrupted MSP file in row r)éÿÿÿÿr)ÚioÚBytesIOÚ    bytearrayÚstateZxsizeÚfdÚseekÚstructÚ unpack_fromZysizerÚerrorÚOSErrorÚ    enumerateÚwriteÚlenZ
set_as_rawÚgetvalue)rÚbufferÚimgZ
blank_lineZrowmapÚer ÚxZrowlenÚrowÚidxZruntypeZruncountZrunvalr    r    r ÚdecodeosH ÿ
 
 
 
 
zMspDecoder.decodeN)r$r%r&Z    _pulls_fdrDr    r    r    r r)Js#r)rcCsà|jdkr d|j›d}t|ƒ‚dgd}tdƒtdƒ|d<|d<|j\|d    <|d
<d \|d <|d <d \|d<|d<|j\|d<|d<d}|D] }||A}q||d<|D]}| t|ƒ¡qªt ||dd|jddfg¡dS)Nrzcannot write mode z as MSPrésDasnMrré)rrrérr+r,é    é rrrr)rr9rrr;Úo16rÚ_save)ZimrÚfilenamer Úheaderr!Úhr    r    r rK¡s 
 
 
rKz.msp)r0r6ÚrrÚ_binaryrrrrJr r Z    PyDecoderr)Zregister_decoderrKZ register_openr'Z register_saveZregister_extensionr    r    r    r Ú<module>s      P