o
    svXj—,  ã                   @   s0  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 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rFeeƒ G dd„ deƒZejdkrWe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r¹e d¡r•eeƒ e d ¡ržeeƒ e d!¡r§eeƒ e d"¡r°eeƒ e d#¡r¹eeƒ G d$d%„ d%eƒZzd d&lmZ W n	 eyÒ   Y nw 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  ƒ dS 1 �sw   Y  dS dS ),é    N©Úquote)ÚImageé   )Ú	deprecatec                 C   sN   z
t | tƒr	| ƒ } W n	 ty   Y nw |dkrt | ¡ dS 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   úJ/var/www/html/myproject/venv/lib/python3.10/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   4   s
   	ÿr   c                   @   sN   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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.
        )Ú1ÚRGBAÚPNG)zI;16ÚLA)ÚmodeÚformatr   ÚgetmodebaseÚconvertÚ
show_image)Úselfr   r   Úbaser   r   r   r   H   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 ‚)zj
        Returns the command used to display the file.
        Not implemented in the base class.
        )ÚNotImplementedError©r   Úfiler   r   r   r   Úget_commandc   s   zViewer.get_commandc                 C   s   |j dd|  |¡i| j¤ŽS )z+Save to temporary file and return filename.r   Nr   )Ú_dumpr"   r   r!   r   r   r   Ú
save_imagej   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   n   s   zViewer.show_imagec                 K   sP   |du rd|v rt dddƒ | d¡}nd}t|ƒ‚t | j|fi |¤Ž¡ dS )úà
        Display given file.

        Before Pillow 9.1.0, the first argument was ``file``. This is now deprecated,
        and will be removed in Pillow 10.0.0 (2023-07-01). ``path`` should be used
        instead.
        Nr%   úThe 'file' argumenté
   ú'path'ú!Missing required argument: 'path'r   )r   Úpopr	   ÚosÚsystemr&   ©r   Úpathr   Úmsgr   r   r   r)   r   s   zViewer.show_file©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r"   r&   r(   r   r)   r   r   r   r   r   C   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©Úcompress_levelÚ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)r7   r8   r9   r:   r   r   r&   r   r   r   r   r;   ˆ   s
    
r;   Úwin32c                   @   s0   e Zd ZdZdZdddœZdd„ Zdd	d
„ZdS )Ú	MacViewerz2The default viewer on macOS using ``Preview.app``.r   r   Tr<   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_commandNc                 K   sp   |du rd|v rt dddƒ | d¡}nd}t|ƒ‚t ddd	|g¡ tjp*t d
¡}|r6t 	|dd|g¡ dS )r+   Nr%   r,   r-   r.   r/   Úopenz-azPreview.appÚpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )
r   r0   r	   Ú
subprocessÚcallÚsysÚ
executableÚshutilÚwhichÚPopen)r   r4   r   r5   rK   r   r   r   r)   §   s"   üÿzMacViewer.show_filer6   )r7   r8   r9   r:   r   r   r&   r)   r   r   r   r   rA   š   s    
rA   Údarwinc                   @   s"   e Zd ZdZdddœZdd„ ZdS )Ú
UnixViewerr   r   Tr<   c                 K   s*   | j |fi |¤Žd }d|› dt|ƒ› �S )Nr   rB   rC   )Úget_command_exr   rD   r   r   r   r&   Ì   s   zUnixViewer.get_commandN)r7   r8   r9   r   r   r&   r   r   r   r   rP   È   s    
rP   c                   @   ó"   e Zd ZdZdd„ Zddd„ZdS )Ú	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    c                 K   s   d }}||fS )Núxdg-openr   )r   r%   r   rE   rK   r   r   r   rQ   Ö   s   zXDGViewer.get_command_exNc                 K   sF   |du rd|v rt dddƒ | d¡}nd}t|ƒ‚t d|g¡ dS )	r+   Nr%   r,   r-   r.   r/   rT   r   ©r   r0   r	   rH   rN   r3   r   r   r   r)   Ú   s   zXDGViewer.show_filer6   ©r7   r8   r9   r:   rQ   r)   r   r   r   r   rS   Ñ   s    rS   c                   @   ó$   e Zd ZdZddd„Zddd„ZdS )ÚDisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K   ó&   d }}|r|dt |ƒ› �7 }||fS )NÚdisplayz -title r   ©r   r%   r   r   rE   rK   r   r   r   rQ   ó   s   zDisplayViewer.get_command_exc                 K   ól   |du rd|v rt dddƒ | d¡}nd}t|ƒ‚dg}| d¡}|r*|d	|g7 }| |¡ t |¡ d
S )ú©
        Display given file.

        Before Pillow 9.1.0, the first argument was ``file``. This is now deprecated,
        and ``path`` should be used instead.
        Nr%   r,   r-   r.   r/   rZ   r   z-titler   ©r   r0   r	   Úgetr   rH   rN   ©r   r4   r   r5   Úargsr   r   r   r   r)   ù   ó   


zDisplayViewer.show_filer6   rV   r   r   r   r   rX   í   s    
rX   c                   @   rR   )ÚGmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                 K   ó   d}d}||fS )NÚgmz
gm displayr   ©r   r%   r   rK   rE   r   r   r   rQ     ó   zGmDisplayViewer.get_command_exNc                 K   óH   |du rd|v rt dddƒ | d¡}nd}t|ƒ‚t dd|g¡ d	S )
r]   Nr%   r,   r-   r.   r/   re   rZ   r   rU   r3   r   r   r   r)     ó   zGmDisplayViewer.show_filer6   rV   r   r   r   r   rc     ó    rc   c                   @   rR   )Ú	EogViewerz'The GNOME Image Viewer ``eog`` command.c                 K   rd   )NÚeogzeog -nr   rf   r   r   r   rQ   .  rg   zEogViewer.get_command_exNc                 K   rh   )
r]   Nr%   r,   r-   r.   r/   rl   z-nr   rU   r3   r   r   r   r)   3  ri   zEogViewer.show_filer6   rV   r   r   r   r   rk   +  rj   rk   c                   @   rW   )ÚXVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K   rY   )NÚxvz -name r   r[   r   r   r   rQ   K  s   zXVViewer.get_command_exc                 K   r\   )r]   Nr%   r,   r-   r.   r/   rn   r   z-namer   r^   r`   r   r   r   r)   S  rb   zXVViewer.show_filer6   rV   r   r   r   r   rm   E  s    
rm   )r@   rO   rT   rZ   re   rl   rn   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)r7   r8   r9   r:   r   r   r   r   r   ro   x  s    ro   )rZ   Ú__main__é   z.Syntax: python3 ImageShow.py imagefile [title])r   r6   )$r1   rL   rH   rJ   Úshlexr   ÚPILr   Ú
_deprecater   r
   r   r   r   r;   ÚplatformrA   rP   rS   rX   rc   rk   rm   rM   ro   ÚIPython.displayrZ   rp   ÚImportErrorr7   ÚlenÚargvÚprintÚexitrF   Úimr   r   r   r   Ú<module>   sb   

E

*	$
&




ÿ
 $ÿû