3

h                 @   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 xeD ]\Z	Z
ye
dkrd dlmZmZ d dlmZmZmZ ne
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 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k
r@   w`Y nX dZP q`W 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6ZPyQt6Zside6ZPySide65ZPyQt5Zside2ZPySide2c             C   s   | d t jkS )Nr   )sysmodules)
qt_version r   K/var/www/html/enquirykeeper_venv/lib/python3.6/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|j | j r:| j|d n| j|d t }|j	|j
  |j  |jd tj|S )z1
    :param im: QImage or PIL ImageQt object
    r   Zpngppmr   )r   r
   r   ZOpenModeopenZ	ReadWriteZhasAlphaChannelsaver   writedatacloseseekr   )imbufferZqt_openmoder   r   r   r   
fromqimage@   s    
r$   c             C   s   t | S )N)r$   )r"   r   r   r   fromqpixmapV   s    r%   c             C   s   dddd| }|| }t |d\}}||r0dnd }| d }|sH| S g }	x>tt| | D ]*}
|	j| |
| |
d |  d|   q^W dj|	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modeZbits_per_pixelZbits_per_lineZfull_bytes_per_lineZremaining_bits_per_lineZbytes_per_lineZextra_paddingZnew_datair   r   r   
align8to32d   s    
r6   c       
      C   s  d }d }d}t | dr$t| j d} t| r:tj| } d}tdkrHtjnt}| j	dkr^|j
}n| j	dkr|j}g }xtdD ]}|jt||| q|W n| j	d	kr|j}g }| j }xtd
t|dD ]}|jt|||d    qW nl| j	dkr| jd} | jdd}|j}nB| j	dkr4| jdd}|j}n"|rB| j  tdt| j	 | j}|pvt| j |d
 | j	}	|r| j  |	|||dS )NFtoUtf8zutf-8Tr   r'   r(      r)   r      ZRGBZRGBArawZBGRAzunsupported image mode )r   sizeformat
colortable)hasattrstrr7   r   r   r   r
   r   ZFormatr4   ZFormat_MonoZFormat_Indexed8r.   r0   r   Z
getpaletter/   converttobytesZFormat_RGB32ZFormat_ARGB32r    
ValueErrorreprr;   r6   )
r"   r   r=   Zexclusive_fpZ	qt_formatr<   r5   Zpaletter;   Z__datar   r   r   _toqclass_helper   sJ    




 
rD   c                   s   e Zd Z fddZ  ZS )ImageQtc                sT   t |}|d | _t j| j|d d |d d |d  |d rP| j|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   r;   r   r   r<   r=   N)rD   Z_ImageQt__datasuper__init__ZsetColorTable)selfr"   Zim_data)	__class__r   r   rG      s    



zImageQt.__init__)__name__
__module____qualname__rG   __classcell__r   r   )rI   r   rE      s   rE   c             C   s   t | S )N)rE   )r"   r   r   r   toqimage   s    rN   c             C   s   t | }tj|S )N)rN   r   Z	fromImage)r"   Zqimager   r   r   	toqpixmap   s    rO   )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.QtGuiZPyQt5.QtCoreZPyQt5.QtGuiZPySide2.QtCoreZPySide2.QtGuiImportErrorRuntimeErrorZqt_is_installedr   r$   r%   r6   rD   rE   rN   rO   r   r   r   r   <module>   sJ   


0