o �J�h12�@sddlmZddlZddlmZddlmZmZddlm Z m Z ddl m Z m Z mZmZddlmZdd lmZdd lmZdd lmZdd lmZd Zd%dd�Zd&dd�ZGdd�de �ZGdd �d �ZGd!d"�d"ej�Ze � ej!ee�e �"ej!e�e �#ej!d#�e �$ej!d$�dS)'�)� annotationsN)�BytesIO)�ceil�log)�IO� NamedTuple�)�BmpImagePlugin�Image� ImageFile�PngImagePlugin)�i16le)�i32le)�o8)�o16le)�o32les�im� Image.Image�fp� IO[bytes]�filename� str | bytes�return�Nonec Cs�|�t�|j�d�dk}|j�dgd��}g}|g|j�dg�}|j\}}tt|��D]m} | d|ksG| d|ksG| ddksG| ddkrHq-|D]<} | j| krRqJ|�| �|r�tj | j d} | g} |D]} | j| krnqftj | j d} | | vr�|�| �| �| �qfn| � �}|j | t jjdd �|�|�q-|�tt|���|��t|�d }|D]�}|j\}}|�t|dkr�|nd��|�t|dkr�|nd��|r�tj |j dd�nd \} }|�t|��|�d �|�d �|�t| ��t�}|�r!|�|d�| dk�r t �d| �}t�||t�dd| dd�g�n|�|d�|�d�|��}|�rE|dd�t|d�|dd�}t|�}|�t|��|�t|��|��}|�|�|�|�||}|�|�q�dS)NZ bitmap_format�bmp�sizes))�r)�r)� r)�0r)�@r )�r!)�r"� append_imagesrrr")� reducing_gapr)rr�sZdibr�1�raw�rr)r&r������png��� )�write�_MAGIC� encoderinfo�get�size�sorted�set�appendr �SAVE�mode�copy� thumbnailr � Resampling�LANCZOS�o16�len�tellrr�save�newr �_save�_Tile�seek�read�o32)rrrrr�framesZ provided_ims�width�heightr2Z provided_im�bitsZ bits_usedZother_im�frame�offset�colorsZimage_ioZand_maskZ image_bytesZ bytes_len�current�rN�PC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\PIL\IcoImagePlugin.pyrA+s� � 0     � �       ��  $   �rA�prefix�bytes�boolcCs|dd�tkS)N�)r/)rPrNrNrO�_acceptxsrTc@sfeZdZUded<ded<ded<ded<ded<ded<ded<ded <d ed <ded <ded <dS)� IconHeader�intrGrH�nb_color�reserved�planes�bppr2rK�tuple[int, int]�dim�square� color_depthN)�__name__� __module__� __qualname__�__annotations__rNrNrNrOrU|s  rUc@sBeZdZddd�Zddd �Zdddd�Zdddd�Zddd�ZdS)�IcoFile�bufrrrc Cs|�d�}t|�sd}t|��||_g|_t|d�|_t|j�D]P}|�d�}|dp,d}|dp2d}|d}t|d�}t||||d t|d�t|d�t |d �t |d �||f|||pg|dkrft t |d��pgdd � } |j� | �q t |jd d�d�|_t |jdd�dd�|_dS)zL Parse image from file-like object containing ico file data �znot an ICO filerSrrr"rr,�r+r-) rGrHrWrXrYrZr2rKr\r]r^cS�|jS�N)r^��xrNrNrO�<lambda>��z"IcoFile.__init__.<locals>.<lambda>)�keycSrgrh)r]rirNrNrOrk�rlT)rm�reverseN)rDrT� SyntaxErrorrd�entry�i16�nb_items�rangerU�i32rrr5r3) �selfrd�s�msg�irGrHrWrZZ icon_headerrNrNrO�__init__�s:      �zIcoFile.__init__�set[tuple[int, int]]cCsdd�|jD�S)zI Get a set of all available icon sizes and color depths. cSsh|]}|j|jf�qSrN)rGrH)�.0�hrNrNrO� <setcomp>�sz IcoFile.sizes.<locals>.<setcomp>)rp�rurNrNrOr�sz IcoFile.sizesFr2r[rZ� int | boolrVcCs<t|j�D]\}}||jkr|dus||jkr|SqdS)NFr)� enumeraterpr\r^)rur2rZrxr|rNrNrO� getentryindex�s �zIcoFile.getentryindexrcCs|�|�||��S)z, Get an image from the icon )rJr�)rur2rZrNrNrO�getimage�szIcoFile.getimage�idxc Cs|j|}|j�|j�|j�d�}|j�|j�|dd�tjkr0t�|j�}t� |j �|St � |j�}t� |j �|j dt |j dd�f|_|jd\}}}}t�|d|j ||�|jd<|jdkr�|j�|�|j�|j d|j dd�d dd�} z t�d |j | d d �} Wnity�tjr�d} n�YnZw|j d} | ddkr�| d|j dd7} t | |j dd�} |j|j | } |j�| �|j�| �}zt�d |j |d dt | d�df�} Wnty�tjr�d} n�Ynw| �r|�d�}|�| �|S)z- Get an image from frame idx r+Nrrr,r(rrSrf�Lr')r�rr)r&z1;Ir)�RGBA)rprdrCrKrDr r/� PngImageFiler �_decompression_bomb_checkr2r � DibImageFilerV�_size�tiler rBrZ� frombuffer� ValueError�LOAD_TRUNCATED_IMAGES�convert�putalpha)rur��header�datar�d�e�o�a� alpha_bytes�mask�w� total_bytesZand_mask_offsetZ mask_datarNrNrOrJ�sn    K �   *� ��    � ��  z IcoFile.frameN)rdrrr)rrz)F)r2r[rZrrrV)r2r[rZrrr)r�rVrr)r_r`raryrr�r�rJrNrNrNrOrc�s   2  rcc@sTeZdZdZdZdZddd�Zedd d ��Zej dd d ��Zddd�Z ddd�Z 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 <casadebender@gmail.com>. https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki ZICOz Windows IconrrcCs8t|j�|_|j��|jd<|jjdj|_|��dS)Nrr) rcr�icor�inforpr\r2�loadr~rNrNrO�_openHs  zIcoImageFile._openr[cCrgrh)r�r~rNrNrOr2NszIcoImageFile.size�valuecCs$||jdvr d}t|��||_dS)Nrz2This is not one of the allowed sizes of this image)r�r�r�)rur�rwrNrNrOr2Rs �Image.core.PixelAccess | NonecCs�|jdur|jj|jkrtj�|�S|j�|j�}|��|j|_|j|_|j r,|j |_ |j|jkrUt � d�|j� |j�}t |jd�}|j||<t|�|jd<|j|_dS)NzImage was not the expected sizer)�_imrr2r r�r�r�r7�_mode�palette�warnings�warnr��listr�r4)rur�indexrrNrNrOr�Ys     zIcoImageFile.load�posrVcCsdSrhrN)rur�rNrNrO� load_seekoszIcoImageFile.load_seekN)rr)rr[)r�r[rr)rr�)r�rVrr) r_r`ra�__doc__�format�format_descriptionr��propertyr2�setterr�r�rNrNrNrOr�0s    r�z.icoz image/x-icon)rrrrrrrr)rPrQrrR)%� __future__rr��ior�mathrr�typingrr�r r r r �_binaryr rqrrtrrr<rrEr/rArTrUrcr�� register_openr�� register_save�register_extension� register_mimerNrNrNrO�<module>s,         M'I
Memory