Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/site-packages/PIL/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/site-packages/PIL/__pycache__/ImagePalette.cpython-312.pyc

�

&ٜg*#���ddlmZddlZddlmZddlmZmZddlm	Z	m
Z
mZmZerddlm
Z
Gd�d	�Zdd
�Zdd�Zdd�Zddd
�Zddd�Zddd�Zddd�Zdd�Zy)�)�annotationsN)�Sequence)�IO�
TYPE_CHECKING�)�GimpGradientFile�GimpPaletteFile�
ImageColor�PaletteFile)�Imagec���eZdZdZ		d					dd�Zedd��Zejdd��Zedd��Zejdd��Zdd�Z	dd	�Z
dd
�ZeZ	d					dd�Z
	d					dd�Zdd
�Zy)�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|_|xs
t�|_d|_y�N)�mode�rawmode�	bytearray�palette�dirty)�selfrrs   �;/usr/local/lib/python3.12/site-packages/PIL/ImagePalette.py�__init__zImagePalette.__init__*s'��
��	�#'����-�)�+���!%��
�c��|jSr)�_palette�rs rrzImagePalette.palette4s���}�}�rc� �d|_||_yr)�_colorsr)rrs  rrzImagePalette.palette8s��:>�����
rc�,�|j�}t|j�}i|_tdt|j�|�D]>}t|j|||z�}||jvr�-||z|j|<�@|jS)Nr)r�lenr�ranger�tuple)r�mode_len�i�colors    r�colorszImagePalette.colors=s����<�<���4�9�9�~�H��D�L��1�c�$�,�,�/��:���d�l�l�1�q�8�|�<�=���D�L�L�(��&'�8�m����U�#�	;�
�|�|�rc��||_yr)r)rr&s  rr&zImagePalette.colorsIs	����rc��t�}|j|_|j|_|j�|jdd|_|j|_|Sr)rrrrr)r�news  r�copyzImagePalette.copyMsH���n���9�9����l�l����<�<�#��,�,�q�/�C�K��J�J��	��
rc��|jr|j|jfS|j|j�fS)z�
        Get palette contents in format suitable for the low-level
        ``im.putpalette`` primitive.

        .. warning:: This method is experimental.
        )rrr�tobytesrs r�getdatazImagePalette.getdataXs3���<�<��<�<����-�-��y�y�$�,�,�.�(�(rc���|jr
d}t|��t|jt�r|jStj
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   rr,zImagePalette.tobytescsR��
�<�<�5�C��S�/�!��d�l�l�E�*��<�<���k�k�#�t�|�|�,���{�{�}�rc���t|jt�st|j�|_t	|j�dz}d}|rD|j
j
d�|j
j
d�f}||vr
|dz
}||vr�
|dk\rV|rAttt|j����D]\}}|dk(s�||vs�|}n|dk\rd}t|�|�|S)	N���
background�transparencyr�rz$cannot allocate more than 256 colors)r2rrrr �info�get�reversed�list�	enumerate�	histogramr1)r�image�e�index�special_colorsr$�countr5s        r�_new_color_indexzImagePalette._new_color_indexss����$�,�,�	�2�%�d�l�l�3�D�M��D�L�L�!�Q�&��CE����
�
���|�,��
�
���~�.��N��>�)���
���>�)��C�<�� (��i����8I�.J�)K� L�H�A�u���z�a�~�&=� !���!M���|�<�� ��o�1�,��rc��|jr
d}t|��t|t�rj|jdk(r)t|�dk(r=|ddk7r
d}t|��|dd}n"|jdk(rt|�dk(r|d	z
}	|j|Sdt|���}t|��#t$r�}|j||�}t|jt�sJ�||j|<|dzt|j�kr:|jd|dzt|�z|j|dzdzdz|_	n|xjt|�z
c_	d
|_
|cYd}~Sd}~wwxYw)zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        r/�RGB�r8�z/cannot add non-opaque RGBA color to RGB paletteN�RGBA)rLrzunknown color specifier: )rr1r2r"rr r&�KeyErrorrHrrrr3r�repr)rr%rCr5rDrEs      r�getcolorzImagePalette.getcolor�sk���<�<�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��
�
�k���	�2���,�'��-�-���	�A�
��8�9��M��M�M�U�5�\�1�M���
����
�s�B-�-	E9�6B8E4�.E9�4E9c�X�|jr
d}t|��t|t�rt	|d�}|jd�|jd|j�d��td�D]�}|j|��t|t|j�z|dzt|j�z�D]$}	|jd|j|����&|jd���|j�y
#t$r|jd	�Y�gwxYw)zVSave palette to text file.

        .. warning:: This method is experimental.
        r/�wz
# Palette
z# Mode: �
r<r� z 0N)rr1r2�str�open�writerr!r r�
IndexError�close)r�fpr5r$�js     r�savezImagePalette.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�I�

�H�H�T�N��	���
��"�#��H�H�T�N�#�s�!D�D)�(D))rJN)rrUrz(Sequence[int] | bytes | bytearray | None�return�None)r]�!Sequence[int] | bytes | bytearray)rr_r]r^)r]�dict[tuple[int, ...], int])r&r`r]r^)r]r)r]z-tuple[str, Sequence[int] | bytes | bytearray])r]r3)NN)rC�Image.Image | NonerDzException | Noner]�intr)r%ztuple[int, ...]rCrar]rb)rZz
str | IO[str]r]r^)�__name__�
__module__�__qualname__�__doc__r�propertyr�setterr&r*r-r,�tostringrHrPr\r9rrrrs���	��<@�&��&�:�&�
�	&�����
�^�^� �� ��	��	��]�]����	�	)���H�GK��'��3C��	��:%)�)"��)"�"�)"�

�	)"�Vrrc�D�t�}||_||_d|_|S)Nr)rrrr)r�datars   r�rawrl�s#���n�G��G�O��G�O��G�M��Nrc��|dk(r(td�D�cgc]}t||zdz���c}Sd}t|��cc}w)Nrr<rLz"unavailable when black is non-zero)r!rb�NotImplementedError)�black�whiter$r5s    r�make_linear_lutrq�sE����z�/4�S�z�:�z�!��E�A�I��$�%�z�:�:�
.�C�
�c�
"�"��;s�;c�h�td�D�cgc]}t|dz|zdzdz���c}Scc}w)Nr<g�o@g�?)r!rb)�expr$s  r�make_gamma_lutrt�s6��=B�3�Z�H�Z��C�!�e�)��#�u�,�s�2�3�Z�H�H��Hs�/c
��ttdt|�z��}|j�t	||D�cgc]}|t|�z��c}�Scc}w�Nr<)r@r!r �reverser�rrr$s   r�negativery�sJ���5��s�4�y��)�*�G��O�O����w�?�w�!�q�C��I�~�w�?�@�@��?s�A
c��ddlm}tdt|�z�D�cgc]}|dd���
}}t	||�Scc}w)Nr)�randintr<rL)�randomr{r!r r)rr{�_rs    rr|r|�sA���(-�c�C��I�o�(>�?�(>�1�w�q�#��(>�G�?���g�&�&��@s�>c	���tj|�D�cgc]}td|���}}tdt	d�D�cgc]}||dz|dz��c}�Scc}wcc}w)NrrJir8)r
�getrgbrqrr!)rp�band�bandsr$s    r�sepiar��sd��2<�2C�2C�E�2J�K�2J�$�_�Q��
%�2J�E�K���e�G�n�M�n���a�!�e��Q�!�V� 4�n�M�N�N��
L��Ms�A�A!
c
��ttdt|�z��}t||D�cgc]}|t|�z��c}�Scc}wrv)r@r!r rrxs   r�wedger��s@���5��s�4�y��)�*�G���w�?�w�!�q�C��I�~�w�?�@�@��?s�A
c�T�t|d�5}tjtjtjg}|D].}	|j	d�||�j�}|rn�0d}t|��	ddd�|S#ttf$rY�ZwxYw#1swYSxYw)N�rbrzcannot load palette)	rVr	rr�seek�
getpalette�SyntaxErrorr1�OSError)�filenamerZ�paletteHandlers�paletteHandler�lutr5s      r�loadr�s���
�h��	��
�+�+��-�-��#�#�
�
	�.�N�
�����
�$�R�(�3�3�5�����	.�(�C��#�,���#
�0�J��
 ��,�
��
��%
�0�J�s/�5B�)B�,B�B�B�B�B�B')rrUrkr_r]r)rorbrp�floatr]�	list[int])rsr�r]r�)rJ)rrUr]r)z#fff0c0)rprUr]r)r�rUr]ztuple[bytes, str])�
__future__rr4�collections.abcr�typingrr�rr	r
rrrrlrqrtryr|r�r�r�r9rr�<module>r�sX��$#��$�$�H�H���n�n�j�#�I�A�'�O�
A�
r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists