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__/PyAccess.cpython-35.opt-1.pyc



�ʴW0"� @sDddlmZddlZddlZddlmZeje�ZdZ	e�Z
e
je	�Gdd�de�Z
Gdd�de
�ZGd	d
�d
e
�ZGdd�de
�ZGd
d�de
�ZGdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�de
�ZGdd�de
�Zdededededed ed!ed"ed#ed$ed%ed&ed'ed(ed)ed*eiZejd+kr�eed,<eed-<eed.<eed/<eed0<n2eed,<eed-<eed.<eed/<eed0<d1d2d3�ZdS)4�)�print_functionN)�FFIz`
struct Pixel_RGBA {
    unsigned char r,g,b,a;
};
struct Pixel_I16 {
    unsigned char l,r;
};
c@s[eZdZddd�Zdd�Zdd�Zdd	�ZeZeZd
d�Z	dS)
�PyAccessFcCs�t|jj�}||_tjd|d�|_tjd|d�|_tjd|d�|_|d|_	|d|_
|j�dS)Nzunsigned char **�image8zint **�image32�image�xsize�ysize)�dictZimZunsafe_ptrs�readonly�ffi�castrrrrr	�
_post_init)�self�imgr�vals�r�?/opt/alt/python35/lib64/python3.5/site-packages/PIL/PyAccess.py�__init__0s	

zPyAccess.__init__cCsdS)Nr)rrrrr>szPyAccess._post_initcCs=|jrtd��|j|�\}}|j|||�S)a
        Modifies the pixel at x,y. The color is given as a single
        numerical value for single band images, and a tuple for
        multi-band images

        :param xy: The pixel coordinate, given as (x, y).
        :param value: The pixel value.
        z%Attempt to putpixel a read only image)r�
ValueError�check_xy�	set_pixel)r�xy�color�x�yrrr�__setitem__As		zPyAccess.__setitem__cCs%|j|�\}}|j||�S)aI
        Returns the pixel at x,y. The pixel is returned as a single
        value for single band images or a tuple for multiple band
        images

        :param xy: The pixel coordinate, given as (x, y).
        :returns: a pixel value for single band images, a tuple of
          pixel values for multiband images.
        )r�	get_pixel)rrrrrrr�__getitem__OszPyAccess.__getitem__cCsZ|\}}d|ko&|jknoGd|koE|jknsVtd��|S)Nrzpixel location out of range)rr	r)rrrrrrrr`s>zPyAccess.check_xyN)
�__name__�
__module__�__qualname__rrrrZputpixelZgetpixelrrrrrr.src@s:eZdZdZdd�Zdd�Zdd�ZdS)	�
_PyAccess32_2z9 PA, LA, stored in first and last bytes of a 32 bit word cOstjd|j�|_dS)Nzstruct Pixel_RGBA **)rr
r�pixels)r�args�kwargsrrrrisz_PyAccess32_2._post_initcCs!|j||}|j|jfS)N)r#�r�a)rrr�pixelrrrrlsz_PyAccess32_2.get_pixelcCsA|j||}t|dd�|_t|dd�|_dS)Nr��)r#�minr&r')rrrrr(rrrrpsz_PyAccess32_2.set_pixelN)rr r!�__doc__rrrrrrrr"gsr"c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�
_PyAccess32_3zC RGB and friends, stored in the first three bytes of a 32 bit word cOstjd|j�|_dS)Nzstruct Pixel_RGBA **)rr
rr#)rr$r%rrrrzsz_PyAccess32_3._post_initcCs'|j||}|j|j|jfS)N)r#r&�g�b)rrrr(rrrr}sz_PyAccess32_3.get_pixelcCsW|j||}t|dd�|_t|dd�|_t|dd�|_dS)Nrr)r*�)r#r+r&r.r/)rrrrr(rrrr�sz_PyAccess32_3.set_pixelN)rr r!r,rrrrrrrr-wsr-c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�
_PyAccess32_4z( RGBA etc, all 4 bytes of a 32 bit word cOstjd|j�|_dS)Nzstruct Pixel_RGBA **)rr
rr#)rr$r%rrrr�sz_PyAccess32_4._post_initcCs-|j||}|j|j|j|jfS)N)r#r&r.r/r')rrrr(rrrr�sz_PyAccess32_4.get_pixelcCsm|j||}t|dd�|_t|dd�|_t|dd�|_t|dd�|_dS)Nrr)r*r0�)r#r+r&r.r/r')rrrrr(rrrr�s
z_PyAccess32_4.set_pixelN)rr r!r,rrrrrrrr1�sr1c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�
_PyAccess8z' 1, L, P, 8 bit images stored as uint8 cOs|j|_dS)N)rr#)rr$r%rrrr�sz_PyAccess8._post_initcCs|j||S)N)r#)rrrrrrr�sz_PyAccess8.get_pixelc	CsKyt|d�|j||<Wn&t|dd�|j||<YnXdS)Nr)r)r+r#)rrrrrrrr�sz_PyAccess8.set_pixelN)rr r!r,rrrrrrrr3�sr3c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�_PyAccessI16_Nz2 I;16 access, native bitendian without conversion cOstjd|j�|_dS)Nzunsigned short **)rr
rr#)rr$r%rrrr�sz_PyAccessI16_N._post_initcCs|j||S)N)r#)rrrrrrr�sz_PyAccessI16_N.get_pixelc	CsKyt|d�|j||<Wn&t|dd�|j||<YnXdS)Ni��r)r+r#)rrrrrrrr�sz_PyAccessI16_N.set_pixelN)rr r!r,rrrrrrrr4�sr4c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�_PyAccessI16_Lz I;16L access, with conversion cOstjd|j�|_dS)Nzstruct Pixel_I16 **)rr
rr#)rr$r%rrrr�sz_PyAccessI16_L._post_initcCs#|j||}|j|jdS)N�)r#�lr&)rrrr(rrrr�sz_PyAccessI16_L.get_pixelcCsj|j||}yt|d�}Wn%tk
rKt|dd�}YnX|d@|_|d?|_dS)Ni��rr)�)r#r+�	TypeErrorr7r&)rrrrr(rrrr�s

z_PyAccessI16_L.set_pixelN)rr r!r,rrrrrrrr5�sr5c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�_PyAccessI16_Bz I;16B access, with conversion cOstjd|j�|_dS)Nzstruct Pixel_I16 **)rr
rr#)rr$r%rrrr�sz_PyAccessI16_B._post_initcCs#|j||}|jd|jS)Nr6)r#r7r&)rrrr(rrrr�sz_PyAccessI16_B.get_pixelc	Cs`|j||}yt|d�}Wnt|dd�}YnX|d?|_|d@|_dS)Ni��rr8r))r#r+r7r&)rrrrr(rrrr�s
z_PyAccessI16_B.set_pixelN)rr r!r,rrrrrrrr:�sr:c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�_PyAccessI32_Nz$ Signed Int32 access, native endian cOs|j|_dS)N)rr#)rr$r%rrrr�sz_PyAccessI32_N._post_initcCs|j||S)N)r#)rrrrrrr�sz_PyAccessI32_N.get_pixelcCs||j||<dS)N)r#)rrrrrrrr�sz_PyAccessI32_N.set_pixelN)rr r!r,rrrrrrrr;�sr;c@sFeZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�_PyAccessI32_Swapz. I;32L/B access, with byteswapping conversion cOs|j|_dS)N)rr#)rr$r%rrrr�sz_PyAccessI32_Swap._post_initcCsvtjd|�}tjd|�}|d|d|d|df\|d<|d<|d<|d<tjd|�dS)Nzint *zunsigned char *r2r0r*r)r�newr
)r�iZorig�charsrrr�reverse�s
0z_PyAccessI32_Swap.reversecCs|j|j||�S)N)r@r#)rrrrrrr�sz_PyAccessI32_Swap.get_pixelcCs|j|�|j||<dS)N)r@r#)rrrrrrrrsz_PyAccessI32_Swap.set_pixelN)rr r!r,rr@rrrrrrr<�s
r<c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�
_PyAccessFz 32 bit float access cOstjd|j�|_dS)Nzfloat **)rr
rr#)rr$r%rrrrsz_PyAccessF._post_initcCs|j||S)N)r#)rrrrrrr	sz_PyAccessF.get_pixelc	Cs9y||j||<Wn|d|j||<YnXdS)Nr)r#)rrrrrrrrsz_PyAccessF.set_pixelN)rr r!r,rrrrrrrrAsrA�1�L�PZLAZLaZPAZRGBZLABZHSVZYCbCrZRGBAZRGBaZRGBXZCMYK�F�I�littlezI;16zI;16LzI;16BzI;32LzI;32BFcCs?tj|jd�}|s2tjd|j�dS|||�S)NzPyAccess Not Implemented: %s)�mode_map�get�mode�logger�debug)rrZaccess_typerrrr=7s
r=)Z
__future__rZlogging�sysZcffirZ	getLoggerrrKZdefsrZcdef�objectrr"r-r1r3r4r5r:r;r<rArH�	byteorderr=rrrr�<module>s\
	
9