K iu0 BddlmZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z e jdZerddlmZdZd Zd!d Z d"d Z d"d Z d"d Z d"dZGddZGdde jZd#dZd$dZe j6ej8eee j:ej8de j<ej8ee j>ej8de dk(re!ejDdkre#dejHe%ejDdd5Z&ee&Z'e'jPdD]*Z)e)x\Z*Z+Z,e'_)e'j[de*de+de,d,e jJejDd5Z.e.j[ddddej^d k(rej`ddddyy#1swY4xYw#1swYyxYw)%) annotationsN)IO)Image ImageFilePngImagePluginfeaturesjpg_2000)Jpeg2KImagePluginsicnscTtjd|jtS)Nz>4sI)structunpackread HEADERSIZE)fobjs Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/PIL/IcnsImagePlugin.py nextheaderr%s ==:!6 77c|\}}|j||jd}|dk7r d}t|t||dz|dz f|S)Nsz'Unknown signature, expecting 0x00000000)seekr SyntaxErrorread_32)r start_lengthsizestartlengthsigmsgs rread_32tr!)s[#OUFIIe ))A,C !!7# 4%!)VaZ0$ 77rc B|\}}|j||d|dz|d|dzf}|d|dz}||dzk(r0|j|}tjd||dddd}d|iStjd|d}t dD]} g} |} | dkDr|jd} | snx| d} | dzr8| d z }|jd} t |D]}| j | n%| dz}| j |j|| |z} | dkrn| dkDr| dk7rd t| d }t|tjd |d j| dd dd}|jj|j|  d|iS)zn Read a 32bit RGB icon resource. Seems to be either uncompressed or an RLE packbits-like scheme. rrRGBrawN}zError reading channel [z left]Lr) rrr frombuffernewrangeappendreprrjoinimputband)rrrrr pixel_sizesizesqindatar0band_ixdata bytesleftbytebyte_int blocksizeir bands rrr6s#OUFIIeq'DG#T!WtAw%67J ]Z] *F !6"   eZq! L8 2;3YYuj$ /Qx ,GDIa-yy|7d? (3I99Qa- A~/Y/@G!#&&##CSXXd^UCQRTUVD EEMM$''7 +/ ,0 2;rc |d}|j||d|dz|d|dzf}|d|dz}tjd||j|dddd}d|iS)Nrr#rr)r&A)rrr*r)rrrrr2r3r<s rread_mkr?cs~ OEIIeq'DG#T!WtAw%67J ]Z] *F   CTYYv->sAq QD ;rc|\}}|j||jd}|jdrI|j|tj|}t j |jd|iS|jds|dk(rts d}t||j||j|}tj|} tj| }t j |j|jdk7r|jd}d|iSd}t|)N sPNG  RGBA)sOQs s jP zQUnsupported icon subimage format (rebuild PIL with JPEG 2000 support to fix this)z Unsupported icon subimage format)rr startswithr PngImageFiler_decompression_bomb_checkr enable_jpeg2k ValueErrorioBytesIOr Jpeg2KImageFilemodeconvert) rrrrrrr0r jp2kstreamfs rread_png_or_jpeg2000rOos#OUFIIe ))B-C ~~01 %  ( ( . ''0| AB 9 96 S/ ! %YYv& JJz "  . .q 1 ''0 77f F#B|0orceZdZdefgdefgdefgdefgdefgdefdefdefgd efgd efgd efd efgd efdefdefgdefgdefdefdefgd ZddZddZ ddZ ddZ d d dZ y)!IcnsFileic10ic09ic14ic08ic13ic07sit32st8mksicp6ic12sih32sh8mksicp5sil32sl8mkic11sicp4sis32ss8mk) )rZr#)rZrZr)r[r#)r[r[r)r'r'r#)r'r'r)@r\r) r]r#)0r^r)r]r]r)r_r#)r_r_rc`i|_||_t|\}}t|s d}t |t }||krot|\}}|dkr d}t ||t z }|t z}||f|j|<|j |tj||z }||krnyy)z@ fobj is a file-like object as an icns resource znot an icns filerzinvalid block headerN) dctrr_acceptrrrrHSEEK_CUR)selfrrfilesizer r;r:s r__init__zIcnsFile.__init__s  "4( Xs|$Cc" " (l'-NCA~,!#&& OA  #I NDHHSM IIi - NA(lrcg}|jjD]0\}}|D]&\}}||jvs|j|02|SN)SIZESitemsrar-)rdsizesrfmtsfmtreaders r itersizeszIcnsFile.itersizess[****, JD$#  V$((?LL&    rcV|j}|s d}t|t|S)NzNo 32bit icon resources found)rormax)rdrkr s rbestsizezIcnsFile.bestsizes+ 1Cc" "5zrci}|j|D]F\}}|jj|}|$|j||j||H|S)z Get an icon resource as {channel: array}. Note that the arrays are bottom-up like windows bitmaps and will likely need to be flipped or transposed in some way. )riragetupdater)rdrracoderndescs r dataforsizezIcnsFile.dataforsizes]  JJt, :LD&88<<%D 6$))T489 : rNc||j}nt|dk(r |d|ddf}|j|}|jd}|r|S|dj } |j |d|S#t $rY|SwxYw)Nr#rrrBr%r>)rrlenrxrtcopyputalphaKeyError)rdrchannelsr0s rgetimagezIcnsFile.getimages <==?D Y!^GT!Wa(D##D) \\& ! I e_ ! ! #  KK &     s'A== B  B )r IO[bytes]returnNone)rzlist[tuple[int, int, int]])rtuple[int, int, int])rrrdict[str, Image.Image]rh)rz-tuple[int, int] | tuple[int, int, int] | Noner Image.Image) __name__ __module__ __qualname__rOr!r?rrirfrorrrxrrrrQrQs  "678 "678 "678 "678 "678 * + h  g   456 456(7G*<= * + g  g   456 * + g  g  ) E6. EIA rrQcbeZdZdZdZdZd dZed dZejd dZd d dZ y) IcnsImageFilea! PIL image support for Mac OS .icns files. Chooses the best resolution, but will possibly load a different size image if you mutate the size attribute before calling 'load'. The info dictionary has a key 'sizes' that is a list of sizes that the icns file has. ICNSzMac OS icns resourcecXt|j|_d|_|jj |j d<|jj |_|jd|jdz|jd|jdzf|_y)NrBrkrr#r) rQfpicns_moderoinforr best_sizerrds r_openzIcnsImageFile._open sTWW%  !YY002 '++- NN1 q 1 1 NN1 q 1 1  rc|jSrh)_sizers rrzIcnsImageFile.sizes zzrc|jdD]:}|d|dz|d|dzf}|d|dz}|d|dz |k(s3||_yd}t|)Nrkrr#rz2This is not one of the allowed sizes of this image)rrrG)rdvaluer simple_sizescaler s rrzIcnsImageFile.sizesIIg& Dq'DG+T!WtAw->>KNeAh.E1~a(E1"    CorNc|+|jdd\}}||z||zf|_|||f|_tjj|}|j%|j j|jk(r|S|j |jj|j}|j}|j |_|j|_ |j|_|S)Nr#) rrrload_imr0 load_preparerrrKr)rdrwidthheightpxr0s rrzIcnsImageFile.load&s   IIbqMME6 v~5DI"FE1DN [[  d # 88 DGGLLDII$=I  YY   /WWY%%WW GG  r)rr)rtuple[int, int])rrrrrh)rz int | NonerzImage.core.PixelAccess | None) rrr__doc__formatformat_descriptionrpropertyrsetterrrrrrrsJF/  [[  rrc t|dr|jddddddddd}|jjd gDcic]}|j|}}i}t |j D]W}||vr||nj||f}tj}|j|d |j||<Yg} |jD].\} }||} | j| tt| z| f0|j!t"t} | td t| zzz } | t%d | Dz } |j!t'j(d | |j!d|j!t'j(d tt| tzz| D]>} |j!| d|j!t'j(d | d@| D]R} |j!| d|j!t'j(d | d|j!| dTt|dr|jyycc}w)za Saves the image as a series of PNG files, that are then combined into a .icns file. flushr'r[rZir]r\)rWrUrSrRrYrXrVrT append_imagespngr c3&K|] }|d yw)rNr).0entrys r z_save..fs5EuQx5sz>isTOC rrr#N)hasattrr encoderinfortrsetvaluesresizerHrIsavegetvaluerjr-rrzwriteMAGICsumrpack)r0rfilenamerkprovided_images size_streamsrimagetempentriestypestream file_lengthrs r_saver>sR r7   E/1nn.@.@RT.UVrxx|VOVLELLN# -& D !D$<(  zz| 4!]]_ T -GkkmA dd#j3v;6?@A HHUOK:CL 000K35W555KHHV[[{ +,HHWHHV[[zCL:,EE FG. q T58,-.  q T58,- q r7  MWsJc,|jtSrh)rCr)prefixs rrbrbzs   U ##rz.icnsz image/icns__main__r#z)Syntax: python3 IcnsImagePlugin.py [file]rbrkzout--z.pngzout.pngwindows)rrrztuple[bytes, int])rrrrrrrr)r0rrrrz str | bytesrr)rbytesrbool)1 __future__rrHosrsystypingrrrrr check_codecrFr rrrr!rr?rOrQrrrb register_openrregister_extension register_save register_mimerrzargvprintexitopenrimfrrrrrrr0platform startfilerrrrsu&# 88$$$Z0 #  8 8  8#2 8:N 8 8* *#2*:N**Z   #2 :N  " "#2":N""JbbR>I''>B9x$M((-A--w7M((%0M((,7 z 388}q 9: chhqk4 $BBHHW% :D.2 2 E6538 HHtE7!F81UG48 9 :UZZ $  GGI   <<9 $ BLL #$$    $$s% A$HH )H H HH