
    g                       U 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l	m
Z
 ded	<   d
dgddggZej                  d d       eD ]S  \  ZZ	 ded<   ded<   ded<   ded<   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Zd Zd Zd Z d Z!er G d  d!e      Z"d%d"Z#d# Z$y# eef$ r Y w xY w)&    )annotationsN)BytesIO)Callable   )Image)is_pathz
str | None
qt_version6PyQt6side6PySide6c                ,    | d   t         j                  v S )Nr   )sysmodules)versions    @/var/www/openai/venv/lib/python3.12/site-packages/PIL/ImageQt.py<lambda>r   "   s    WQZ3;;%>    T)keyreversetypeQBuffer	QIODeviceQImageQPixmapz#Callable[[int, int, int, int], int]qRgba)r   r   )r   r   r   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"   :   s     Aq!z))r   c                   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 # t        $ r t        j
                  }Y w xY w)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    s       r   
fromqimager4   A   s     YFS	-#00K  
KK%%& 


	AGGFKKM
LLNFF1I::a=#  	-#,,K	-s   C C76C7c                    t        |       S N)r4   r1   s    r   fromqpixmapr8   ]   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   
align8to32rQ   a   s    
 11b9$?N #U*M39-3K00(1HAaPN#Oa'M  s5z^344A 	a. AE^#;<w?VV4  
 88Hs   A9c           	        d }d }d}t        | d      rt        | j                         d      } t        |       rt	        j
                  |       } d}t        dk(  rt        j                  nt        }| j                  dk(  r|j                  }nk| j                  dk(  r1|j                  }t        d      D cg c]  }t        |||       }}n+| j                  d	k(  rL|j                  }| j                         }t        d
t        |      d      D cg c]  }t        |||dz      }}n| j                  dk(  r0| j!                  d      } | j#                  dd      }|j$                  }n| j                  dk(  r| j#                  dd      }|j&                  }nc| j                  dk(  r| j)                  d       } |j*                  }n5|r| j-                          dt/        | j                         }t1        |      | j2                  }	|xs( t5        | j#                         |	d
   | j                        }
|r| j-                          |
|	||dS c c}w c c}w )NFtoUtf8zutf-8Tr
   r<   r=      r>   r      RGBRGBArawBGRAr?   c                    | dz  S )NrT    )rO   s    r   r   z"_toqclass_helper.<locals>.<lambda>   s    Cr   zunsupported image mode )r.   sizeformat
colortable)hasattrstrrS   r   r   r)   r	   r   FormatrH   Format_MonoFormat_Indexed8rC   r"   
getpaletterD   converttobytesFormat_RGB32Format_ARGB32pointFormat_Grayscale16r/   repr
ValueErrorr\   rQ   )r1   r.   r^   exclusive_fp	qt_formatr]   rO   palettemsgr\   __datas              r   _toqclass_helperrr   {   s   DJL r8g&r{ZZ^!+s!2I	ww#~&&	C**,1#J7Jqc!QlJ
7	C**--/8=aWq8QR8Q1c71q1u-.8Q
R	E	ZZzz%(''	F	zz%(((	F	XX'(--HHJ'RWW7o77D?Z

d1grww?F

DF*UU9 8 Ss   3IIc                       e Zd Z 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).
            r.   r\   r   r   r]   r^   N)rr   _ImageQt__datasuper__init__setColorTable)selfr1   im_data	__class__s      r   rx   zImageQt.__init__   sr     'r*G
 "&/DKG""!	 |$""7<#89 %r   )__name__
__module____qualname__rx   __classcell__)r|   s   @r   rt   rt      s    	: 	:r   rt   c                    t        |       S r6   )rt   r7   s    r   toqimager      s    2;r   c                B    t        |       }t        j                  |      S r6   )r   r   	fromImage)r1   qimages     r   	toqpixmapr      s    b\FV$$r   )   )returnrt   )%
__future__r   r   ior   typingr    r   _utilr   __annotations__qt_versionssortr   	qt_modulePyQt6.QtCorer   r   PyQt6.QtGuir   r   r   PySide6.QtCorePySide6.QtGuiImportErrorRuntimeErrorqt_is_installedr	   r"   r4   r8   rQ   rr   rt   r   r   r[   r   r   <module>r      s  $ # 
     'Ni   >  M%GY227::)#9<< OJ	# && OJ*84.Vb :& :2%w & s   ACCC