U
    eq                  
   @  sH  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gd	d
ggZ	e	j
dd dd e	D ]\ZZz^edkrd dlmZmZ d dlmZmZmZ n,ed
krd dlmZmZ d dlmZmZmZ W n eefk
r   Y q^Y nX dZ qq^dZdZd#ddZdd Zdd Zdd Zdd Zer4G dd deZdd  Zd!d" Z dS )$    )annotationsN)BytesIO   )Image)is_path6ZPyQt6Zside6ZPySide6c                 C  s   | d t jkS )Nr   )sysmodules)
qt_version r   M/var/www/html/StaffProfile/newvenv/lib/python3.8/site-packages/PIL/ImageQt.py<lambda>        r   T)keyreverse)QBuffer	QIODevice)QImageQPixmapqRgbaF   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   rgb2   s    r   c                 C  s   t  }tdkr6z
tj}W q: tk
r2   tj}Y q:X nt}||j |  r\| 	|d n| 	|d t
 }||  |  |d t|S )z1
    :param im: QImage or PIL ImageQt object
    r   Zpngppmr   )r   r
   r   ZOpenModeFlagAttributeErrorZOpenModeopenZ	ReadWriteZhasAlphaChannelsaver   writedatacloseseekr   )imbufferZqt_openmoder   r   r   r   
fromqimage9   s     

r&   c                 C  s   t | S N)r&   r$   r   r   r   fromqpixmapU   s    r)   c                   sv   ddddd| }|| }t |d\}}||r2dnd  d sJ 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bytesZbytes_per_lineZextra_paddingr   r   
<listcomp>k   s   zalign8to32.<locals>.<listcomp>r   )divmodrangelenjoin)r6   widthmodeZbits_per_pixelZbits_per_lineZfull_bytes_per_lineZremaining_bits_per_lineZnew_datar   r5   r   
align8to32Y   s    
r>   c           	        s  d }d }d}t | dr$t|  d} t| r:t| } d}tdkrHtjnt}| j	dkr^|j
}n| j	dkr|j}dd	 td
D }n| j	dkr|j}|    fdd	tdt dD }n| j	dkr| d} | dd}|j}nt| j	dkr| dd}|j}nT| j	dkr0t |dr0| dd } |j}n&|r>|   dt| j	 }t|| j}|pvt|  |d | j	}|r|   ||||dS )NFtoUtf8zutf-8Tr   r,   r-   c                 S  s   g | ]}t |||qS r   r   r2   r   r   r   r7      s     z$_toqclass_helper.<locals>.<listcomp>   r.   c                   s    g | ]}t  ||d    qS )   r@   r2   paletter   r   r7      s     r   rB   RGBZRGBArawZBGRAr/   Format_Grayscale16c                 S  s   | d S )NrA   r   )r4   r   r   r   r      r   z"_toqclass_helper.<locals>.<lambda>zunsupported image mode )r!   sizeformat
colortable)hasattrstrr?   r   r   r   r
   r   ZFormatr=   ZFormat_MonoZFormat_Indexed8r9   Z
getpaletter:   converttobytesZFormat_RGB32ZFormat_ARGB32pointrG   r"   repr
ValueErrorrH   r>   )	r$   r!   rJ   Zexclusive_fpZ	qt_formatrI   msgrH   Z__datar   rC   r   _toqclass_helpers   sJ    




 

rS   c                      s   e Zd Z fddZ  ZS )ImageQtc                   sT   t |}|d | _t | j|d d |d d |d  |d rP| |d  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!   rH   r   r   rI   rJ   N)rS   Z_ImageQt__datasuper__init__ZsetColorTable)selfr$   Zim_data	__class__r   r   rV      s    


zImageQt.__init__)__name__
__module____qualname__rV   __classcell__r   r   rX   r   rT      s   rT   c                 C  s   t | S r'   )rT   r(   r   r   r   toqimage   s    r^   c                 C  s   t | }t|S r'   )r^   r   Z	fromImage)r$   Zqimager   r   r   	toqpixmap   s    r_   )r   )!
__future__r   r   ior    r   Z_utilr   Zqt_versionssortr
   Z	qt_moduleZPyQt6.QtCorer   r   ZPyQt6.QtGuir   r   r   ZPySide6.QtCoreZPySide6.QtGuiImportErrorRuntimeErrorZqt_is_installedr   r&   r)   r>   rS   rT   r^   r_   r   r   r   r   <module>   s>   

1