o
    üÞhz'  ã                   @  sL  d dl mZ 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
 ddlmZ g Zd8d9dd„Zd:d;dd„ZG dd„ dƒZG dd„ deƒZejdkrReeƒ G dd„ deƒZejdkrceeƒ G d d!„ d!ej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 d0¡r¾eeƒ e d1¡rÇeeƒ G d2d3„ d3eƒZzd d4lmZ W n	 e yà   Y nw eeƒ e!d5k�r$e"ej#ƒd6k rùe$d7ƒ e %¡  e &ej#d ¡�Z'e$ee'gej#d6d… ¢R Ž ƒ W d  ƒ dS 1 �sw   Y  dS dS )<é    )ÚannotationsN©Úquote)ÚAnyé   )ÚImageÚviewerútype[Viewer] | ViewerÚorderÚintÚreturnÚNonec                 C  s@   t | tƒrt| tƒr| ƒ } |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)Ú
isinstanceÚtypeÚ
issubclassÚViewerÚ_viewersÚappendÚinsert)r   r
   © r   úM/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/ImageShow.pyÚregister   s
   r   ÚimageúImage.ImageÚtitleú
str | NoneÚoptionsr   Úboolc                 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.
    r   TF)r   Úshow)r   r   r   r   r   r   r   r   3   s
   	ÿr   c                   @  sj   e Zd ZU dZddd	„Zd
Zded< 	 i Zded< 	 ddd„Zddd„Z	ddd„Z
ddd„Zddd„Zd
S ) r   zBase class for viewers.r   r   r   r   r   r   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   G   s   


zViewer.showNr   r$   zdict[str, Any]c                 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_formatÚfileÚstrc                 K  s   d}t |ƒ‚)zj
        Returns the command used to display the file.
        Not implemented in the base class.
        zunavailable in base viewer)ÚNotImplementedError)r(   r,   r   Úmsgr   r   r   Úget_commandb   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_filer2   ©r(   r   r   r   r   r   r'   n   s   zViewer.show_imageÚpathc                 K  s,   t j |¡st‚t  | j|fi |¤Ž¡ dS )ú%
        Display given file.
        r   )Úosr5   ÚexistsÚFileNotFoundErrorÚsystemr0   ©r(   r5   r   r   r   r   r3   r   s   zViewer.show_file©r   r   r   r   r   r   )r   r   r   r   ©r,   r-   r   r   r   r-   )r   r   r   r-   ©r5   r-   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   Ú__annotations__r   r+   r0   r2   r'   r3   r   r   r   r   r   B   s   
 




r   c                   @  ó2   e Zd ZdZdZdddœZddd„Zddd„ZdS )ÚWindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r!   r   T©Úcompress_levelÚsave_allr,   r-   r   r   r   c                 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   r   r0   …   s   þÿzWindowsViewer.get_commandr5   r   c                 K  s8   t j |¡st‚tj| j|fi |¤Ždttdƒd� dS )r6   TÚCREATE_NO_WINDOW)ÚshellÚcreationflagsr   )r7   r5   r8   r9   Ú
subprocessÚPopenr0   Úgetattrr;   r   r   r   r3   Œ   s   ýzWindowsViewer.show_fileNr=   r>   ©r?   r@   rA   rB   r$   r   r0   r3   r   r   r   r   rE      ó    

rE   Úwin32c                   @  rD   )Ú	MacViewerz2The default viewer on macOS using ``Preview.app``.r!   r   TrF   r,   r-   r   r   r   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   r0   ¤   s    zMacViewer.get_commandr5   r   c                 K  sh   t j |¡st‚t ddd|g¡ ttddƒottdƒ}| r"tj	p&t
 d¡}|r2t |dd	|g¡ d
S )r6   Úopenz-azPreview.appÚfrozenFÚ_MEIPASSÚpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )r7   r5   r8   r9   rN   ÚcallrP   ÚsysÚhasattrÚ
executableÚshutilÚwhichrO   )r(   r5   r   Úpyinstallerr`   r   r   r   r3   «   s   üÿzMacViewer.show_fileNr=   r>   rQ   r   r   r   r   rT   ž   rR   rT   Údarwinc                   @  s4   e Zd ZdZdddœZejddd„ƒZddd„ZdS )Ú
UnixViewerr!   r   TrF   r,   r-   r   r   r   útuple[str, str]c                 K  s   d S ©Nr   rJ   r   r   r   Úget_command_exÉ   s   zUnixViewer.get_command_exc                 K  s(   | j |fi |¤Žd }|› dt|ƒ› �S )Nr   rV   )rh   r   rW   r   r   r   r0   Í   s   zUnixViewer.get_commandN©r,   r-   r   r   r   rf   r=   )	r?   r@   rA   r$   r   ÚabcÚabstractmethodrh   r0   r   r   r   r   re   Å   s    
re   c                   @  ó$   e Zd ZdZddd	„Zddd„ZdS )Ú	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    r,   r-   r   r   r   rf   c                 K  s   d }}||fS )Núxdg-openr   )r(   r,   r   rX   r`   r   r   r   rh   ×   s   zXDGViewer.get_command_exr5   r   c                 K  s"   t j |¡st‚t d|g¡ dS )r6   rn   r   ©r7   r5   r8   r9   rN   rO   r;   r   r   r   r3   Û   s   zXDGViewer.show_fileNri   r>   ©r?   r@   rA   rB   rh   r3   r   r   r   r   rm   Ò   s    
rm   c                   @  ó(   e Zd ZdZ	dddd„Zddd„ZdS )ÚDisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nr,   r-   r   r   r   r   r   rf   c                 K  ó&   d }}|r|dt |ƒ› �7 }||fS )NÚdisplayz -title r   ©r(   r,   r   r   rX   r`   r   r   r   rh   ë   s   zDisplayViewer.get_command_exr5   r   c                 K  óH   t j |¡st‚dg}| d¡}|r|d|g7 }| |¡ t |¡ dS )r6   rt   r   z-titler   ©r7   r5   r8   r9   Úgetr   rN   rO   ©r(   r5   r   Úargsr   r   r   r   r3   ó   ó   


zDisplayViewer.show_filerg   ©r,   r-   r   r   r   r   r   rf   r>   rp   r   r   r   r   rr   å   s
    ÿrr   c                   @  rl   )ÚGmDisplayViewerz*The GraphicsMagick ``gm display`` command.r,   r-   r   r   r   rf   c                 K  ó   d}d}||fS )NÚgmz
gm displayr   ©r(   r,   r   r`   rX   r   r   r   rh     ó   zGmDisplayViewer.get_command_exr5   r   c                 K  ó$   t j |¡st‚t dd|g¡ dS )r6   r   rt   r   ro   r;   r   r   r   r3     ó   zGmDisplayViewer.show_fileNri   r>   rp   r   r   r   r   r}     ó    
r}   c                   @  rl   )Ú	EogViewerz'The GNOME Image Viewer ``eog`` command.r,   r-   r   r   r   rf   c                 K  r~   )NÚeogzeog -nr   r€   r   r   r   rh     r�   zEogViewer.get_command_exr5   r   c                 K  r‚   )r6   r†   z-nr   ro   r;   r   r   r   r3     rƒ   zEogViewer.show_fileNri   r>   rp   r   r   r   r   r…     r„   r…   c                   @  rq   )ÚXVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nr,   r-   r   r   r   r   r   rf   c                 K  rs   )NÚxvz -name r   ru   r   r   r   rh   -  s   zXVViewer.get_command_exr5   r   c                 K  rv   )r6   rˆ   r   z-namer   rw   ry   r   r   r   r3   7  r{   zXVViewer.show_filerg   r|   r>   rp   r   r   r   r   r‡   '  s
    ÿ
r‡   )rS   rd   rn   rt   r   r†   rˆ   c                   @  s   e Zd ZdZddd	„Zd
S )ÚIPythonViewerz!The viewer for IPython frontends.r   r   r   r   r   r   c                 K  s   t |ƒ dS )Nr   )Úipython_displayr4   r   r   r   r'   W  s   zIPythonViewer.show_imageNr<   )r?   r@   rA   rB   r'   r   r   r   r   r‰   T  s    r‰   )rt   Ú__main__é   z.Syntax: python3 ImageShow.py imagefile [title])r   )r   r	   r
   r   r   r   rg   )r   r   r   r   r   r   r   r   )(Ú
__future__r   rj   r7   ra   rN   r^   Úshlexr   Útypingr   Ú r   r   r   r   r   rE   ÚplatformrT   ÚABCre   rm   rr   r}   r…   r‡   rb   r‰   ÚIPython.displayrt   rŠ   ÚImportErrorr?   ÚlenÚargvÚprintÚexitrY   Úimr   r   r   r   Ú<module>   sf   =

#
 




ÿ
 $ÿû