
    NYhf&                       U d dl mZ d dlZd dlZddlmZ ded<   	 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d0eZej@                  d1k(  reed2<   eed3<   eed4<   eed5<   eed6<   need2<   eed3<   eed4<   eed5<   eed6<   d8d7Zy# e$ r%Zdd	lmZ  ej                   e      xZZ
Y dZ[+dZ[ww xY w)9    )annotationsN   )	deprecatetypeFFI)r   z|
    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       K/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/PIL/PyAccess.py__init__zPyAccess.__init__5   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_initI   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__L   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   r0   	get_pixel)r"   r7   r:   r;   s       r%   __getitem__zPyAccess.__getitem__o   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"   r7   r:   r;   r9   s        r%   r0   zPyAccess.check_xy   s@    AQ##Q(;(;/CS/!	r'   NF)
__name__
__module____qualname__r&   r!   r=   r@   putpixelgetpixelr0   r*   r'   r%   r
   r
   4   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)   )rM   rar"   r:   r;   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   )rM   minrS   rT   r"   r:   r;   r8   rV   s        r%   r6   z_PyAccess32_2.set_pixel   s8    Aq!eAh$eAh$r'   NrC   rD   rE   __doc__r!   r?   r6   r*   r'   r%   rI   rI      s    AE %r'   rI   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 rK   rL   rN   s      r%   r!   z_PyAccess32_3._post_init   rQ   r'   c                l    | j                   |   |   }|j                  |j                  |j                  fS r)   )rM   rS   gbrU   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      rM   rX   rS   r`   ra   rT   rY   s        r%   r6   z_PyAccess32_3.set_pixel   sQ    Aq!eAh$eAh$eAh$r'   NrZ   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 rK   rL   rN   s      r%   r!   z_PyAccess32_4._post_init   rQ   r'   c                    | j                   |   |   }|j                  |j                  |j                  |j                  fS r)   )rM   rS   r`   ra   rT   rU   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   rc   r,   rd   rY   s        r%   r6   z_PyAccess32_4.set_pixel   s\    Aq!eAh$eAh$eAh$eAh$r'   NrZ   r*   r'   r%   rf   rf      s    0E2%r'   rf   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   rM   rN   s      r%   r!   z_PyAccess8._post_init   s    kkr'   c                &    | j                   |   |   S r)   rM   r"   r:   r;   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   rX   rM   	TypeErrorr"   r:   r;   r8   s       r%   r6   z_PyAccess8.set_pixel   sK    	3 #E3DKKN1 	3 #E!Hc 2DKKN1	3    (A
	A
NrZ   r*   r'   r%   rk   rk      s    /"!3r'   rk   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   rM   rN   s      r%   r!   z_PyAccessI16_N._post_init   s    hh2DJJ?r'   c                &    | j                   |   |   S r)   rn   ro   s      r%   r?   z_PyAccessI16_N.get_pixel   rp   r'   c                    	 t        |d      | j                  |   |<   y # t        $ r" t        |d   d      | j                  |   |<   Y y w xY w)N  r   rr   rt   s       r%   r6   z_PyAccessI16_N.set_pixel   sL    	5 #E5 1DKKN1 	5 #E!He 4DKKN1	5ru   NrZ   r*   r'   r%   rw   rw      s    :@!5r'   rw   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 **ry   rN   s      r%   r!   z_PyAccessI16_L._post_init       hh4djjAr'   c                ^    | j                   |   |   }|j                  |j                  dz  z   S N   rM   lrS   rU   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)Nr|   r   r.      )rM   rX   rs   r   rS   rY   s        r%   r6   z_PyAccessI16_L.set_pixel   s^    Aq!	)u%E $,1*	  	)a%(E	)   5 AANrZ   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   ry   rN   s      r%   r!   z_PyAccessI16_B._post_init   r   r'   c                ^    | j                   |   |   }|j                  dz  |j                  z   S r   r   rU   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)Nr|   r   r   r.   )rM   rX   	Exceptionr   rS   rY   s        r%   r6   z_PyAccessI16_B.set_pixel  s^    Aq!	)u%E 1*$,	  	)a%(E	)r   NrZ   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   rM   rN   s      r%   r!   z_PyAccessI32_N._post_init      llr'   c                &    | j                   |   |   S r)   rn   ro   s      r%   r?   z_PyAccessI32_N.get_pixel  rp   r'   c                (    || j                   |   |<   y r)   rn   rt   s       r%   r6   z_PyAccessI32_N.set_pixel  s    !Aqr'   NrZ   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   rN   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,   rc   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   rM   ro   s      r%   r?   z_PyAccessI32_Swap.get_pixel+  s    ||DKKN1-..r'   c                F    | j                  |      | j                  |   |<   y r)   r   rt   s       r%   r6   z_PyAccessI32_Swap.set_pixel.  s     LL/Aqr'   N)rC   rD   rE   r[   r!   r   r?   r6   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 **rL   rN   s      r%   r!   z_PyAccessF._post_init5  s    hhz4<<8r'   c                &    | j                   |   |   S r)   rn   ro   s      r%   r?   z_PyAccessF.get_pixel8  rp   r'   c                r    	 || j                   |   |<   y # t        $ r |d   | j                   |   |<   Y y w xY w)Nr   )rM   rs   rt   s       r%   r6   z_PyAccessF.set_pixel;  s>    	) %DKKN1 	) %aDKKN1	)s    66NrZ   r*   r'   r%   r   r   2  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   h  s<    ,,sxx.K3SXX>sH%%r'   rB   )!
__future__r   loggingsys
_deprecater   __annotations__cffir   defsr   cdefImportErrorex_utilr   r   	getLoggerrC   r   r
   rI   r]   rf   rk   rw   r~   r   r   r   r   r   	byteorderr*   r'   r%   <module>r      sI  * #  
 !		&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&}	  & %!!!"%%C#&s    E E,E''E,