a
    ¦¾det   ã                   @   s.  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r€e	eƒ G dd„ deƒZejdkr¢e	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�rre d¡�r"e	eƒ e d¡�r6e	eƒ e d ¡�rJe	eƒ e d!¡�r^e	eƒ e d"¡�rre	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�r*eejƒd'k �rÚe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é   )ÚImagec                 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::

        from PIL import ImageShow
        ImageShow.register(MyViewer())  # MyViewer will be used as a last resort
        ImageShow.register(MySecondViewer(), 0)  # MySecondViewer will be prioritised
        ImageShow.register(ImageShow.XVViewer(), 0)  # XVViewer will be prioritised

    :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   úF/var/www/sistema_ama/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.
    ÚtitleTF)r	   Úshow)Úimager   Úoptionsr   r   r   r   r   2   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   F   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_format]   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_commanda   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_imageh   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   l   s    zViewer.show_imagec                 K   s   t  | j|fi |¤Ž¡ dS )ú%
        Display given file.
        r   )ÚosÚsystemr"   ©r   Úpathr   r   r   r   r%   p   s    zViewer.show_file)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r"   r$   r   r%   r   r   r   r   r   A   s   r   c                   @   s&   e Zd ZdZdZdddœZdd„ ZdS )	ÚWindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r   r   T©Zcompress_levelZsave_allc                 K   s   d|› d|› d�S )Nzstart "Pillow" /WAIT "z)" && ping -n 4 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   r0   {   s   
r0   Úwin32c                   @   s.   e Zd ZdZdZdddœZdd„ Zdd	„ Zd
S )Ú	MacViewerz2The default viewer on macOS using ``Preview.app``.r   r   Tr1   c                 K   s(   d}d|› dt |ƒ› dt |ƒ› d�}|S )Nzopen -a Preview.appú(ú z; sleep 20; rm -f z)&r   ©r   r!   r   Úcommandr   r   r   r"   “   s     zMacViewer.get_commandc                 K   s<   t  ddd|g¡ tjp t d¡}|r8t  |dd|g¡ dS )r'   Úopenz-azPreview.appÚpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )Ú
subprocessÚcallÚsysÚ
executableÚshutilÚwhichÚPopen)r   r+   r   r>   r   r   r   r%   š   s    üÿzMacViewer.show_fileN)r,   r-   r.   r/   r   r   r"   r%   r   r   r   r   r4   �   s
   
r4   Údarwinc                   @   s"   e Zd ZdZdddœZdd„ ZdS )Ú
UnixViewerr   r   Tr1   c                 K   s*   | j |fi |¤Žd }d|› dt|ƒ› �S )Nr   r5   r6   )Úget_command_exr   r7   r   r   r   r"   ´   s    zUnixViewer.get_commandN)r,   r-   r.   r   r   r"   r   r   r   r   rC   °   s   
rC   c                   @   s    e Zd ZdZd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   r8   r>   r   r   r   rD   ¾   s    zXDGViewer.get_command_exc                 K   s   t  d|g¡ dS )r'   rF   r   ©r;   rA   r*   r   r   r   r%   Â   s    zXDGViewer.show_fileN©r,   r-   r.   r/   rD   r%   r   r   r   r   rE   ¹   s   rE   c                   @   s"   e Zd ZdZddd„Z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Údisplayz -title r   ©r   r!   r   r   r8   r>   r   r   r   rD   Ð   s    zDisplayViewer.get_command_exc                 K   s8   dg}|  d¡}|r |d|g7 }| |¡ t |¡ dS )r'   rJ   r   z-titler   ©Úgetr
   r;   rA   ©r   r+   r   Úargsr   r   r   r   r%   Ö   s    


zDisplayViewer.show_file)NrH   r   r   r   r   rI   Ê   s   
rI   c                   @   s    e Zd ZdZd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   r>   r8   r   r   r   rD   ç   s    zGmDisplayViewer.get_command_exc                 K   s   t  dd|g¡ dS )r'   rQ   rJ   r   rG   r*   r   r   r   r%   ì   s    zGmDisplayViewer.show_fileNrH   r   r   r   r   rP   ä   s   rP   c                   @   s    e Zd ZdZd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   rR   r   r   r   rD   ÷   s    zEogViewer.get_command_exc                 K   s   t  dd|g¡ dS )r'   rT   z-nr   rG   r*   r   r   r   r%   ü   s    zEogViewer.show_fileNrH   r   r   r   r   rS   ô   s   rS   c                   @   s"   e Zd ZdZddd„Z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Úxvz -name r   rK   r   r   r   rD   
  s    zXVViewer.get_command_exc                 K   s8   dg}|  d¡}|r |d|g7 }| |¡ t |¡ dS )r'   rV   r   z-namer   rL   rN   r   r   r   r%     s    


zXVViewer.show_file)NrH   r   r   r   r   rU     s   
rU   )r3   rB   rF   rJ   rQ   rT   rV   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   0  s    zIPythonViewer.show_imageN)r,   r-   r.   r/   r   r   r   r   r   rW   -  s   rW   )rJ   Ú__main__é   z.Syntax: python3 ImageShow.py imagefile [title])r   )N)"r(   r?   r;   r=   Úshlexr   Ú r   r	   r   r   r   r0   Úplatformr4   rC   rE   rI   rP   rS   rU   r@   rW   ZIPython.displayrJ   rX   ÚImportErrorr,   ÚlenÚargvÚprintÚexitr9   Zimr   r   r   r   Ú<module>   sX   

:

	
