
     f[*                    >   U d dl mZ d dlZd dlZd dlmZ ddlmZ ded<   	 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erddlm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d0ed1e"d2e Z#ej$        d3k    ree#d4<   ee#d5<   ee#d6<   e e#d7<   e!e#d8<   nee#d4<   ee#d5<   ee#d6<   e!e#d7<   e e#d8<   dAdBd@ZdS )C    )annotationsN)TYPE_CHECKING   )	deprecatetypeFFI)r   z|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
    )DeferredError)Imagec                  P    e Zd ZdddZdd	ZddZddZeZeZddZ	ddZ
d dZdS )!PyAccessFimgImage.ImagereadonlyboolreturnNonec                   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_ptrsr   fficastr   r   r   sizexsizeysize_img_immodepalette_palette
_post_init)selfr   r   valss       O/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/PIL/PyAccess.py__init__zPyAccess.__init__9   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_initM   s    r-   xytuple[int, int] | list[int]color#float | tuple[int, ...] | list[int]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 rm| j        j        dk    r't          |          dk    r|d         nd}|d	d         }| j                            || j                  }| j        j        dk    r||fn|}|                     |||          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. In addition to this, RGB and RGBA tuples
        are accepted for P and PA 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   r7   r6      N)r   
ValueErrorr!   r"   check_xyr$   r%   
isinstancelisttuplelenr'   getcolorr#   	set_pixel)r)   r1   r3   msgxyalphapalette_indexs           r+   __setitem__zPyAccess.__setitem__P   s&    = 	"9CS//!Aq55
QAq55
QA1v&&A HM[((54-00 )E

f$$ x}$$$'JJ!OOabqb	 M225$)DDM.2hmt.C.C]E**E~~aE***r-   float | tuple[int, ...]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)   r1   rB   rC   s       r+   __getitem__zPyAccess.__getitem__w   sb     Aq55
QAq55
QA1v&&A~~a###r-   tuple[int, int]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"   r9   )r)   r1   rB   rC   rA   s        r+   r:   zPyAccess.check_xy   se    AQ#########Q(;(;(;(;(;(;(;(;/CS//!	r-   rB   intrC   c                    t                      r/   NotImplementedErrorr)   rB   rC   s      r+   rI   zPyAccess.get_pixel   s    !###r-   c                    t                      r/   rO   r)   rB   rC   r3   s       r+   r@   zPyAccess.set_pixel   s     "###r-   NF)r   r   r   r   r   r   )r   r   )r1   r2   r3   r4   r   r   )r1   r2   r   rG   )r1   rK   r   rK   )rB   rM   rC   rM   r   rG   )rB   rM   rC   rM   r3   r4   r   r   )__name__
__module____qualname__r,   r(   rF   rJ   putpixelgetpixelr:   rI   r@   r0   r-   r+   r   r   8   s            (   %+ %+ %+ %+N$ $ $ $& HH   $ $ $ $$ $ $ $ $ $r-   r   c                  &    e Zd ZdZd Zd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-   rB   rM   rC   r   rK   c                D    | j         |         |         }|j        |j        fS r/   )r_   rar)   rB   rC   pixels       r+   rI   z_PyAccess32_2.get_pixel   s!    Aq!wr-   c                    | j         |         |         }t          |d         d          |_        t          |d         d          |_        d S )Nr   r8   r   )r_   minre   rf   r)   rB   rC   r3   rh   s        r+   r@   z_PyAccess32_2.set_pixel   s@    Aq!eAh$$eAh$$r-   N)rB   rM   rC   rM   r   rK   rU   rV   rW   __doc__r(   rI   r@   r0   r-   r+   r[   r[      sO        AAE E E       % % % % %r-   r[   c                  &    e Zd ZdZd Zd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 r]   r^   r`   s      r+   r(   z_PyAccess32_3._post_init   rc   r-   rB   rM   rC   r   tuple[int, int, int]c                P    | j         |         |         }|j        |j        |j        fS r/   )r_   re   gbrg   s       r+   rI   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   r8   r      r_   rj   re   rs   rt   rf   rk   s        r+   r@   z_PyAccess32_3.set_pixel   s\    Aq!eAh$$eAh$$eAh$$r-   N)rB   rM   rC   rM   r   rq   rl   r0   r-   r+   ro   ro      sO        KKE E E) ) ) )    r-   ro   c                  &    e Zd ZdZd ZddZd	 Zd
S )_PyAccess32_4z&RGBA etc, all 4 bytes of a 32 bit wordc                P    t                               d| j                  | _        d S r]   r^   r`   s      r+   r(   z_PyAccess32_4._post_init   rc   r-   rB   rM   rC   r   tuple[int, int, int, int]c                \    | j         |         |         }|j        |j        |j        |j        fS r/   )r_   re   rs   rt   rf   rg   s       r+   rI   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   r8   r   rv   r6   rw   rk   s        r+   r@   z_PyAccess32_4.set_pixel   sj    Aq!eAh$$eAh$$eAh$$eAh$$r-   N)rB   rM   rC   rM   r   r{   rl   r0   r-   r+   ry   ry      sO        00E E E2 2 2 2% % % % %r-   ry   c                  &    e Zd ZdZd Zd
dZd Zd	S )
_PyAccess8z%1, L, P, 8 bit images stored as uint8c                    | j         | _        d S r/   )r   r_   r`   s      r+   r(   z_PyAccess8._post_init   s    kr-   rB   rM   rC   r   c                (    | j         |         |         S r/   r_   rQ   s      r+   rI   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)Nr8   r   rj   r_   	TypeErrorrS   s       r+   r@   z_PyAccess8.set_pixel   sg    	3 #E3DKN1 	3 	3 	3 #E!Hc 2 2DKN1	3   " .AANrB   rM   rC   rM   r   rM   rl   r0   r-   r+   r   r      sL        //" " "! ! ! !3 3 3 3 3r-   r   c                  &    e Zd ZdZd Zd
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   r_   r`   s      r+   r(   z_PyAccessI16_N._post_init   s    hh2DJ??r-   rB   rM   rC   r   c                (    | j         |         |         S r/   r   rQ   s      r+   rI   z_PyAccessI16_N.get_pixel   r   r-   c                    	 t          |d          | j        |         |<   d S # t          $ r( t          |d         d          | j        |         |<   Y d S w xY w)N  r   r   rS   s       r+   r@   z_PyAccessI16_N.set_pixel   si    	5 #E5 1 1DKN1 	5 	5 	5 #E!He 4 4DKN1	5r   Nr   rl   r0   r-   r+   r   r      sO        ::@ @ @! ! ! !5 5 5 5 5r-   r   c                  &    e Zd ZdZd Zd
dZd Zd	S )_PyAccessI16_LzI;16L access, with conversionc                P    t                               d| j                  | _        d S Nzstruct Pixel_I16 **r   r`   s      r+   r(   z_PyAccessI16_L._post_init       hh4djAAr-   rB   rM   rC   r   c                L    | j         |         |         }|j        |j        dz  z   S N   r_   lre   rg   s       r+   rI   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   r8      )r_   rj   r   r   re   rk   s        r+   r@   z_PyAccessI16_L.set_pixel  sv    Aq!	)u%%EE 	) 	) 	)a%((EEE	) $,1*   &  A	A	Nr   rl   r0   r-   r+   r   r      sO        ''B B B' ' ' '    r-   r   c                  &    e Zd ZdZd Zd
dZd Zd	S )_PyAccessI16_BzI;16B access, with conversionc                P    t                               d| j                  | _        d S r   r   r`   s      r+   r(   z_PyAccessI16_B._post_init  r   r-   rB   rM   rC   r   c                L    | j         |         |         }|j        dz  |j        z   S r   r   rg   s       r+   rI   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   r8   )r_   rj   	Exceptionr   re   rk   s        r+   r@   z_PyAccessI16_B.set_pixel  sv    Aq!	)u%%EE 	) 	) 	)a%((EEE	) 1*$,r   Nr   rl   r0   r-   r+   r   r     sO        ''B B B' ' ' '    r-   r   c                  &    e Zd ZdZd Zd
dZd Zd	S )_PyAccessI32_Nz"Signed Int32 access, native endianc                    | j         | _        d S r/   r   r_   r`   s      r+   r(   z_PyAccessI32_N._post_init%      lr-   rB   rM   rC   r   c                (    | j         |         |         S r/   r   rQ   s      r+   rI   z_PyAccessI32_N.get_pixel(  r   r-   c                &    || j         |         |<   d S r/   r   rS   s       r+   r@   z_PyAccessI32_N.set_pixel+  s    !Aqr-   Nr   rl   r0   r-   r+   r   r   "  sL        ,,# # #! ! ! !" " " " "r-   r   c                  ,    e Zd ZdZd Zd ZddZd	 Zd
S )_PyAccessI32_Swapz,I;32L/B access, with byteswapping conversionc                    | j         | _        d S r/   r   r`   s      r+   r(   z_PyAccessI32_Swap._post_init2  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 *r6   rv   r   r   )r   newr   )r)   iorigcharss       r+   reversez_PyAccessI32_Swap.reverse5  sz    www""*D1116q58U1XuUVx1W.a%(E!HeAhxx''**r-   rB   rM   rC   r   c                N    |                      | j        |         |                   S r/   r   r_   rQ   s      r+   rI   z_PyAccessI32_Swap.get_pixel;  s    ||DKN1-...r-   c                L    |                      |          | j        |         |<   d S r/   r   rS   s       r+   r@   z_PyAccessI32_Swap.set_pixel>  s$     LL//Aqr-   Nr   )rU   rV   rW   rm   r(   r   rI   r@   r0   r-   r+   r   r   /  s[        66# # #+ + +/ / / /0 0 0 0 0r-   r   c                  &    e Zd ZdZd ZddZd	 Zd
S )
_PyAccessFz32 bit float accessc                P    t                               d| j                  | _        d S )Nzfloat **r^   r`   s      r+   r(   z_PyAccessF._post_initE  s    hhz4<88r-   rB   rM   rC   r   floatc                (    | j         |         |         S r/   r   rQ   s      r+   rI   z_PyAccessF.get_pixelH  r   r-   c                v    	 || j         |         |<   d S # t          $ r |d         | j         |         |<   Y d S w xY w)Nr   )r_   r   rS   s       r+   r@   z_PyAccessF.set_pixelK  sU    	) %DKN1 	) 	) 	) %aDKN1	)s     88N)rB   rM   rC   rM   r   r   rl   r0   r-   r+   r   r   B  sL        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;32BFr   r   r   r   r   PyAccess | Nonec                    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   x  sM    ,,sx..K 3SX>>>t;sH%%%r-   rT   )r   r   r   r   r   r   )%
__future__r   loggingsystypingr   
_deprecater   __annotations__cffir   defsr   cdefImportErrorex_utilr	   r   	getLoggerrU   r    r
   r   r[   ro   ry   r   r   r   r   r   r   r   r   	byteorderr0   r-   r+   <module>r      sV  * # " " " " " "  



             ! ! ! ! ! ! 				&D #%%CHHTNNNN & & & %$$$$$!!"%%%C######& 
	8	$	$ b$ b$ b$ b$ b$ b$ b$ b$J% % % % %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
 
A1A,,A1