Ë
    6Š·jø#  ã                  ó¸   — 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      úF/root/workspace/.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                  «      t	        | j
                  «      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   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Ó!¤S¨¯©£^Ñ3ˆØ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                  |<   t        | j                  «      }||z  t        | j                  «      k  r:| j                  d||z   t        |«      z   | j                  ||z  |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é   é   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA)rK   r   zunknown color specifier: )r   r0   r1   r!   r   r   r%   ÚKeyErrorrF   r   r   r   r2   r   Úrepr)r   r$   rA   r4   rB   rC   r"   s          r   ÚgetcolorzImagePalette.getcolorŽ   s  € ð �<Š<Ø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Ñ"Ü˜tŸy™y›>�Ø˜8Ñ#¤c¨$¯,©,Ó&7Ò7àŸ™Ð&8¨°Ñ(8Ð9Ü ›,ñ'àŸ-™-¨°Ñ(8¸8Ñ(CÐ(EÐFñGð •Mð —M’M¤U¨5£\Ñ1•MØ�”
Ø•ûðús   ÂB- Â-	FÂ6CF	ÆFÆ	Fc                ó�  — | j                   rd}t        |«      ‚d}t        |t        «      rt	        |d«      }d}	 |j                  d«       |j                  d| j                  › d�«       t        | j                  «      }t        d«      D ]�  }|j                  |› «       t        |t        | j                  «      z  |d	z   t        | j                  «      z  «      D ]*  }|j                  d
||k  r| j                  |   nd› �«       Œ, |j                  d«       Œ� 	 |r|j                  «        yy# |r|j                  «        w w xY w)zVSave palette to text file.

        .. warning:: This method is experimental.
        r.   FÚwTz
# Palette
z# Mode: ú
r:   r   ú r   N)r   r0   r1   ÚstrÚopenÚwriter   r   r   r    Úclose)r   Úfpr4   Úopen_fpÚpalette_lenr#   Újs          r   ÚsavezImagePalette.saveº   s  € ð
 �<Š<Ø5ˆCÜ˜S“/Ð!ØˆÜ�bœ#ÔÜ�b˜#“ˆBØˆGð	Ø�H‰H�]Ô#Ø�H‰H�x §	¡	˜{¨"Ð-Ô.Ü˜dŸl™lÓ+ˆKÜ˜3“Zò �Ø—‘˜A˜3Ô Ü˜q¤3 t§y¡y£>Ñ1°A¸±E¼SÀÇÁ»^Ñ3KÓLò N�AØ—H‘H˜q°A¸²O §¡¨a¢ÈÐ KÐLÕMðNà—‘˜•ñ	ñ Ø—‘•
ð ø‰wØ—‘•
ð ús   »C D0 Ä0E)rH   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)rA   úImage.Image | NonerB   zException | Noner]   Úintr   )r$   ztuple[int, ...]rA   ra   r]   rb   )rX   zstr | IO[str]r]   r^   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr%   r)   r,   r+   ÚtostringrF   rO   r\   r7   r   r   r   r      sî   „ ñ	ð Ø<@ð&àð&ð :ð&ð 
ó	&ð òó ðð ‡^�^ò ó ð ð ò	ó ð	ð ‡]�]òó ðó	ó	)óð €Hð GKðØ'ðØ3Cðà	óð: %)ð*"àð*"ð "ð*"ð 
ó	*"ôX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:   rK   z"unavailable when black is non-zero)r    rb   ÚNotImplementedError)ÚblackÚwhiter#   r4   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:   rK   )Ú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   rH   i   rJ   )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)	rU   r   r   r
   ÚseekÚ
getpaletteÚSyntaxErrorr0   ÚOSError)ÚfilenamerX   Ú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   rk   r_   r]   r   )ro   rb   rp   Úfloatr]   ú	list[int])rs   r�   r]   r‘   )rH   )r   rT   r]   r   )z#fff0c0)rp   rT   r]   r   )r‹   rT   r]   ztuple[bytes, str])Ú
__future__r   r3   Úcollections.abcr   Útypingr   Ú r   r   r	   r
   ÚTYPE_CHECKINGr   r   rl   rq   rt   ry   r|   r‚   r„   r�   r7   r   r   ú<module>r—      s]   ðõ$ #ã Ý $Ý ç HÓ Hà€ÙÝ÷rñ róró#óIôAô'ôOô
Aô
r   