§
    aÒ³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dS )*é    )Ú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d0d"„ZdS )1Ú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.
    ÚRGBNÚmodeÚstrÚpaletteú(Sequence[int] | bytes | bytearray | NoneÚreturnÚNonec                óZ   — || _         d | _        |pt          ¦   «         | _        d | _        d S ©N)r   ÚrawmodeÚ	bytearrayr   Údirty)Úselfr   r   s      úN/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/PIL/ImagePalette.pyÚ__init__zImagePalette.__init__*   s-   € ð
 ˆŒ	Ø#'ˆŒØÐ-¥)¡+¤+ˆŒØ!%ˆŒ
ˆ
ˆ
ó    ú!Sequence[int] | bytes | bytearrayc                ó   — | j         S r   )Ú_palette©r   s    r   r   zImagePalette.palette4   s
   € àŒ}Ðr   c                ó"   — d | _         || _        d S r   )Ú_colorsr!   )r   r   s     r   r   zImagePalette.palette8   s   € à:>ˆŒØˆŒˆˆr   údict[tuple[int, ...], int]c                ó  — | j         €wt          | j        ¦  «        }i | _         t          dt          | j        ¦  «        |¦  «        D ]8}t          | j        |||z   …         ¦  «        }|| j         v rŒ+||z  | j         |<   Œ9| j         S )Nr   )r$   Úlenr   Úranger   Útuple)r   Úmode_lenÚiÚcolors       r   ÚcolorszImagePalette.colors=   s‹   € àŒ<ÐÝ˜4œ9‘~”~ˆHØˆDŒLÝ˜1�c $¤,Ñ/Ô/°Ñ:Ô:ð 4ð 4�Ý˜dœl¨1¨q°8©|Ð+;Ô<Ñ=Ô=�Ø˜DœLÐ(Ð(ØØ&'¨8¡m�”˜UÑ#Ð#ØŒ|Ðr   r-   c                ó   — || _         d S 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   sD   € Ý‰nŒnˆà”9ˆŒØ”lˆŒØŒ<Ð#Øœ, q q qœ/ˆCŒKØ”JˆŒ	àˆ
r   ú-tuple[str, Sequence[int] | bytes | bytearray]c                ób   — | j         r| j         | j        fS | 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   s2   € ð Œ<ð 	.Ø”< ¤Ð-Ð-ØŒy˜$Ÿ,š,™.œ.Ð(Ð(r   Úbytesc                óÐ   — | j         rd}t          |¦  «        ‚t          | j        t          ¦  «        r| j        S t          j        d| j        ¦  «        }|                     ¦   «         S )zUConvert palette to bytes.

        .. warning:: This method is experimental.
        ú!palette contains raw palette dataÚB)r   Ú
ValueErrorÚ
isinstancer   r6   Úarrayr4   )r   ÚmsgÚarrs      r   r4   zImagePalette.tobytesc   s\   € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�d”l¥EÑ*Ô*ð 	 Ø”<ÐÝŒk˜#˜tœ|Ñ,Ô,ˆØ�{Š{‰}Œ}Ðr   ÚimageúImage.Image | NoneÚeúException | NoneÚintc                ó  — t          | j        t          ¦  «        st          | j        ¦  «        | _        t	          | j        ¦  «        dz  }d}|rA|j                             d¦  «        |j                             d¦  «        f}||v r	|dz  }||v °	|dk    ri|rOt          t          t          | 
                    ¦   «         ¦  «        ¦  «        ¦  «        D ]\  }}|dk    r||vr|} 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   r?   rA   ÚindexÚspecial_colorsr+   Úcountr=   s           r   Ú_new_color_indexzImagePalette._new_color_indexs   s  € õ ˜$œ,­	Ñ2Ô2ð 	4Ý% d¤lÑ3Ô3ˆDŒMÝ�D”LÑ!Ô! QÑ&ˆØCEˆØð 	à”
—’˜|Ñ,Ô,Ø”
—’˜~Ñ.Ô.ðˆNð ˜>Ð)Ð)Ø˜‘
�ð ˜>Ð)Ð)à�CŠ<ˆ<Øð å (­­i¸¿ºÑ8IÔ8IÑ.JÔ.JÑ)KÔ)KÑ LÔ Lð ð ‘H�A�uØ ’z�z a¨~Ð&=Ð&=Ø !˜Ø˜øØ˜Š|ˆ|Ø<�Ý  ‘o”o¨1Ð,Øˆr   r,   útuple[int, ...]c                ó2  — | j         rd}t          |¦  «        ‚t          |t          ¦  «        �rI| j        dk    r;t          |¦  «        dk    r'|d         dk    rd}t          |¦  «        ‚|dd…         }n#| j        dk    rt          |¦  «        dk    r|d	z  }	 | j        |         S # t          $ rÅ}|                      ||¦  «        }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dt          |¦  «        › �}t          |¦  «        ‚)zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        r8   r   é   rE   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA©rW   r   zunknown color specifier: )r   r:   r;   r)   r   r'   r-   ÚKeyErrorrS   r!   r   r   r6   r   Úrepr)r   r,   r?   r=   rA   rP   s         r   ÚgetcolorzImagePalette.getcolor�   s´  € ð Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�e�UÑ#Ô#ñ 	"ØŒy˜EÒ!Ð!Ý�u‘:”: ’?�?Ø˜Q”x 3’�ØO˜Ý(¨™oœoÐ-Ø! " 1 "œI�EøØ”˜fÒ$Ð$Ý�u‘:”: ’?�?Ø˜V‘O�EðØ”{ 5Ô)Ð)øÝð ð ð à×-Ò-¨e°QÑ7Ô7�Ý! $¤-µÑ;Ô;Ð;Ð;Ð;Ø%*�”˜EÑ"Ø˜1‘9�s 4¤<Ñ0Ô0Ò0Ð0àœ k¨°©	 kÔ2Ý ™,œ,ñ'àœ-¨°©	°A©¨¨Ô8ñ9ð ”M�Mð �M”M¥U¨5¡\¤\Ñ1�M”MØ�”
Ø������øøøøðøøøð  <­d°5©k¬kÐ;Ð;ˆCÝ˜S‘/”/Ð!s   ÂB& Â&
E5Â0B:E0Å*E5Å0E5Úfpústr | IO[str]c                óš  — | j         rd}t          |¦  «        ‚t          |t          ¦  «        rt	          |d¦  «        }|                     d¦  «         |                     d| j        › d�¦  «         t          d¦  «        D ]¶}|                     |› ¦  «         t          |t          | j        ¦  «        z  |dz   t          | j        ¦  «        z  ¦  «        D ]K}	 |                     d| j	        |         › �¦  «         Œ'# t          $ r |                     d	¦  «         Y ŒHw xY w|                     d¦  «         Œ·|                     ¦   «          d
S )zVSave palette to text file.

        .. warning:: This method is experimental.
        r8   Úwz
# Palette
z# Mode: ú
rI   r   ú z 0N)r   r:   r;   r   ÚopenÚwriter   r(   r'   r   Ú
IndexErrorÚclose)r   r]   r=   r+   Újs        r   ÚsavezImagePalette.save¸   sI  € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�b�#ÑÔð 	Ý�b˜#‘”ˆBØ
�Š�ÑÔÐØ
�ŠÐ)˜DœIÐ)Ð)Ð)Ñ*Ô*Ð*Ý�s‘”ð 	ð 	ˆAØ�HŠH˜�VÑÔÐÝ˜1�s 4¤9™~œ~Ñ-°°A±½¸T¼Y¹¼Ñ/GÑHÔHð #ð #�ð#Ø—H’HÐ2 ¤¨a¤Ð2Ð2Ñ3Ô3Ð3Ð3øÝ!ð #ð #ð #Ø—H’H˜T‘N”N�N�N�Nð#øøøà�HŠH�T‰NŒNˆNˆNØ
�Š‰
Œ
ˆ
ˆ
ˆ
s   Ã#C<Ã<DÄD)r   N)r   r   r   r   r   r   )r   r   )r   r   r   r   )r   r%   )r-   r%   r   r   )r   r   )r   r2   )r   r6   )NN)r?   r@   rA   rB   r   rC   r   )r,   rT   r?   r@   r   rC   )r]   r^   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr-   r1   r5   r4   ÚtostringrS   r\   rh   rF   r   r   r   r      sY  € € € € € ð	ð 	ð Ø<@ð&ð &ð &ð &ð &ð ðð ð ñ „Xðð „^ð ð  ð  ñ „^ð ð ð	ð 	ð 	ñ „Xð	ð „]ðð ð ñ „]ðð	ð 	ð 	ð 	ð	)ð 	)ð 	)ð 	)ðð ð ð ð €Hð GKðð ð ð ð ð: %)ð)"ð )"ð )"ð )"ð )"ðVð ð ð ð ð r   r   r   r   Údatar   r   c                óL   — t          ¦   «         }| |_        ||_        d|_        |S )Nr   )r   r   r   r   )r   rp   r   s      r   Úrawrr   Ó   s%   € Ý‰nŒn€GØ€G„OØ€G„OØ€G„MØ€Nr   ÚblackrC   ÚwhiteÚfloatú	list[int]c                óh   ‡— | dk    rˆfd„t          d¦  «        D ¦   «         S d}t          |¦  «        ‚)Nr   c                ó:   •— g | ]}t          ‰|z  d z  ¦  «        ‘ŒS rY   ©rC   )Ú.0r+   rt   s     €r   ú
<listcomp>z#make_linear_lut.<locals>.<listcomp>á   s*   ø€ Ð:Ð:Ð:¨!•�E˜A‘I Ñ$Ñ%Ô%Ð:Ð:Ð:r   rI   z"unavailable when black is non-zero)r(   ÚNotImplementedError)rs   rt   r=   s    ` r   Úmake_linear_lutr}   ß   s?   ø€ Ø�‚z€zØ:Ð:Ð:Ð:­u°S©z¬zÐ:Ñ:Ô:Ð:à
.€CÝ
˜cÑ
"Ô
"Ð"r   Úexpc                ó:   ‡ — ˆ fd„t          d¦  «        D ¦   «         S )Nc                óF   •— g | ]}t          |d z  ‰z  d z  dz   ¦  «        ‘ŒS )g     ào@g      à?ry   )rz   r+   r~   s     €r   r{   z"make_gamma_lut.<locals>.<listcomp>è   s4   ø€ ÐHÐHÐH¸�C�!�e‘) Ñ# uÑ,¨sÑ2Ñ3Ô3ÐHÐHÐHr   rI   )r(   )r~   s   `r   Úmake_gamma_lutr�   ç   s#   ø€ ØHÐHÐHÐH½UÀ3¹Z¼ZÐHÑHÔHÐHr   r   r   c                ó¼   ‡ — t          t          dt          ‰ ¦  «        z  ¦  «        ¦  «        }|                     ¦   «          t	          ‰ ˆ fd„|D ¦   «         ¦  «        S )NrI   c                ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS rF   ©r'   ©rz   r+   r   s     €r   r{   znegative.<locals>.<listcomp>î   ó#   ø€ Ð?Ð?Ð?°!˜q¥C¨¡I¤I™~Ð?Ð?Ð?r   )rM   r(   r'   Úreverser   ©r   r   s   ` r   Únegativer‰   ë   sW   ø€ Ý•5˜�s 4™yœy™Ñ)Ô)Ñ*Ô*€GØ‡O‚OÑÔÐÝ˜Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ@Ô@Ð@r   c                ó†   ‡— ddl mŠ ˆfd„t          dt          | ¦  «        z  ¦  «        D ¦   «         }t	          | |¦  «        S )Nr   )Úrandintc                ó(   •— g | ]} ‰d d¦  «        ‘ŒS )r   rW   rF   )rz   Ú_r‹   s     €r   r{   zrandom.<locals>.<listcomp>ô   s#   ø€ Ð?Ð?Ð? 1ˆwˆw�q˜#‰ŒÐ?Ð?Ð?r   rI   )Úrandomr‹   r(   r'   r   )r   r   r‹   s     @r   rŽ   rŽ   ñ   sP   ø€ ØÐÐÐÐÐà?Ð?Ð?Ð?­¨cµC¸±I´I©oÑ(>Ô(>Ð?Ñ?Ô?€GÝ˜˜gÑ&Ô&Ð&r   ú#fff0c0c                ó’   ‡— d„ t          j        | ¦  «        D ¦   «         Št          dˆfd„t          d¦  «        D ¦   «         ¦  «        S )Nc                ó.   — g | ]}t          d |¦  «        ‘ŒS )r   )r}   )rz   Úbands     r   r{   zsepia.<locals>.<listcomp>ù   s"   € ÐKÐKÐK¨$�_˜Q Ñ%Ô%ÐKÐKÐKr   r   c                ó8   •— g | ]}‰|d z           |d z           ‘ŒS )rE   rF   )rz   r+   Úbandss     €r   r{   zsepia.<locals>.<listcomp>ú   s*   ø€ ÐMÐMÐM¸  a¨!¡e¤¨Q°!©VÔ 4ÐMÐMÐMr   i   )r
   Úgetrgbr   r(   )rt   r”   s    @r   Úsepiar–   ø   sL   ø€ ØKÐKµ*Ô2CÀEÑ2JÔ2JÐKÑKÔK€EÝ˜ÐMÐMÐMÐM½eÀG¹n¼nÐMÑMÔMÑNÔNÐNr   c                ó”   ‡ — t          t          dt          ‰ ¦  «        z  ¦  «        ¦  «        }t          ‰ ˆ fd„|D ¦   «         ¦  «        S )NrI   c                ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS rF   r„   r…   s     €r   r{   zwedge.<locals>.<listcomp>ÿ   r†   r   )rM   r(   r'   r   rˆ   s   ` r   Úwedger™   ý   sG   ø€ Ý•5˜�s 4™yœy™Ñ)Ô)Ñ*Ô*€GÝ˜Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ@Ô@Ð@r   Úfilenameútuple[bytes, str]c                óf  — t          | d¦  «        5 }t          j        t          j        t          j        g}|D ]P}	 |                     d¦  «          ||¦  «                             ¦   «         }|r n)Œ:# t          t          f$ r Y ŒMw xY wd}t          |¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   |S )NÚrbr   zcannot load palette)	rc   r	   r   r   ÚseekÚ
getpaletteÚSyntaxErrorr:   ÚOSError)rš   r]   ÚpaletteHandlersÚpaletteHandlerÚlutr=   s         r   Úloadr¥     s  € õ 
ˆh˜Ñ	Ô	ð  õ Ô+ÝÔ-ÝÔ#ð
ð 	ð .ð 
	ð 
	ˆNðØ—’˜‘
”
�
Ø$�n RÑ(Ô(×3Ò3Ñ5Ô5�Øð Ø�Eðøå¥Ð,ð ð ð Ø�ðøøøð (ˆCÝ˜#‘,”,Ðð ð#ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð0 €Js4   ‘(B&º4A1Á.B&Á1BÂB&ÂBÂB&Â&B*Â-B*)r   r   rp   r   r   r   )rs   rC   rt   ru   r   rv   )r~   ru   r   rv   )r   )r   r   r   r   )r�   )rt   r   r   r   )rš   r   r   r›   )Ú
__future__r   r<   Úcollections.abcr   Útypingr   r   Ú r   r	   r
   r   r   r   rr   r}   r�   r‰   rŽ   r–   r™   r¥   rF   r   r   ú<module>rª      sŒ  ðð$ #Ð "Ð "Ð "Ð "Ð "à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hàð ØÐÐÐÐÐðnð nð nð nð nñ nô nð nðjð ð ð ð#ð #ð #ð #ðIð Ið Ið IðAð Að Að Að Að'ð 'ð 'ð 'ð 'ðOð Oð Oð Oð Oð
Að Að Að Að Að
ð ð ð ð ð r   