HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/PIL/__pycache__/IcoImagePlugin.cpython-38.pyc
U

tCf�'�@s�ddlZddlZddlmZddlmZmZddlmZm	Z	m
Z
mZddlm
Z
mZmZdZdd	�Zd
d�ZGdd
�d
�ZGdd�de
j
�Ze	�ejee�e	�eje�e	�ejd�e	�ejd�dS)�N)�BytesIO)�ceil�log�)�BmpImagePlugin�Image�	ImageFile�PngImagePlugin)�i8�i16le�i32lesc
s�|�t�|j�ddddddddg�}|j\��t��fd	d
�|�}t|�}|�t�dt	|���|�
�t	|�d}|D�]}|\��|�t�d
�dkr��nd��|�t�d
�dkr��nd��|�d�|�d�|�d�|�t�dd��t�}|��}|j
|tjdd�|�|d�|�d�|��}t	|�}	|�t�d|	��|�t�d|��|�
�}
|�|�|�|�||	}|�|
�qzdS)N�sizes)�r)�r)� r)�0r)�@r)�r)�rcs8|d�ks0|d�ks0|ddks0|ddkr4dSdS)NrrrFT���x��height�widthr�4/usr/lib/python3/dist-packages/PIL/IcoImagePlugin.py�<lambda>/s
�
�
�
�z_save.<locals>.<lambda>z<Hr�Brr�sr)Zreducing_gapZpngz<I)�write�_MAGICZencoderinfo�get�size�filter�list�structZpack�len�tellr�copyZ	thumbnailrZLANCZOSZsave�seek�read)�im�fp�filenamer
�offsetr"Zimage_ioZtmpZimage_bytesZ	bytes_lenZcurrentrrr�_save'sF
�
�






r/cCs|dd�tkS)N�)r )�prefixrrr�_acceptRsr2c@s8eZdZdd�Zdd�Zd
dd�Zddd	�Zd
d�ZdS)�IcoFilecCsj|�d�}t|�std��||_g|_t|dd��|_t|j�D]�}|�d�}t|d�t|d�t|d�t|d	�t|dd��t|dd��t	|d
d��t	|dd��d�}d
D]}||s�d||<q�|dp�|ddkr�t
t|dd��p�d|d<|d|df|d<|d|d|d<|j�|�qBt
|jdd�d�|_t
|jdd�d�|_|j��dS)zL
        Parse image from file-like object containing ico file data
        �znot an ICO filer0Nrrr����)rr�nb_colorZreservedZplanes�bppr"r.�rrrr:r9�color_depthrr�dim�squarecSs|dS)Nr<rrrrrr��z"IcoFile.__init__.<locals>.<lambda>)�keycSs|dS)Nr>rrrrrr�r?)r*r2�SyntaxError�buf�entry�i16Znb_items�ranger
�i32rr�append�sorted�reverse)�selfrB�s�iZicon_header�jrrr�__init__Ws@





�
��	zIcoFile.__init__cCsdd�|jD�S)zJ
        Get a list of all available icon sizes and color depths.
        cSsh|]}|d|df�qSr;r)�.0�hrrr�	<setcomp>�sz IcoFile.sizes.<locals>.<setcomp>)rC�rJrrrr
�sz
IcoFile.sizesFcCs@t|j�D]0\}}||dkr
|dks2||dkr
|Sq
dS)Nr=Fr<r)�	enumeraterC)rJr"r:rLrPrrr�
getentryindex�s 
zIcoFile.getentryindexcCs|�|�||��S)z,
        Get an image from the icon
        )�framerT)rJr"r:rrr�getimage�szIcoFile.getimagec
Cs|j|}|j�|d�|j�d�}|j�|d�|dd�tjkrdt�|j�}t�|j	��n�t
�|j�}t�|j	�|j	dt|j	dd�f|_
|jd\}}}}|d|j	||f|jd<|d}	d}
t
j��D]\}}|	|dkr�|}
q�q�d|
k�rN|j�|�|j�|j	d|j	dd	�d
dd	�}
t�d|j	|
dd
�}n�|j	d}|ddk�r||d|j	dd7}|t|j	d|j	d|
d�}t||j	dd�}|j�|�|j�|�}t�d|j	|ddt|d�df�}|�d�}|�|�|S)z-
        Get an image from frame idx
        r.r7Nrrr5)rrrr0r6�L�raw)rWr���g @�1z1;IrYZRGBA)rCrBr)r*r	r ZPngImageFilerZ_decompression_bomb_checkr"rZDibImageFile�int�_sizeZtileZBIT2MODE�itemsZ
frombufferZconvertZputalpha)rJ�idx�header�datar+�d�e�o�a�moder:�k�vZalpha_bytes�mask�wZand_mask_offsetZtotal_bytesZ	mask_datarrrrU�sZ

*�	
$�

z
IcoFile.frameN)F)F)�__name__�
__module__�__qualname__rNr
rTrVrUrrrrr3Vs
:

r3c@sJeZdZdZdZdZdd�Zedd��Zej	dd��Zd	d
�Z
dd�Zd
S)�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.

    This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis
    <casadebender@gmail.com>.
    https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki
    ZICOzWindows IconcCs:t|j�|_|j��|jd<|jjdd|_|��dS)Nr
rr=)r3r,�icor
�inforCr"�loadrRrrr�_openszIcoImageFile._opencCs|jS�N)r\rRrrrr"szIcoImageFile.sizecCs ||jdkrtd��||_dS)Nr
z2This is not one of the allowed sizes of this image)ro�
ValueErrorr\)rJ�valuerrrr"scCs�|jr|jj|jkrdS|j�|j�}|��|j|_|j|_|j|jkr�t�d�|j�|j�}t	|j
d�}|j||<t|�|j
d<|j|_dS)NzImage was not the expected sizer
)r+r"rnrVrpre�warnings�warnrTr$ro�set)rJr+�indexr
rrrrp$s

zIcoImageFile.loadcCsdSrrrrRrrr�	load_seek7szIcoImageFile.load_seekN)rjrkrl�__doc__�formatZformat_descriptionrq�propertyr"�setterrpryrrrrrm�s

rmz.icozimage/x-icon)r%ru�iorZmathrr�rrrr	Z_binaryr
rrDrrFr r/r2r3rmZ
register_openr{Z
register_saveZregister_extensionZ
register_mimerrrr�<module>s+(D