o
    ÒèFh¿&  ã                
   @  s"  U d dl mZ d dlZd dlZddlmZ ded< zd dlmZ dZ	eƒ Z
e
 e	¡ W n eyJ Z zdd	lmZ e e¡ ZZ
W Y dZ[ndZ[ww e e¡ZG d
d„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d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< d:d8d9„ZdS );é    )ÚannotationsNé   )Ú	deprecateÚtypeÚFFI)r   z|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
    )ÚDeferredErrorc                   @  s>   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S )ÚPyAccessFc                 C  s�   t ddƒ t|jjƒ}|| _t d|d ¡| _t d|d ¡| _t d|d ¡| _	|jj
\| _| _|| _|j| _| jjdv rB|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   Úvals© r"   úE/var/www/html/loop/nvenv/lib/python3.10/site-packages/PIL/PyAccess.pyÚ__init__5   s   
zPyAccess.__init__c                 C  s   d S ©Nr"   )r   r"   r"   r#   r   I   s   zPyAccess._post_initc                 C  sØ   | j r	d}t|ƒ‚|\}}|dk r| j| }|dk r| j| }|  ||f¡\}}| jjdv ret|tt	fƒret
|ƒdv re| jjdkrSt
|ƒdkrK|d nd}|d	d… }| j || j¡}| jjdkre||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Úalphar"   r"   r#   Ú__setitem__L   s(   


ÿzPyAccess.__setitem__c                 C  sJ   |\}}|dk r| j | }|dk r| j| }|  ||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   r4   r5   r"   r"   r#   Ú__getitem__o   s   

zPyAccess.__getitem__c                 C  sJ   |\}}d|  kr| j k rn nd|  kr| jk s#n d}t|ƒ‚|S )Nr   zpixel location out of range)r   r   r)   )r   r1   r4   r5   r3   r"   r"   r#   r*   …   s
   2zPyAccess.check_xyN©F)
Ú__name__Ú
__module__Ú__qualname__r$   r   r7   r9   ÚputpixelÚgetpixelr*   r"   r"   r"   r#   r   4   s    
#r   c                   @  ó(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú_PyAccess32_2z7PA, LA, stored in first and last bytes of a 32 bit wordc                 O  ó   t  d| j¡| _d S ©Nzstruct Pixel_RGBA **©r   r   r   Úpixels©r   ÚargsÚkwargsr"   r"   r#   r   �   ó   z_PyAccess32_2._post_initc                 C  s   | j | | }|j|jfS r%   )rE   ÚrÚa©r   r4   r5   Úpixelr"   r"   r#   r8   “   s   z_PyAccess32_2.get_pixelc                 C  s2   | j | | }t|d dƒ|_t|d dƒ|_d S )Nr   r(   r   )rE   ÚminrJ   rK   ©r   r4   r5   r2   rM   r"   r"   r#   r0   —   s   z_PyAccess32_2.set_pixelN©r;   r<   r=   Ú__doc__r   r8   r0   r"   r"   r"   r#   rA   �   ó
    rA   c                   @  r@   )	Ú_PyAccess32_3zARGB and friends, stored in the first three bytes of a 32 bit wordc                 O  rB   rC   rD   rF   r"   r"   r#   r   ¡   rI   z_PyAccess32_3._post_initc                 C  s   | j | | }|j|j|jfS r%   )rE   rJ   ÚgÚbrL   r"   r"   r#   r8   ¤   ó   z_PyAccess32_3.get_pixelc                 C  sH   | j | | }t|d dƒ|_t|d dƒ|_t|d dƒ|_d|_d S )Nr   r(   r   é   ©rE   rN   rJ   rT   rU   rK   rO   r"   r"   r#   r0   ¨   s
   
z_PyAccess32_3.set_pixelNrP   r"   r"   r"   r#   rS   ž   rR   rS   c                   @  r@   )	Ú_PyAccess32_4z&RGBA etc, all 4 bytes of a 32 bit wordc                 O  rB   rC   rD   rF   r"   r"   r#   r   ´   rI   z_PyAccess32_4._post_initc                 C  s"   | j | | }|j|j|j|jfS r%   )rE   rJ   rT   rU   rK   rL   r"   r"   r#   r8   ·   s   z_PyAccess32_4.get_pixelc                 C  sR   | j | | }t|d dƒ|_t|d dƒ|_t|d dƒ|_t|d dƒ|_d S )Nr   r(   r   rW   r&   rX   rO   r"   r"   r#   r0   »   s
   z_PyAccess32_4.set_pixelNrP   r"   r"   r"   r#   rY   ±   rR   rY   c                   @  r@   )	Ú
_PyAccess8z%1, L, P, 8 bit images stored as uint8c                 O  ó   | j | _d S r%   )r
   rE   rF   r"   r"   r#   r   Ç   ó   z_PyAccess8._post_initc                 C  ó   | j | | S r%   ©rE   ©r   r4   r5   r"   r"   r#   r8   Ê   ó   z_PyAccess8.get_pixelc                 C  óH   zt |dƒ| j| |< W d S  ty#   t |d dƒ| j| |< Y d S w )Nr(   r   ©rN   rE   Ú	TypeError©r   r4   r5   r2   r"   r"   r#   r0   Í   ó
   þz_PyAccess8.set_pixelNrP   r"   r"   r"   r#   rZ   Ä   ó
    rZ   c                   @  r@   )	Ú_PyAccessI16_Nz0I;16 access, native bitendian without conversionc                 O  rB   )Nzunsigned short **©r   r   r   rE   rF   r"   r"   r#   r   Ù   rI   z_PyAccessI16_N._post_initc                 C  r]   r%   r^   r_   r"   r"   r#   r8   Ü   r`   z_PyAccessI16_N.get_pixelc                 C  ra   )Néÿÿ  r   rb   rd   r"   r"   r#   r0   ß   re   z_PyAccessI16_N.set_pixelNrP   r"   r"   r"   r#   rg   Ö   rf   rg   c                   @  r@   )	Ú_PyAccessI16_LzI;16L access, with conversionc                 O  rB   ©Nzstruct Pixel_I16 **rh   rF   r"   r"   r#   r   ë   rI   z_PyAccessI16_L._post_initc                 C  s   | j | | }|j|jd  S ©Né   ©rE   ÚlrJ   rL   r"   r"   r#   r8   î   rV   z_PyAccessI16_L.get_pixelc                 C  sV   | j | | }zt|dƒ}W n ty   t|d dƒ}Y nw |d@ |_|d? |_d S )Nri   r   r(   é   )rE   rN   rc   ro   rJ   rO   r"   r"   r#   r0   ò   ó   ÿ
z_PyAccessI16_L.set_pixelNrP   r"   r"   r"   r#   rj   è   rR   rj   c                   @  r@   )	Ú_PyAccessI16_BzI;16B access, with conversionc                 O  rB   rk   rh   rF   r"   r"   r#   r      rI   z_PyAccessI16_B._post_initc                 C  s   | j | | }|jd |j S rl   rn   rL   r"   r"   r#   r8     rV   z_PyAccessI16_B.get_pixelc                 C  sV   | j | | }zt|dƒ}W n ty   t|d dƒ}Y nw |d? |_|d@ |_d S )Nri   r   rp   r(   )rE   rN   Ú	Exceptionro   rJ   rO   r"   r"   r#   r0     rq   z_PyAccessI16_B.set_pixelNrP   r"   r"   r"   r#   rr   ý   rR   rr   c                   @  r@   )	Ú_PyAccessI32_Nz"Signed Int32 access, native endianc                 O  r[   r%   ©r   rE   rF   r"   r"   r#   r     r\   z_PyAccessI32_N._post_initc                 C  r]   r%   r^   r_   r"   r"   r#   r8     r`   z_PyAccessI32_N.get_pixelc                 C  s   || j | |< d S r%   r^   rd   r"   r"   r#   r0     s   z_PyAccessI32_N.set_pixelNrP   r"   r"   r"   r#   rt     rf   rt   c                   @  s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú_PyAccessI32_Swapz,I;32L/B access, with byteswapping conversionc                 O  r[   r%   ru   rF   r"   r"   r#   r   "  r\   z_PyAccessI32_Swap._post_initc                 C  s\   t  d|¡}t  d|¡}|d |d |d |d f\|d< |d< |d< |d< t  d|¡d S )Nzint *zunsigned char *r&   rW   r   r   )r   Únewr   )r   ÚiÚorigÚcharsr"   r"   r#   Úreverse%  s   4z_PyAccessI32_Swap.reversec                 C  s   |   | j| | ¡S r%   ©r{   rE   r_   r"   r"   r#   r8   +  rI   z_PyAccessI32_Swap.get_pixelc                 C  s   |   |¡| j| |< d S r%   r|   rd   r"   r"   r#   r0   .  s   z_PyAccessI32_Swap.set_pixelN)r;   r<   r=   rQ   r   r{   r8   r0   r"   r"   r"   r#   rv     s    rv   c                   @  r@   )	Ú
_PyAccessFz32 bit float accessc                 O  rB   )Nzfloat **rD   rF   r"   r"   r#   r   5  rI   z_PyAccessF._post_initc                 C  r]   r%   r^   r_   r"   r"   r#   r8   8  r`   z_PyAccessF.get_pixelc                 C  s<   z
|| j | |< W d S  ty   |d | j | |< Y d S w )Nr   )rE   rc   rd   r"   r"   r#   r0   ;  s
   þz_PyAccessF.set_pixelNrP   r"   r"   r"   r#   r}   2  rf   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                 C  s.   t  | jd ¡}|st d| j¡ d S || |ƒS )NzPyAccess Not Implemented: %s)Úmode_mapÚgetr   ÚloggerÚdebug)r    r   Úaccess_typer"   r"   r#   rw   h  s
   
rw   r:   )!Ú
__future__r   ÚloggingÚsysÚ
_deprecater   Ú__annotations__Úcffir   Údefsr   ÚcdefÚImportErrorÚexÚ_utilr   rw   Ú	getLoggerr;   r�   r   rA   rS   rY   rZ   rg   rj   rr   rt   rv   r}   r�   Ú	byteorderr"   r"   r"   r#   Ú<module>   s”   €û
Yÿþýüûúùø	÷
öõôóòñðï

