
 X                 @   s  d  d l  m Z d  d l m Z d  d l m Z d Z d Z y< d  d l m	 Z	 m
 Z
 m Z d  d l m Z m Z d Z Wn e e f k
 r@y< d  d l m	 Z	 m
 Z
 m Z d  d l m Z m Z d	 Z Wno e e f k
 r;y< d  d l m	 Z	 m
 Z
 m Z d  d l m Z m Z d
 Z Wn e k
 r6d Z Yn XYn XYn Xd d d  Z d d   Z d d   Z d d   Z d d   Z e rGd d   d e	  Z n  d d   Z d d   Z d S)    )Image)isPath)BytesIOTN)QImageqRgbaQPixmap)QBuffer	QIODevice54ZsideF   c             C   s   t  |  | | |  d @S)zA(Internal) Turns an RGB color into a Qt compatible color integer.l    )r   )rgba r   H/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/PIL/ImageQt.pyrgb+   s    r   c             C   s   t    } | j t j  |  j   r8 |  j | d  n |  j | d  t   } y | j | j    Wn+ t	 k
 r | j t
 | j     Yn X| j   | j d  t j |  S)zs
    :param im: A PIL Image object, or a file name
    (given either as Python string or a PyQt string object)
    ZpngZppmr   )r   openr	   Z	ReadWriteZhasAlphaChannelsaver   writedata	TypeErrorstrcloseseekr   )imbufferr   r   r   r   
fromqimage2   s    		
r   c             C   s
   t  |   S)N)r   )r   r   r   r   fromqpixmapL   s    r   c             C   s   i d d 6d d 6d d 6| } | | } t  | d  \ } } | | rM d n d } | d } | si |  Sg  }	 xI t t |   |  D]1 }
 |	 j |  |
 | |
 d |  d |  q Wd	 j |	  S)
zE
    converts each scanline of data from 8 bit to 32 bit aligned
       1   LPr      s        )divmodrangelenappendjoin)byteswidthmodeZbits_per_pixelZbits_per_lineZfull_bytes_per_lineZremaining_bits_per_lineZbytes_per_lineZextra_paddingZnew_datair   r   r   
align8to32Z   s    
/r0   c             C   sV  d  } d  } t  |  d  rW t t k r? t |  j   d  }  qW t |  j   d  }  n  t |   ru t j |   }  n  |  j d k r t	 j
 } n~|  j d k r t	 j } g  } x]t d  D] } | j t | | |   q Wn-|  j d k rRt	 j } g  } |  j   } x t d t |  d  D]' } | j t | | | d     q$Wn |  j d	 k r|  j d
 d  } t	 j } n |  j d k ry |  j d
 d  } WnH t k
 r|  j   \ } } } }	 t j d | | | |	 f  }  Yn Xt	 j } n t d |  j   | p3t |  j   |  j d |  j  }
 i |
 d 6|  d 6| d 6| d 6S)NtoUtf8zutf-8r!   r#      r$   r      RGBrawZBGRXRGBAZBGRAzunsupported image mode %rr   r   format
colortable)hasattrr   r,   unicoder1   r   r   r   r.   r   ZFormat_MonoZFormat_Indexed8r(   r*   r   Z
getpaletter)   tobytesZFormat_RGB32SystemErrorsplitmergeZFormat_ARGB32
ValueErrorr0   size)r   r   r8   r7   r/   Zpaletter   r   r   r   Z__datar   r   r   _toqclass_helperw   sF    	 	(#(rA   c               @   s   e  Z d  Z d d   Z d S)ImageQtc             C   se   t  |  } t j |  | d | d j d | d j d | d  | d ra |  j | d  n  d S)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    r7   r8   N)rA   r   __init__r@   ZsetColorTable)selfr   Zim_datar   r   r   rC      s    	
zImageQt.__init__N)__name__
__module____qualname__rC   r   r   r   r   rB      s   rB   c             C   s
   t  |   S)N)rB   )r   r   r   r   toqimage   s    rH   c             C   s:   |  j  d k r! |  j d  }  n  t |   } t j |  S)Nr4   r6   )r.   convertrH   r   Z	fromImage)r   Zqimager   r   r   	toqpixmap   s    rJ   )ZPILr   Z	PIL._utilr   ior   Zqt_is_installedZ
qt_versionZPyQt5.QtGuir   r   r   ZPyQt5.QtCorer   r	   ImportErrorRuntimeErrorZPyQt4.QtGuiZPyQt4.QtCoreZPySide.QtGuiZPySide.QtCorer   r   r   r0   rA   rB   rH   rJ   r   r   r   r   <module>   s:   


/