3

Z                 @   s  d dl mZ d dlmZ d dlZd dlZejjdkrBd 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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reejd!k rded" ej  eeej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j|  n|dk rRtjd|  d S )Nr   )
issubclassViewer	TypeError_viewersappendinsert)viewerorder r   //usr/lib/python3/dist-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 }||j krL|j dkrL|j dkrL|j|}| 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_formatR   s    zViewer.get_formatc             K   s   t d S )N)NotImplementedError)r   filer   r   r   r   get_commandV   s    zViewer.get_commandc             C   s   |j f d| j|i| jS )z+Save to temporary file, and return filenamer   )Z_dumpr   r   )r   r   r   r   r   
save_imageY   s    zViewer.save_imagec             K   s   | j | 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| j|f| dS )zDisplay given filer   )ossystemr!   )r   r    r   r   r   r   r#   a   s    zViewer.show_file)__name__
__module____qualname____doc__r   r   r   r   r!   r"   r   r#   r   r   r   r   r   8   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!   n   s    zWindowsViewer.get_commandN)r&   r'   r(   r   r!   r   r   r   r   r*   k   s   r*   darwinc               @   s    e Zd ZdZddi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_commandN)r&   r'   r(   r   r   r!   r   r   r   r   r,   w   s   r,   c             C   sZ   t jjd}|sd S x@|jt jD ]0}t jj|| }t jj|r"t j|t j	r"|S q"W d S )NPATH)
r$   environgetsplitpathseppathjoinisfileaccessX_OK)
executabler5   dirnamefilenamer   r   r   which   s    r=   c               @   s    e Zd ZdZddiZdd ZdS )
UnixViewerr-   r.   r   c             K   s6   | j |f|\}}d|t|t|f }tj| dS )Nz(%s %s; rm -f %s)&r   )get_command_exr   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>      s   r>   c               @   s   e Zd Zdd ZdS )DisplayViewerc             K   s   d }}||fS )Ndisplayr   )r   r    r   r/   r:   r   r   r   r?      s    zDisplayViewer.get_command_exN)r&   r'   r(   r?   r   r   r   r   r@      s   r@   rA   c               @   s   e Zd Zdd ZdS )	EogViewerc             K   s   d }}||fS )Neogr   )r   r    r   r/   r:   r   r   r   r?      s    zEogViewer.get_command_exN)r&   r'   r(   r?   r   r   r   r   rB      s   rB   rC   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/   r:   r   r   r   r?      s    zXVViewer.get_command_ex)N)r&   r'   r(   r?   r   r   r   r   rD      s   rD   rE   __main__   z-Syntax: python ImageShow.py imagefile [title])r   )N)Z
__future__r   ZPILr   r$   sysversion_infomajorZshlexr   Zpipesr
   r   r   objectr   platformr*   r,   r=   r>   r@   rB   rD   r&   lenargvprintexitopenr   r   r   r   <module>   s@   

1





	

