o
    üÞh¹  ã                
   @  sò  U d dl mZ d dlZd dlmZ d dlmZmZmZ ddl	m
Z
 ddlmZ dZered dlZd dlZdd	l	mZ d
ed< eejjejjf Zeejjejjf Zeejjejjf Zeejjejjf Zded< ddgddggZejdd„ dd� eD ]H\ZZz3ded< edkrœd 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!d"„Z&d=d&d'„Z'd>d)d*„Z(d?d/d0„Z)d@d3d4„Z*e$ríG d5d6„ d6eƒZ+dAd7d8„Z,dBd9d:„Z-dS )Cé    )ÚannotationsN)ÚBytesIO)ÚAnyÚCallableÚUnioné   )ÚImage)Úis_pathF)Ú	ImageFileÚtypeÚQBufferz
str | NoneÚ
qt_versionÚ6ÚPyQt6Úside6ÚPySide6c                 C  s   | d t jv S )Nr   )ÚsysÚmodules)Úversion© r   úK/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/ImageQt.pyÚ<lambda>/   s    r   T)ÚkeyÚreversez#Callable[[int, int, int, int], int]ÚqRgba)r   Ú	QIODevice)ÚQImageÚQPixmapr   éÿ   ÚrÚintÚgÚbÚaÚreturnc                 C  s   t | |||ƒd@ S )zA(Internal) Turns an RGB color into a Qt compatible color integer.l   ÿÿ )r   )r   r!   r"   r#   r   r   r   ÚrgbC   s   r%   ÚimúQImage | QPixmapúImageFile.ImageFilec                 C  s    t ƒ }tdkrzttdƒ}W n ty   ttdƒ}Y nw t}| t|dƒ¡ |  ¡ r2|  |d¡ n|  |d¡ tƒ }| 	| 
¡ ¡ | ¡  | d¡ t |¡S )z1
    :param im: QImage or PIL ImageQt object
    r   ÚOpenModeFlagÚOpenModeÚ	ReadWriteÚpngÚppmr   )r   r   Úgetattrr   ÚAttributeErrorÚopenÚhasAlphaChannelÚsaver   ÚwriteÚdataÚcloseÚseekr   )r&   ÚbufferÚqt_openmoder"   r   r   r   Ú
fromqimageJ   s"   ÿ

r9   r   c                 C  ó   t | ƒS ©N)r9   ©r&   r   r   r   Úfromqpixmapg   ó   r=   ÚbytesÚwidthÚmodeÚstrc                   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©r?   Úbytes_per_lineÚextra_paddingr   r   Ú
<listcomp>}   s    ÿÿzalign8to32.<locals>.<listcomp>ó    )ÚdivmodÚrangeÚlenÚjoin)r?   r@   rA   Úbits_per_pixelÚbits_per_lineÚfull_bytes_per_lineÚremaining_bits_per_lineÚnew_datar   rN   r   Ú
align8to32k   s   
þ
r\   úImage.Image | str | QByteArrayúdict[str, Any]c           	        s¶  d }d }d}t | dƒrt|  ¡ dƒ} t| ƒrt | ¡} d}t| tjƒs%J ‚tdkr.tt	dƒnt	}| j
dkr;t|dƒ}nƒ| j
d	krOt|d
ƒ}dd„ tdƒD ƒ}no| j
dkrst|d
ƒ}|  ¡ ‰ ˆ d uscJ ‚‡ fdd„tdtˆ ƒdƒD ƒ}nK| j
dkr‰|  d¡} |  dd¡}t|dƒ}n5| j
dkrš|  dd¡}t|dƒ}n$| j
dkr¬|  dd„ ¡} t|dƒ}n|r²|  ¡  dt| j
ƒ› �}t|ƒ‚| j}|pÍt|  ¡ |d | j
ƒ}|rÔ|  ¡  ||||dœS )NFÚtoUtf8zutf-8Tr   ÚFormatrE   ÚFormat_MonorF   ÚFormat_Indexed8c                 S  s   g | ]}t |||ƒ‘qS r   ©r%   rK   r   r   r   rQ   ˜   s    z$_toqclass_helper.<locals>.<listcomp>é   rG   c                   s    g | ]}t ˆ ||d  … Ž ‘qS )é   rc   rK   ©Úpaletter   r   rQ   �   s     r   re   ÚRGBÚRGBAÚrawÚBGRAÚFormat_RGB32ÚFormat_ARGB32rH   c                 S  s   | d S )Nrd   r   )rM   r   r   r   r   ¨   s    z"_toqclass_helper.<locals>.<lambda>ÚFormat_Grayscale16zunsupported image mode )r4   ÚsizeÚformatÚ
colortable)ÚhasattrrB   r_   r	   r   r0   Ú
isinstancer   r.   r   rA   rT   Ú
getpaletterU   ÚconvertÚtobytesÚpointr5   ÚreprÚ
ValueErrorro   r\   )	r&   r4   rq   Úexclusive_fpÚ	qt_formatrp   Úmsgro   Ú__datar   rf   r   Ú_toqclass_helper…   sN   






 



r~   c                      s   e Zd Zd‡ fdd„Z‡  ZS )ÚImageQtr&   r]   r$   ÚNonec                   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).
            r4   ro   r   r   rp   rq   N)r~   Ú_ImageQt__dataÚsuperÚ__init__ÚsetColorTable)Úselfr&   Úim_data©Ú	__class__r   r   rƒ   »   s   


üÿzImageQt.__init__)r&   r]   r$   r€   )Ú__name__Ú
__module__Ú__qualname__rƒ   Ú__classcell__r   r   r‡   r   r   º   s    r   c                 C  r:   r;   )r   r<   r   r   r   ÚtoqimageÓ   r>   r�   c                 C  s*   t | ƒ}ttdƒ|ƒ}tdkr| ¡  |S )NÚ	fromImager   )r�   r.   r   r   Údetach)r&   ÚqimageÚpixmapr   r   r   Ú	toqpixmap×   s
   r’   )r   )
r   r    r!   r    r"   r    r#   r    r$   r    )r&   r'   r$   r(   )r&   r   r$   r(   )r?   r?   r@   r    rA   rB   r$   r?   )r&   r]   r$   r^   )r&   r]   r$   r   )r&   r]   r$   r   ).Ú
__future__r   r   Úior   Útypingr   r   r   Ú r   Ú_utilr	   ÚTYPE_CHECKINGr   r   r
   Ú__annotations__ÚQtCoreÚ
QByteArrayr   ÚQtGuir   r   Úqt_versionsÚsortr   Ú	qt_moduleÚPyQt6.QtCorer   ÚPyQt6.QtGuir   ÚPySide6.QtCoreÚPySide6.QtGuiÚImportErrorÚRuntimeErrorÚqt_is_installedr   r%   r9   r=   r\   r~   r   r�   r’   r   r   r   r   Ú<module>   s`   þ€ÿ



3
