
    Bwg                    8   U d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 ddl
mZ ddlmZ erd dlZd dlZddl
mZ d	ed
<   e	ej$                  j&                  ej$                  j&                  f   Ze	ej$                  j(                  ej$                  j(                  f   Ze	ej*                  j,                  ej*                  j,                  f   Ze	ej*                  j.                  ej*                  j.                  f   Zded<   ddgddggZej3                  d d       eD ]?  \  ZZ	 ded<   edk(  rd 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 dZ$eZ% n dZ$dZ%d"d#dZ&d$dZ'd%dZ(d&dZ)d'dZ*e$r G d de      Z+d(d Z,d)d!Z-y# e"e#f$ r Y zw xY w)*    )annotationsN)BytesIO)TYPE_CHECKINGAnyCallableUnion   )Image)is_path)	ImageFiletypeQBufferz
str | None
qt_version6PyQt6side6PySide6c                ,    | d   t         j                  v S )Nr	   )sysmodules)versions    B/var/www/horilla/myenv/lib/python3.12/site-packages/PIL/ImageQt.py<lambda>r   .   s    WQZ3;;%>     T)keyreversez#Callable[[int, int, int, int], int]qRgba)r   	QIODevice)QImageQPixmapr   Fc                $    t        | |||      dz  S )zA(Internal) Turns an RGB color into a Qt compatible color integer.l    )r   )rgbas       r   rgbr&   B   s     Aq!z))r   c                   t               }t        dk(  r	 t        t        d      }nt        }|j                  t        |d             | j                         r| j                  |d       n| j                  |d       t               }|j                  |j                                |j                          |j                  d       t        j
                  |      S # t        $ r t        t        d      }Y w xY w)z1
    :param im: QImage or PIL ImageQt object
    r   OpenModeFlagOpenMode	ReadWritepngppmr   )r   r   getattrr   AttributeErroropenhasAlphaChannelsaver   writedatacloseseekr
   )imbufferqt_openmoder$   s       r   
fromqimager9   I   s     YFS	9!)^<K  
KK[12 


	AGGFKKM
LLNFF1I::a=#  	9!)Z8K	9s   C C76C7c                    t        |       S N)r9   r6   s    r   fromqpixmapr=   f   s    b>r   c                    ddddd|   }||z  }t        |d      \  }}||rdndz   }| dz  }|s| S t        t        |       |z        D 	cg c]  }	| |	|z  |	dz   |z   d|z  z    }
}	dj                  |
      S c c}	w )	zE
    converts each scanline of data from 8 bit to 32 bit aligned
    r	         )1LPI;16r          r   )divmodrangelenjoin)byteswidthmodebits_per_pixelbits_per_linefull_bytes_per_lineremaining_bits_per_linebytes_per_lineextra_paddinginew_datas              r   
align8to32rV   j   s    
 11b9$?N #U*M39-3K00(1HAaPN#Oa'M  s5z^34 	a. AE^#;<w?VVH 
 88Hs   A9c           	        d }d }d}t        | d      rt        | j                         d      } t        |       rt	        j
                  |       } d}t        | t        j                        sJ t        dk(  rt        t        d      nt        }| j                  dk(  rt        |d      }no| j                  d	k(  r1t        |d
      }t        d      D cg c]  }t        |||       }}n/| j                  dk(  rPt        |d
      }| j                         }|J t        dt        |      d      D cg c]  }t        |||dz      }}n| j                  dk(  r0| j                  d      } | j!                  dd      }t        |d      }n| j                  dk(  r| j!                  dd      }t        |d      }nc| j                  dk(  r| j#                  d       } t        |d      }n5|r| j%                          dt'        | j                         }t)        |      | j*                  }	|xs( t-        | j!                         |	d   | j                        }
|r| j%                          |
|	||dS c c}w c c}w )NFtoUtf8zutf-8Tr   FormatrA   Format_MonorB   Format_Indexed8   rC   r      RGBRGBArawBGRAFormat_RGB32Format_ARGB32rD   c                    | dz  S )Nr\    )rT   s    r   r   z"_toqclass_helper.<locals>.<lambda>   s
    C r   Format_Grayscale16zunsupported image mode )r3   sizeformat
colortable)hasattrstrrX   r   r
   r/   
isinstancer   r-   r   rM   rH   r&   
getpaletterI   converttobytespointr4   repr
ValueErrorrg   rV   )r6   r3   ri   exclusive_fp	qt_formatrh   rT   palettemsgrg   __datas              r   _toqclass_helperrx      s   DJL r8g&r{ZZ^b%++&&&-73->)FI	ww#~M2	C$56,1#J7qc!Ql7
7	C$56--/"""8=aWq8QR1c71q1u-.R
R	E	ZZzz%(N3	F	zz%(O4	F	XX'($89HHJ'RWW7o77D?Z

d1grww?F

DF*UU; 8
 Ss   I'.I,c                        e Zd Zd fdZ xZS )ImageQtc                    t        |      }|d   | _        t        |   | j                  |d   d   |d   d   |d          |d   r| j	                  |d          yy)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).
            r3   rg   r   r	   rh   ri   N)rx   _ImageQt__datasuper__init__setColorTable)selfr6   im_data	__class__s      r   r~   zImageQt.__init__   sr     'r*G
 "&/DKG""!	 |$""7<#89 %r   )r6   Image.Image | str | QByteArrayreturnNone)__name__
__module____qualname__r~   __classcell__)r   s   @r   rz   rz      s    	: 	:r   rz   c                    t        |       S r;   )rz   r<   s    r   toqimager      s    2;r   c                z    t        |       } t        t        d      |      }t        dk(  r|j	                          |S )N	fromImager   )r   r-   r    r   detach)r6   qimagepixmaps      r   	toqpixmapr      s4    b\F*WWk*62FSMr   )   )
r"   intr#   r   r$   r   r%   r   r   r   )r6   zQImage | QPixmapr   ImageFile.ImageFile)r6   r    r   r   )rK   rK   rL   r   rM   rk   r   rK   )r6   r   r   zdict[str, Any])r6   r   r   rz   )r6   r   r   r    ).
__future__r   r   ior   typingr   r   r   r    r
   _utilr   r   r   r   __annotations__QtCore
QByteArrayr   QtGuir   r    qt_versionssortr   	qt_modulePyQt6.QtCorer   PyQt6.QtGuir   PySide6.QtCorePySide6.QtGuiImportErrorRuntimeErrorqt_is_installedr   r&   r9   r=   rV   rx   rz   r   r   re   r   r   <module>r      s  $ # 
  6 6  Mu||..0I0IIJJell,,gnn.F.FFGI5;;%%w}}';';;<FEKK'')>)>>?G 'Ni   >  M% GY	227::)#9<< OJ	 OJ*:40Vf :& :2} & s   %4FFF