B
    0\]                 @   s  d dl mZ d dlmZ d dlZd dlZd dlZd dlZejj	dkrRd dl
mZ nd dlmZ g Zd#ddZd$d	d
ZG dd deZejdkrG dd deZee nejdkrG dd deZee n~dd ZG dd deZG dd deZedree G dd deZedr*ee G dd deZedrLee ed kreejd!k rved" e  eeeejd fejd!d   dS )%    )print_function)ImageN   )quote   c             C   sV   yt | tr|  } W n tk
r(   Y nX |dkr>t|  n|dk rRtd|  d S )Nr   )
issubclassViewer	TypeError_viewersappendinsert)viewerorder r   ,lib/python3.7/site-packages/PIL/ImageShow.pyregister   s    

r   c             K   s,   x&t D ]}|j| fd|i|rdS qW d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               @   sH   e Zd ZdZdd ZdZi 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   sZ   |j d d dkrd}nt|j }||j krL|j dkrL|j dkrL||}| j|f|S )N   zI;16L1ZRGBA)moder   ZgetmodebaseZ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_formatT   s    zViewer.get_formatc             K   s   t d S )N)NotImplementedError)r   filer   r   r   r   get_commandX   s    zViewer.get_commandc             C   s   |j f d| |i| jS )z+Save to temporary file, and return filenamer   )Z_dumpr   r   )r   r   r   r   r   
save_image[   s    zViewer.save_imagec             K   s   | j | |f|S )zDisplay given image)	show_filer"   )r   r   r   r   r   r   r   _   s    zViewer.show_imagec             K   s   t | j|f| dS )zDisplay given filer   )ossystemr!   )r   r    r   r   r   r   r#   c   s    zViewer.show_file)__name__
__module____qualname____doc__r   r   r   r   r!   r"   r   r#   r   r   r   r   r   :   s   r   Zwin32c               @   s   e Zd ZdZdd ZdS )WindowsViewerZ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!   p   s    zWindowsViewer.get_commandN)r&   r'   r(   r   r!   r   r   r   r   r*   m   s   r*   darwinc               @   s(   e Zd ZdZddiZdd Zdd ZdS )		MacViewerPNGcompress_levelr   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!   }   s    
zMacViewer.get_commandc          	   K   sd   t  \}}t|d}|| W dQ R X t|d}tjdgd|d W dQ R X t| dS )zDisplay given filewNrzBim=$(cat);open -a /Applications/Preview.app $im;sleep 20;rm -f $imT)shellstdinr   )	tempfilemkstempr$   fdopenwriteopen
subprocessPopenremove)r   r    r   fdpathfr   r   r   r#      s    
zMacViewer.show_fileN)r&   r'   r(   r   r   r!   r#   r   r   r   r   r,   y   s   r,   c             C   sZ   t jd}|sd S x@|t jD ]0}t j|| }t j|r"t |t j	r"|S q"W d S )NPATH)
r$   environgetsplitpathsepr=   joinisfileaccessX_OK)
executabler=   dirnamefilenamer   r   r   which   s    rK   c               @   s(   e Zd ZdZddiZdd Zdd ZdS )	
UnixViewerr-   r.   r   c             K   s(   | j |f|d }d|t|t|f S )Nr   z(%s %s; rm -f %s)&)get_command_exr   )r   r    r   r/   r   r   r   r!      s    zUnixViewer.get_commandc          	   K   s~   t  \}}t|d}|| W dQ R X t|d2}| j|f|d }tjd| d gd|d W dQ R X t	| d	S )
zDisplay given filer0   Nr1   r   z
im=$(cat);z $im;rm -f $imT)r2   r3   r   )
r4   r5   r$   r6   r7   r8   rM   r9   r:   r;   )r   r    r   r<   r=   r>   r/   r   r   r   r#      s    
zUnixViewer.show_fileN)r&   r'   r(   r   r   r!   r#   r   r   r   r   rL      s   rL   c               @   s   e Zd Zdd ZdS )DisplayViewerc             K   s   d }}||fS )Ndisplayr   )r   r    r   r/   rH   r   r   r   rM      s    zDisplayViewer.get_command_exN)r&   r'   r(   rM   r   r   r   r   rN      s   rN   rO   c               @   s   e Zd Zdd ZdS )	EogViewerc             K   s   d }}||fS )Neogr   )r   r    r   r/   rH   r   r   r   rM      s    zEogViewer.get_command_exN)r&   r'   r(   rM   r   r   r   r   rP      s   rP   rQ   c               @   s   e Zd ZdddZdS )XVViewerNc             K   s$   d }}|r|dt | 7 }||fS )Nxvz	 -name %s)r   )r   r    r   r   r/   rH   r   r   r   rM      s    zXVViewer.get_command_ex)N)r&   r'   r(   rM   r   r   r   r   rR      s   rR   rS   __main__   z-Syntax: python ImageShow.py imagefile [title])r   )N) Z
__future__r   ZPILr   r$   sysr9   r4   version_infomajorZshlexr   Zpipesr
   r   r   objectr   platformr*   r,   rK   rL   rN   rP   rR   r&   lenargvprintexitr8   r   r   r   r   <module>   sD   

1






	

