o
    eq                  
   @  s>  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 ]B\ZZz/edkrKd dlmZmZ d dlmZmZmZ ned
krad dlmZmZ d dlmZmZmZ W n eefym   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 )$    )annotationsN)BytesIO   )Image)is_path6PyQt6side6PySide6c                 C  s   | d t jv S )Nr   )sysmodules)
qt_version r   >/var/www/html/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   rgb2   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   
fromqimage9   s"   



r.   c                 C     t | S N)r.   r+   r   r   r   fromqpixmapU      r2   c                   sv   ddddd| }|| }t |d\}}||rdnd  d s% 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bytesbytes_per_lineextra_paddingr   r   
<listcomp>k   s    zalign8to32.<locals>.<listcomp>    )divmodrangelenjoin)r@   widthmodebits_per_pixelbits_per_linefull_bytes_per_lineremaining_bits_per_linenew_datar   r?   r   
align8to32Y   s   

rP   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
}nx| j	dkrA|j}dd	 td
D }nf| j	dkr]|j}|    fdd	tdt dD }nJ| j	dkrq| 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   r6   r7   c                 S  s   g | ]}t |||qS r   r   r<   r   r   r   rC      s    z$_toqclass_helper.<locals>.<listcomp>   r8   c                   s    g | ]}t  ||d    qS )   rR   r<   paletter   r   rC      s     r   rT   RGBRGBArawBGRAr9   Format_Grayscale16c                 S  s   | d S )NrS   r   )r>   r   r   r   r      s    z"_toqclass_helper.<locals>.<lambda>zunsupported image mode )r(   sizeformat
colortable)hasattrstrrQ   r   r   r#   r   r   FormatrJ   Format_MonoFormat_Indexed8rF   
getpaletterG   converttobytesFormat_RGB32Format_ARGB32pointr[   r)   repr
ValueErrorr\   rP   )	r+   r(   r^   exclusive_fp	qt_formatr]   msgr\   __datar   rU   r   _toqclass_helpers   sJ   




 


rp   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(   r\   r   r   r]   r^   N)rp   _ImageQt__datasuper__init__setColorTable)selfr+   im_data	__class__r   r   rt      s   


zImageQt.__init__)__name__
__module____qualname__rt   __classcell__r   r   rx   r   rq      s    rq   c                 C  r/   r0   )rq   r1   r   r   r   toqimage   r3   r~   c                 C  s   t | }t|S r0   )r~   r   	fromImage)r+   qimager   r   r   	toqpixmap   s   
r   )r   )!
__future__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.   r2   rP   rp   rq   r~   r   r   r   r   r   <module>   sD   
1