
    zvg	'              	      R   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d6d7dZd8d9dZ G d d          Z G d de          Zej        dk    r ee            G d de          Zej        dk    r ee            G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G d( d)e          Zej        d*vr ej        d+          r ee            ej        d,          r ee            ej        d-          r ee            ej        d.          r ee            ej        d/          r ee            G d0 d1e          Z	 d d2lmZ  ee           n# e$ r Y nw xY we d3k    r e!ej"                  d4k     r e#d5            ej$                      ej%        ej"        d                   5 Z& e# ee&gej"        d4d         R             ddd           dS # 1 swxY w Y   dS dS ):    )annotationsNquote)Any   )Imageviewertype[Viewer] | ViewerorderintreturnNonec                    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   s     J/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/PIL/ImageShow.pyregisterr      sm     &$ Jvv$>$> qyy6"""""    imageImage.Imagetitle
str | Noneoptionsr   boolc                @    t           D ]} |j        | fd|i|r dS 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	   s       r   r!   r!   3   sE       6;u55E5W55 	44	5r   c                  d    e Zd ZU dZddZd	Zd
ed<   	 i Zded<   	 ddZddZ	ddZ
ddZddZd	S )r   zBase class for viewers.r   r   r   r   r   r   c                    |j         dv sM| j        dk    r	|j         dv s9t          j        |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   bases       r   r!   zViewer.showG   st     J-''u$$~)E)E$UZ00DzT!!d++tu00000r   Nr   r)   zdict[str, Any]c                    | j         S )z3Return format name, or ``None`` to save as PGM/PPM.)r)   r-   r   s     r   
get_formatzViewer.get_format^   s
    {r   filestrc                $    d}t          |          )zj
        Returns the command used to display the file.
        Not implemented in the base class.
        zunavailable in base viewer)NotImplementedError)r-   r2   r   msgs       r   get_commandzViewer.get_commandb   s    
 +!#&&&r   c                P     |j         dd|                     |          i| j        S )z+Save to temporary file and return filename.r)    )_dumpr1   r   r0   s     r   
save_imagezViewer.save_imagej   s-    u{II$//%"8"8IDLIIIr   c                D     | j         |                     |          fi |S )zDisplay the given image.)	show_filer;   r-   r   r   s      r   r,   zViewer.show_imagen   s(    t~dooe44@@@@@r   pathc                    t           j                            |          st          t          j         | j        |fi |           dS )%
        Display given file.
        r   )osr?   existsFileNotFoundErrorsystemr7   r-   r?   r   s      r   r=   zViewer.show_filer   sK     w~~d## 	$##
	"$"433733444qr   r   r   r   r   r   r   )r   r   r   r   r2   r3   r   r   r   r3   )r   r   r   r3   r?   r3   r   r   r   r   )__name__
__module____qualname____doc__r!   r)   __annotations__r   r1   r7   r;   r,   r=   r9   r   r   r   r   B   s         !!1 1 1 1$ F/ G    7   ' ' ' 'J J J JA A A A     r   r   c                  0    e Zd ZdZdZdddZ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_allr2   r3   r   r   r   c                    d| d| dS )Nzstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ""r9   r-   r2   r   s      r   r7   zWindowsViewer.get_command   s*    "T " "" " "	
r   r?   r   c                    t           j                            |          st          t	          j         | j        |fi |dt          t          d                     dS )rA   TCREATE_NO_WINDOW)shellcreationflagsr   )rB   r?   rC   rD   
subprocessPopenr7   getattrrF   s      r   r=   zWindowsViewer.show_file   sj     w~~d## 	$##DT--W--!*.@AA	
 	
 	
 	

 qr   NrH   rI   rJ   rK   rL   rM   r)   r   r7   r=   r9   r   r   rP   rP      sT        XXF!"55G
 
 
 
     r   rP   win32c                  0    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   TrQ   r2   r3   r   r   r   c                V    d}d| dt          |           dt          |           d}|S )Nzopen -a Preview.app( z; sleep 20; rm -f z)&r   r-   r2   r   commands       r   r7   zMacViewer.get_command   s:     (NgNNdNNuT{{NNNr   r?   r   c                    t           j                            |          st          t	          j        ddd|g           t          j        pt          j	        d          }|rt	          j
        |dd|g           dS )rA   openz-azPreview.apppython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )rB   r?   rC   rD   r[   callsys
executableshutilwhichr\   )r-   r?   r   rl   s       r   r=   zMacViewer.show_file   s     w~~d## 	$##}d;<<<^>v|I'>'>
 	R	   qr   NrH   rI   r^   r9   r   r   ra   ra      sT        <<F!"55G        r   ra   darwinc                  F    e Zd ZdZdddZej        dd            ZddZdS )
UnixViewerr&   r   TrQ   r2   r3   r   r   r   tuple[str, str]c                    d S Nr9   rV   s      r   get_command_exzUnixViewer.get_command_ex   s    r   c                R     | j         |fi |d         }| dt          |           S )Nr   rd   )ru   r   re   s       r   r7   zUnixViewer.get_command   s;    %$%d66g66q9))E$KK)))r   Nr2   r3   r   r   r   rr   rH   )	rJ   rK   rL   r)   r   abcabstractmethodru   r7   r9   r   r   rq   rq      s\        F!"55G   * * * * * *r   rq   c                  "    e Zd ZdZddZddZdS )	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    r2   r3   r   r   r   rr   c                    dx}}||fS )Nxdg-openr9   )r-   r2   r   rf   rl   s        r   ru   zXDGViewer.get_command_ex   s    ))*
""r   r?   r   c                ~    t           j                            |          st          t	          j        d|g           dS )rA   r}   r   rB   r?   rC   rD   r[   r\   rF   s      r   r=   zXDGViewer.show_file   s;     w~~d## 	$##*d+,,,qr   Nrw   rI   rJ   rK   rL   rM   ru   r=   r9   r   r   r{   r{      sF         # # # #     r   r{   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.
    Nr2   r3   r   r   r   r   r   rr   c                @    dx}}|r|dt          |           z  }||fS )Ndisplayz -title r   r-   r2   r   r   rf   rl   s         r   ru   zDisplayViewer.get_command_ex   s:      )(* 	10%,,000G
""r   r?   r   c                    t           j                            |          st          dg}|                    d          }|r|d|gz  }|                    |           t          j        |           dS )rA   r   r   z-titler   rB   r?   rC   rD   getr   r[   r\   r-   r?   r   argsr   s        r   r=   zDisplayViewer.show_file   sw     w~~d## 	$##{G$$ 	&Xu%%DDqr   rt   r2   r3   r   r   r   r   r   rr   rI   r   r9   r   r   r   r      sP          .2# # # # #     r   r   c                  "    e Zd ZdZddZddZdS )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.r2   r3   r   r   r   rr   c                    d}d}||fS )Ngmz
gm displayr9   r-   r2   r   rl   rf   s        r   ru   zGmDisplayViewer.get_command_ex  s    

""r   r?   r   c                    t           j                            |          st          t	          j        dd|g           dS )rA   r   r   r   r   rF   s      r   r=   zGmDisplayViewer.show_file	  s=     w~~d## 	$##$	40111qr   Nrw   rI   r   r9   r   r   r   r     sB        44# # # #
     r   r   c                  "    e Zd ZdZddZddZdS )	EogViewerz'The GNOME Image Viewer ``eog`` command.r2   r3   r   r   r   rr   c                    d}d}||fS )Neogzeog -nr9   r   s        r   ru   zEogViewer.get_command_ex  s    

""r   r?   r   c                    t           j                            |          st          t	          j        dd|g           dS )rA   r   z-nr   r   rF   s      r   r=   zEogViewer.show_file  s=     w~~d## 	$##%t,---qr   Nrw   rI   r   r9   r   r   r   r     sB        11# # # #
     r   r   c                  &    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.
    Nr2   r3   r   r   r   r   r   rr   c                @    dx}}|r|dt          |           z  }||fS )Nxvz -name r   r   s         r   ru   zXVViewer.get_command_ex+  s:    
  $#* 	0/u///G
""r   r?   r   c                    t           j                            |          st          dg}|                    d          }|r|d|gz  }|                    |           t          j        |           dS )rA   r   r   z-namer   r   r   s        r   r=   zXVViewer.show_file5  sw     w~~d## 	$##vG$$ 	%We$$DDqr   rt   r   rI   r   r9   r   r   r   r   %  sP          .2# # # # #     r   r   )r_   ro   r}   r   r   r   r   c                      e Zd ZdZd
dZd	S )IPythonViewerz!The viewer for IPython frontends.r   r   r   r   r   r   c                $    t          |           dS )Nr   )ipython_displayr>   s      r   r,   zIPythonViewer.show_imageU  s    qr   NrG   )rJ   rK   rL   rM   r,   r9   r   r   r   r   R  s.        ++     r   r   )r   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   )r	   r
   r   r   r   r   rt   )r   r   r   r   r   r   r   r   )'
__future__r   rx   rB   rm   r[   rk   shlexr   typingr    r   r   r   r!   r   rP   platformra   rq   r{   r   r   r   r   rn   r   IPython.displayr   r   ImportErrorrJ   lenargvprintexitrh   imr9   r   r   <module>r      s   # " " " " " 



 				      



                  # # # # #,    7 7 7 7 7 7 7 7z    F   6 <7H]       B <8HY
* 
* 
* 
* 
* 
* 
* 
*    
   &    J   <    j   $    
   $    z   @ <***v|J v|I  v|D "!!!v|E v|D     F   :::::: H]  	 	 	D	 z
s38}}q>???


	CHQK	 	  'Bdd2%%%%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' s$   F FF- HH!H