o
    ]oi                      @  s0  d dl m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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redree ed ree ed!ree ed"ree ed#re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 re 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 ),    )annotationsNquote   )Imagec                 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   U/var/www/html/kuke-dev/django-kuke/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                   @  sL   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   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   d}t |)zj
        Returns the command used to display the file.
        Not implemented in the base class.
        zunavailable in base viewer)NotImplementedError)r   filer   msgr   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_imagek   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   o   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&   s   s   zViewer.show_file)__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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   r   r#      s   zWindowsViewer.get_commandN)r-   r.   r/   r0   r   r   r#   r   r   r   r   r1   ~   s
    
r1   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   Tr2   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}|rt |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/   r0   r   r   r#   r&   r   r   r   r   r5      s    
r5   darwinc                   @  s"   e Zd ZdZdddZdd ZdS )
UnixViewerr   r   Tr2   c                 K  s*   | j |fi |d }d| dt| S )Nr   r6   r7   )get_command_exr   r8   r   r   r   r#      s   zUnixViewer.get_commandN)r-   r.   r/   r   r   r#   r   r   r   r   rD      s    
rD   c                   @      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   r9   r?   r   r   r   rE      s   zXDGViewer.get_command_exc                 K  s   t d|g dS )r(   rH   r   r<   rB   r+   r   r   r   r&      s   zXDGViewer.show_fileNr-   r.   r/   r0   rE   r&   r   r   r   r   rG      s    rG   c                   @  "   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  &   d }}|r|dt | 7 }||fS )Ndisplayz -title r   r   r!   r   r   r9   r?   r   r   r   rE      s   zDisplayViewer.get_command_exc                 K  8   dg}| d}|r|d|g7 }|| t| dS )r(   rN   r   z-titler   getr   r<   rB   r   r,   r   argsr   r   r   r   r&         


zDisplayViewer.show_fileNrJ   r   r   r   r   rL      s    
rL   c                   @  rF   )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                 K     d}d}||fS )Ngmz
gm displayr   r   r!   r   r?   r9   r   r   r   rE         zGmDisplayViewer.get_command_exc                 K     t dd|g dS )r(   rY   rN   r   rI   r+   r   r   r   r&         zGmDisplayViewer.show_fileNrJ   r   r   r   r   rW          rW   c                   @  rF   )	EogViewerz'The GNOME Image Viewer ``eog`` command.c                 K  rX   )Neogzeog -nr   rZ   r   r   r   rE      r[   zEogViewer.get_command_exc                 K  r\   )r(   r`   z-nr   rI   r+   r   r   r   r&      r]   zEogViewer.show_fileNrJ   r   r   r   r   r_      r^   r_   c                   @  rK   )XVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K  rM   )Nxvz -name r   rO   r   r   r   rE     s   zXVViewer.get_command_exc                 K  rP   )r(   rb   r   z-namer   rQ   rS   r   r   r   r&     rU   zXVViewer.show_filerV   rJ   r   r   r   r   ra     s    
ra   )r4   rC   rH   rN   rY   r`   rb   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   3  s   zIPythonViewer.show_imageN)r-   r.   r/   r0   r   r   r   r   r   rc   0  s    rc   )rN   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   rV   )$
__future__r   r)   r@   r<   r>   shlexr    r   r
   r   r   r   r1   platformr5   rD   rG   rL   rW   r_   ra   rA   rc   IPython.displayrN   rd   ImportErrorr-   lenargvprintexitr:   Zimr   r   r   r   <module>   sb   

;

	






 $