a
    ֶap                     @   s6  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G dd deZejdkre
e G dd deZejdkre
e G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZejdvrzedr*e
e edr>e
e ed rRe
e ed!rfe
e ed"rze
e G d#d$ d$eZzd d%lmZ W n ey   Y n
0 e
e ed&kr2eejd'k red( e   e!ejd .Z"eee"gejd'd R   W d   n1 s(0    Y  dS )+    Nquote)Image   c                 C   sL   zt | tr|  } W n ty&   Y n0 |dkr<t|  ntd|  dS )a  
    The :py:func:`register` function is used to register additional viewers.

    :param viewer: The viewer to be registered.
    :param order:
        Zero or a negative integer to prepend this viewer to the list,
        a positive integer to append it.
    r   N)
issubclassViewer	TypeError_viewersappendinsert)viewerorder r   ]/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/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   sP   |j dv s>| jdkr|j dv s>t|j }|j |kr>||}| j|fi |S )z
        The main function for displaying an image.
        Converts the given image to the target format and displays it.
        )1ZRGBAPNG)zI;16ZLA)modeformatr   Zgetmodebaseconvert
show_image)selfr   r   baser   r   r   r   B   s    

zViewer.showNc                 C   s   | j S )z3Return format name, or ``None`` to save as PGM/PPM.)r   r   r   r   r   r   
get_formatY   s    zViewer.get_formatc                 K   s   t dS )zj
        Returns the command used to display the file.
        Not implemented in the base class.
        N)NotImplementedErrorr   filer   r   r   r   get_command]   s    zViewer.get_commandc                 C   s   |j f d| |i| jS )z+Save to temporary file and return filename.r   )_dumpr   r   r   r   r   r   
save_imaged   s    zViewer.save_imagec                 K   s   | j | |fi |S )zDisplay the given image.)	show_filer$   r   r   r   r   r   r   r   h   s    zViewer.show_imagec                 K   s   t | j|fi | dS )zDisplay the given file.r   )ossystemr"   r    r   r   r   r%   l   s    zViewer.show_file)__name__
__module____qualname____doc__r   r   r   r   r"   r$   r   r%   r   r   r   r   r   =   s   r   c                   @   s$   e Zd ZdZdZddiZdd ZdS )WindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r   compress_levelr   c                 K   s   d| d| dS )Nzstart "Pillow" /WAIT "z)" && ping -n 2 127.0.0.1 >NUL && del /f ""r   r    r   r   r   r"   {   s    zWindowsViewer.get_commandN)r)   r*   r+   r,   r   r   r"   r   r   r   r   r-   u   s   r-   win32c                   @   s,   e Zd ZdZdZddiZdd Zdd Zd	S )
	MacViewerz2The default viewer on macOS using ``Preview.app``.r   r.   r   c                 K   s(   d}d| dt | dt | d}|S )Nzopen -a Preview.app( z; sleep 20; rm -f )&r   r   r!   r   commandr   r   r   r"      s     zMacViewer.get_commandc                 K   s   t  \}}t|d}|| W d   n1 s80    Y  t|"}tjdgd|d W d   n1 sr0    Y  t| dS )Display given filewNz7im=$(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   r   r1      s
   r1   darwinc                   @   s(   e Zd ZdZddiZdd Zdd ZdS )	
UnixViewerr   r.   r   c                 K   s6   | j |fi |d }d| dt| dt| dS )Nr   r2   r3   z; rm -f r4   )get_command_exr   r5   r   r   r   r"      s    zUnixViewer.get_commandc                 K   s   t  \}}t|d}|| W d   n1 s80    Y  t|@}| j|fi |d }tjd| d gd|d W d   n1 s0    Y  t	| dS )	r7   r8   Nr   z
im=$(cat);z $im; rm -f $imTr9   r   )
r<   r=   r'   r>   r?   r@   rI   rA   rB   rC   )r   r!   r   rD   rE   rF   r6   r   r   r   r%      s    (
$
zUnixViewer.show_fileN)r)   r*   r+   r   r   r"   r%   r   r   r   r   rH      s   rH   c                   @   s   e Zd ZdZdd ZdS )	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    c                 K   s   d }}||fS )Nxdg-openr   )r   r!   r   r6   
executabler   r   r   rI      s    zXDGViewer.get_command_exNr)   r*   r+   r,   rI   r   r   r   r   rJ      s   rJ   c                   @   s   e Zd ZdZdddZdS )DisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K   s&   d }}|r|dt | 7 }||fS )Ndisplay -name r   r   r!   r   r   r6   rL   r   r   r   rI      s    zDisplayViewer.get_command_ex)NrM   r   r   r   r   rN      s   rN   c                   @   s   e Zd ZdZdd ZdS )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                 K   s   d}d}||fS )Ngmz
gm displayr   r   r!   r   rL   r6   r   r   r   rI      s    zGmDisplayViewer.get_command_exNrM   r   r   r   r   rR      s   rR   c                   @   s   e Zd ZdZdd ZdS )	EogViewerz'The GNOME Image Viewer ``eog`` command.c                 K   s   d}d}||fS )Neogzeog -nr   rT   r   r   r   rI      s    zEogViewer.get_command_exNrM   r   r   r   r   rU      s   rU   c                   @   s   e Zd ZdZdddZdS )XVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K   s&   d }}|r|dt | 7 }||fS )NxvrP   r   rQ   r   r   r   rI      s    zXVViewer.get_command_ex)NrM   r   r   r   r   rW      s   rW   )r0   rG   rK   rO   rS   rV   rX   c                   @   s   e Zd ZdZdd ZdS )IPythonViewerz!The viewer for IPython frontends.c                 K   s   t | dS )Nr   )ipython_displayr&   r   r   r   r     s    zIPythonViewer.show_imageN)r)   r*   r+   r,   r   r   r   r   r   rY     s   rY   )rO   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   )N)#r'   shutilrA   sysr<   shlexr   ZPILr   r	   r   r   r   r-   platformr1   rH   rJ   rN   rR   rU   rW   whichrY   ZIPython.displayrO   rZ   ImportErrorr)   lenargvprintexitr@   Zimr   r   r   r   <module>   sZ   

8


		
