a
    7Xh                  
   @   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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y   Y qRY n0 dZ qqRd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 Zd d! ZdS )#    N)BytesIO   )Image)is_path6ZPyQt6Zside6ZPySide6c                 C   s   | d t jv S )Nr   )sysmodules)
qt_version r
   P/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/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   rgb1   s    r   c                 C   s   t  }tdkr4z
tj}W q8 ty0   tj}Y q80 nt}||j |  rZ| 	|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   
fromqimage8   s     

r%   c                 C   s   t | S N)r%   r#   r
   r
   r   fromqpixmapT   s    r(   c                 C   s   ddddd| }|| }t |d\}}||r2dnd }| d }|sJ| 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PI;16r          r   )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   
align8to32b   s    
r:   c                 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}g }tdD ]}|t||| q|n| j	d	kr|j}g }|  }td
t|dD ]}|t|||d    qn| j	dkr| d} | dd}|j}nt| j	dkr.| dd}|j}nT| j	dkr\t |dr\| dd } |j}n&|rj|   dt| j	 }t|| j}	|pt|  |	d
 | j	}
|r|   |
|	||dS )NFtoUtf8zutf-8Tr   r+   r,      r-   r      ZRGBZRGBArawZBGRAr.   Format_Grayscale16c                 S   s   | d S )Nr<   r
   )r9   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Formatr8   ZFormat_MonoZFormat_Indexed8r2   r4   r   Z
getpaletter3   converttobytesZFormat_RGB32ZFormat_ARGB32Zpointr?   r!   repr
ValueErrorr@   r:   )r#   r    rB   Zexclusive_fpZ	qt_formatrA   r9   Zpalettemsgr@   Z__datar
   r
   r   _toqclass_helper~   sR    






rJ   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    r@   r   r   rA   rB   N)rJ   Z_ImageQt__datasuper__init__ZsetColorTable)selfr#   Zim_data	__class__r
   r   rM      s    


zImageQt.__init__)__name__
__module____qualname__rM   __classcell__r
   r
   rO   r   rK      s   rK   c                 C   s   t | S r&   )rK   r'   r
   r
   r   toqimage   s    rU   c                 C   s   t | }t|S r&   )rU   r   Z	fromImage)r#   Zqimager
   r
   r   	toqpixmap   s    rV   )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:   rJ   rK   rU   rV   r
   r
   r
   r   <module>   s<   

5