Ë
    ñEj¹  ã                  óŠ   — d dl mZ d dlZd dlmZ ddlmZmZmZm	Z	  G d„ d«      Z
dd„Zd	„ Zd
„ Zdd„Zdd„Zdd„Zdd„Zd„ Zy)é    )ÚannotationsN)ÚSequenceé   )ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚPaletteFilec                  ó°   — e Zd ZdZddd„Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zd„ Z	d	„ Z
d
„ ZeZdd„Zddd„Z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      úS/var/www/html/peoplehubportal/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.palette,   s   € à�}‰}Ðr   c                ó    — d | _         || _        y r   )Ú_colorsr   )r   r   s     r   r   zImagePalette.palette0   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.colors5   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.colorsA   s	   € àˆ�r   c                óÀ   — t        «       }| j                  |_        | j                  |_        | j                  �| j                  d d  |_        | j                  |_        |S r   )r   r   r   r   r   )r   Únews     r   ÚcopyzImagePalette.copyE   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.getdataP   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.tobytes[   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)r/   r   r   r   r   ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr.   )r   ÚimageÚeÚindexÚspecial_colorsr!   Úcountr2   s           r   Ú_new_color_indexzImagePalette._new_color_indexk   sç   € Ü˜$Ÿ,™,¬	Ô2Ü% d§l¡lÓ3ˆDŒMÜ�D—L‘LÓ! QÑ&ˆØˆÙà—
‘
—‘˜|Ó,Ø—
‘
—‘˜~Ó.ðˆ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                  ||«      }|| 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é   r5   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA)rI   r   zunknown color specifier: )r   r.   r/   r   r   r   r#   ÚKeyErrorrE   r   r0   r   r   Úrepr)r   r"   r@   r2   rA   rB   s         r   ÚgetcolorzImagePalette.getcolorƒ   sW  € ð
 �<Š<Ø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àŸ™ [ u¨q¡yÐ1Ü ›,ñ'àŸ,™, u¨q¡y°1¡} Ð7ñ8ð •Mð —M’M¤U¨5£\Ñ1•MØ�”
Ø•ûðús   ÂB- Â-	EÂ6BEÅEÅE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: ú
r9   r   ú z 0N)r   r.   r/   ÚstrÚopenÚwriter   r   r   r   Ú
IndexErrorÚclose)r   Úfpr2   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))rG   N)r   rR   r   zSequence[int] | NoneÚreturnÚNone)NNr   )rZ   Úint)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr#   r'   r*   r)   ÚtostringrE   rM   rY   r6   r   r   r   r      sŠ   „ ñ	ô&ð ñó ðð ‡^�^ñ ó ð ð ñ	ó ð	ð ‡]�]ñó ðò	ò	)òð €Hóô0$"óLr   r   c                óD   — t        «       }| |_        ||_        d|_        |S )Nr   )r   r   r   r   )r   Údatar   s      r   Úrawrf   Ä   s#   € Ü‹n€GØ€G„OØ€G„OØ€G„MØ€Nr   c                ón   — | dk(  rt        d«      D �cg c]
  }||z  dz  ‘Œ c}S d}t        |«      ‚c c}w )Nr   r9   rI   z"unavailable when black is non-zero)r   ÚNotImplementedError)ÚblackÚwhiter!   r2   s       r   Úmake_linear_lutrk   Ð   s<   € Ø�‚zÜ*/°«*Ö5 Q�˜‘	˜SÓ Ò5Ð5à
.€CÜ
˜cÓ
"Ð"ùò 6s   “2c                óh   — t        d«      D �cg c]  }t        |dz  | z  dz  dz   «      ‘Œ c}S c c}w )Nr9   g     ào@g      à?)r   r\   )Úexpr!   s     r   Úmake_gamma_lutrn   Ø   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 ©Nr9   )r=   r   r   Úreverser   ©r   r   r!   s      r   Únegativers   Ü   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   )Úrandintr9   rI   )Úrandomru   r   r   r   )r   ru   Ú_r   s       r   rv   rv   â   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   rG   i   r5   )r   Úgetrgbrk   r   r   )rj   Ú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 rp   )r=   r   r   r   rr   s      r   Úwedger~   î   s<   € Ü”5˜œs 4›y™Ó)Ó*€GÜ˜°wÖ?°!˜q¤C¨£I›~Ò?Ó@Ð@ùÒ?s   «A
c                óP  — t        | d«      5 }t        j                  t        j                  t        j                  f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)	rS   r   r   r	   ÚseekÚ
getpaletteÚSyntaxErrorr.   ÚOSError)ÚfilenamerW   ÚpaletteHandlerÚlutr2   s        r   Úloadrˆ   ó   s·   € ô 
ˆh˜Ó	ð  ä×+Ñ+Ü×-Ñ-Ü×#Ñ#ð
ò 	ˆNð
Ø—‘˜”
Ù$ RÓ(×3Ñ3Ó5�ÙÙð ð	ð (ˆCÜ˜#“,Ðð ÷ð" €Jøô  ¤Ð,ò Ùðú÷ð" €Jús/   �3BÁ)BÁ*BÂBÂBÂBÂBÂB%)rZ   r   )rG   )z#fff0c0)Ú
__future__r   r1   Útypingr   Ú r   r   r   r	   r   rf   rk   rn   rs   rv   r|   r~   rˆ   r6   r   r   ú<module>rŒ      sO   ðõ$ #ã Ý ç HÓ H÷cñ cóTò#òIóAó'óOó
Aó
r   