o
    Ñ­j  ã                
   @  s‚  U d dl mZ d dlZd dlmZ d dlmZ ddlmZ ddl	m
Z
 ded	< d
dgddggZejdd„ dd� eD ]X\ZZzCded< ded< ded< ded< ded< edkrjd dlmZmZ d dlmZmZmZ nedkr€d dlmZmZ d dlmZmZmZ W n eefyŒ   Y q:w dZeZ ndZdZd.dd„Zdd „ Zd!d"„ Zd#d$„ Z d%d&„ Z!er¶G d'd(„ d(eƒZ"d/d*d+„Z#d,d-„ Z$dS )0é    )ÚannotationsN)ÚBytesIO)ÚCallableé   )ÚImage)Úis_pathz
str | NoneÚ
qt_versionÚ6ÚPyQt6Úside6ÚPySide6c                 C  s   | d t jv S )Nr   )ÚsysÚmodules)Úversion© r   úH/var/www/html/CropPilot/venv/lib/python3.10/site-packages/PIL/ImageQt.pyÚ<lambda>"   s    r   T)ÚkeyÚreverseÚtypeÚQBufferÚ	QIODeviceÚQImageÚQPixmapz#Callable[[int, int, int, int], int]ÚqRgba)r   r   )r   r   r   Féÿ   c                 C  s   t | |||ƒd@ S )zA(Internal) Turns an RGB color into a Qt compatible color integer.l   ÿÿ )r   )ÚrÚgÚbÚar   r   r   Úrgb:   s   r    c                 C  s”   t ƒ }tdkrztj}W n ty   tj}Y nw t}| |j¡ |  ¡ r,|  	|d¡ n|  	|d¡ t
ƒ }| | ¡ ¡ | ¡  | d¡ t |¡S )z1
    :param im: QImage or PIL ImageQt object
    r	   ÚpngÚppmr   )r   r   r   ÚOpenModeFlagÚAttributeErrorÚOpenModeÚopenÚ	ReadWriteÚhasAlphaChannelÚsaver   ÚwriteÚdataÚcloseÚseekr   )ÚimÚbufferÚqt_openmoder   r   r   r   Ú
fromqimageA   s"   

ÿ

r1   c                 C  ó   t | ƒS ©N)r1   ©r.   r   r   r   Úfromqpixmap]   ó   r5   c                   sv   dddddœ| }|| }t |dƒ\}}||rdnd ‰ˆ d ‰ˆs%ˆ S ‡ ‡‡fdd„ttˆ ƒˆ ƒD ƒ}d	 |¡S )
zE
    converts each scanline of data from 8 bit to 32 bit aligned
    r   é   é   )Ú1ÚLÚPúI;16r   é   c                   s,   g | ]}ˆ |ˆ |d  ˆ … dˆ  ‘qS )r   ó    r   ©Ú.0Úi©ÚbytesÚbytes_per_lineÚextra_paddingr   r   Ú
<listcomp>s   s    ÿÿzalign8to32.<locals>.<listcomp>ó    )ÚdivmodÚrangeÚlenÚjoin)rC   ÚwidthÚmodeÚbits_per_pixelÚbits_per_lineÚfull_bytes_per_lineÚremaining_bits_per_lineÚnew_datar   rB   r   Ú
align8to32a   s   
þ
rS   c           	        s~  d }d }d}t | dƒrt|  ¡ dƒ} t| ƒrt | ¡} d}tdkr$tjnt}| j	dkr/|j
}ns| j	dkrA|j}dd	„ td
ƒD ƒ}na| j	dkr]|j}|  ¡ ‰ ‡ fdd	„tdtˆ ƒdƒD ƒ}nE| j	dkrq|  d¡} |  dd¡}|j}n1| j	dkr€|  dd¡}|j}n"| j	dkr�|  dd„ ¡} |j}n|r–|  ¡  dt| j	ƒ› �}t|ƒ‚| j}|p±t|  ¡ |d | j	ƒ}|r¸|  ¡  ||||dœS )NFÚtoUtf8zutf-8Tr	   r9   r:   c                 S  s   g | ]}t |||ƒ‘qS r   ©r    r?   r   r   r   rF   �   s    z$_toqclass_helper.<locals>.<listcomp>é   r;   c                   s    g | ]}t ˆ ||d  … Ž ‘qS )é   rU   r?   ©Úpaletter   r   rF   ‘   s     r   rW   ÚRGBÚRGBAÚrawÚBGRAr<   c                 S  s   | d S )NrV   r   )rA   r   r   r   r   œ   s    z"_toqclass_helper.<locals>.<lambda>zunsupported image mode )r+   ÚsizeÚformatÚ
colortable)ÚhasattrÚstrrT   r   r   r&   r   r   ÚFormatrM   ÚFormat_MonoÚFormat_Indexed8rI   Ú
getpaletterJ   ÚconvertÚtobytesÚFormat_RGB32ÚFormat_ARGB32ÚpointÚFormat_Grayscale16r,   ÚreprÚ
ValueErrorr^   rS   )	r.   r+   r`   Úexclusive_fpÚ	qt_formatr_   Úmsgr^   Ú__datar   rX   r   Ú_toqclass_helper{   sJ   




 



rs   c                      s   e Zd Z‡ fdd„Z‡  ZS )ÚImageQtc                   sX   t |ƒ}|d | _tƒ  | j|d d |d d |d ¡ |d r*|  |d ¡ dS dS )zò
            An PIL image wrapper for Qt.  This is a subclass of PyQt's QImage
            class.

            :param im: A PIL Image object, or a file name (given either as
                Python string or a PyQt string object).
            r+   r^   r   r   r_   r`   N)rs   Ú_ImageQt__dataÚsuperÚ__init__ÚsetColorTable)Úselfr.   Úim_data©Ú	__class__r   r   rw   ¯   s   


üÿzImageQt.__init__)Ú__name__Ú
__module__Ú__qualname__rw   Ú__classcell__r   r   r{   r   rt   ®   s    rt   Úreturnc                 C  r2   r3   )rt   r4   r   r   r   ÚtoqimageÇ   r6   r‚   c                 C  s   t | ƒ}t |¡S r3   )r‚   r   Ú	fromImage)r.   Úqimager   r   r   Ú	toqpixmapË   s   
r…   )r   )r�   rt   )%Ú
__future__r   r   Úior   Útypingr   Ú r   Ú_utilr   Ú__annotations__Úqt_versionsÚsortr   Ú	qt_moduleÚPyQt6.QtCorer   r   ÚPyQt6.QtGuir   r   r   ÚPySide6.QtCoreÚPySide6.QtGuiÚImportErrorÚRuntimeErrorÚqt_is_installedr   r    r1   r5   rS   rs   rt   r‚   r…   r   r   r   r   Ú<module>   sT   þ€ÿ
1
