
    &Th&                        d dl Z d dlZddlm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d-eZej8                  d.k(  reed/<   eed0<   eed1<   eed2<   eed3<   need/<   eed0<   eed1<   eed2<   eed3<   d5d4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)6    N   )	deprecate)FFIz|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
    )DeferredErrorc                   4    e Zd ZddZd Zd Zd ZeZeZd Z	y)PyAccessc                    t        dd       t        |j                  j                        }|| _        t
        j                  d|d         | _        t
        j                  d|d         | _        t
        j                  d|d         | _	        |j                  j                  \  | _        | _        || _        |j                  | _        | j                  j                  dv r|j                   | _        | j%                          y )	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       T/home/stella.sw7ft.com/public_html/venv/lib/python3.12/site-packages/PIL/PyAccess.py__init__zPyAccess.__init__3   s    *b!CFF&&' hh14>Bxx$y/:XX0$w-@
!$
DJ	 6688==K'KKDM
 	    c                      y N )r    s    r#   r   zPyAccess._post_initG   s    r%   c                 B   | j                   rd}t        |      |\  }}|dk  r| j                  |z   }|dk  r| j                  |z   }| j	                  ||f      \  }}| j
                  j                  dv rt        |t        t        f      rt        |      dv rv| j
                  j                  dk(  rt        |      dk(  r|d   nd}|d	d }| j                  j                  || j                        }| j
                  j                  dk(  r|f}| 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   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__J   s    ==9CS/!Aq5

QAq5

QA1v&A HHMM[(54-0E
f$ xx}}$$'J!Oabq	MM**5$))<Exx}}$~~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    r5   r8   r9   s       r#   __getitem__zPyAccess.__getitem__m   s\     Aq5

QAq5

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    r5   r8   r9   r7   s        r#   r.   zPyAccess.check_xy   s@    AQ##Q(;(;/CS/!	r%   NF)
__name__
__module____qualname__r$   r   r;   r>   putpixelgetpixelr.   r(   r%   r#   r   r   2   s(    (!+F$& HHr%   r   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccess32_2z7PA, LA, stored in first and last bytes of a 32 bit wordc                 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'   )rK   rar    r8   r9   pixels       r#   r=   z_PyAccess32_2.get_pixel   s'    Aq!wwr%   c                 x    | j                   |   |   }t        |d   d      |_        t        |d   d      |_        y )Nr   r,   r   )rK   minrQ   rR   r    r8   r9   r6   rT   s        r#   r4   z_PyAccess32_2.set_pixel   s8    Aq!eAh$eAh$r%   NrA   rB   rC   __doc__r   r=   r4   r(   r%   r#   rG   rG      s    AE %r%   rG   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccess32_3zARGB and friends, stored in the first three bytes of a 32 bit wordc                 N    t         j                  d| j                        | _        y rI   rJ   rL   s      r#   r   z_PyAccess32_3._post_init   rO   r%   c                 l    | j                   |   |   }|j                  |j                  |j                  fS r'   )rK   rQ   gbrS   s       r#   r=   z_PyAccess32_3.get_pixel   s-    Aq!ww((r%   c                     | j                   |   |   }t        |d   d      |_        t        |d   d      |_        t        |d   d      |_        d|_        y )Nr   r,   r      rK   rV   rQ   r^   r_   rR   rW   s        r#   r4   z_PyAccess32_3.set_pixel   sQ    Aq!eAh$eAh$eAh$r%   NrX   r(   r%   r#   r[   r[      s    KE)r%   r[   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 wordc                 N    t         j                  d| j                        | _        y rI   rJ   rL   s      r#   r   z_PyAccess32_4._post_init   rO   r%   c                     | j                   |   |   }|j                  |j                  |j                  |j                  fS r'   )rK   rQ   r^   r_   rR   rS   s       r#   r=   z_PyAccess32_4.get_pixel   s3    Aq!ww%''11r%   c                     | j                   |   |   }t        |d   d      |_        t        |d   d      |_        t        |d   d      |_        t        |d   d      |_        y )Nr   r,   r   ra   r*   rb   rW   s        r#   r4   z_PyAccess32_4.set_pixel   s\    Aq!eAh$eAh$eAh$eAh$r%   NrX   r(   r%   r#   rd   rd      s    0E2%r%   rd   c                   "    e Zd ZdZd Zd Zd Zy)
_PyAccess8z%1, L, P, 8 bit images stored as uint8c                 &    | j                   | _        y r'   )r   rK   rL   s      r#   r   z_PyAccess8._post_init   s    kkr%   c                 &    | j                   |   |   S r'   rK   r    r8   r9   s      r#   r=   z_PyAccess8.get_pixel       {{1~a  r%   c                     	 t        |d      | j                  |   |<   y # t        $ r" t        |d   d      | j                  |   |<   Y y w xY w)Nr,   r   rV   rK   	TypeErrorr    r8   r9   r6   s       r#   r4   z_PyAccess8.set_pixel   sK    	3 #E3DKKN1 	3 #E!Hc 2DKKN1	3    (A
	A
NrX   r(   r%   r#   ri   ri      s    /"!3r%   ri   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI16_Nz0I;16 access, native bitendian without conversionc                 N    t         j                  d| j                        | _        y )Nzunsigned short **r   r   r   rK   rL   s      r#   r   z_PyAccessI16_N._post_init   s    hh2DJJ?r%   c                 &    | j                   |   |   S r'   rl   rm   s      r#   r=   z_PyAccessI16_N.get_pixel   rn   r%   c                     	 t        |d      | j                  |   |<   y # t        $ r" t        |d   d      | j                  |   |<   Y y w xY w)N  r   rp   rr   s       r#   r4   z_PyAccessI16_N.set_pixel   sL    	5 #E5 1DKKN1 	5 #E!He 4DKKN1	5rs   NrX   r(   r%   r#   ru   ru      s    :@!5r%   ru   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI16_LzI;16L access, with conversionc                 N    t         j                  d| j                        | _        y Nzstruct Pixel_I16 **rw   rL   s      r#   r   z_PyAccessI16_L._post_init       hh4djjAr%   c                 ^    | j                   |   |   }|j                  |j                  dz  z   S N   rK   lrQ   rS   s       r#   r=   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)Nrz   r   r,      )rK   rV   rq   r   rQ   rW   s        r#   r4   z_PyAccessI16_L.set_pixel   s^    Aq!	)u%E $,1*	  	)a%(E	)   5 AANrX   r(   r%   r#   r|   r|      s    'B'r%   r|   c                   "    e Zd ZdZd Zd Zd Zy)_PyAccessI16_BzI;16B access, with conversionc                 N    t         j                  d| j                        | _        y r~   rw   rL   s      r#   r   z_PyAccessI16_B._post_init   r   r%   c                 ^    | j                   |   |   }|j                  dz  |j                  z   S r   r   rS   s       r#   r=   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)Nrz   r   r   r,   )rK   rV   	Exceptionr   rQ   rW   s        r#   r4   z_PyAccessI16_B.set_pixel  s^    Aq!	)u%E 1*$,	  	)a%(E	)r   NrX   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 endianc                 &    | j                   | _        y r'   r   rK   rL   s      r#   r   z_PyAccessI32_N._post_init      llr%   c                 &    | j                   |   |   S r'   rl   rm   s      r#   r=   z_PyAccessI32_N.get_pixel  rn   r%   c                 (    || j                   |   |<   y r'   rl   rr   s       r#   r4   z_PyAccessI32_N.set_pixel  s    !Aqr%   NrX   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 conversionc                 &    | j                   | _        y r'   r   rL   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*   ra   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   rK   rm   s      r#   r=   z_PyAccessI32_Swap.get_pixel)  s    ||DKKN1-..r%   c                 F    | j                  |      | j                  |   |<   y r'   r   rr   s       r#   r4   z_PyAccessI32_Swap.set_pixel,  s     LL/Aqr%   N)rA   rB   rC   rY   r   r   r=   r4   r(   r%   r#   r   r     s    6#+/0r%   r   c                   "    e Zd ZdZd Zd Zd Zy)
_PyAccessFz32 bit float accessc                 N    t         j                  d| j                        | _        y )Nzfloat **rJ   rL   s      r#   r   z_PyAccessF._post_init3  s    hhz4<<8r%   c                 &    | j                   |   |   S r'   rl   rm   s      r#   r=   z_PyAccessF.get_pixel6  rn   r%   c                 r    	 || j                   |   |<   y # t        $ r |d   | j                   |   |<   Y y w xY w)Nr   )rK   rq   rr   s       r#   r4   z_PyAccessF.set_pixel9  s>    	) %DKKN1 	) %aDKKN1	)s    66NrX   r(   r%   r#   r   r   0  s    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;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   f  s<    ,,sxx.K3SXX>sH%%r%   r@   )loggingsys
_deprecater   cffir   defsr   cdefImportErrorex_utilr   	getLoggerrA   r   r   rG   r[   rd   ri   ru   r|   r   r   r   r   r   	byteorderr   r(   r%   r#   <module>r      s9  ,  
 !"D %CHHTN 
		8	$V Vr%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&}	  " %b!!C#"s    D6 6E;EE