
    dygx%                        d dl Z d dlZ	 d dlmZ dZ e       Zej                  e        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Zej4                  d,k(  reed-<   eed.<   eed/<   eed0<   eed1<   need-<   eed.<   eed/<   eed0<   eed1<   d3d2Zy# e$ rZddl	m
Z
  e
e      xZZY dZ[dZ[ww xY w)4    N)FFIz|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
       )deferred_errorc                   4    e Zd ZddZd Zd Zd ZeZeZd Z	y)PyAccessc                    t        |j                  j                        }|| _        t        j                  d|d         | _        t        j                  d|d         | _        t        j                  d|d         | _        |j                  j                  \  | _
        | _        |j                  | _        | j                  j                  dk(  r|j                  | _        | j!                          y )Nzunsigned char **image8zint **image32imageP)dictimunsafe_ptrsreadonlyfficastr	   r
   r   sizexsizeysize_immodepalette_palette
_post_init)selfimgr   valss       G/var/www/html/webapps/venv/lib/python3.12/site-packages/PIL/PyAccess.py__init__zPyAccess.__init__2   s    CFF&&' hh14>Bxx$y/:XX0$w-@
!$
DJ 6688==CKKDM
 	    c                      y N )r   s    r   r   zPyAccess._post_initD   s    r    c                    | j                   rt        d      |\  }}|dk  r| j                  |z   }|dk  r| j                  |z   }| j	                  ||f      \  }}| j
                  j                  dk(  r>t        |t        t        f      r(t        |      dv r| j                  j                  |      }| j                  |||      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   
ValueErrorr   r   check_xyr   r   
isinstancelisttuplelenr   getcolor	set_pixel)r   xycolorxys        r   __setitem__zPyAccess.__setitem__G   s     ==DEEAq5

QAq5

QA1v&A HHMMS 54-0E
f$ MM**51E~~aE**r    c                     |\  }}|dk  r| j                   |z   }|dk  r| j                  |z   }| j                  ||f      \  }}| j                  ||      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   r/   r1   r2   s       r   __getitem__zPyAccess.__getitem__d   s\     Aq5

QAq5

QA1v&A~~a##r    c                     |\  }}d|cxk  r| j                   k  r.n t        d      d|cxk  r| j                  k  st        d       t        d      |S )Nr   zpixel location out of range)r   r   r'   r6   s       r   r(   zPyAccess.check_xyz   s]    AQ##:;; )*Q(;(;:;; )<:;;	r    NF)
__name__
__module____qualname__r   r   r3   r7   putpixelgetpixelr(   r#   r    r   r   r   1   s'    $+:$& HHr    r   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccess32_2z9 PA, LA, stored in first and last bytes of a 32 bit word c                 N    t         j                  d| j                        | _        y Nzstruct Pixel_RGBA **r   r   r
   pixelsr   argskwargss      r   r   z_PyAccess32_2._post_init       hh5t||Dr    c                 V    | j                   |   |   }|j                  |j                  fS r"   )rD   rar   r1   r2   pixels       r   r5   z_PyAccess32_2.get_pixel   s'    Aq!!!r    c                 x    | j                   |   |   }t        |d   d      |_        t        |d   d      |_        y )Nr      r   )rD   minrJ   rK   r   r1   r2   r0   rM   s        r   r.   z_PyAccess32_2.set_pixel   s8    Aq!eAh$eAh$r    Nr:   r;   r<   __doc__r   r5   r.   r#   r    r   r@   r@      s    CE"%r    r@   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccess32_3zC RGB and friends, stored in the first three bytes of a 32 bit word c                 N    t         j                  d| j                        | _        y rB   rC   rE   s      r   r   z_PyAccess32_3._post_init   rH   r    c                 l    | j                   |   |   }|j                  |j                  |j                  fS r"   )rD   rJ   gbrL   s       r   r5   z_PyAccess32_3.get_pixel   s-    Aq!%''**r    c                     | j                   |   |   }t        |d   d      |_        t        |d   d      |_        t        |d   d      |_        d|_        y )Nr   rO   r      rD   rP   rJ   rX   rY   rK   rQ   s        r   r.   z_PyAccess32_3.set_pixel   sQ    Aq!eAh$eAh$eAh$r    NrR   r#   r    r   rU   rU      s    ME+r    rU   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccess32_4z( RGBA etc, all 4 bytes of a 32 bit word c                 N    t         j                  d| j                        | _        y rB   rC   rE   s      r   r   z_PyAccess32_4._post_init   rH   r    c                     | j                   |   |   }|j                  |j                  |j                  |j                  fS r"   )rD   rJ   rX   rY   rK   rL   s       r   r5   z_PyAccess32_4.get_pixel   s3    Aq!%''57733r    c                     | j                   |   |   }t        |d   d      |_        t        |d   d      |_        t        |d   d      |_        t        |d   d      |_        y )Nr   rO   r   r[   r%   r\   rQ   s        r   r.   z_PyAccess32_4.set_pixel   s\    Aq!eAh$eAh$eAh$eAh$r    NrR   r#   r    r   r^   r^      s    2E4%r    r^   c                   "    e Zd ZdZd Zd Zd Zy)
_PyAccess8z' 1, L, P, 8 bit images stored as uint8 c                 &    | j                   | _        y r"   )r	   rD   rE   s      r   r   z_PyAccess8._post_init   s    kkr    c                 &    | j                   |   |   S r"   rD   r   r1   r2   s      r   r5   z_PyAccess8.get_pixel       {{1~a  r    c                     	 t        |d      | j                  |   |<   y # t        $ r" t        |d   d      | j                  |   |<   Y y w xY w)NrO   r   rP   rD   	TypeErrorr   r1   r2   r0   s       r   r.   z_PyAccess8.set_pixel   sK    	3 #E3DKKN1 	3 #E!Hc 2DKKN1	3    (A
	A
NrR   r#   r    r   rc   rc      s    1"!3r    rc   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI16_Nz2 I;16 access, native bitendian without conversion c                 N    t         j                  d| j                        | _        y )Nzunsigned short **r   r   r   rD   rE   s      r   r   z_PyAccessI16_N._post_init   s    hh2DJJ?r    c                 &    | j                   |   |   S r"   rf   rg   s      r   r5   z_PyAccessI16_N.get_pixel   rh   r    c                     	 t        |d      | j                  |   |<   y # t        $ r" t        |d   d      | j                  |   |<   Y y w xY w)N  r   rj   rl   s       r   r.   z_PyAccessI16_N.set_pixel   sL    	5 #E5 1DKKN1 	5 #E!He 4DKKN1	5rm   NrR   r#   r    r   ro   ro      s    <@!5r    ro   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI16_Lz I;16L access, with conversion c                 N    t         j                  d| j                        | _        y Nzstruct Pixel_I16 **rq   rE   s      r   r   z_PyAccessI16_L._post_init       hh4djjAr    c                 ^    | j                   |   |   }|j                  |j                  dz  z   S N   rD   lrJ   rL   s       r   r5   z_PyAccessI16_L.get_pixel   s+    Aq!ww3&&r    c                     | j                   |   |   }	 t        |d      }|dz  |_        |dz	  |_        y # t        $ r t        |d   d      }Y /w xY w)Nrt   r   rO      )rD   rP   rk   r~   rJ   rQ   s        r   r.   z_PyAccessI16_L.set_pixel   s^    Aq!	)u%E $,1*	  	)a%(E	)   5 AANrR   r#   r    r   rv   rv      s    )B'r    rv   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI16_Bz I;16B access, with conversion c                 N    t         j                  d| j                        | _        y rx   rq   rE   s      r   r   z_PyAccessI16_B._post_init   ry   r    c                 ^    | j                   |   |   }|j                  dz  |j                  z   S r{   r}   rL   s       r   r5   z_PyAccessI16_B.get_pixel   s+    Aq!ww}uww&&r    c                     | j                   |   |   }	 t        |d      }|dz	  |_        |dz  |_        y # t        $ r t        |d   d      }Y /w xY w)Nrt   r   r   rO   )rD   rP   	Exceptionr~   rJ   rQ   s        r   r.   z_PyAccessI16_B.set_pixel   s^    Aq!	)u%E 1*$,	  	)a%(E	)r   NrR   r#   r    r   r   r      s    )B'r    r   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI32_Nz$ Signed Int32 access, native endian c                 &    | j                   | _        y r"   r
   rD   rE   s      r   r   z_PyAccessI32_N._post_init	      llr    c                 &    | j                   |   |   S r"   rf   rg   s      r   r5   z_PyAccessI32_N.get_pixel  rh   r    c                 (    || j                   |   |<   y r"   rf   rl   s       r   r.   z_PyAccessI32_N.set_pixel  s    !Aqr    NrR   r#   r    r   r   r     s    .#!"r    r   c                   (    e Zd ZdZd Zd Zd Zd Zy)_PyAccessI32_Swapz. I;32L/B access, with byteswapping conversion c                 &    | j                   | _        y r"   r   rE   s      r   r   z_PyAccessI32_Swap._post_init  r   r    c                     t         j                  d|      }t         j                  d|      }|d   |d   |d   |d   f\  |d<   |d<   |d<   |d<   t         j                  d|      d   S )Nzint *zunsigned char *r%   r[   r   r   )r   newr   )r   iorigcharss       r   reversez_PyAccessI32_Swap.reverse  sq    www"*D116q58U1XuUVx1W.a%(E!HeAhxx'**r    c                 D    | j                  | j                  |   |         S r"   r   rD   rg   s      r   r5   z_PyAccessI32_Swap.get_pixel  s    ||DKKN1-..r    c                 F    | j                  |      | j                  |   |<   y r"   r   rl   s       r   r.   z_PyAccessI32_Swap.set_pixel"  s     LL/Aqr    N)r:   r;   r<   rS   r   r   r5   r.   r#   r    r   r   r     s    8#+/0r    r   c                   "    e Zd ZdZd Zd Zd Zy)
_PyAccessFz 32 bit float access c                 N    t         j                  d| j                        | _        y )Nzfloat **rC   rE   s      r   r   z_PyAccessF._post_init)  s    hhz4<<8r    c                 &    | j                   |   |   S r"   rf   rg   s      r   r5   z_PyAccessF.get_pixel,  rh   r    c                 r    	 || j                   |   |<   y # t        $ r |d   | j                   |   |<   Y y w xY w)Nr   )rD   rk   rl   s       r   r.   z_PyAccessF.set_pixel/  s>    	) %DKKN1 	) %aDKKN1	)s    66NrR   r#   r    r   r   r   &  s    9!)r    r   1Lr   LALaPARGBLABHSVYCbCrRGBARGBaRGBXCMYKFIlittlezI;16zI;16LzI;16BzI;32LzI;32Bc                     t         j                  | j                  d       }|s!t        j	                  d| j                         y  || |      S )NzPyAccess Not Implemented: %s)mode_mapgetr   loggerdebug)r   r   access_types      r   r   r   [  s<    ,,sxx.K3SXX>sH%%r    r9   )loggingsyscffir   defsr   cdefImportErrorex_utilr   	getLoggerr:   r   r   r@   rU   r^   rc   ro   rv   r   r   r   r   r   	byteorderr   r#   r    r   <module>r      s*  .  
#D %CHHTN 
		8	$M M`%H %"H &%H %&3 3$5X 5$X *X *
"X 
"0 0&) )$  	-	
 	- 	- 
= 
= 
= ] M M M M   !& ==H%HV&HW&HW&HW)HW%HV&HW&HW)HW&HW&i	  # &r""C##s    D- -E2EE