U
    &^                     @   s~  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ g Z	dddZ
d ddZG d	d
 d
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 nzG dd deZG dd deZedre
e G dd deZedre
e G dd deZedr(e
e edkrzeejdk rRed e  eeeejd fejdd   dS )!    Nquote)Image   c                 C   sV   z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   1/tmp/pip-install-a1j0c_p1/Pillow/PIL/ImageShow.pyregister   s    

r   c                 K   s*   t D ] }|j| fd|i|r dS q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   sL   |j dks>| jdkr|j dks>t|j }|j |kr>||}| j|f|S )N)1ZRGBAPNGZLA)modeformatr   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)r   r   r   r   r   r   
get_formatK   s    zViewer.get_formatc                 K   s   t d S )N)NotImplementedErrorr   filer   r   r   r   get_commandO   s    zViewer.get_commandc                 C   s   |j f d| |i| jS )z+Save to temporary file, and return filenamer   )_dumpr   r   r   r   r   r   
save_imageR   s    zViewer.save_imagec                 K   s   | j | |f|S )zDisplay given image)	show_filer$   )r   r   r   r   r   r   r   V   s    zViewer.show_imagec                 K   s   t | j|f| dS )Display given filer   )ossystemr"   r    r   r   r   r%   Z   s    zViewer.show_file)__name__
__module____qualname____doc__r   r   r   r   r"   r$   r   r%   r   r   r   r   r   5   s   r   win32c                   @   s    e Zd ZdZddiZdd ZdS )WindowsViewerr   compress_levelr   c                 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"   i   s    zWindowsViewer.get_commandN)r)   r*   r+   r   r   r"   r   r   r   r   r.   e   s   r.   darwinc                   @   s(   e Zd ZdZddiZdd Zdd ZdS )		MacViewerr   r/   r   c                 K   s   d}d |t|t|}|S )Nzopen -a Preview.appz({} {}; sleep 20; rm -f {})&)r   r   r   r!   r   commandr   r   r   r"   x   s      zMacViewer.get_commandc              	   K   sd   t  \}}t|d}|| W 5 Q R X t|d}tjdgd|d W 5 Q R X t| dS )r&   wrz7im=$(cat); open -a 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   r1   t   s   	r1   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|S )Nr   z({} {}; rm -f {})&)get_command_exr   r   r2   r   r   r   r"      s    zUnixViewer.get_commandc              	   K   s~   t  \}}t|d}|| W 5 Q R X t|d2}| j|f|d }tjd| d gd|d W 5 Q R X t	| dS )	r&   r4   r5   r   z
im=$(cat);z $im; rm -f $imTr6   r   )
r9   r:   r'   r;   r<   r=   rF   r>   r?   r@   )r   r!   r   rA   rB   rC   r3   r   r   r   r%      s      
zUnixViewer.show_fileNrD   r   r   r   r   rE      s   rE   c                   @   s   e Zd Zdd ZdS )DisplayViewerc                 K   s   d }}||fS )Ndisplayr   r   r!   r   r3   
executabler   r   r   rF      s    zDisplayViewer.get_command_exNr)   r*   r+   rF   r   r   r   r   rG      s   rG   rH   c                   @   s   e Zd Zdd ZdS )	EogViewerc                 K   s   d }}||fS )Neogr   rI   r   r   r   rF      s    zEogViewer.get_command_exNrK   r   r   r   r   rL      s   rL   rM   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 %sr   )r   r!   r   r   r3   rJ   r   r   r   rF      s    zXVViewer.get_command_ex)NrK   r   r   r   r   rN      s   rN   rO   __main__   z-Syntax: python ImageShow.py imagefile [title])r   )N)r'   shutilr>   sysr9   shlexr   ZPILr   r	   r   r   r   platformr.   r1   rE   rG   whichrL   rN   r)   lenargvprintexitr=   r   r   r   r   <module>   s>   

.




	
