Ë
    /æjp'  ã                  ó¾   — d dl mZ dhZd dlZddlmZmZmZmZ dZ	e	rd dl
mZ d dlmZ 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)é    )ÚannotationsÚarrayNé   )ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚPaletteFileF)ÚSequence)ÚIO©Ú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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`. Must be "RGB", "RGBA" or "CMYK". 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                óv   — |dvrd}t        |«      ‚|| _        d | _        |xs
 t        «       | _        d | _        y )N>   ÚRGBÚCMYKÚRGBAzunsupported palette mode)Ú
ValueErrorÚmodeÚrawmodeÚ	bytearrayÚpaletteÚdirty)Úselfr   r   Úmsgs       úS/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/PIL/ImagePalette.pyÚ__init__zImagePalette.__init__.   s?   € ð
 Ð.Ñ.Ø,ˆCÜ˜S“/Ð!àˆŒ	Ø#'ˆŒØÒ-¤)£+ˆŒØ!%ˆ�
ó    c                ó   — | j                   S ©N)Ú_palette©r   s    r   r   zImagePalette.palette<   s   € à�}‰}Ðr   c                ó    — d | _         || _        y r    )Ú_colorsr!   )r   r   s     r   r   zImagePalette.palette@   s   € à:>ˆŒØˆ�r   c                óB  — | j                   �€| j                  }| j                  r†| j                  | j                  k7  rmddlm} |j                  j                  dd«      }|j                  | j                  | j                  t        |«      «       |j                  | j                  «      }t        | j                  «      }i | _         t        dt        |«      |«      D ]4  }t        ||||z    «      }|| j                   v rŒ#||z  | j                   |<   Œ6 | j                   S )Nr   r   ÚP)r   r   r   )r$   r   r   r   Ú r   ÚcoreÚnewÚ
putpaletteÚbytesÚ
getpaletteÚlenÚrangeÚtuple)r   r   r   ÚimÚmode_lenÚiÚcolors          r   ÚcolorszImagePalette.colorsE   sâ   € à�<‰<ÑØ—l‘lˆGØ�|Š| §¡°·	±	Ò 9Ý#à—Z‘Z—^‘^ C¨Ó0�Ø—‘˜dŸi™i¨¯©´u¸W³~ÔFØŸ-™-¨¯	©	Ó2�ä˜4Ÿ9™9“~ˆHØˆDŒLÜ˜1œc '›l¨HÓ5ò 4�Ü˜g a¨!¨h©,Ð7Ó8�Ø˜DŸL™LÑ(ØØ&'¨8¡m�—‘˜UÒ#ð	4ð
 �|‰|Ðr   c                ó   — || _         y r    )r$   )r   r4   s     r   r4   zImagePalette.colorsY   s	   € àˆ�r   c                óÀ   — t        «       }| j                  |_        | j                  |_        | j                  �| j                  d d  |_        | j                  |_        |S r    )r   r   r   r   r   )r   r)   s     r   ÚcopyzImagePalette.copy]   sH   € Ü‹nˆà—9‘9ˆŒØ—l‘lˆŒØ�<‰<Ð#ØŸ,™,¡q˜/ˆCŒKØ—J‘JˆŒ	àˆ
r   c                ó®   — t        | j                  t        «      r| j                  S t        j                  d| j                  «      }|j	                  «       S )NÚB)Ú
isinstancer   r+   r   Útobytes)r   Úarrs     r   Ú_tobyteszImagePalette._tobytesh   s:   € Ü�d—l‘l¤EÔ*Ø—<‘<ÐÜ�k‰k˜#˜tŸ|™|Ó,ˆØ�{‰{‹}Ð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   r;   r"   s    r   ÚgetdatazImagePalette.getdatan   s5   € ð �<Š<Ø—<‘< §¡£Ð0Ð0Ø�y‰y˜$Ÿ,™,›.Ð(Ð(r   c                óT   — | j                   rd}t        |«      ‚| j                  «       S )zUConvert palette to bytes.

        .. warning:: This method is experimental.
        ú!palette contains raw palette data)r   r   r=   )r   r   s     r   r;   zImagePalette.tobytesy   s&   € ð
 �<Š<Ø5ˆCÜ˜S“/Ð!Ø�}‰}‹Ðr   c                ó¤  — t        | j                  t        «      st        | j                  «      | _        t	        | j                  «      t	        | j
                  «      z  }d}|r‘|j                  j                  d«      |j                  j                  d«      f}t        | j                  t        «      sJ ‚||v r;| xj                  t        t	        | j
                  «      «      z  c_        |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)r:   r   r   r!   r-   r   ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr   )r   ÚimageÚeÚindexÚspecial_colorsr2   Úcountr   s           r   Ú_new_color_indexzImagePalette._new_color_index†   s$  € ô ˜$Ÿ,™,¬	Ô2Ü% d§l¡lÓ3ˆDŒMÜ�D—L‘LÓ!¤S¨¯©£^Ñ3ˆØCEˆÙà—
‘
—‘˜|Ó,Ø—
‘
—‘˜~Ó.ðˆNô ˜dŸm™m¬YÔ7Ð7Ð7Ø˜>Ñ)ð —’¤¬3¨t¯y©y«>Ó!:Ñ:•Ø˜‘
�ð	 ˜>Ò)ð
 �CŠ<Ùä (¬¬i¸¿¹Ó8IÓ.JÓ)KÓ Lò ‘H�A�uØ “z a¨~Ò&=Ø !˜Ùðð ˜Š|Ø<�Ü  “o¨1Ð,Øˆr   c                ó0  — | 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 ‚t        | j                  «      }||z  t        | j                  «      k  rA| j                  d||z   t        |«      z   | j                  ||z  |z   d z   | _	        d| _        n| xj                  t        |«      z  c_	        || j                  |<   d
| _        |cY d}~S d}~ww xY w)zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        rA   r   é   é   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNr   )rV   r   zunknown color specifier: )r   r   r:   r/   r   r-   r4   ÚKeyErrorrR   r!   r   r   r+   r$   r   Úrepr)r   r3   rM   r   rN   rO   r1   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�Ü! $§-¡-´Ô;Ð;Ð;Ü˜tŸy™y›>�Ø˜8Ñ#¤c¨$¯,©,Ó&7Ò7àŸ™Ð&8¨°Ñ(8Ð9Ü ›,ñ'àŸ-™-¨°Ñ(8¸8Ñ(CÐ(EÐFñGð ”Mð
 $(�D•Là—M’M¤U¨5£\Ñ1•MØ%*�—‘˜EÑ"Ø�”
Ø•ûð!ú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.
        rA   FÚwTz
# Palette
z# Mode: ú
rF   r   ú r   N)r   r   r:   ÚstrÚopenÚwriter   r-   r   r.   Úclose)r   Úfpr   Úopen_fpÚpalette_lenr2   Ú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)r   N)r   r^   r   z(Sequence[int] | bytes | bytearray | NoneÚreturnÚNone)rg   ú!Sequence[int] | bytes | bytearray)r   ri   rg   rh   )rg   údict[tuple[int, ...], int])r4   rj   rg   rh   )rg   r   )rg   r+   )rg   ztuple[str, bytes])NN)rM   úImage.Image | NonerN   zException | Nonerg   Úintr    )r3   ztuple[int, ...]rM   rk   rg   rl   )rb   zstr | IO[str]rg   rh   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr4   r7   r=   r?   r;   ÚtostringrR   rY   rf   rC   r   r   r   r   "   sô   „ ñ	ð Ø<@ð&àð&ð :ð&ð 
ó	&ð òó ðð ‡^�^ò ó ð ð òó ðð& ‡]�]òó ðó	óó	)óð €Hð GKðØ'ðØ3Cðà	óðB %)ð+"àð+"ð "ð+"ð 
ó	+"ôZr   r   c                óN   — t        «       }| dk7  r| |_        ||_        d|_        |S )Nr   r   )r   r   r   r   )r   Údatar   s      r   Úrawrv   ï   s+   € Ü‹n€GØ�%ÒØ!ˆŒØ€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   rF   rV   z"unavailable when black is non-zero)r.   rl   ÚNotImplementedError)ÚblackÚwhiter2   r   s       r   Úmake_linear_lutr{   ü   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 )NrF   g     ào@g      à?)r.   rl   )Úexpr2   s     r   Úmake_gamma_lutr~     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 ©NrF   )rJ   r.   r-   Úreverser   ©r   r   r2   s      r   Únegativerƒ     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   )ÚrandintrF   rV   )Ú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   r   i   rU   )r   Úgetrgbr{   r   r.   )rz   ÚbandÚbandsr2   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 r€   )rJ   r.   r-   r   r‚   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)	r_   r   r   r	   Úseekr,   ÚSyntaxErrorr   ÚOSError)Úfilenamerb   ÚpaletteHandlersÚpaletteHandlerÚlutr   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   r^   ru   ri   rg   r   )ry   rl   rz   Úfloatrg   ú	list[int])r}   r™   rg   rš   )r   )r   r^   rg   r   )z#fff0c0)rz   r^   rg   r   )r”   r^   rg   ztuple[bytes, str])Ú
__future__r   Ú__lazy_modules__r   r'   r   r   r   r	   ÚTYPE_CHECKINGÚcollections.abcr
   Útypingr   r   r   rv   r{   r~   rƒ   r†   rŒ   rŽ   r˜   rC   r   r   ú<module>r       se   ðõ$ #à�9Ð ã ç HÓ Hà€ÙÝ(Ýå÷Fñ FóZó#óIôAô'ôOô
Aô
r   