ó
 ‰\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 j d	 ƒ d a d
 e	 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d „  Z e d „ Z d „  Z d d „ Z d „  Z d S(   iÿÿÿÿNi   (   t   prepare_for_displayt   window_manageri   (   t   warn(   t   QApplicationt   QLabelt   QMainWindowt   QWidgett   QGridLayout(   t   QImaget   QPixmap(   t   QtCoret   qtt
   ImageLabelc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s˜   t  j |  ƒ | |  _ t | j | j d | j d | j d t j ƒ |  _ t	 j
 |  j ƒ |  _ |  j |  j ƒ |  j t j j ƒ |  j d d ƒ d  S(   Ni   i    id   (   R   t   __init__t   arrR   t   datat   shapet   stridest   Format_RGB888t   imgR	   t	   fromImaget   pmt	   setPixmapt   setAlignmentR
   t   Qtt   AlignTopt   setMinimumSize(   t   selft   parentR   (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyR      s    	c         C   sD   |  j  ƒ  } t j |  j ƒ } | j | ƒ |  _ |  j |  j ƒ d  S(   N(   t   widthR	   R   R   t   scaledToWidthR   R   (   R   t   evtR   R   (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt   resizeEvent'   s    (   t   __name__t
   __module__R   R    (    (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyR      s   	t   ImageWindowc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s§   t  j |  ƒ |  j d ƒ | |  _ t ƒ  |  _ t |  j ƒ |  _ |  j |  j ƒ t	 |  | ƒ |  _
 |  j j |  j
 d d ƒ |  j j |  j j |  ƒ |  j j ƒ  d  S(   Nt   skimagei    (   R   R   t   setWindowTitlet   mgrR   t   main_widgetR   t   layoutt   setCentralWidgetR   t   labelt	   addWidgett	   addLayoutt
   add_windowt   show(   R   R   R&   (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyR   /   s    	
c         C   s   |  j  j |  ƒ d  S(   N(   R&   t   remove_window(   R   t   event(    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt
   closeEvent=   s    (   R!   R"   R   R1   (    (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyR#   .   s   	c         C   sÛ  t  ƒ  } | j |  ƒ s+ t d |  ƒ ‚ n  | j ƒ  d k rL t d ƒ ‚ n  | j ƒ  } | j ƒ  d } | j ƒ  | } | | j ƒ  | } | j | ƒ t j	 | ƒ } | d k r | j
 | j ƒ  | | f ƒ } | d d … d | j ƒ  … d d … f } n= | j
 | j ƒ  | f ƒ } | d d … d | j ƒ  … f } | d k r| j ƒ  r| d d … d d … d d d … f } nV | d k r×| d d … d d … d d d … f | d d … d d … d	 d
 … f <n  | S(   s.   
    Read an image using QT's QImage.load
    s   Unable to load file %si   s$   1-bit images currently not supportedi   Ni   i   iÿÿÿÿi    i   (   R   t   loadt   IOErrort   deptht   bitst   bytesPerLinet   heightt   setsizet   npt   arrayt   reshapeR   t   hasAlphaChannel(   t   filenamet   qtimgt   arrayptrt   bytes_per_pixelt   pixels_per_linet   img_sizeR   (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt   imreadC   s*    	."+Jc         C   sf   t  s t g  ƒ a  n  t |  ƒ }  | s9 t |  t ƒ } n d d l m } | |  t ƒ } | j ƒ  d  S(   Ni   (   t   SkiviImageWindow(   t   appR   R    R#   R   t   skiviRD   R.   (   R   t   fancyt   iwRD   (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt   imshowf   s    c           C   s(   t  r t j ƒ  r t  j ƒ  n d GHd  S(   Ns!   No images to show.  See `imshow`.(   RE   R   t   has_windowst   exec_(    (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt	   _app_showv   s    c   	      C   s  t  | ƒ } t | j | j d | j d | j d t j ƒ } t |  ƒ rÄ t j ƒ  } t j	 | ƒ } | j
 t j j ƒ | j | | j ƒ  ƒ } | j d ƒ |  j | j ƒ  j ƒ  ƒ | j ƒ  n | j |  ƒ } | sd d l m } | d ƒ } t | ƒ ‚ n  d  S(   Ni   i    iÿÿÿÿ(   t   dedentsŽ   The image was not saved. Allowable file formats
            for the QT imsave plugin are:
            BMP, JPG, JPEG, PNG, PPM, TIFF, XBM, XPM(   R    R   R   R   R   R   t   _is_filelikeR
   t
   QByteArrayt   QBuffert   opent	   QIODevicet	   ReadWritet   savet   uppert   seekt   writet   readAllt   closet   textwrapRM   t   RuntimeError(	   R=   R   t
   format_strt   qimgt
   byte_arrayt   qbuffert   savedRM   t   msg(    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt   imsave~   s"    	c         C   s   t  t |  d d  ƒ ƒ S(   NRW   (   t   callablet   getattrt   None(   t   possible_filelike(    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyRN   –   s    (   t   numpyR9   t   utilR    R   t   _shared.utilsR   t   qtpy.QtWidgetsR   R   R   R   R   t
   qtpy.QtGuiR   R	   t   qtpyR
   t   acquireRe   RE   R   R#   RC   t   FalseRI   RL   Rb   RN   (    (    (    s<   lib/python2.7/site-packages/skimage/io/_plugins/qt_plugin.pyt   <module>   s   (	#	