
 X                 @   s  d  d l  m Z d  d l m Z d  d l Z d  d l Z e j d k rZ d  d l m Z n d  d l	 m Z g  Z
 d d d  Z d d	 d
  Z Gd d   d e  Z e j d k r Gd d   d e  Z e e  n e j d k rGd d   d e  Z e e  n d d   Z Gd d   d e  Z Gd d   d e  Z e d  rYe e  n  Gd d   d e  Z e d  re e  n  e d k re e e j e j d  e j d d    n  d S)     )print_function)ImageN   )quote   c             C   ss   y t  |  t  r |    }  n  Wn t k
 r3 Yn X| d k rP t j |   n | d k  ro t j d |   n  d  S)Nr   )
issubclassViewer	TypeError_viewersappendinsert)viewerorder r   J/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/PIL/ImageShow.pyregister   s    r   c             K   s1   x* t  D]" } | j |  d | | r d Sq Wd S)a  
    Display a given image.

    :param image: An image object.
    :param title: Optional title.  Not all viewers can display the title.
    :param \**options: Additional viewer options.
    :returns: True if a suitable viewer was found, false otherwise.
    titler   r   )r
   show)imager   optionsr   r   r   r   r   )   s    	r   c               @   sd   e  Z d  Z d Z d d   Z d Z d d   Z d d   Z d	 d
   Z d d   Z	 d d   Z
 d S)r   zBase class for viewers.c             K   st   | j  d  d  d k r" d } n t j | j   } | | j  k rd | j  d k rd | j |  } n  |  j | |  S)N   zI;16L1)moder   Zgetmodebaseconvert
show_image)selfr   r   baser   r   r   r   =   s    	zViewer.showNc             C   s   |  j  S)z.Return format name, or None to save as PGM/PPM)format)r   r   r   r   r   
get_formatQ   s    zViewer.get_formatc             K   s
   t   d  S)N)NotImplementedError)r   filer   r   r   r   get_commandU   s    zViewer.get_commandc             C   s   | j  d |  j |   S)z+Save to temporary file, and return filenamer   )_dumpr   )r   r   r   r   r   
save_imageX   s    zViewer.save_imagec             K   s   |  j  |  j |  |  S)zDisplay given image)	show_filer$   )r   r   r   r   r   r   r   \   s    zViewer.show_imagec             K   s   t  j |  j | |   d S)zDisplay given filer   )ossystemr"   )r   r!   r   r   r   r   r%   `   s    zViewer.show_file)__name__
__module____qualname____doc__r   r   r   r"   r$   r   r%   r   r   r   r   r   8   s   r   win32c               @   s"   e  Z d  Z d Z d d   Z d S)WindowsViewerBMPc             K   s   d | | f S)NzDstart "Pillow" /WAIT "%s" && ping -n 2 127.0.0.1 >NUL && del /f "%s"r   )r   r!   r   r   r   r   r"   l   s    zWindowsViewer.get_commandN)r(   r)   r*   r   r"   r   r   r   r   r-   i   s   r-   darwinc               @   s"   e  Z d  Z d Z d d   Z d S)	MacViewerr.   c             K   s)   d } d | t  |  t  |  f } | S)Nz!open -a /Applications/Preview.appz(%s %s; sleep 20; rm -f %s)&)r   )r   r!   r   commandr   r   r   r"   x   s    zMacViewer.get_commandN)r(   r)   r*   r   r"   r   r   r   r   r0   u   s   r0   c             C   s}   t  j j d  } | s d  SxZ | j t  j  D]F } t  j j | |   } t  j j |  r/ t  j | t  j	  r/ | Sq/ Wd  S)NPATH)
r&   environgetsplitpathseppathjoinisfileaccessX_OK)
executabler7   dirnamefilenamer   r   r   which   s    'r?   c               @   s   e  Z d  Z d d   Z d S)
UnixViewerc             K   sH   |  j  | |  \ } } d | t |  t |  f } t j |  d S)Nz(%s %s; rm -f %s)&r   )get_command_exr   r&   r'   )r   r!   r   r1   r<   r   r   r   r%      s
    zUnixViewer.show_fileN)r(   r)   r*   r%   r   r   r   r   r@      s   r@   c               @   s   e  Z d  Z d d   Z d S)DisplayViewerc             K   s   d } } | | f S)Ndisplayr   )r   r!   r   r1   r<   r   r   r   rA      s    
zDisplayViewer.get_command_exN)r(   r)   r*   rA   r   r   r   r   rB      s   rB   rC   c               @   s   e  Z d  Z d d d  Z d S)XVViewerNc             K   s1   d } } | r' | d t  |  7} n  | | f S)Nxvz	 -name %s)r   )r   r!   r   r   r1   r<   r   r   r   rA      s    
zXVViewer.get_command_ex)r(   r)   r*   rA   r   r   r   r   rD      s   rD   rE   __main__   )r   r   )
__future__r   ZPILr   r&   sysversion_infoshlexr   Zpipesr
   r   r   objectr   platformr-   r0   r?   r@   rB   rD   r(   printopenargvr   r   r   r   <module>   s4   /

	