
    eq                    V   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       e	D ]8  \  ZZ	 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 n dZdZddZd Zd Zd Zd Zer G d de      Zd Zd Z y# eef$ r Y lw xY w)    )annotationsN)BytesIO   )Image)is_path6PyQt6side6PySide6c                ,    | d   t         j                  v S )Nr   )sysmodules)
qt_versions    -/usr/lib/python3/dist-packages/PIL/ImageQt.py<lambda>r       s    
1(D     T)keyreverse)QBuffer	QIODevice)QImageQPixmapqRgbaFc                $    t        | |||      dz  S )zA(Internal) Turns an RGB color into a Qt compatible color integer.l    )r   )rgbas       r   rgbr   2   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   
fromqimager1   9   s     YFS	-#00K  
KK%%& 


	AGGFKKM
LLNFF1I::a=#  	-#,,K	-s   C C76C7c                    t        |       S N)r1   r.   s    r   fromqpixmapr5   U   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   
align8to32rN   Y   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        dk(  rt        j                  nt        }| j                  dk(  r|j                  }nw| j                  dk(  r1|j                  }t        d      D cg c]  }t        |||       }}n7| 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&                  }no| j                  dk(  r+t        |d      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   r9   r:      r;   r      RGBRGBArawBGRAr<   Format_Grayscale16c                    | dz  S )NrQ    )rL   s    r   r   z"_toqclass_helper.<locals>.<lambda>   s
    C r   zunsupported image mode )r+   sizeformat
colortable)hasattrstrrP   r   r   r&   r   r   FormatrE   Format_MonoFormat_Indexed8r@   r   
getpaletterA   converttobytesFormat_RGB32Format_ARGB32pointrW   r,   repr
ValueErrorrZ   rN   )r.   r+   r\   exclusive_fp	qt_formatr[   rL   palettemsgrZ   __datas              r   _toqclass_helperro   s   s   DJL r8g&r{ZZ^!+s!2I	ww#~&&	C**,1#J7qc!Ql7
7	C**--/8=aWq8QR1c71q1u-.R
R	E	ZZzz%(''	F	zz%(((	F	wy2FG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+   rZ   r   r   r[   r\   N)ro   _ImageQt__datasuper__init__setColorTable)selfr.   im_data	__class__s      r   ru   zImageQt.__init__   sr     'r*G
 "&/DKG""!	 |$""7<#89 %r   )__name__
__module____qualname__ru   __classcell__)ry   s   @r   rq   rq      s    	: 	:r   rq   c                    t        |       S r3   )rq   r4   s    r   toqimager      s    2;r   c                B    t        |       }t        j                  |      S r3   )r   r   	fromImage)r.   qimages     r   	toqpixmapr      s    b\FV$$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   r1   r5   rN   ro   rq   r   r   rY   r   r   <module>r      s   $ # 
    	'Ni   Dd  S( J	7::)#9<< O	 OJ*84.Vb :& :2%u & s   /BB('B(