Ë
    ¦üàg*#  ã                  ó¸   — d dl mZ d dlZd dlmZ d dlmZmZ ddlm	Z	m
Z
mZmZ erddlmZ  G d„ d	«      Zdd
„Zdd„Zdd„Zddd„Zddd„Zddd„Zddd„Zdd„Zy)é    )ÚannotationsN)ÚSequence)ÚIOÚTYPE_CHECKINGé   )ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚPaletteFile)ÚImagec                  óè   — e Zd ZdZ	 	 d	 	 	 	 	 dd„Zedd„«       Zej                  dd„«       Zedd„«       Zej                  dd„«       Zdd„Z	dd	„Z
dd
„ZeZ	 d	 	 	 	 	 dd„Z	 d	 	 	 	 	 dd„Zdd„Zy)ÚImagePalettea¥  
    Color palette for palette mapped images

    :param mode: The mode to use for the palette. See:
        :ref:`concept-modes`. Defaults to "RGB"
    :param palette: An optional palette. If given, it must be a bytearray,
        an array or a list of ints between 0-255. The list must consist of
        all channels for one color followed by the next color (e.g. RGBRGBRGB).
        Defaults to an empty palette.
    Nc                óT   — || _         d | _        |xs
 t        «       | _        d | _        y ©N)ÚmodeÚrawmodeÚ	bytearrayÚpaletteÚdirty)Úselfr   r   s      úN/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/PIL/ImagePalette.pyÚ__init__zImagePalette.__init__*   s'   € ð
 ˆŒ	Ø#'ˆŒØÒ-¤)£+ˆŒØ!%ˆ�
ó    c                ó   — | j                   S r   )Ú_palette©r   s    r   r   zImagePalette.palette4   s   € à�}‰}Ðr   c                ó    — d | _         || _        y r   )Ú_colorsr   )r   r   s     r   r   zImagePalette.palette8   s   € à:>ˆŒØˆ�r   c                ó,  — | j                   €}t        | j                  «      }i | _         t        dt        | j                  «      |«      D ]>  }t        | j                  |||z    «      }|| j                   v rŒ-||z  | j                   |<   Œ@ | j                   S )Nr   )r   Úlenr   Úranger   Útuple)r   Úmode_lenÚiÚcolors       r   ÚcolorszImagePalette.colors=   s‡   € à�<‰<ÐÜ˜4Ÿ9™9“~ˆHØˆDŒLÜ˜1œc $§,¡,Ó/°Ó:ò 4�Ü˜dŸl™l¨1¨q°8©|Ð<Ó=�Ø˜DŸL™LÑ(ØØ&'¨8¡m�—‘˜UÒ#ð	4ð
 �|‰|Ðr   c                ó   — || _         y r   )r   )r   r&   s     r   r&   zImagePalette.colorsI   s	   € àˆ�r   c                óÀ   — t        «       }| j                  |_        | j                  |_        | j                  �| j                  d d  |_        | j                  |_        |S r   )r   r   r   r   r   )r   Únews     r   ÚcopyzImagePalette.copyM   sH   € Ü‹nˆà—9‘9ˆŒØ—l‘lˆŒØ�<‰<Ð#ØŸ,™,¡q˜/ˆCŒKØ—J‘JˆŒ	àˆ
r   c                ó‚   — | j                   r| j                   | j                  fS | j                  | j                  «       fS )z£
        Get palette contents in format suitable for the low-level
        ``im.putpalette`` primitive.

        .. warning:: This method is experimental.
        )r   r   r   Útobytesr   s    r   ÚgetdatazImagePalette.getdataX   s3   € ð �<Š<Ø—<‘< §¡Ð-Ð-Ø�y‰y˜$Ÿ,™,›.Ð(Ð(r   c                óà   — | j                   rd}t        |«      ‚t        | j                  t        «      r| j                  S t        j
                  d| j                  «      }|j                  «       S )zUConvert palette to bytes.

        .. warning:: This method is experimental.
        ú!palette contains raw palette dataÚB)r   Ú
ValueErrorÚ
isinstancer   ÚbytesÚarrayr,   )r   ÚmsgÚarrs      r   r,   zImagePalette.tobytesc   sR   € ð
 �<Š<Ø5ˆCÜ˜S“/Ð!Ü�d—l‘l¤EÔ*Ø—<‘<ÐÜ�k‰k˜#˜tŸ|™|Ó,ˆØ�{‰{‹}Ðr   c                óä  — t        | j                  t        «      st        | j                  «      | _        t	        | j                  «      dz  }d}|rD|j
                  j                  d«      |j
                  j                  d«      f}||v r
|dz  }||v rŒ
|dk\  rV|rAt        t        t        |j                  «       «      «      «      D ]  \  }}|dk(  sŒ||vsŒ|} n |dk\  rd}t        |«      |‚|S )	Né   © Ú
backgroundÚtransparencyr   é   r   z$cannot allocate more than 256 colors)r2   r   r   r   r    ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr1   )r   ÚimageÚeÚindexÚspecial_colorsr$   Úcountr5   s           r   Ú_new_color_indexzImagePalette._new_color_indexs   sé   € ô ˜$Ÿ,™,¬	Ô2Ü% d§l¡lÓ3ˆDŒMÜ�D—L‘LÓ! QÑ&ˆØCEˆÙà—
‘
—‘˜|Ó,Ø—
‘
—‘˜~Ó.ðˆNð ˜>Ñ)Ø˜‘
�ð ˜>Ò)à�CŠ<Ùä (¬¬i¸¿¹Ó8IÓ.JÓ)KÓ Lò ‘H�A�uØ “z a¨~Ò&=Ø !˜Ùðð ˜Š|Ø<�Ü  “o¨1Ð,Øˆr   c                óø  — | j                   rd}t        |«      ‚t        |t        «      rj| j                  dk(  r)t        |«      dk(  r=|d   dk7  rd}t        |«      ‚|dd }n"| j                  dk(  rt        |«      dk(  r|d	z  }	 | j                  |   S dt        |«      › �}t        |«      ‚# t        $ rÃ}| j                  ||«      }t        | j                  t        «      sJ ‚|| j                  |<   |dz  t        | j                  «      k  r:| j                  d|dz   t        |«      z   | j                  |dz  dz   d z   | _	        n| xj                  t        |«      z  c_	        d
| _        |cY d}~S d}~ww xY w)zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        r/   ÚRGBé   r8   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA)rL   r   zunknown color specifier: )r   r1   r2   r"   r   r    r&   ÚKeyErrorrH   r   r   r   r3   r   Úrepr)r   r%   rC   r5   rD   rE   s         r   ÚgetcolorzImagePalette.getcolor�   sk  € ð �<Š<Ø5ˆCÜ˜S“/Ð!Ü�eœUÔ#Ø�y‰y˜EÒ!Ü�u“: ’?Ø˜Q‘x 3’ØO˜Ü(¨›oÐ-Ø! " 1˜I‘EØ—‘˜fÒ$Ü�u“: ’?Ø˜V‘O�EðØ—{‘{ 5Ñ)Ð)ð" .¬d°5«k¨]Ð;ˆCÜ˜S“/Ð!øô# ò à×-Ñ-¨e°QÓ7�Ü! $§-¡-´Ô;Ð;Ð;Ø%*�—‘˜EÑ"Ø˜1‘9œs 4§<¡<Ó0Ò0àŸ™ k¨°©	Ð2Ü ›,ñ'àŸ-™-¨°©	°A©¨Ð8ñ9ð •Mð —M’M¤U¨5£\Ñ1•MØ�”
Ø•ûðús   ÂB- Â-	E9Â6B8E4Å.E9Å4E9c                óX  — | j                   rd}t        |«      ‚t        |t        «      rt	        |d«      }|j                  d«       |j                  d| j                  › d�«       t        d«      D ]‡  }|j                  |› «       t        |t        | j                  «      z  |dz   t        | j                  «      z  «      D ]$  }	 |j                  d| j                  |   › �«       Œ& |j                  d«       Œ‰ |j                  «        y
# t        $ r |j                  d	«       Y Œgw xY w)zVSave palette to text file.

        .. warning:: This method is experimental.
        r/   Úwz
# Palette
z# Mode: ú
r<   r   ú z 0N)r   r1   r2   ÚstrÚopenÚwriter   r!   r    r   Ú
IndexErrorÚclose)r   Úfpr5   r$   Újs        r   ÚsavezImagePalette.save¸   sþ   € ð
 �<Š<Ø5ˆCÜ˜S“/Ð!Ü�bœ#ÔÜ�b˜#“ˆBØ
�‰�ÔØ
�‰�8˜DŸI™I˜; bÐ)Ô*Ü�s“ò 	ˆAØ�H‰H˜�sÔÜ˜1œs 4§9¡9›~Ñ-°°A±¼¸T¿Y¹Y»Ñ/GÓHò #�ð#Ø—H‘H˜q §¡¨a¡Ð 1Ð2Õ3ð#ð
 �H‰H�T�Nð	ð 	�‰�
øô "ò #Ø—H‘H˜T–Nð#ús   Ã!DÄD)Ä(D))rJ   N)r   rU   r   z(Sequence[int] | bytes | bytearray | NoneÚreturnÚNone)r]   ú!Sequence[int] | bytes | bytearray)r   r_   r]   r^   )r]   údict[tuple[int, ...], int])r&   r`   r]   r^   )r]   r   )r]   z-tuple[str, Sequence[int] | bytes | bytearray])r]   r3   )NN)rC   úImage.Image | NonerD   zException | Noner]   Úintr   )r%   ztuple[int, ...]rC   ra   r]   rb   )rZ   zstr | IO[str]r]   r^   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr&   r*   r-   r,   ÚtostringrH   rP   r\   r9   r   r   r   r      sî   „ ñ	ð Ø<@ð&àð&ð :ð&ð 
ó	&ð òó ðð ‡^�^ò ó ð ð ò	ó ð	ð ‡]�]òó ðó	ó	)óð €Hð GKðØ'ðØ3Cðà	óð: %)ð)"àð)"ð "ð)"ð 
ó	)"ôVr   r   c                óD   — t        «       }| |_        ||_        d|_        |S )Nr   )r   r   r   r   )r   Údatar   s      r   Úrawrl   Ó   s#   € Ü‹n€GØ€G„OØ€G„OØ€G„MØ€Nr   c                ó€   — | dk(  r(t        d«      D �cg c]  }t        ||z  dz  «      ‘Œ c}S d}t        |«      ‚c c}w )Nr   r<   rL   z"unavailable when black is non-zero)r!   rb   ÚNotImplementedError)ÚblackÚwhiter$   r5   s       r   Úmake_linear_lutrq   ß   sA   € Ø�‚zÜ/4°S«zÖ:¨!”�E˜A‘I Ñ$Õ%Ò:Ð:à
.€CÜ
˜cÓ
"Ð"ùò ;s   “;c                óh   — t        d«      D �cg c]  }t        |dz  | z  dz  dz   «      ‘Œ c}S c c}w )Nr<   g     ào@g      à?)r!   rb   )Úexpr$   s     r   Úmake_gamma_lutrt   ç   s2   € Ü=BÀ3»ZÖH¸ŒC�!�e‘) Ñ# uÑ,¨sÑ2Õ3ÒHÐHùÒHs   Ž/c           
     ó¸   — t        t        dt        | «      z  «      «      }|j                  «        t	        | |D �cg c]  }|t        | «      z  ‘Œ c}«      S c c}w ©Nr<   )r@   r!   r    Úreverser   ©r   r   r$   s      r   Únegativery   ë   sF   € Ü”5˜œs 4›y™Ó)Ó*€GØ‡O�OÔÜ˜°wÖ?°!˜q¤C¨£I›~Ò?Ó@Ð@ùÒ?s   »A
c                ó†   — ddl m} t        dt        | «      z  «      D �cg c]  } |dd«      ‘Œ }}t	        | |«      S c c}w )Nr   )Úrandintr<   rL   )Úrandomr{   r!   r    r   )r   r{   Ú_r   s       r   r|   r|   ñ   s>   € Ýä(-¨c´C¸³I©oÓ(>Ö? 1‰w�q˜#�Ð?€GÐ?Ü˜˜gÓ&Ð&ùò @s    >c           	     óÌ   — t        j                  | «      D �cg c]  }t        d|«      ‘Œ }}t        dt	        d«      D �cg c]  }||dz     |dz     ‘Œ c}«      S c c}w c c}w )Nr   rJ   i   r8   )r
   Úgetrgbrq   r   r!   )rp   ÚbandÚbandsr$   s       r   Úsepiar‚   ø   s]   € Ü2<×2CÑ2CÀEÓ2JÖK¨$Œ_˜Q Õ%ÐK€EÐKÜ˜¼eÀG»nÖM¸  a¨!¡e¡¨Q°!©VÓ 4ÒMÓNÐNùò LùÚMs   ˜AÁ A!
c           
     ó˜   — t        t        dt        | «      z  «      «      }t        | |D �cg c]  }|t        | «      z  ‘Œ c}«      S c c}w rv   )r@   r!   r    r   rx   s      r   Úwedger„   ý   s<   € Ü”5˜œs 4›y™Ó)Ó*€GÜ˜°wÖ?°!˜q¤C¨£I›~Ò?Ó@Ð@ùÒ?s   «A
c                óT  — t        | d«      5 }t        j                  t        j                  t        j                  g}|D ].  }	 |j	                  d«        ||«      j                  «       }|r nŒ0 d}t        |«      ‚	 d d d «       |S # t        t        f$ r Y ŒZw xY w# 1 sw Y   S xY w)NÚrbr   zcannot load palette)	rV   r	   r   r   ÚseekÚ
getpaletteÚSyntaxErrorr1   ÚOSError)ÚfilenamerZ   ÚpaletteHandlersÚpaletteHandlerÚlutr5   s         r   Úloadr�     sÃ   € ô 
ˆh˜Ó	ð  ô ×+Ñ+Ü×-Ñ-Ü×#Ñ#ð
ð 	ð .ò 
	ˆNðØ—‘˜”
Ù$ RÓ(×3Ñ3Ó5�ÙÙð ð	
	ð (ˆCÜ˜#“,Ðð ÷#ð0 €Jøô  ¤Ð,ò Ùðú÷%ð0 €Jús/   �5BÁ)BÁ,BÂBÂBÂBÂBÂB')r   rU   rk   r_   r]   r   )ro   rb   rp   Úfloatr]   ú	list[int])rs   r�   r]   r‘   )rJ   )r   rU   r]   r   )z#fff0c0)rp   rU   r]   r   )r‹   rU   r]   ztuple[bytes, str])Ú
__future__r   r4   Úcollections.abcr   Útypingr   r   Ú r   r	   r
   r   r   r   rl   rq   rt   ry   r|   r‚   r„   r�   r9   r   r   ú<module>r–      sX   ðõ$ #ã Ý $ß $ç HÓ HáÝ÷nñ nójó#óIôAô'ôOô
Aô
r   