§
    œ"²c×  ã                   ó„   — d dl Z ddlmZmZmZmZ ddlmZ  G d„ d¦  «        Zd„ Z	d„ Z
d	„ Zdd„Zdd„Zdd„Zdd„Zd„ ZdS )é    Né   )ÚGimpGradientFileÚGimpPaletteFileÚ
ImageColorÚPaletteFile)Ú	deprecatec                   óª   — e Zd ZdZ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„ ZdS )Ú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.
    ÚRGBNr   c                 óÞ   — || _         d | _        |pt          ¦   «         | _        d | _        |dk    r:t          ddd ¦  «         |t          | j        ¦  «        k    rd}t          |¦  «        ‚d S d S )Nr   zThe size parameteré
   zwrong palette size)ÚmodeÚrawmodeÚ	bytearrayÚpaletteÚdirtyr   ÚlenÚ
ValueError)Úselfr   r   ÚsizeÚmsgs        ú2/usr/lib/python3/dist-packages/PIL/ImagePalette.pyÚ__init__zImagePalette.__init__%   sv   € ØˆŒ	ØˆŒØÐ-¥)¡+¤+ˆŒØˆŒ
Ø�1Š9ˆ9ÝÐ*¨B°Ñ5Ô5Ð5Ø•s˜4œ<Ñ(Ô(Ò(Ð(Ø*�Ý  ‘o”oÐ%ð	 ˆ9à(Ð(ó    c                 ó   — | j         S ©N)Ú_palette©r   s    r   r   zImagePalette.palette0   s
   € àŒ}Ðr   c                 ó"   — d | _         || _        d S r   )Ú_colorsr   )r   r   s     r   r   zImagePalette.palette4   s   € àˆŒØˆŒˆˆr   c                 ó  — | j         €wt          | j        ¦  «        }i | _         t          dt          | j        ¦  «        |¦  «        D ]8}t          | j        |||z   …         ¦  «        }|| j         v rŒ+||z  | j         |<   Œ9| j         S )Nr   )r    r   r   Úranger   Útuple)r   Úmode_lenÚiÚcolors       r   ÚcolorszImagePalette.colors9   s‹   € àŒ<ÐÝ˜4œ9‘~”~ˆHØˆDŒLÝ˜1�c $¤,Ñ/Ô/°Ñ:Ô:ð 4ð 4�Ý˜dœl¨1¨q°8©|Ð+;Ô<Ñ=Ô=�Ø˜DœLÐ(Ð(ØØ&'¨8¡m�”˜UÑ#Ð#ØŒ|Ðr   c                 ó   — || _         d S r   )r    )r   r'   s     r   r'   zImagePalette.colorsE   s   € àˆŒˆˆr   c                 ó    — t          ¦   «         }| j        |_        | j        |_        | j        �| j        d d …         |_        | j        |_        |S r   )r
   r   r   r   r   )r   Únews     r   ÚcopyzImagePalette.copyI   sD   € Ý‰nŒnˆà”9ˆŒØ”lˆŒØŒ<Ð#Øœ, q q qœ/ˆCŒKØ”JˆŒ	àˆ
r   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.getdataT   s2   € ð Œ<ð 	.Ø”< ¤Ð-Ð-ØŒy˜$Ÿ,š,™.œ.Ð(Ð(r   c                 óÐ   — | 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   r   Ú
isinstancer   ÚbytesÚarrayr-   )r   r   Úarrs      r   r-   zImagePalette.tobytes_   s\   € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�d”l¥EÑ*Ô*ð 	 Ø”<ÐÝŒk˜#˜tœ|Ñ,Ô,ˆØ�{Š{‰}Œ}Ðr   c           	      óÌ  — | j         rd}t          |¦  «        ‚t          |t          ¦  «        �r| 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t          | j        ¦  «        | _
        t          | j        ¦  «        dz  }d
}|r4|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          |¦  «        |‚|| 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.
        r0   r   é   é   éÿ   z/cannot add non-opaque RGBA color to RGB paletteNÚRGBA)r9   © Ú
backgroundÚtransparencyr   é   r   z$cannot allocate more than 256 colorszunknown color specifier: )r   r   r2   r#   r   r   r'   ÚKeyErrorr   r   r   ÚinfoÚgetÚreversedÚlistÚ	enumerateÚ	histogramr3   r   Úrepr)	r   r&   Úimager   ÚeÚindexÚspecial_colorsr%   Úcounts	            r   ÚgetcolorzImagePalette.getcoloro   s›  € ð
 Œ<ð 	"Ø5ˆCÝ˜S‘/”/Ð!Ý�e�UÑ#Ô#ñ 0	"ØŒy˜EÒ!Ð!Ý�u‘:”: ’?�?Ø˜Q”x 3’�ØO˜Ý(¨™oœoÐ-Ø! " 1 "œI�EøØ”˜fÒ$Ð$Ý�u‘:”: ’?�?Ø˜V‘O�Eð#Ø”{ 5Ô)Ð)øÝð !ñ !ð !å! $¤,µ	Ñ:Ô:ð <Ý$-¨d¬lÑ$;Ô$;�D”MÝ˜DœLÑ)Ô)¨QÑ.�Ø!#�Øð àœ
Ÿš |Ñ4Ô4Øœ
Ÿš ~Ñ6Ô6ð&�Nð ˜~Ð-Ð-Ø˜Q‘J�Eð ˜~Ð-Ð-à˜C’<�<Øð &å(0µµiÀÇÂÑ@QÔ@QÑ6RÔ6RÑ1SÔ1SÑ(TÔ(Tð &ð &™H˜A˜uØ$¨šz˜z¨a°~Ð.EÐ.EØ() Ø % øØ ’|�|ØD˜Ý(¨™oœo°1Ð4Ø%*�”˜EÑ"Ø˜1‘9�s 4¤<Ñ0Ô0Ò0Ð0àœ [ u¨q¡y [Ô1Ý ™,œ,ñ'àœ, u¨q¡y°1¡}  Ô7ñ8ð ”M�Mð �M”M¥U¨5¡\¤\Ñ1�M”MØ�”
Ø������øøøøðC!øøøðF <­d°5©k¬kÐ;Ð;ˆCÝ˜S‘/”/Ð!s   ÂB& Â&IÂ1FH=È7IÈ=I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.
        r0   Úwz
# Palette
z# Mode: ú
r>   r   ú z 0N)r   r   r2   ÚstrÚopenÚwriter   r"   r   r   Ú
IndexErrorÚclose)r   Úfpr   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   Nr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr'   r+   r.   r-   ÚtostringrL   rX   r;   r   r   r
   r
      sú   € € € € € ð	ð 	ð	&ð 	&ð 	&ð 	&ð ðð ñ „Xðð „^ð ð  ñ „^ð ð ð	ð 	ñ „Xð	ð „]ðð ñ „]ðð	ð 	ð 	ð	)ð 	)ð 	)ðð ð ð €Hð8"ð 8"ð 8"ð 8"ðtð ð ð ð r   r
   c                 óL   — t          ¦   «         }| |_        ||_        d|_        |S )Nr   )r
   r   r   r   )r   Údatar   s      r   Úrawrb   Ä   s%   € Ý‰nŒn€GØ€G„OØ€G„OØ€G„MØ€Nr   c                 ó€   — g }| dk    r.t          d¦  «        D ]}|                     ||z  dz  ¦  «         Œnt          ‚|S )Nr   r>   r9   )r"   ÚappendÚNotImplementedError)ÚblackÚwhiteÚlutr%   s       r   Úmake_linear_lutri   Ð   sU   € Ø
€CØ�‚z€zÝ�s‘”ð 	)ð 	)ˆAØ�JŠJ�u˜q‘y CÑ'Ñ(Ô(Ð(Ð(ð	)õ "Ð!Ø€Jr   c                 óŠ   — g }t          d¦  «        D ]0}|                     t          |dz  | z  dz  dz   ¦  «        ¦  «         Œ1|S )Nr>   g     ào@g      à?)r"   rd   Úint)Úexprh   r%   s      r   Úmake_gamma_lutrm   Ú   sQ   € Ø
€CÝ�3‰ZŒZð <ð <ˆØ�
Š
•3˜˜U™ sÑ*¨eÑ3°cÑ9Ñ:Ô:Ñ;Ô;Ð;Ð;Ø€Jr   r   c                 ó¼   ‡ — t          t          dt          ‰ ¦  «        z  ¦  «        ¦  «        }|                     ¦   «          t	          ‰ ˆ fd„|D ¦   «         ¦  «        S )Nr>   c                 ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS r;   ©r   ©Ú.0r%   r   s     €r   ú
<listcomp>znegative.<locals>.<listcomp>ä   ó#   ø€ Ð?Ð?Ð?°!˜q¥C¨¡I¤I™~Ð?Ð?Ð?r   )rC   r"   r   Úreverser
   ©r   r   s   ` r   Únegativerw   á   sW   ø€ Ý•5˜�s 4™yœy™Ñ)Ô)Ñ*Ô*€GØ‡O‚OÑÔÐÝ˜Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ@Ô@Ð@r   c                 ó´   — ddl m} g }t          dt          | ¦  «        z  ¦  «        D ]!}|                      |dd¦  «        ¦  «         Œ"t          | |¦  «        S )Nr   )Úrandintr>   r9   )Úrandomry   r"   r   rd   r
   )r   ry   r   r%   s       r   rz   rz   ç   si   € ØÐÐÐÐÐà€GÝ�3�˜T™œ‘?Ñ#Ô#ð (ð (ˆØ�Š�w�w˜q #‘”Ñ'Ô'Ð'Ð'Ý˜˜gÑ&Ô&Ð&r   ú#fff0c0c                 ó’   ‡— d„ t          j        | ¦  «        D ¦   «         Št          dˆfd„t          d¦  «        D ¦   «         ¦  «        S )Nc                 ó.   — g | ]}t          d |¦  «        ‘ŒS )r   )ri   )rr   Úbands     r   rs   zsepia.<locals>.<listcomp>ñ   s"   € ÐKÐKÐK¨$�_˜Q Ñ%Ô%ÐKÐKÐKr   r   c                 ó8   •— g | ]}‰|d z           |d z           ‘ŒS )r8   r;   )rr   r%   Úbandss     €r   rs   zsepia.<locals>.<listcomp>ò   s*   ø€ ÐMÐMÐM¸  a¨!¡e¤¨Q°!©VÔ 4ÐMÐMÐMr   i   )r   Úgetrgbr
   r"   )rg   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 )Nr>   c                 ó4   •— g | ]}|t          ‰¦  «        z  ‘ŒS r;   rp   rq   s     €r   rs   zwedge.<locals>.<listcomp>÷   rt   r   )rC   r"   r   r
   rv   s   ` r   Úwedger…   õ   sG   ø€ Ý•5˜�s 4™yœy™Ñ)Ô)Ñ*Ô*€GÝ˜Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ@Ô@Ð@r   c                 ób  — t          | d¦  «        5 }t          j        t          j        t          j        f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)	rR   r   r   r   ÚseekÚ
getpaletteÚSyntaxErrorr   ÚOSError)ÚfilenamerV   ÚpaletteHandlerrh   r   s        r   ÚloadrŽ   ú   s  € õ 
ˆh˜Ñ	Ô	ð  õ Ô+ÝÔ-ÝÔ#ð
ð 	ð 	ˆNð
Ø—’˜‘
”
�
Ø$�n RÑ(Ô(×3Ò3Ñ5Ô5�Øð Ø�Eðøå¥Ð,ð ð ð ð �ðøøøð
 (ˆCÝ˜#‘,”,Ðð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð( €Js4   ‘&B$¸4A/Á,B$Á/BÂ B$ÂBÂB$Â$B(Â+B()r   )r{   )r4   Ú r   r   r   r   Ú
_deprecater   r
   rb   ri   rm   rw   rz   r‚   r…   rŽ   r;   r   r   ú<module>r‘      s  ðð& €€€à HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ !Ð !Ð !Ð !Ð !Ð !ðdð dð dð dð dñ dô dð dðVð ð ðð ð ðð ð ðAð Að Að Að'ð 'ð 'ð 'ðOð Oð Oð Oð
Að Að Að Að
ð ð ð ð r   