
    zvg2                       d dl mZ d dlZd dlZd dlZd dlZd dlmZ ddlm	Z	m
Z
mZmZ ddlmZ  ej        d          ZerddlmZ d	Zd
Zd4dZd5dZd5dZd5dZd5dZ G d d          Z G d de
j
                  Zd6d#Zd7d'Z e	j        ej        ee            e	j        ej        d(            e	j         ej        e            e	j!        ej        d)           e"d*k    r
 e#ej$                  d+k     r e%d,            ej&                      e'ej$        d         d-          5 Z( ee(          Z)e)j*        d.         D ].Z+e+x\  Z,Z-Z.e)_+        e)/                    d/e, d0e- d0e. d1           / e	j'        ej$        d                   5 Z0e0/                    d2           ddd           n# 1 swxY w Y   ej1        d3k    r ej2        d2           ddd           dS # 1 swxY w Y   dS dS )8    )annotationsN)IO   )Image	ImageFilePngImagePluginfeatures)	deprecatejpg_2000)Jpeg2KImagePlugins   icns   fobj	IO[bytes]returntuple[bytes, int]c                \    t          j        d|                     t                              S )Nz>4sI)structunpackread
HEADERSIZE)r   s    P/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/PIL/IcnsImagePlugin.py
nextheaderr   &   s     =:!6!6777    start_lengthtuple[int, int]sizetuple[int, int, int]dict[str, Image.Image]c                    |\  }}|                      |           |                     d          }|dk    rd}t          |          t          | |dz   |dz
  f|          S )N   s       z'Unknown signature, expecting 0x00000000)seekr   SyntaxErrorread_32)r   r   r   startlengthsigmsgs          r   read_32tr(   *   sl     #OUFIIe
))A,,C
!!!7#4%!)VaZ0$777r   c           
        |\  }}|                      |           |d         |d         z  |d         |d         z  f}|d         |d         z  }||dz  k    r1|                     |          }t          j        d||dddd          }nOt          j        d|d          }t          d          D ](}	g }
|}|dk    r|                     d          }|sn|d         }|dz  rB|d	z
  }|                     d          }t          |          D ]}|
                    |           n-|dz   }|
                    |                     |                     ||z  }|dk    rn|dk    |dk    r"d
t          |           d}t          |          t          j        d|d	                    |
          dddd          }|j
                            |j
        |	           *d|iS )zn
    Read a 32bit RGB icon resource.  Seems to be either uncompressed or
    an RLE packbits-like scheme.
    r      r      RGBrawN   }   zError reading channel [z left]Lr   )r!   r   r   
frombuffernewrangeappendreprr"   joinimputband)r   r   r   r$   r%   
pixel_sizesizesqindatar7   band_ixdata	bytesleftbytebyte_int	blocksizeir'   bands                     r   r#   r#   7   s    #OUFIIeq'DG#T!WtAw%67J]Z]*F!6""eZq!LL Yuj$//Qxx 	, 	,GDIa--yy|| 7d? 6 (3I99Q<<D"9-- * *D))))* !)1IKK		) 4 4555Y&	>> a--  A~~GYGGG!#&&&#CSXXd^^UCQRTUVVDEMM$'7++++2;r   c           	        |d         }|                      |           |d         |d         z  |d         |d         z  f}|d         |d         z  }t          j        d||                     |          dddd          }d|iS )Nr   r*   r   r0   r-   A)r!   r   r1   r   )r   r   r   r$   r9   r:   rC   s          r   read_mkrF   d   s     OEIIeq'DG#T!WtAw%67J]Z]*FCTYYv->->sAqQQD;r   c                   |\  }}|                      |           |                     d          }|d d         dk    rF|                      |           t          j        |           }t	          j        |j                   d|iS |d d         dk    s|d d         dk    s|dk    rt          sd	}t          |          |                      |           |                     |          }t          j
        |          }	t          j        |	          }t	          j        |j                   |j        dk    r|                    d          }d|iS d
}t          |          )N   r   s   PNG

RGBAr    s   OQs   

s      jP  

zQUnsupported icon subimage format (rebuild PIL with JPEG 2000 support to fix this)z Unsupported icon subimage format)r!   r   r   PngImageFiler   _decompression_bomb_checkr   enable_jpeg2k
ValueErrorioBytesIOr   Jpeg2KImageFilemodeconvert)
r   r   r   r$   r%   r&   r7   r'   
jp2kstreamfs
             r   read_png_or_jpeg2000rU   p   se    #OUFIIe
))B--C 2A2w,,,		%(..'000|BQB&&&rr7)))999 	"6  S//!		%YYv&&
Jz"".q11'0007fF##B|0oor   c                      e Zd Zdefgdefgdefgdefgdefgdefdefdefgd	efgd
efgdefdefgdefdefdefgdefgdefdefdefgdZd%dZd&dZ	d'dZ
d(d Z	 d)d*d$Zd!S )+IcnsFile   ic10   ic09   ic14   ic08   ic13   ic07s   it32s   t8mks   icp6   ic12s   ih32s   h8mks   icp5s   il32s   l8mk   ic11s   icp4s   is32s   s8mk))   r`   r*   )r`   r`   r   )   ra   r*   )ra   ra   r   )r.   r.   r*   )r.   r.   r   )@   rb   r   )    rc   r*   )0   rd   r   )rc   rc   r   )   re   r*   )re   re   r   r   r   r   Nonec                   i | _         || _        t          |          \  }}t          |          sd}t	          |          t
          }||k     rvt          |          \  }}|dk    rd}t	          |          |t
          z  }|t
          z  }||f| j         |<   |                    |t          j                   ||z  }||k     tdS dS )z@
        fobj is a file-like object as an icns resource
        znot an icns filer   zinvalid block headerN)	dctr   r   _acceptr"   r   r!   rN   SEEK_CUR)selfr   r&   filesizer'   rB   rA   s          r   __init__zIcnsFile.__init__   s    
 	"4((Xs|| 	#$Cc"""(ll'--NCA~~,!#&&&OA#I	NDHSMIIi---NA (llllllr   list[tuple[int, int, int]]c                    g }| j                                         D ]-\  }}|D ]%\  }}|| j        v r|                    |            n&.|S N)SIZESitemsrh   r4   )rk   sizesr   fmtsfmtreaders         r   	itersizeszIcnsFile.itersizes   sj    ***,, 	 	JD$#  V$(??LL&&&E # r   r   c                n    |                                  }|sd}t          |          t          |          S )NzNo 32bit icon resources found)rw   r"   max)rk   rs   r'   s      r   bestsizezIcnsFile.bestsize   s8       	#1Cc"""5zzr   r   r   c                    i }| j         |         D ]F\  }}| j                            |          }|%|                     || j        ||                     G|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.
        )rq   rh   getupdater   )rk   r   rh   coderv   descs         r   dataforsizezIcnsFile.dataforsize   sd      Jt, 	: 	:LD&8<<%%D

66$)T488999
r   N-tuple[int, int] | tuple[int, int, int] | NoneImage.Imagec                f   ||                                  }n$t          |          dk    r|d         |d         df}|                     |          }|                    d          }|r|S |d                                         }	 |                    |d                    n# t          $ r Y nw xY w|S )Nr*   r   r   rI   r,   rE   )rz   lenr   r|   copyputalphaKeyError)rk   r   channelsr7   s       r   getimagezIcnsFile.getimage   s     <==??DDYY!^^GT!Wa(D##D))\\&!! 	Ie_!!##	KK&&&& 	 	 	D		s   B! !
B.-B.)r   r   r   rf   )r   rn   )r   r   )r   r   r   r   rp   )r   r   r   r   )__name__
__module____qualname__rU   r(   rF   r#   rq   rm   rw   rz   r   r    r   r   rW   rW      s`        "678 "678 "678 "678 "678*+hg

  456 456(7G*<=*+gg

  456*+gg
) E6   .          EI      r   rW   c                  f    e Zd ZdZdZdZddZedd            Zej	        dd
            ZdddZ
dS )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.
    ICNSzMac OS icns resourcer   rf   c                :   t          | j                  | _        d| _        | j                                        | j        d<   | j                                        | _        | j        d         | j        d         z  | j        d         | j        d         z  f| _        d S )NrI   rs   r   r*   r   )	rW   fpicns_moderw   inforz   	best_sizer   rk   s    r   _openzIcnsImageFile._open  s    TW%%	
!Y0022	'++--N1q 11N1q 11
			r   &tuple[int, int] | tuple[int, int, int]c                    | j         S rp   )_sizer   s    r   r   zIcnsImageFile.size  s
    zr   valuec                b   t          |          dk    r*t          ddd           || j        d         v r	|| _        d S nb| j        d         D ]T}|d         |d         z  |d         |d         z  f}|d         |d         z  }|d         |d         z  |k    r
|| _         d S Ud	}t	          |          )
Nr+   z&Setting size to (width, height, scale)rH   zload(scale)rs   r   r*   r   z2This is not one of the allowed sizes of this image)r   r
   r   r   rM   )rk   r   r   simple_sizescaler'   s         r   r   zIcnsImageFile.size  s    u::??>MRRR	'***"
 + 	'*  "1gQ/a471BB#A%(2q>E!H,55!&DJFF 6 Coor   Nr   
int | NoneImage.core.PixelAccess | Nonec                6   |t          | j                  dk    rV|%t          | j                  dk    r| j        d         }|J | j        d d         \  }}||z  ||z  f| _        |||f| _        t          j                            |           }| j        | j        j        | j        k    r|S |                                  | j        	                    | j                  }|                                }|j        | _        |j
        | _        |j        | _        |S )Nr+   r*   )r   r   r   r   load_imr7   load_preparer   r   rQ   r   )rk   r   widthheightpxr7   s         r   r   zIcnsImageFile.load.  s   DI! 3 3}TY1!4!4	!$$$ IbqbMME6v~5DI"FE1DN[d##8DGLDI$=$=IY// WWYY%W
G		r   )r   rf   )r   r   )r   r   r   rf   rp   )r   r   r   r   )r   r   r   __doc__formatformat_descriptionr   propertyr   setterr   r   r   r   r   r      s          F/
 
 
 
    X 
[   [$      r   r   r7   r   r   filenamestr | bytesrf   c           	        t          |d          r|                                 ddddddddd}d	 | j                            d
g           D             }i }t	          |                                          D ]e}||v r||         n|                     ||f          }t          j                    }|	                    |d           |
                                ||<   fg }	|                                D ]:\  }
}||         }|	                    |
t          t          |          z   |f           ;|                    t                      t          }|t          dt          |	          z  z   z  }|t#          d |	D                       z  }|                    t%          j        d|                     |                    d           |                    t%          j        dt          t          |	          t          z  z                        |	D ]K}|                    |d                    |                    t%          j        d|d                              L|	D ]f}|                    |d                    |                    t%          j        d|d                              |                    |d                    gt          |d          r|                                 dS dS )za
    Saves the image as a series of PNG files,
    that are then combined into a .icns file.
    flushr.   ra   r`   i   rc   rb   )r]   r[   rY   rX   r_   r^   r\   rZ   c                    i | ]
}|j         |S r   )r   ).0r7   s     r   
<dictcomp>z_save.<locals>.<dictcomp>[  s    VVVrxVVVr   append_imagespngr   c              3  &   K   | ]}|d          V  dS )r   Nr   )r   entrys     r   	<genexpr>z_save.<locals>.<genexpr>q  s&      55EuQx555555r   z>is   TOC r   r   r*   N)hasattrr   encoderinfor|   setvaluesresizerN   rO   savegetvaluerr   r4   r   r   writeMAGICsumr   pack)r7   r   r   rs   provided_imagessize_streamsr   imagetempentriestypestreamfile_lengthr   s                 r   _saver   I  s   
 r7 



 	 	E WVbn.@.@RT.U.UVVVOLELLNN## 	- 	- && D!!D$<(( 	 z||

4!]]__TGkkmm A A
dd#j3v;;6?@@@@ HHUOOOK:CLL 000K355W555555KHHV[{++,,, HHWHHV[zCLL:,EEFFGGG . .
q
T58,,----   
q
T58,,---
qr7 





 r   prefixbytesboolc                (    | d d         t           k    S )Nr    )r   )r   s    r   ri   ri     s    "1":r   z.icnsz
image/icns__main__r*   z)Syntax: python3 IcnsImagePlugin.py [file]rbrs   zout--z.pngzout.pngwindows)r   r   r   r   )r   r   r   r   r   r   r   r   )r7   r   r   r   r   r   r   rf   )r   r   r   r   )3
__future__r   rN   osr   systypingr    r   r   r   r	   
_deprecater
   check_codecrL   r   r   r   r   r(   r#   rF   rU   rW   r   r   ri   register_openr   register_extensionregister_saveregister_mimer   r   argvprintexitopenr   imfr   r   r   r   r   r   r7   platform	startfiler   r   r   <module>r      s  & # " " " " " 				 				  



       8 8 8 8 8 8 8 8 8 8 8 8 ! ! ! ! ! !$$Z00 $######
8 8 8 8
8 
8 
8 
8* * * *Z	 	 	 	# # # #Lb b b b b b b bRG G G G GI' G G GT9 9 9 9x     M(- A A A  -w 7 7 7  M(% 0 0 0  M(, 7 7 7z
s38}}q9:::


	chqk4	 	  $BmBHW% 	: 	:D.22 E6538HH8E88F88U8889999UZ$$ 	GGI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<9$$BL###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ s7   ,A#G$F1%G$1F5	5G$8F5	9G$$G(+G(