
    NYhf$              	         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d)d*dZd+d,d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j4                  d      r ee        ej4                  d      r ee        ej4                  d       r ee        ej4                  d!      r ee        ej4                  d"      r ee        G d# d$e      Z	 d d%lmZ  ee       e d&k(  rs e!ejD                        d'k  r e#d(        ejH                           ejJ                  ejD                  d         5 Z& e# ee&gejD                  d'd         ddd       yy# e$ r Y w xY w# 1 sw Y   yxY w)-    )annotationsNquote)Any   )Imagec                    	 t        | t              r |        } |dkD  rt        j	                  |        yt        j                  d|        y# t        $ r Y =w xY w)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orders     L/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/PIL/ImageShow.pyregisterr      sO    ff%XF qy6"  s   A 	AAc                H    t         D ]  } |j                  | fd|i|s y y)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   s       r   r   r   6   s3      6;;u5E5W5     c                  b    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y)r   zBase class for viewers.r   c                    |j                   dv s\| j                  dk(  r|j                   dv s?t        j                  |j                         }|j                   |k7  r|j	                  |      } | 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.showJ   sk     JJ-'u$~)E$$UZZ0DzzT!d+tu000r   N
str | Noner!   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_formata   s    {{r   c                    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   msgs       r   get_commandzViewer.get_commande   s    
 +!#&&r   c                \     |j                   dd| j                  |      i| j                  S )z+Save to temporary file and return filename.r!    )_dumpr*   r   r)   s     r   
save_imagezViewer.save_imagem   s(    u{{I$//%"8IDLLIIr   c                F     | j                   | j                  |      fi |S )zDisplay the given image.)	show_filer3   r%   r   r   s      r   r$   zViewer.show_imageq   s!    t~~dooe4@@@r   c                P    t        j                   | j                  |fi |       y)%
        Display given file.
        r   )ossystemr/   r%   pathr   s      r   r5   zViewer.show_fileu   s&     			"$""43734r   r   Image.Imager   r   returnint)r   r>   r?   r'   r-   strr   r   r?   rB   )r   r>   r?   rB   r<   rB   r   r   r?   r@   )__name__
__module____qualname____doc__r   r!   __annotations__r   r*   r/   r3   r$   r5   r1   r   r   r   r   E   sA    !1$ FJ/ G^ 7'JAr   r   c                  .    e Zd ZdZdZdddZd	dZd
dZy)WindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r   r   Tcompress_levelsave_allc                    d| d| dS )Nzstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ""r1   r%   r-   r   s      r   r/   zWindowsViewer.get_command   s    $TF +q"	
r   c                r    t        j                   | j                  |fi |dt        t         d             y)r8   TCREATE_NO_WINDOW)shellcreationflagsr   )
subprocessPopenr/   getattrr;   s      r   r5   zWindowsViewer.show_file   s:     	DT-W-!*.@A	

 r   NrA   rC   rD   rE   rF   rG   r!   r   r/   r5   r1   r   r   rJ   rJ      s    XF!"5G
	r   rJ   win32c                  .    e Zd ZdZdZdddZd	dZd
dZy)	MacViewerz2The default viewer on macOS using ``Preview.app``.r   r   TrK   c                F    d}d| dt        |       dt        |       d}|S )Nzopen -a Preview.app( z; sleep 20; rm -f z)&r   r%   r-   r   commands       r   r/   zMacViewer.get_command   s1     (gYad},>uT{m2Nr   c                    t        j                  ddd|g       t        j                  xs t	        j
                  d      }|rt        j                  |dd|g       y)r8   openz-azPreview.apppython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )rU   callsys
executableshutilwhichrV   )r%   r<   r   rf   s       r   r5   zMacViewer.show_file   sW     	}d;<^^>v||I'>
R	 r   NrA   rC   rX   r1   r   r   r[   r[      s    <F!"5Gr   r[   darwinc                  H    e Zd ZdZdddZej                  dd       Zd	dZy)

UnixViewerr   r   TrK   c                     y Nr1   rP   s      r   get_command_exzUnixViewer.get_command_ex   s    r   c                P     | j                   |fi |d   }d| dt        |       S )Nr   r]   r^   )rn   r   r_   s       r   r/   zUnixViewer.get_command   s5    %$%%d6g6q97)1U4[M**r   Nr-   rB   r   r   r?   tuple[str, str]rA   )	rD   rE   rF   r!   r   abcabstractmethodrn   r/   r1   r   r   rk   rk      s.    F!"5G +r   rk   c                       e Zd ZdZddZddZy)	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    c                    dx}}||fS )Nxdg-openr1   )r%   r-   r   r`   rf   s        r   rn   zXDGViewer.get_command_ex   s    ))*
""r   c                2    t        j                  d|g       y)r8   rw   r   rU   rV   r;   s      r   r5   zXDGViewer.show_file   s     	*d+,r   Nrp   rC   rD   rE   rF   rG   rn   r5   r1   r   r   ru   ru      s    #r   ru   c                  2    e Zd ZdZ	 d	 	 	 	 	 	 	 ddZddZy)DisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nc                8    dx}}|r|dt        |       z  }||fS )Ndisplayz -title r   r%   r-   r   r   r`   rf   s         r   rn   zDisplayViewer.get_command_ex   s1      )(*%,00G
""r   c                    dg}|j                  d      }|r|d|gz  }|j                  |       t        j                  |       y)r8   r~   r   z-titler   getr   rU   rV   r%   r<   r   argsr   s        r   r5   zDisplayViewer.show_file   sH     {G$Xu%%DDr   rm   r-   rB   r   r'   r   r   r?   rq   rC   rz   r1   r   r   r|   r|      s6     .2## *#>A#	#r   r|   c                       e Zd ZdZddZddZy)GmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                    d}d}||fS )Ngmz
gm displayr1   r%   r-   r   rf   r`   s        r   rn   zGmDisplayViewer.get_command_ex   s    

""r   c                4    t        j                  dd|g       y)r8   r   r~   r   ry   r;   s      r   r5   zGmDisplayViewer.show_file  s     	$	401r   Nrp   rC   rz   r1   r   r   r   r      s    4#
r   r   c                       e Zd ZdZddZddZy)	EogViewerz'The GNOME Image Viewer ``eog`` command.c                    d}d}||fS )Neogzeog -nr1   r   s        r   rn   zEogViewer.get_command_ex  s    

""r   c                4    t        j                  dd|g       y)r8   r   z-nr   ry   r;   s      r   r5   zEogViewer.show_file  s     	%t,-r   Nrp   rC   rz   r1   r   r   r   r   
  s    1#
r   r   c                  2    e Zd ZdZ	 d	 	 	 	 	 	 	 ddZddZy)XVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nc                8    dx}}|r|dt        |       z  }||fS )Nxvz -name r   r   s         r   rn   zXVViewer.get_command_ex   s1    
  $#*u//G
""r   c                    dg}|j                  d      }|r|d|gz  }|j                  |       t        j                  |       y)r8   r   r   z-namer   r   r   s        r   r5   zXVViewer.show_file*  sH     vG$We$$DDr   rm   r   rC   rz   r1   r   r   r   r     s6     .2## *#>A#	#r   r   )rY   ri   rw   r~   r   r   r   c                      e Zd ZdZddZy)IPythonViewerz!The viewer for IPython frontends.c                    t        |       y)Nr   )ipython_displayr6   s      r   r$   zIPythonViewer.show_imageH  s    r   Nr=   )rD   rE   rF   rG   r$   r1   r   r   r   r   E  s
    +r   r   )r~   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   )r   r@   r?   Nonerm   )r   r>   r   r'   r   r   r?   bool)'
__future__r   rr   r9   rg   rU   re   shlexr   typingr    r   r   r   r   r   rJ   platformr[   rk   ru   r|   r   r   r   rh   r   IPython.displayr~   r   ImportErrorrD   lenargvprintexitrb   imr1   r   r   <module>r      s   # 
 	   
   #25 5vF 2 <<7] > <<8Y
+ 
+
 "J 8j  
  z < <<**v||Jv||Iv||D!v||Ev||DF : ] z
388}q>?
	CHHQK	  'Bd2%%&' '   		' 's   %G, G7,G43G47H 