HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/PIL/__pycache__/PyAccess.cpython-310.pyc
o

we�&�
@s
ddlZddlZddlmZzddlmZdZe�Ze�e�Wne	y>Z
zddlmZee
�ZZWYdZ
[
ndZ
[
wwe�
e�ZGdd�d�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Zide�de�de�d e�d!e�d"e�d#e�d$e�d%e�d&e�d'e�d(e�d)e�d*e�d+e�d,e�d-e�Zejd.kr�eed/<eed0<eed1<eed2<eed3<need/<eed0<eed1<eed2<eed3<d7d5d6�ZdS)8�N�)�	deprecate)�FFIz|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
    )�
DeferredErrorc@s>eZdZd
dd�Zdd�Zdd�Zdd	�ZeZeZd
d�Z	dS)�PyAccessFcCs�tdd�t|jj�}||_t�d|d�|_t�d|d�|_t�d|d�|_	|jj
\|_|_||_
|j|_|jjdvrB|j|_|��dS)	Nr�zunsigned char **�image8zint **�image32�image��P�PA)r�dict�im�unsafe_ptrs�readonly�ffi�castrr	r
�size�xsize�ysize�_img�_im�mode�palette�_palette�
_post_init)�self�imgr�vals�r �E/home/arjun/projects/env/lib/python3.10/site-packages/PIL/PyAccess.py�__init__3s
zPyAccess.__init__cCsdS�Nr )rr r r!rGszPyAccess._post_initcCs�|jr	d}t|��|\}}|dkr|j|}|dkr|j|}|�||f�\}}|jjdvret|tt	f�ret
|�dvre|jjdkrSt
|�dkrK|dnd}|d	d�}|j�||j
�}|jjdkre||f}|�|||�S)
a0
        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). See
           :ref:`coordinate-system`.
        :param color: The pixel value.
        z%Attempt to putpixel a read only imagerr)��r
r%r$�N)r�
ValueErrorrr�check_xyrr�
isinstance�list�tuple�lenr�getcolorr�	set_pixel)r�xy�color�msg�x�y�alphar r r!�__setitem__Js(


�zPyAccess.__setitem__cCsJ|\}}|dkr
|j|}|dkr|j|}|�||f�\}}|�||�S)aq
        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). See
          :ref:`coordinate-system`.
        :returns: a pixel value for single band images, a tuple of
          pixel values for multiband images.
        r)rrr(�	get_pixel)rr/r2r3r r r!�__getitem__ms

zPyAccess.__getitem__cCsJ|\}}d|kr|jkrnnd|kr|jks#nd}t|��|S)Nrzpixel location out of range)rrr')rr/r2r3r1r r r!r(�s
2zPyAccess.check_xyN�F)
�__name__�
__module__�__qualname__r"rr5r7�putpixel�getpixelr(r r r r!r2s
#rc@�(eZdZdZdd�Zdd�Zdd�ZdS)	�
_PyAccess32_2z7PA, LA, stored in first and last bytes of a 32 bit wordcO�t�d|j�|_dS�Nzstruct Pixel_RGBA **�rrr	�pixels�r�args�kwargsr r r!r��z_PyAccess32_2._post_initcCs|j||}|j|jfSr#)rC�r�a�rr2r3�pixelr r r!r6�sz_PyAccess32_2.get_pixelcCs2|j||}t|dd�|_t|dd�|_dS)Nrr&r)rC�minrHrI�rr2r3r0rKr r r!r.�sz_PyAccess32_2.set_pixelN�r9r:r;�__doc__rr6r.r r r r!r?��
r?c@r>)	�
_PyAccess32_3zARGB and friends, stored in the first three bytes of a 32 bit wordcOr@rArBrDr r r!r�rGz_PyAccess32_3._post_initcCs|j||}|j|j|jfSr#)rCrH�g�brJr r r!r6��z_PyAccess32_3.get_pixelcCsH|j||}t|dd�|_t|dd�|_t|dd�|_d|_dS)Nrr&r��rCrLrHrRrSrIrMr r r!r.�s

z_PyAccess32_3.set_pixelNrNr r r r!rQ�rPrQc@r>)	�
_PyAccess32_4z&RGBA etc, all 4 bytes of a 32 bit wordcOr@rArBrDr r r!r�rGz_PyAccess32_4._post_initcCs"|j||}|j|j|j|jfSr#)rCrHrRrSrIrJr r r!r6�sz_PyAccess32_4.get_pixelcCsR|j||}t|dd�|_t|dd�|_t|dd�|_t|dd�|_dS)Nrr&rrUr$rVrMr r r!r.�s
z_PyAccess32_4.set_pixelNrNr r r r!rW�rPrWc@r>)	�
_PyAccess8z%1, L, P, 8 bit images stored as uint8cO�|j|_dSr#)rrCrDr r r!r��z_PyAccess8._post_initcC�|j||Sr#�rC�rr2r3r r r!r6��z_PyAccess8.get_pixelcC�Hz
t|d�|j||<WdSty#t|dd�|j||<YdSw)Nr&r�rLrC�	TypeError�rr2r3r0r r r!r.��
�z_PyAccess8.set_pixelNrNr r r r!rX��
rXc@r>)	�_PyAccessI16_Nz0I;16 access, native bitendian without conversioncOr@)Nzunsigned short **�rrr
rCrDr r r!r�rGz_PyAccessI16_N._post_initcCr[r#r\r]r r r!r6�r^z_PyAccessI16_N.get_pixelcCr_)N�rr`rbr r r!r.�rcz_PyAccessI16_N.set_pixelNrNr r r r!re�rdrec@r>)	�_PyAccessI16_LzI;16L access, with conversioncOr@�Nzstruct Pixel_I16 **rfrDr r r!r�rGz_PyAccessI16_L._post_initcCs|j||}|j|jdS�N��rC�lrHrJr r r!r6�rTz_PyAccessI16_L.get_pixelcCsV|j||}zt|d�}Wntyt|dd�}Ynw|d@|_|d?|_dS)Nrgrr&�)rCrLrarmrHrMr r r!r.���
z_PyAccessI16_L.set_pixelNrNr r r r!rh�rPrhc@r>)	�_PyAccessI16_BzI;16B access, with conversioncOr@rirfrDr r r!r�rGz_PyAccessI16_B._post_initcCs|j||}|jd|jSrjrlrJr r r!r6rTz_PyAccessI16_B.get_pixelcCsV|j||}zt|d�}Wntyt|dd�}Ynw|d?|_|d@|_dS)Nrgrrnr&)rCrL�	ExceptionrmrHrMr r r!r.roz_PyAccessI16_B.set_pixelNrNr r r r!rp�rPrpc@r>)	�_PyAccessI32_Nz"Signed Int32 access, native endiancOrYr#�r	rCrDr r r!rrZz_PyAccessI32_N._post_initcCr[r#r\r]r r r!r6r^z_PyAccessI32_N.get_pixelcCs||j||<dSr#r\rbr r r!r.sz_PyAccessI32_N.set_pixelNrNr r r r!rrrdrrc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�_PyAccessI32_Swapz,I;32L/B access, with byteswapping conversioncOrYr#rsrDr r r!r rZz_PyAccessI32_Swap._post_initcCs\t�d|�}t�d|�}|d|d|d|df\|d<|d<|d<|d<t�d|�dS)Nzint *zunsigned char *r$rUrr)r�newr)r�i�orig�charsr r r!�reverse#s4z_PyAccessI32_Swap.reversecCs|�|j||�Sr#�ryrCr]r r r!r6)rGz_PyAccessI32_Swap.get_pixelcCs|�|�|j||<dSr#rzrbr r r!r.,sz_PyAccessI32_Swap.set_pixelN)r9r:r;rOrryr6r.r r r r!rtsrtc@r>)	�
_PyAccessFz32 bit float accesscOr@)Nzfloat **rBrDr r r!r3rGz_PyAccessF._post_initcCr[r#r\r]r r r!r66r^z_PyAccessF.get_pixelcCs<z
||j||<WdSty|d|j||<YdSw)Nr)rCrarbr r r!r.9s
�z_PyAccessF.set_pixelNrNr r r r!r{0rdr{�1�LrzI;16N�LA�Lar
�RGB�LAB�HSV�YCbCr�RGBA�RGBa�RGBX�CMYK�F�I�littlezI;16zI;16LzI;16BzI;32LzI;32BFcCs.t�|jd�}|st�d|j�dS|||�S)NzPyAccess Not Implemented: %s)�mode_map�getr�logger�debug)rr�access_typer r r!rufs

rur8)�logging�sys�
_deprecater�cffir�defsr�cdef�ImportError�ex�_utilr�	getLoggerr9r�rr?rQrWrXrerhrprrrtr{r��	byteorderrur r r r!�<module>s���
Y
��������	�
���
�����