)Ej4ddlmZddlZddlmZddlmZmZddlm Z m Z ddl m Z m Z mZmZddlmZdd lmZdd lmZdd lmZdd lmZd Zd#dZd$dZGdde ZGddZGdd ejZe j ej!eee j"ej!ee j#ej!d!e j$ej!d"dS)%) annotationsN)BytesIO)ceillog)IO NamedTuple)BmpImagePluginImage ImageFilePngImagePlugin)i16le)i32le)o8)o16le)o32lesim Image.Imagefp IO[bytes]filename str | bytesreturnNonec < |t|jddk}|jdgd}g}|g|jdgz}|j\}}t t |D])} | d|ks$| d|ks| ddks | ddkr4|D]} | j| kr|| |r|tj | j d} | g} |D]Y} | j| krtj | j d} | | vr*|| | | ZnP| }| | tjjd ||+|t!t#||t#|d zz}|D]z}|j\}}|t'|dkr|nd|t'|dkr|nd|rtj |j ddnd \} }|t'||d |d |t!| t)}|ra||d| dkrDtjd| }t/j||t/jdd| zddgn||d|d|}|r(|ddt9|dzz|ddz}t#|}|t9||t9||}||||||z}|||dS)N bitmap_formatbmpsizes))r)r ) r!)0r")@r#)r$)r% append_imagesrr r%) reducing_gapr)r!rsdibr!1rawrr)r*rpng )write_MAGIC encoderinfogetsizesortedsetappendr SAVEmodecopy thumbnailr ResamplingLANCZOSo16lentellrrsavenewr _save_Tileseekreado32)rrrrrframes provided_imswidthheightr6 provided_imbits bits_usedother_imframeoffsetcolorsimage_ioand_mask image_bytes bytes_lencurrents DC:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/IcoImagePlugin.pyrErE9seHHV .  _ - - 6C N  RRR  EF4".,,_bAAALGME6s5zz""!! 7U??d1g..$q'C--47S== ' ! !K4'' MM+ & & & /%*;+;AN~*5:6qrr::w f F   T99  ( JJx ' ' 'rzz 9S$//_UFTM1lKKL JJx ' ' ' ammoo  O%bqb/C OO;k"##>NNK $$  Y    V''))  )# I$$prefixbytesboolc6|tSN) startswithr3)r\s rZ_acceptrbs   V $ $$r[c~eZdZUded<ded<ded<ded<ded<ded<ded<ded <d ed <ded <ded <dS) IconHeaderintrLrMnb_colorreservedplanesbppr6rStuple[int, int]dimsquare color_depthN)__name__ __module__ __qualname____annotations__r[rZrdrds{JJJKKKMMMMMMKKK HHH IIIKKKKKKr[rdc:eZdZddZddZdddZdddZddZdS)IcoFilebufrrrc|d}t|sd}t|||_g|_t |d|_t|jD]}|d}|dpd}|dpd}|d}t |d}t||||d t |dt |dt|d t|d ||f||z|p$|dkrtt|dpd } |j | t|jd |_t|jdd|_dS)zL Parse image from file-like object containing ico file data znot an ICO filerrr%r r0r/r1) rLrMrfrgrhrir6rSrkrlrmc|jSr`)rmxs rZz"IcoFile.__init__..samr[)keyc|jSr`)rlr{s rZr}z"IcoFile.__init__..sahr[T)r~reverseN)rHrb SyntaxErrorruentryi16nb_itemsrangerdi32rrr9r7) selfrusmsgirLrMrfri icon_headers rZ__init__zIcoFile.__init__s HHQKKqzz ##Cc"" " Aq  t}%% + +A AaDKCEqT[SFtHa))C$!11ayy1IIAYY1bzzFOv~ THM$Ld3x;K;K6L6LTQTK J  k * * * *DJ,C,CDDD DJ,>,>MMM r[set[tuple[int, int]]c$d|jDS)zI Get a set of all available icon sizes and color depths. c*h|]}|j|jfSrr)rLrM).0hs rZ z IcoFile.sizes..s!888!(#888r[)rrs rZrz IcoFile.sizess98TZ8888r[Fr6rjri int | boolrecvt|jD]#\}}||jkr|dus ||jkr|cS$dS)NFr) enumeraterrkrm)rr6rirrs rZ getentryindexzIcoFile.getentryindexsMdj))  DAqqu}}#,,#2F2Fqr[rcT||||S)z, Get an image from the icon )rRr)rr6ris rZgetimagezIcoFile.getimages&zz$,,T377888r[idxc |j|}|j|j|jd}|j|j|ddt jkr4t j|j}tj |j nNtj |j}tj |j |j dt|j ddz f|_|jd\}}}}t!j|d|j z|||jd<|jdkr|j||j|j d|j dzdzd dd} tjd |j | d d } n#t($rt jrd} nYnwxYw|j d} | dzdkr| d|j ddzz z } t| |j dzdz } |j|j z| z } |j| |j| } tjd |j |d dt| dz df} n #t($rt jrd} nYnwxYw| r*|d}|| |S)z- Get an image from frame idx r/Nrr r0r,r!rxryLr+)rrr-r*z1;Ir-RGBA)rrurGrSrHr r3 PngImageFiler _decompression_bomb_checkr6r DibImageFilere_sizetiler rFri frombuffer ValueErrorLOAD_TRUNCATED_IMAGESconvertputalpha)rrheaderdatardeoa alpha_bytesmaskw total_bytesand_mask_offset mask_datas rZrRz IcoFile.frames C  fm$$$x}}Q  fm$$$ 8~, , ,,TX66B  +BG 4 4 4 4 ,TX66B  +BG 4 4 4 C Q$7$78BHJAq!Q"FRW,Q"677 "(-&+"= "K o... HMM+66   +!AE B/ DD" 6# "ZZ'' D!!! s$1GG-,G-0J44KKN)rurrr)rr)F)r6rjrirrre)r6rjrirrr)rrerr)rnrorprrrrrRrrr[rZrtrts0N0N0N0Nd9999  99999 ZZZZZZr[rtcleZdZdZdZdZddZeddZej dd Zdd Z ddZ dS) IcoImageFilea PIL read-only image support for Microsoft Windows .ico files. By default the largest resolution image in the file will be loaded. This can be changed by altering the 'size' attribute before calling 'load'. The info dictionary has a key 'sizes' that is a list of the sizes available in the icon file. Handles classic, XP and Vista icon formats. When saving, PNG compression is used. Support for this was only added in Windows Vista. If you are unable to view the icon in Windows, convert the image to "RGBA" mode before saving. This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis . https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki ICOz Windows Iconrrc|jJt|j|_|j|jd<|jjdj|_|dS)Nrr) rrticorinforrkr6loadrs rZ_openzIcoImageFile._openVs]w"""47##!X^^-- 'HN1%)  r[rjc|jSr`)rrs rZr6zIcoImageFile.size]s zr[valuecT||jdvrd}t|||_dS)Nrz2This is not one of the allowed sizes of this image)rrr)rrrs rZr6zIcoImageFile.sizeas0  '* * *FCS// ! r[Image.core.PixelAccess | Nonec|j4|jj|jkrtj|S|j|j}||j|_|j|_|j r |j |_ |j|jkrztj d|j |j}t|jd}|j||<t||jd<|j|_tj|S)NzImage was not the expected sizer)_imrr6r rrrr;_modepalettewarningswarnrlistrr8)rrindexrs rZrzIcoImageFile.loadhs 8 DGLDI$=$=;##D)) ) X  ty ) )  %W : &:DL 7di   M; < < <H**4955E7+,,E7E%L!$UDIg DI{%%%r[posrecdSr`rr)rrs rZ load_seekzIcoImageFile.load_seek~s  r[N)rr)rrj)rrjrr)rr)rrerr) rnrorp__doc__formatformat_descriptionrpropertyr6setterrrrrr[rZrr>s(F'X [[ &&&&,      r[rz.icoz image/x-icon)rrrrrrrr)r\r]rr^)% __future__rriormathrrtypingrrr r r r _binaryrrrrrrr@rrIr3rErbrdrtr register_openr register_saveregister_extension register_mimerrr[rZrsJ#"""""!!!!!!!!>>>>>>>>>>>>!!!!!!!!!!!!!!!!!!!!!!!! JJJJZ%%%%        ________LC C C C C 9&C C C TL'w???L'///,f555L'88888r[