o
    g                  
   @   s2  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 ]B\Z	Z
z/e
dkrEd 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yg   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)is_path6PyQt6side6PySide6c                 C   s   | d t jv S )Nr   )sysmodules)
qt_version r   I/home/ubuntu/cloudmapper/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   rgb1   s   r   c                 C   s   t  }tdkrztj}W n ty   tj}Y nw t}||j |  r,| 	|d n| 	|d t
 }||  |  |d t|S )z1
    :param im: QImage or PIL ImageQt object
    r   pngppmr   )r   r   r   OpenModeFlagAttributeErrorOpenModeopen	ReadWritehasAlphaChannelsaver   writedatacloseseekr   )imbufferqt_openmoder   r   r   r   
fromqimage8   s"   



r-   c                 C      t | S N)r-   r*   r   r   r   fromqpixmapT      r1   c                 C   s   d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PI;16r              )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   
align8to32b   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
}n| j	dkrJ|j}g }tdD ]}|t||| q=nq| j	d	krq|j}g }|  }td
t|dD ]}|t|||d    q`nJ| j	dkr| d} | dd}|j}n6| j	dkr| dd}|j}n'| j	dkrt |dr| dd } |j}n|r|   dt| j	 }t|| j}	|pt|  |	d
 | j	}
|r|   |
|	||dS )NFtoUtf8zutf-8Tr   r5   r6      r7   r      RGBRGBArawBGRAr8   Format_Grayscale16c                 S   s   | d S )NrN   r   )rK   r   r   r   r      s    z"_toqclass_helper.<locals>.<lambda>z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_ARGB32pointrT   r(   repr
ValueErrorrU   rL   )r*   r'   rW   exclusive_fp	qt_formatrV   rK   palettemsgrU   __datar   r   r   _toqclass_helper~   sV   







rj   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'   rU   r   r   rV   rW   N)rj   _ImageQt__datasuper__init__setColorTable)selfr*   im_data	__class__r   r   rn      s   


zImageQt.__init__)__name__
__module____qualname__rn   __classcell__r   r   rr   r   rk      s    rk   c                 C   r.   r/   )rk   r0   r   r   r   toqimage   r2   rx   c                 C   s   t | }t|S r/   )rx   r   	fromImage)r*   qimager   r   r   	toqpixmap   s   
r{   )r   )r
   ior    r   _utilr   qt_versionssortr   	qt_modulePyQt6.QtCorer   r   PyQt6.QtGuir   r   r   PySide6.QtCorePySide6.QtGuiImportErrorRuntimeErrorqt_is_installedr   r-   r1   rL   rj   rk   rx   r{   r   r   r   r   <module>   sB   
5