Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/ImagePalette.cpython-35.pyc



�ʴW��@s�ddlZddlmZddlmZddlmZddlmZGdd�de�Zdd	�Zd
d�Z	dd
�Z
ddd�Zddd�Zddd�Z
ddd�Zdd�ZdS)�N)�
ImageColor)�GimpPaletteFile)�GimpGradientFile)�PaletteFilec@smeZdZdZddddd�Zdd�Zd	d
�Zdd�ZeZd
d�Z	dd�Z
dS)�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.
    �RGBNrcCs�||_d|_|p4ttd��t|j�|_i|_d|_|dkrzt|j�dt|j�ks�|dkr�|t|j�kr�td��dS)N�rzwrong 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__cCsht�}|j|_|j|_|jdk	rF|jdd�|_|jj�|_|j|_|S)N)rr	r
rr�copyr)r�newrrrr3s	zImagePalette.copycCs0|jr|j|jfS|jd|j�fS)z�
        Get palette contents in format suitable # for the low-level
        ``im.putpalette`` primitive.

        .. warning:: This method is experimental.
        z;L)r
rr	�tobytes)rrrr�getdata?s	zImagePalette.getdatacCsf|jrtd��t|jt�r.|jStjd|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�arrrrrrJs	
zImagePalette.tobytescCs�|jrtd��t|t�r�y|j|SWq�tk
r�t|jt�rgt|j�|_t	|j�}|dkr�td��||j|<|d|j|<|d|j|d<|d|j|d<d|_
|SYq�Xntd|��d	S)
zgGiven an rgb tuple, allocate palette entry.

        .. warning:: This method is experimental.
        z!palette contains raw palette datarz$cannot allocate more than 256 colorsr��izunknown color specifier: %rN)r
rr�tupler�KeyErrorrrrr
r)rZcolor�indexrrr�getcolor[s$	

	zImagePalette.getcolorc
Cs
|jrtd��t|t�r3t|d�}|jd�|jd|j�x�td�D]�}|jd|�xst|t|j�|dt|j��D]D}y|jd|j	|�Wq�t
k
r�|jd	�Yq�Xq�W|jd
�qaW|j�dS)zVSave palette to text file.

        .. warning:: This method is experimental.
        z!palette contains raw palette data�wz
# Palette
z# Mode: %s
rz%dr"z %dz 0�
N)r
rr�str�open�writer	rr
r�
IndexError�close)r�fp�i�jrrr�saveus	
4
zImagePalette.save)�__name__�
__module__�__qualname__�__doc__rrrrr r'r2rrrrrs

rcCs(t�}||_||_d|_|S)Nr")rr
rr)r
�datarrrr�raw�s
				r8cCsKg}|dkrAx2td�D]}|j||d�qWnt�|S)Nrr�)r�append�NotImplementedError)Zblack�white�lutr0rrr�make_linear_lut�sr>cCsDg}x7td�D])}|jt|d|dd��qW|S)Nrg�o@g�?)rr:�int)�expr=r0rrr�make_gamma_lut�s'rArcCs3ttd��}|j�t||t|��S)Nr)�listr�reverserr
)r	rrrr�negative�s
rDcCsZddlm}g}x4tdt|��D]}|j|dd��q-Wt||�S)Nr)�randintrr9)�randomrErr
r:r)r	rErr0rrrrF�s
rFz#fff0c0cCsZtj|�\}}}td|�}td|�}td|�}td|||�S)Nrr)rZgetrgbr>r)r<�r�g�brrr�sepia�s
rJcCs#t|ttd��t|��S)Nr)rrBrr
)r	rrr�wedge�srKc
Cs�t|d�}xqtjtjtjgD]K}y*|jd�||�j�}|rWPWq(ttfk
rrYq(Xq(Wtd��|S)N�rbrzcannot load palette)	r+rrr�seekZ
getpalette�SyntaxErrorr�IOError)�filenamer/ZpaletteHandlerr=rrr�load�s
	rQ)rZPILrrrr�objectrr8r>rArDrFrJrKrQrrrr�<module>st