§
    þÜÒjª(  ã                  óÆ   — 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dS ),é    )Ú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/d0d „Zd1d#„ZdS )2Ú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.
    ÚRGBNÚmodeÚstrÚpaletteú(Sequence[int] | bytes | bytearray | NoneÚreturnÚNonec                ó„   — |dvrd}t          |¦  «        ‚|| _        d | _        |pt          ¦   «         | _        d | _        d S )N>   r   ÚCMYKÚRGBAzunsupported palette mode)Ú
ValueErrorr   ÚrawmodeÚ	bytearrayr   Údirty)Úselfr   r   Úmsgs       ú\C:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL/ImagePalette.pyÚ__init__zImagePalette.__init__.   sJ   € ð
 Ð.Ð.Ð.Ø,ˆCÝ˜S‘/”/Ð!àˆŒ	Ø#'ˆŒØÐ-¥)¡+¤+ˆŒØ!%ˆŒ
ˆ
ˆ
ó    ú!Sequence[int] | bytes | bytearrayc                ó   — | j         S ©N)Ú_palette©r   s    r    r   zImagePalette.palette<   s
   € àŒ}Ðr"   c                ó"   — d | _         || _        d S r%   )Ú_colorsr&   )r   r   s     r    r   zImagePalette.palette@   s   € à:>ˆŒØˆŒˆˆr"   údict[tuple[int, ...], int]c                ó  — | j         €ô| j        }| j        ry| j        | j        k    riddlm} |j                             dd¦  «        }|                     | j        | j        t          |¦  «        ¦  «         | 
                    | j        ¦  «        }t          | j        ¦  «        }i | _         t          dt          |¦  «        |¦  «        D ]3}t          ||||z   …         ¦  «        }|| j         v rŒ&||z  | j         |<   Œ4| 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ˆGØŒ|ð 3 ¤°´	Ò 9Ð 9Ø#Ð#Ð#Ð#Ð#Ð#à”Z—^’^ C¨Ñ0Ô0�Ø—’˜dœi¨¬µu¸W±~´~ÑFÔFÐFØŸ-š-¨¬	Ñ2Ô2�å˜4œ9‘~”~ˆHØˆDŒLÝ˜1�c '™lœl¨HÑ5Ô5ð 4ð 4�Ý˜g a¨!¨h©,Ð&6Ô7Ñ8Ô8�Ø˜DœLÐ(Ð(ØØ&'¨8¡m�”˜UÑ#Ð#ØŒ|Ðr"   r:   c                ó   — || _         d S r%   )r)   )r   r:   s     r    r:   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]   sD   € Ý‰nŒnˆà”9ˆŒØ”lˆŒØŒ<Ð#Øœ, q q qœ/ˆCŒKØ”JˆŒ	àˆ
r"   r1   c                ó    — t          | j        t          ¦  «        r| j        S t          j        d| j        ¦  «        }|                     ¦   «         S )NÚB)Ú
isinstancer   r1   r   Útobytes)r   Úarrs     r    Ú_tobyteszImagePalette._tobytesh   s?   € Ý�d”l¥EÑ*Ô*ð 	 Ø”<ÐÝŒk˜#˜tœ|Ñ,Ô,ˆØ�{Š{‰}Œ}Ðr"   útuple[str, bytes]c                ó|   — | j         r| 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   rC   r   rA   r'   s    r    ÚgetdatazImagePalette.getdatan   s8   € ð Œ<ð 	1Ø”< §¢¡¤Ð0Ð0ØŒy˜$Ÿ,š,™.œ.Ð(Ð(r"   c                óZ   — | j         rd}t          |¦  «        ‚|                      ¦   «         S )zUConvert palette to bytes.

        .. warning:: This method is experimental.
        ú!palette contains raw palette data)r   r   rC   )r   r   s     r    rA   zImagePalette.tobytesy   s-   € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ø�}Š}‰ŒÐr"   ÚimageúImage.Image | NoneÚeúException | NoneÚintc                ó¼  — t          | j        t          ¦  «        st          | j        ¦  «        | _        t	          | j        ¦  «        t	          | j        ¦  «        z  }d}|rŒ|j                             d¦  «        |j                             d¦  «        f}t          | j        t          ¦  «        sJ ‚||v r8| xj        t          t	          | j        ¦  «        ¦  «        z  c_        |dz  }||v °8|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&   r3   r   ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr   )r   rI   rK   ÚindexÚspecial_colorsr8   Úcountr   s           r    Ú_new_color_indexzImagePalette._new_color_index†   s_  € õ ˜$œ,­	Ñ2Ô2ð 	4Ý% d¤lÑ3Ô3ˆDŒMÝ�D”LÑ!Ô!¥S¨¬¡^¤^Ñ3ˆØCEˆØð 
	à”
—’˜|Ñ,Ô,Ø”
—’˜~Ñ.Ô.ðˆNõ ˜dœm­YÑ7Ô7Ð7Ð7Ð7Ø˜>Ð)Ð)ð �”¥­3¨t¬y©>¬>Ñ!:Ô!:Ñ:�”Ø˜‘
�ð	 ˜>Ð)Ð)ð
 �CŠ<ˆ<Øð å (­­i¸¿ºÑ8IÔ8IÑ.JÔ.JÑ)KÔ)KÑ LÔ Lð ð ‘H�A�uØ ’z�z a¨~Ð&=Ð&=Ø !˜Ø˜øØ˜Š|ˆ|Ø<�Ý  ‘o”o¨1Ð,Øˆr"   r9   útuple[int, ...]c                óh  — | j         rd}t          |¦  «        ‚t          |t          ¦  «        �rd| 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 ‚t          | j        ¦  «        }||z  t          | j        ¦  «        k     rE| 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dt          |¦  «        › �}t          |¦  «        ‚)zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        rH   r   é   é   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNr   ©ra   r   zunknown color specifier: )r   r   r@   r5   r   r3   r:   ÚKeyErrorr\   r&   r   r   r1   r)   r   Úrepr)r   r9   rI   r   rK   rY   r7   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�Ý! $¤-µÑ;Ô;Ð;Ð;Ð;Ý˜tœy™>œ>�Ø˜8Ñ#¥c¨$¬,Ñ&7Ô&7Ò7Ð7àœÐ&8¨°Ñ(8Ð&8Ô9Ý ™,œ,ñ'àœ-¨°Ñ(8¸8Ñ(CÐ(EÐ(EÔFñGð ”Mð
 $(�D”L�Là�M”M¥U¨5¡\¤\Ñ1�M”MØ%*�”˜EÑ"Ø�”
Ø������øøøøð!øøøð$ <­d°5©k¬kÐ;Ð;ˆCÝ˜S‘/”/Ð!s   ÂB& Â&
FÂ0CFÆFÆFÚfpústr | IO[str]c                óÒ  — | j         rd}t          |¦  «        ‚d}t          |t          ¦  «        rt	          |d¦  «        }d}	 |                     d¦  «         |                     d| j        › d�¦  «         t          | j        ¦  «        }t          d¦  «        D ]˜}|                     |› ¦  «         t          |t          | j        ¦  «        z  |d	z   t          | j        ¦  «        z  ¦  «        D ]-}|                     d
||k     r| j        |         nd› �¦  «         Œ.|                     d¦  «         Œ™	 |r| 
                    ¦   «          dS dS # |r| 
                    ¦   «          w w xY w)zVSave palette to text file.

        .. warning:: This method is experimental.
        rH   FÚwTz
# Palette
z# Mode: ú
rR   r   ú r   N)r   r   r@   r   ÚopenÚwriter   r3   r   r4   Úclose)r   rf   r   Úopen_fpÚpalette_lenr8   Újs          r    ÚsavezImagePalette.saveÑ   sz  € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!ØˆÝ�b�#ÑÔð 	Ý�b˜#‘”ˆBØˆGð	Ø�HŠH�]Ñ#Ô#Ð#Ø�HŠHÐ- ¤	Ð-Ð-Ð-Ñ.Ô.Ð.Ý˜dœlÑ+Ô+ˆKÝ˜3‘Z”Zð ð �Ø—’˜A˜Ñ Ô Ð Ý˜q¥3 t¤y¡>¤>Ñ1°A¸±E½SÀÄ¹^¼^Ñ3KÑLÔLð Nð N�AØ—H’HÐL°A¸²O°O ¤¨a¤ ÈÐLÐLÑMÔMÐMÐMØ—’˜‘”��ð	ð ð Ø—’‘
”
�
�
�
ðð øˆwð Ø—’‘
”
�
�
ðøøøs   ÁC/E ÅE&)r   N)r   r   r   r   r   r   )r   r#   )r   r#   r   r   )r   r*   )r:   r*   r   r   )r   r   )r   r1   )r   rD   )NN)rI   rJ   rK   rL   r   rM   r%   )r9   r]   rI   rJ   r   rM   )rf   rg   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   Úpropertyr   Úsetterr:   r=   rC   rF   rA   Útostringr\   re   rr   rO   r"   r    r   r   "   sn  € € € € € ð	ð 	ð Ø<@ð&ð &ð &ð &ð &ð ðð ð ñ „Xðð „^ð ð  ð  ñ „^ð ð ðð ð ñ „Xðð& „]ðð ð ñ „]ðð	ð 	ð 	ð 	ðð ð ð ð	)ð 	)ð 	)ð 	)ðð ð ð ð €Hð GKðð ð ð ð ðB %)ð+"ð +"ð +"ð +"ð +"ðZð ð ð ð ð r"   r   r   r   Údatar#   r   c                óX   — t          ¦   «         }| dk    r| |_        ||_        d|_        |S )Nr   r   )r   r   r   r   )r   rz   r   s      r    Úrawr|   ï   s0   € Ý‰nŒn€GØ�%ÒÐØ!ˆŒØ€G„OØ€G„MØ€Nr"   ÚblackrM   Ú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 rb   ©rM   )Ú.0r8   r~   s     €r    ú
<listcomp>z#make_linear_lut.<locals>.<listcomp>þ   s*   ø€ Ð:Ð:Ð:¨!•�E˜A‘I Ñ$Ñ%Ô%Ð:Ð:Ð:r"   rR   z"unavailable when black is non-zero)r4   ÚNotImplementedError)r}   r~   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      à?rƒ   )r„   r8   rˆ   s     €r    r…   z"make_gamma_lut.<locals>.<listcomp>  s4   ø€ ÐHÐHÐH¸�C�!�e‘) Ñ# uÑ,¨sÑ2Ñ3Ô3ÐHÐHÐHr"   rR   )r4   )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 )NrR   c                ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS rO   ©r3   ©r„   r8   r   s     €r    r…   znegative.<locals>.<listcomp>  ó#   ø€ Ð?Ð?Ð?°!˜q¥C¨¡I¤I™~Ð?Ð?Ð?r"   )rV   r4   r3   Ú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   ra   rO   )r„   Ú_r•   s     €r    r…   zrandom.<locals>.<listcomp>  s#   ø€ Ð?Ð?Ð? 1ˆwˆw�q˜#‰ŒÐ?Ð?Ð?r"   rR   )Úrandomr•   r4   r3   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‡   )r„   Úbands     r    r…   zsepia.<locals>.<listcomp>  s"   € ÐKÐKÐK¨$�_˜Q Ñ%Ô%ÐKÐKÐKr"   r   c                ó8   •— g | ]}‰|d z           |d z           ‘ŒS )r`   rO   )r„   r8   Úbandss     €r    r…   zsepia.<locals>.<listcomp>  s*   ø€ ÐMÐMÐM¸  a¨!¡e¤¨Q°!©VÔ 4ÐMÐMÐMr"   i   )r   Úgetrgbr   r4   )r~   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 )NrR   c                ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS rO   rŽ   r�   s     €r    r…   zwedge.<locals>.<listcomp>  r�   r"   )rV   r4   r3   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)	rl   r   r   r	   Úseekr2   ÚSyntaxErrorr   ÚOSError)r¤   rf   Ú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   rz   r#   r   r   )r}   rM   r~   r   r   r€   )rˆ   r   r   r€   )r   )r   r   r   r   )r™   )r~   r   r   r   )r¤   r   r   r¥   )Ú
__future__r   Ú__lazy_modules__r   r-   r   r   r   r	   ÚTYPE_CHECKINGÚcollections.abcr
   Útypingr   r   r   r|   r‡   r‹   r“   r˜   r    r£   r®   rO   r"   r    ú<module>r´      s“  ðð$ #Ð "Ð "Ð "Ð "Ð "à�9Ð à €€€à HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hà€Øð Ø(Ð(Ð(Ð(Ð(Ð(ØÐÐÐÐÐàÐÐÐÐÐðFð Fð Fð Fð Fñ Fô Fð FðZð ð ð ð#ð #ð #ð #ðIð Ið Ið IðAð Að Að Að Að'ð 'ð 'ð 'ð 'ðOð Oð Oð Oð Oð
Að Að Að Að Að
ð ð ð ð ð r"   