
    Rf&                       d dl mZ d dlZd dlZddlmZ 	 d dlmZ dZ e            Z	e	
                    e           n*# e$ r"ZddlmZ  ej        e          xZZ	Y dZ[ndZ[ww xY w ej        e          Z G d d	          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zi 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d,ed-ed.eZej        d/k    reed0<   eed1<   eed2<   eed3<   eed4<   need0<   eed1<   eed2<   eed3<   eed4<   d7d6ZdS )8    )annotationsN   )	deprecate)FFIz|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
    )DeferredErrorc                  6    e Zd ZddZd Zd Zd ZeZeZd Z	dS )	PyAccessFc                   t          dd           t          |j        j                  }|| _        t
                              d|d                   | _        t
                              d|d                   | _        t
                              d|d                   | _	        |j        j
        \  | _        | _        || _        |j        | _        | j        j        dv r|j        | _        |                                  d S )	Nr	      zunsigned char **image8zint **image32imagePPA)r   dictimunsafe_ptrsreadonlyfficastr   r   r   sizexsizeysize_img_immodepalette_palette
_post_init)selfimgr   valss       >/var/www/html/env/lib/python3.11/site-packages/PIL/PyAccess.py__init__zPyAccess.__init__4   s    *b!!!CF&'' hh14>BBxx$y/::XX0$w-@@
!$
DJ	 68=K''KDM
 	    c                    d S N )r!   s    r$   r    zPyAccess._post_initH   s    r&   c                *   | j         rd}t          |          |\  }}|dk     r
| j        |z   }|dk     r
| j        |z   }|                     ||f          \  }}| j        j        dv rt          |t          t          f          r|t          |          dv rk| j        j        dk    r't          |          dk    r|d         nd}|d	d         }| j                            || j                  }| j        j        dk    r||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 imager   r   )      r   r,   r+      N)r   
ValueErrorr   r   check_xyr   r   
isinstancelisttuplelenr   getcolorr   	set_pixel)r!   xycolormsgxyalphas          r$   __setitem__zPyAccess.__setitem__K   s!    = 	"9CS//!Aq55
QAq55
QA1v&&A HM[((54-00 )E

f$$ x}$$$'JJ!OOabqb	M**5$)<<Ex}$$~~aE***r&   c                    |\  }}|dk     r
| j         |z   }|dk     r
| j        |z   }|                     ||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   )r   r   r/   	get_pixel)r!   r6   r9   r:   s       r$   __getitem__zPyAccess.__getitem__n   sb     Aq55
QAq55
QA1v&&A~~a###r&   c                    |\  }}d|cxk    r| j         k     rn nd|cxk    r| j        k     sn d}t          |          |S )Nr   zpixel location out of range)r   r   r.   )r!   r6   r9   r:   r8   s        r$   r/   zPyAccess.check_xy   se    AQ#########Q(;(;(;(;(;(;(;(;/CS//!	r&   NF)
__name__
__module____qualname__r%   r    r<   r?   putpixelgetpixelr/   r)   r&   r$   r	   r	   3   sq           (  !+ !+ !+F$ $ $& HH    r&   r	   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccess32_2z7PA, LA, stored in first and last bytes of a 32 bit wordc                P    t                               d| j                  | _        d S Nzstruct Pixel_RGBA **r   r   r   pixelsr!   argskwargss      r$   r    z_PyAccess32_2._post_init       hh5t|DDr&   c                D    | j         |         |         }|j        |j        fS r(   )rL   rar!   r9   r:   pixels       r$   r>   z_PyAccess32_2.get_pixel   s!    Aq!wr&   c                    | j         |         |         }t          |d         d          |_        t          |d         d          |_        d S )Nr   r-   r   )rL   minrR   rS   r!   r9   r:   r7   rU   s        r$   r5   z_PyAccess32_2.set_pixel   s@    Aq!eAh$$eAh$$r&   NrB   rC   rD   __doc__r    r>   r5   r)   r&   r$   rH   rH      sJ        AAE E E     % % % % %r&   rH   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccess32_3zARGB and friends, stored in the first three bytes of a 32 bit wordc                P    t                               d| j                  | _        d S rJ   rK   rM   s      r$   r    z_PyAccess32_3._post_init   rP   r&   c                P    | j         |         |         }|j        |j        |j        fS r(   )rL   rR   gbrT   s       r$   r>   z_PyAccess32_3.get_pixel   s%    Aq!w((r&   c                    | j         |         |         }t          |d         d          |_        t          |d         d          |_        t          |d         d          |_        d|_        d S )Nr   r-   r      rL   rW   rR   r_   r`   rS   rX   s        r$   r5   z_PyAccess32_3.set_pixel   s\    Aq!eAh$$eAh$$eAh$$r&   NrY   r)   r&   r$   r\   r\      sJ        KKE E E) ) )    r&   r\   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccess32_4z&RGBA etc, all 4 bytes of a 32 bit wordc                P    t                               d| j                  | _        d S rJ   rK   rM   s      r$   r    z_PyAccess32_4._post_init   rP   r&   c                \    | j         |         |         }|j        |j        |j        |j        fS r(   )rL   rR   r_   r`   rS   rT   s       r$   r>   z_PyAccess32_4.get_pixel   s)    Aq!w%'11r&   c                   | j         |         |         }t          |d         d          |_        t          |d         d          |_        t          |d         d          |_        t          |d         d          |_        d S )Nr   r-   r   rb   r+   rc   rX   s        r$   r5   z_PyAccess32_4.set_pixel   sj    Aq!eAh$$eAh$$eAh$$eAh$$r&   NrY   r)   r&   r$   re   re      sJ        00E E E2 2 2% % % % %r&   re   c                  $    e Zd ZdZd Zd Zd ZdS )
_PyAccess8z%1, L, P, 8 bit images stored as uint8c                    | j         | _        d S r(   )r   rL   rM   s      r$   r    z_PyAccess8._post_init   s    kr&   c                (    | j         |         |         S r(   rL   r!   r9   r:   s      r$   r>   z_PyAccess8.get_pixel       {1~a  r&   c                    	 t          |d          | j        |         |<   d S # t          $ r( t          |d         d          | j        |         |<   Y d S w xY w)Nr-   r   rW   rL   	TypeErrorr!   r9   r:   r7   s       r$   r5   z_PyAccess8.set_pixel   sg    	3 #E3DKN1 	3 	3 	3 #E!Hc 2 2DKN1	3   " .AANrY   r)   r&   r$   rj   rj      sG        //" " "! ! !3 3 3 3 3r&   rj   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccessI16_Nz0I;16 access, native bitendian without conversionc                P    t                               d| j                  | _        d S )Nzunsigned short **r   r   r   rL   rM   s      r$   r    z_PyAccessI16_N._post_init   s    hh2DJ??r&   c                (    | j         |         |         S r(   rm   rn   s      r$   r>   z_PyAccessI16_N.get_pixel   ro   r&   c                    	 t          |d          | j        |         |<   d S # t          $ r( t          |d         d          | j        |         |<   Y d S w xY w)N  r   rq   rs   s       r$   r5   z_PyAccessI16_N.set_pixel   si    	5 #E5 1 1DKN1 	5 	5 	5 #E!He 4 4DKN1	5rt   NrY   r)   r&   r$   rv   rv      sJ        ::@ @ @! ! !5 5 5 5 5r&   rv   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccessI16_LzI;16L access, with conversionc                P    t                               d| j                  | _        d S Nzstruct Pixel_I16 **rx   rM   s      r$   r    z_PyAccessI16_L._post_init       hh4djAAr&   c                L    | j         |         |         }|j        |j        dz  z   S N   rL   lrR   rT   s       r$   r>   z_PyAccessI16_L.get_pixel   s%    Aq!w3&&r&   c                    | j         |         |         }	 t          |d          }n&# t          $ r t          |d         d          }Y nw xY w|dz  |_        |dz	  |_        d S )Nr{   r   r-      )rL   rW   rr   r   rR   rX   s        r$   r5   z_PyAccessI16_L.set_pixel   sv    Aq!	)u%%EE 	) 	) 	)a%((EEE	) $,1*   &  A	A	NrY   r)   r&   r$   r}   r}      sJ        ''B B B' ' '    r&   r}   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccessI16_BzI;16B access, with conversionc                P    t                               d| j                  | _        d S r   rx   rM   s      r$   r    z_PyAccessI16_B._post_init   r   r&   c                L    | j         |         |         }|j        dz  |j        z   S r   r   rT   s       r$   r>   z_PyAccessI16_B.get_pixel  s%    Aq!w}uw&&r&   c                    | j         |         |         }	 t          |d          }n&# t          $ r t          |d         d          }Y nw xY w|dz	  |_        |dz  |_        d S )Nr{   r   r   r-   )rL   rW   	Exceptionr   rR   rX   s        r$   r5   z_PyAccessI16_B.set_pixel  sv    Aq!	)u%%EE 	) 	) 	)a%((EEE	) 1*$,r   NrY   r)   r&   r$   r   r      sJ        ''B B B' ' '    r&   r   c                  $    e Zd ZdZd Zd Zd ZdS )_PyAccessI32_Nz"Signed Int32 access, native endianc                    | j         | _        d S r(   r   rL   rM   s      r$   r    z_PyAccessI32_N._post_init      lr&   c                (    | j         |         |         S r(   rm   rn   s      r$   r>   z_PyAccessI32_N.get_pixel  ro   r&   c                &    || j         |         |<   d S r(   rm   rs   s       r$   r5   z_PyAccessI32_N.set_pixel  s    !Aqr&   NrY   r)   r&   r$   r   r     sG        ,,# # #! ! !" " " " "r&   r   c                  *    e Zd ZdZd Zd Zd Zd ZdS )_PyAccessI32_Swapz,I;32L/B access, with byteswapping conversionc                    | j         | _        d S r(   r   rM   s      r$   r    z_PyAccessI32_Swap._post_init!  r   r&   c                   t                               d|          }t                               d|          }|d         |d         |d         |d         f\  |d<   |d<   |d<   |d<   t                               d|          d         S )Nzint *zunsigned char *r+   rb   r   r   )r   newr   )r!   iorigcharss       r$   reversez_PyAccessI32_Swap.reverse$  sz    www""*D1116q58U1XuUVx1W.a%(E!HeAhxx''**r&   c                N    |                      | j        |         |                   S r(   r   rL   rn   s      r$   r>   z_PyAccessI32_Swap.get_pixel*  s    ||DKN1-...r&   c                L    |                      |          | j        |         |<   d S r(   r   rs   s       r$   r5   z_PyAccessI32_Swap.set_pixel-  s$     LL//Aqr&   N)rB   rC   rD   rZ   r    r   r>   r5   r)   r&   r$   r   r     sV        66# # #+ + +/ / /0 0 0 0 0r&   r   c                  $    e Zd ZdZd Zd Zd ZdS )
_PyAccessFz32 bit float accessc                P    t                               d| j                  | _        d S )Nzfloat **rK   rM   s      r$   r    z_PyAccessF._post_init4  s    hhz4<88r&   c                (    | j         |         |         S r(   rm   rn   s      r$   r>   z_PyAccessF.get_pixel7  ro   r&   c                v    	 || j         |         |<   d S # t          $ r |d         | j         |         |<   Y d S w xY w)Nr   )rL   rr   rs   s       r$   r5   z_PyAccessF.set_pixel:  sU    	) %DKN1 	) 	) 	) %aDKN1	)s     88NrY   r)   r&   r$   r   r   1  sG        9 9 9! ! !) ) ) ) )r&   r   1Lr   zI;16NLALar   RGBLABHSVYCbCrRGBARGBaRGBXCMYKFIlittlezI;16zI;16LzI;16BzI;32LzI;32BFc                    t                               | j        d           }|s"t                              d| j                   d S  || |          S )NzPyAccess Not Implemented: %s)mode_mapgetr   loggerdebug)r"   r   access_types      r$   r   r   g  sM    ,,sx..K 3SX>>>t;sH%%%r&   rA   ) 
__future__r   loggingsys
_deprecater   cffir   defsr   cdefImportErrorex_utilr   r   	getLoggerrB   r   r	   rH   r\   re   rj   rv   r}   r   r   r   r   r   	byteorderr)   r&   r$   <module>r      s  * # " " " " "  



 ! ! ! ! ! !&D #%%CHHTNNNN & & & %$$$$$!!"%%%C######& 
	8	$	$V V V V V V V Vr% % % % %H % % %"    H   &% % % % %H % % %&3 3 3 3 3 3 3 3$5 5 5 5 5X 5 5 5$    X   *    X   *
" 
" 
" 
" 
"X 
" 
" 
"0 0 0 0 0 0 0 0&) ) ) ) ) ) ) )$  ^	
 	- 	- 	- 
= 
= 
= ] M M M M  !" #( =H%HV&HW&HW&HW)HW%HV&HW&HW)HW&HW& & & & & &s   '> A%A  A%