o
    \"<f                  
   @   s  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d
dgddggZejdd dd eD ]p\Z	Z
z]e
dkrKd dlmZmZ d dlmZmZmZ nDe
d	krbd dlmZmZ d dlmZmZmZ n-e
dkryd 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y   Y q/w dZ ndZdZ	d&ddZdd Zdd Zdd Zdd ZerG d d! d!eZ d"d# Z!d$d% Z"dS )'    N)BytesIO   )Image)isPath6PyQt6side6PySide65PyQt5side2PySide2c                 C   s   | d t jv S )Nr   )sysmodules)
qt_version r   B/var/www/html/kck/venv/lib/python3.10/site-packages/PIL/ImageQt.py<lambda>!   s    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   rgb9   s   r    c                 C   sv   t  }tdkr
tjnt}||j |  r| |d n| |d t }|	|
  |  |d t|S )z1
    :param im: QImage or PIL ImageQt object
    r   pngppmr   )r   r   r   OpenModeopen	ReadWritehasAlphaChannelsaver   writedatacloseseekr   )imbufferqt_openmoder   r   r   r   
fromqimage@   s   

r/   c                 C      t | S N)r/   r,   r   r   r   fromqpixmapV      r3   c                 C   s   dddd| }|| }t |d\}}||rdnd }| d }|s$| S g }	tt| | D ]}
|	| |
| |
d |  d|   q.d|	S )zE
    converts each scanline of data from 8 bit to 32 bit aligned
    r      )1LPr              )divmodrangelenappendjoin)byteswidthmodebits_per_pixelbits_per_linefull_bytes_per_lineremaining_bits_per_linebytes_per_lineextra_paddingnew_datair   r   r   
align8to32d   s   

rL   c           
      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
}nu| j	dkrJ|j}g }tdD ]}|t||| q=nZ| j	d	krq|j}g }|  }td
t|dD ]}|t|||d    q`n3| j	dkr| d} | dd}|j}n| j	dkr| dd}|j}n|r|   tdt| j	 | j}|pt|  |d
 | j	}	|r|   |	|||dS )NFtoUtf8zutf-8Tr   r6   r7      r8   r      RGBRGBArawBGRAzunsupported image mode )r)   sizeformat
colortable)hasattrstrrM   r   r   r$   r   r   FormatrC   Format_MonoFormat_Indexed8r=   r?   r    
getpaletter>   converttobytesFormat_RGB32Format_ARGB32r*   
ValueErrorreprrT   rL   )
r,   r)   rV   exclusive_fp	qt_formatrU   rK   paletterT   __datar   r   r   _toqclass_helper   sN   







rg   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)   rT   r   r   rU   rV   N)rg   _ImageQt__datasuper__init__setColorTable)selfr,   im_data	__class__r   r   rk      s   


zImageQt.__init__)__name__
__module____qualname__rk   __classcell__r   r   ro   r   rh      s    rh   c                 C   r0   r1   )rh   r2   r   r   r   toqimage   r4   ru   c                 C   s   t | }t|S r1   )ru   r   	fromImage)r,   qimager   r   r   	toqpixmap   s   
rx   )r   )#r   ior    r   _utilr   qt_versionssortr   	qt_modulePyQt6.QtCorer   r   PyQt6.QtGuir   r   r   PySide6.QtCorePySide6.QtGuiPyQt5.QtCorePyQt5.QtGuiPySide2.QtCorePySide2.QtGuiImportErrorRuntimeErrorqt_is_installedr    r/   r3   rL   rg   rh   ru   rx   r   r   r   r   <module>   sR   
0