Your IP : 216.73.216.213
�ʴW� � @ s� d d l Z d d l m Z d d l m Z d d l m Z d d l m Z Gd d � d e � 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)� N)�
ImageColor)�GimpPaletteFile)�GimpGradientFile)�PaletteFilec @ sm e Z d Z d Z d d d d d � Z d d � Z d d
� Z d d � Z e Z d
d � Z d d � Z
d S)�ImagePaletteas
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 and of length ``size``
times the number of colors in ``mode``. The list must be aligned
by channel (All R values must be contiguous in the list before G
and B values.) Defaults to 0 through 255 per channel.
:param size: An optional palette size. If given, it cannot be equal to
or greater than 256. Defaults to 0.
�RGBNr c C s� | | _ d | _ | p4 t t d � � t | j � | _ i | _ d | _ | d k rz t | j � d t | j � k s� | d k r� | t | j � k r� t d � � d S)N� r zwrong palette size) �mode�rawmode� bytearray�range�len�palette�colors�dirty�
ValueError)�selfr r �size� r �C/opt/alt/python35/lib64/python3.5/site-packages/PIL/ImagePalette.py�__init__) s ( .!zImagePalette.__init__c C sh t � } | j | _ | j | _ | j d k rF | j d d � | _ | j j � | _ | j | _ | S)N)r r r
r r �copyr )r �newr r r r 3 s zImagePalette.copyc C s0 | j r | j | j f S| j d | j � f S)z�
Get palette contents in format suitable # for the low-level
``im.putpalette`` primitive.
.. warning:: This method is experimental.
z;L)r
r r �tobytes)r r r r �getdata? s zImagePalette.getdatac C sf | j r t d � � t | j t � r. | j St j d | j � } t | d � r\ | j � S| j � S)zUConvert palette to bytes.
.. warning:: This method is experimental.
z!palette contains raw palette data�Br ) r
r �
isinstancer �bytes�array�hasattrr �tostring)r �arrr r r r J s
zImagePalette.tobytesc C s� | j r t d � � t | t � r� y | j | SWq� t k
r� t | j t � rg t | j � | _ t | j � } | d k r� t d � � | | j | <| d | j | <| d | j | d <| d | j | d <d | _
| SYq� Xn t d | � � d S)
zgGiven an rgb tuple, allocate palette entry.
.. warning:: This method is experimental.
z!palette contains raw palette datar z$cannot allocate more than 256 colorsr � � i zunknown color specifier: %rN)r
r r �tupler �KeyErrorr r r r
r )r Zcolor�indexr r r �getcolor[ s$
zImagePalette.getcolorc
C s
| j r t d � � t | t � r3 t | d � } | j d � | j d | j � x� t d � D]� } | j d | � xs t | t | j � | d t | j � � D]D } y | j d | j | � Wq� t
k
r� | j d � Yq� Xq� W| j d
� qa W| j � d S)zVSave palette to text file.
.. warning:: This method is experimental.
z!palette contains raw palette data�wz
# Palette
z# Mode: %s
r z%dr"