K iddlmZddlZddlZddlmZddlmZmZddl m Z ddl m Z ddZGd d ejZGd d ej Zej$d eddZej(ej*eeej,ej*eej.ej*dy)) annotationsN)IO)Image ImageFile)i16le)o16lec$|jdS)N)DanMsLinS) startswith)prefixs X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/PIL/MspImagePlugin.py_acceptr's   / 00ceZdZdZdZddZy) MspImageFileMSPz Windows Paintc|jJ|jjd}t|s d}t|d}t dddD]}|t ||z }|dk7r d}t|d|_t |dt |df|_|jd r,tjd d |jzddg|_ ytjd d |jzdg|_ y) N znot an MSP filerzbad MSP checksum1r rawrrr) fpreadr SyntaxErrorrangei16_mode_sizer r_Tilesizetile)selfsmsgchecksumis r_openzMspImageFile._open4sww""" GGLL qz#Cc" "q"a ,A#a)+H , q=$Cc" " AYAq ) << "0BBLMDI"0BBGHDIrN)returnNone)__name__ __module__ __qualname__formatformat_descriptionr+rrrr0s F(IrrceZdZdZddZy) MspDecoderTc |jJtj}td|jj dzdzz} |jj dtjd|jjd|jj|jjdz}t|D]\}} |d k(r|j||jj|} t| |k7rd |d |}t|d } | |krg| | } | d z } | d k(r4tjd | | \} } |j| | z| dz } n| } |j| | | | z| | z } | |krg|j!|j#dy#tj$r}d}t||d}~wwxYw#tj$r}d|}t||d}~wwxYw)N)r<HrzTruncated MSP file in row maprzTruncated MSP file, expected z bytes on row rBczCorrupted MSP file in row r)r)fdioBytesIO bytearraystatexsizeseekstruct unpack_fromysizererrorOSError enumeratewritelen set_as_rawgetvalue)r&bufferimg blank_linerowmaper(xrowlenrowidxruntyperuncountrunvals rdecodezMspDecoder.decodessww"""jjlw4::+;+;a+?A*EFG  & GGLL ''DJJ$$%Q'djj6F6F6J)KF#6* *IAv *Q;IIj)ggll6*s8v%9&PQsSC!#,&Fl!#hG1HC!|-3-?-?c3-O*6 &8"34q#* #cC(N";<xFl *4  ,A|| &1C#,A % &4<< *21#6cl) *s8 A9F;G$.B)G$;G!GG!$H 7HH N)rOz$bytes | Image.SupportsArrayInterfacer,ztuple[int, int])r.r/r0 _pulls_fdr[r3rrr5r5NsFI*rr5rc |jdk7rd|jd}t|dgdz}tdtdc|d<|d<|j\|d <|d <d \|d <|d <d \|d<|d<|j\|d<|d<d}|D]}||z } ||d<|D]}|j t |t j||t jdd|jzddgy)Nrzcannot write mode z as MSPrsDasnMrr)rrrrr8r9 rrr) moderIr r$rKo16r_saver#)imrfilenamer(headerr)hs rreres ww#~"277)73clS2XFu:s5zF1Ivay77F1IvayF1IvayF1Ivay77F1IvayH  a< F2J QOOBY__UFRWW4Db#NOPrz.msp)r bytesr,bool)rfz Image.Imagerz IO[bytes]rgz str | bytesr,r-) __future__rr?rEtypingrrr_binaryrr r rdrr PyDecoderr5register_decoderre register_openr1 register_saveregister_extensionr3rrrus2# !! 1I9&&I