o
    :ήc                     @   s   d dl ZddlmZmZ ddlmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZ ed	 daG d
d de	ZG dd de
Zdd ZdddZdd ZdddZdd ZdS )    N   )prepare_for_displaywindow_manager   )warn)QApplicationQLabelQMainWindowQWidgetQGridLayout)QImageQPixmap)QtCoreqtc                   @      e Zd Zdd Zdd ZdS )
ImageLabelc                 C   sp   t |  || _t|j|jd |jd |jd tj| _t	
| j| _| | j | tjj | dd d S )Nr   r   d   )r   __init__arrr   datashapestridesFormat_RGB888imgr   	fromImagepm	setPixmapsetAlignmentr   QtAlignTopsetMinimumSize)selfparentr    r#   D/tmp/pip-target-vg8gfxp4/lib/python/skimage/io/_plugins/qt_plugin.pyr      s   
zImageLabel.__init__c                 C   s0   |   }t| j}||| _| | j d S N)widthr   r   r   scaledToWidthr   r   )r!   evtr&   r   r#   r#   r$   resizeEvent'   s   zImageLabel.resizeEventN)__name__
__module____qualname__r   r)   r#   r#   r#   r$   r      s    r   c                   @   r   )ImageWindowc                 C   sz   t |  | d || _t | _t| j| _| | j t	| || _
| j| j
dd | jj | j|  | j  d S )Nskimager   )r	   r   setWindowTitlemgrr
   main_widgetr   layoutsetCentralWidgetr   label	addWidget	addLayout
add_windowshow)r!   r   r0   r#   r#   r$   r   /   s   

zImageWindow.__init__c                 C   s   | j |  d S r%   )r0   remove_window)r!   eventr#   r#   r$   
closeEvent=   s   zImageWindow.closeEventN)r*   r+   r,   r   r;   r#   r#   r#   r$   r-   .   s    r-   c                 C   sV  t dtdd t }|| std|  | dkrtd| }| d }| | }||  | }|	| t
|}|dkr_|| ||f}|ddd| ddf }n|| |f}|ddd| f }|d	kr| s|ddddddd
f }|S |d	kr|ddddddd
f |ddddddf< |S )z.
    Read an image using QT's QImage.load
    `qt` plugin is deprecated and will be removed in 0.20. For alternatives, refer to https://scikit-image.org/docs/stable/user_guide/visualization.html   
stacklevelzUnable to load file %sr   z$1-bit images currently not supported   N   r   r   )r   FutureWarningr   loadIOErrordepthbitsbytesPerLineheightsetsizenparrayreshaper&   hasAlphaChannel)filenameqtimgarrayptrbytes_per_pixelpixels_per_lineimg_sizer   r#   r#   r$   imreadC   s2   


 2rU   Fc                 C   sT   t dtdd tstg at| } |st| t}nddlm} || t}|	  d S )Nr<   r=   r>   r   )SkiviImageWindow)
r   rC   appr   r   r-   r   skivirV   r8   )r   fancyiwrV   r#   r#   r$   imshowj   s   
r[   c                   C   s$   t rt rt   d S td d S )Nz!No images to show.  See `imshow`.)rW   r   has_windowsexec_printr#   r#   r#   r$   	_app_show~   s   r_   c           	      C   s   t dtdd t|}t|j|jd |jd |jd tj}t| rMt	
 }t	|}|t	jj ||| }|d | |   |  n|| }|sbddlm} |d}t|d S )Nr<   r=   r>   r   r   )dedentzThe image was not saved. Allowable file formats
            for the QT imsave plugin are:
            BMP, JPG, JPEG, PNG, PPM, TIFF, XBM, XPM)r   rC   r   r   r   r   r   r   _is_fileliker   
QByteArrayQBufferopen	QIODevice	ReadWritesaveupperseekwritereadAllclosetextwrapr`   RuntimeError)	rO   r   
format_strqimg
byte_arrayqbuffersavedr`   msgr#   r#   r$   imsave   s.   



ru   c                 C   s   t t| dd S )Nrj   )callablegetattr)possible_fileliker#   r#   r$   ra      s   ra   )Fr%   )numpyrK   utilr   r   _shared.utilsr   qtpy.QtWidgetsr   r   r	   r
   r   
qtpy.QtGuir   r   qtpyr   acquirerW   r   r-   rU   r[   r_   ru   ra   r#   r#   r#   r$   <module>   s    

'
