Ë
    Bü´j1#  ã                  ó¸   — d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
mZ d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é   )ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚPaletteFileF)Ú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/root/workspace/ytshorts/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.palette5   s   € à�}‰}Ðr   c                ó    — d | _         || _        y r   )Ú_colorsr   )r   r   s     r   r   zImagePalette.palette9   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.colorsJ   s	   € àˆ�r   c                óÀ   — t        «       }| j                  |_        | j                  |_        | j                  �| j                  d d  |_        | j                  |_        |S r   )r   r   r   r   r   )r   Únews     r   ÚcopyzImagePalette.copyN   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.getdataY   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.tobytesd   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)r1   r   r   r   r   ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr0   )r   ÚimageÚeÚindexÚspecial_colorsr#   Úcountr4   s           r   Ú_new_color_indexzImagePalette._new_color_indext   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é   r7   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA)rK   r   zunknown color specifier: )r   r0   r1   r!   r   r   r%   ÚKeyErrorrG   r   r   r   r2   r   Úrepr)r   r$   rB   r4   rC   rD   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   r0   r1   ÚstrÚopenÚwriter   r    r   r   Ú
IndexErrorÚclose)r   Úfpr4   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))rI   N)r   rT   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\   r2   )NN)rB   úImage.Image | NonerC   zException | Noner\   Úintr   )r$   ztuple[int, ...]rB   r`   r\   ra   )rY   zstr | IO[str]r\   r]   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr%   r)   r,   r+   ÚtostringrG   rO   r[   r8   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   Úrawrk   Ô   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;   rK   z"unavailable when black is non-zero)r    ra   ÚNotImplementedError)ÚblackÚwhiter#   r4   s       r   Úmake_linear_lutrp   à   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    ra   )Úexpr#   s     r   Úmake_gamma_lutrs   è   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   Únegativerx   ì   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;   rK   )Úrandomrz   r    r   r   )r   rz   Ú_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   rI   i   r7   )r	   Úgetrgbrp   r   r    )ro   Ú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 ru   )r?   r    r   r   rw   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)	rU   r   r   r
   ÚseekÚ
getpaletteÚSyntaxErrorr0   ÚOSError)ÚfilenamerY   ÚpaletteHandlersÚpaletteHandlerÚlutr4   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   rT   rj   r^   r\   r   )rn   ra   ro   Úfloatr\   ú	list[int])rr   r�   r\   r�   )rI   )r   rT   r\   r   )z#fff0c0)ro   rT   r\   r   )rŠ   rT   r\   ztuple[bytes, str])Ú
__future__r   r3   Úcollections.abcr   Útypingr   Ú r   r   r	   r
   ÚTYPE_CHECKINGr   r   rk   rp   rs   rx   r{   r�   rƒ   rŽ   r8   r   r   ú<module>r–      s]   ðõ$ #ã Ý $Ý ç HÓ Hà€ÙÝ÷nñ nójó#óIôAô'ôOô
Aô
r   