3 }\@sddlmZmZddlmZmZmZddl Z ddl Z dZ ddZ Gdd d ejZ Gd d d ejZejd ed dZeje je e eje jeeje jddS))Image ImageFile)i16leo16lei8Nz0.1cCs|dddkS)NDanMLinS)r r )prefixr r j/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-i584jbuk/Pillow/PIL/MspImagePlugin.py_accept(src@seZdZdZdZddZdS) MspImageFileMSPz Windows PaintcCs|jjd}|dddkr$tdd}x,tdddD]}|t|||dA}q6W|dkrftdd |_t|ddt|d df|_|dddkrd d|jddfg|_nd d|jddfg|_dS)N rDanMLinSznot an MSP filerzbad MSP checksum1rawrr)rr)rr)rrr)rr) fpread SyntaxErrorrangei16mode_sizesizeZtile)selfschecksumir r r _open5s "zMspImageFile._openN)__name__ __module__ __qualname__formatformat_descriptionr$r r r r r0src@seZdZdZddZdS) MspDecoderTc Cstj}td|jjdd}y4|jjdtjd|jj |jj |jj d}Wntj k rrt dYnXxt |D]\}}y|dkr|j|w~|jj |}t||krt d ||fd}xx||kr>t||} |d 7}| dkrtjd ||\} } |j| | |d7}q| } |j|||| || 7}qWWq~tj k rft d |Yq~Xq~W|j|jddS)Nrz<%dHrzTruncated MSP file in row maprz/Truncated MSP file, expected %d bytes on row %srZBczCorrupted MSP file in row %dr)r+)rrr)rr)ioBytesIO bytearraystateZxsizefdseekstruct unpack_fromZysizererrorIOError enumeratewritelenrZ set_as_rawgetvalue) r bufferimgZ blank_lineZrowmapxZrowlenrowidxZruntypeZruncountZrunvalr r r decodeqsB         zMspDecoder.decodeN)r%r&r'Z _pulls_fdrAr r r r r*Ls#r*rc Cs|jdkrtd|jdgd}tdtd|d<|d<|j\|d<|d <d\|d <|d <d\|d <|d <|j\|d<|d<d}x|D] }||A}qW||d<x|D]}|jt|qWtj||dd|jddfgdS)Nrzcannot write mode %s as MSPrsDasnMrrrrr,r- rr)rr)rr)rr)rrr)rr7rrr9o16r_save)Zimrfilenameheaderr"hr r r rHs     rHz.msp)rr_binaryrrrrGrr4r. __version__rrZ PyDecoderr*Zregister_decoderrHZ register_openr(Z register_saveZregister_extensionr r r r sO