
    (ph,'              	      X   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  SSKJr  / rS)S*S jjrS+S,S jjr " S	 S
5      r " S S\5      r\R$                  S:X  a  \" \5         " S S\5      r\R$                  S:X  a  \" \5         " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\R$                  S;  a  \R4                  " S5      (       a  \" \5        \R4                  " S5      (       a  \" \5        \R4                  " S 5      (       a  \" \5        \R4                  " S!5      (       a  \" \5        \R4                  " S"5      (       a  \" \5         " S# S$\5      r S S%KJr  \" \5        \ S&:X  at  \!" \RD                  5      S':  a  \#" S(5        \RH                  " 5         \RJ                  " \RD                  S   5       r&\#" \" \&/\RD                  S'S Q76 5        SSS5        gg! \ a     Nf = f! , (       d  f       g= f)-    )annotationsNquote)Any   )Imagec                     [        U [        5      (       a  U " 5       n US:  a  [        R	                  U 5        g[        R                  SU 5        g! [         a     N?f = f)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     @/var/www/html/venv/lib/python3.13/site-packages/PIL/ImageShow.pyregisterr      sR    ff%%XF qy6"  s   A 
AAc                V    [          H  nUR                  " U 4SU0UD6(       d  M    g   g)z
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   s/     ;;u5E5W55      c                  v    \ rS rSr% SrSS jrSrS\S'    0 rS\S'    SS	 jr	SS
 jr
SS jrSS jrSS jrSrg)r   E   zBase class for viewers.r   c                
   UR                   S;   da  U R                  S:X  a  UR                   S;   dA  [        R                  " UR                   5      nUR                   U:w  a  UR	                  U5      nU R
                  " U40 UD6$ )zk
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   Viewer.showJ   si     JJ-'u$~)E$$UZZ0DzzT!d+u000r   N
str | Noner"   zdict[str, Any]c                    U R                   $ )z3Return format name, or ``None`` to save as PGM/PPM.)r"   r&   r   s     r   
get_formatViewer.get_formata   s    {{r   c                    Sn[        U5      e)zR
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_commandViewer.get_commande   s    
 +!#&&r   c                \    UR                   " SSU R                  U5      0U R                  D6$ )z+Save to temporary file and return filename.r"    )_dumpr,   r   r+   s     r   
save_imageViewer.save_imagem   s&    {{I$//%"8IDLLIIr   c                F    U R                   " U R                  U5      40 UD6$ )zDisplay the given image.)	show_filer7   r&   r   r   s      r   r%   Viewer.show_imageq   s    ~~dooe4@@@r   c                    [         R                  R                  U5      (       d  [        e[         R                  " U R
                  " U40 UD65        g)
Display given file.
r   )ospathexistsFileNotFoundErrorsystemr2   r&   r@   r   s      r   r:   Viewer.show_fileu   s<     ww~~d####
		$""43734r   r5   r   Image.Imager   r   returnint)r   rG   rH   r)   r0   strr   r   rH   rK   )r   rG   rH   rK   r@   rK   r   r   rH   rI   )__name__
__module____qualname____firstlineno____doc__r   r"   __annotations__r   r,   r2   r7   r%   r:   __static_attributes__r5   r   r   r   r   E   sA    !1$ FJ/ G^ 7'JAr   r   c                  :    \ rS rSrSrSrSSS.rSS jrSS jrS	r	g
)WindowsViewer   zNThe default viewer on Windows is the default system application for PNG files.r   r   Tcompress_levelsave_allc                    SU SU S3$ )Nzstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ""r5   r&   r0   r   s      r   r2   WindowsViewer.get_command   s    $TF +q"	
r   c                    [         R                  R                  U5      (       d  [        e[        R
                  " U R                  " U40 UD6S[        [        S5      S9  g)r>   TCREATE_NO_WINDOW)shellcreationflagsr   )r?   r@   rA   rB   
subprocessPopenr2   getattrrD   s      r   r:   WindowsViewer.show_file   sQ     ww~~d####T-W-!*.@A	

 r   r5   NrJ   rL   
rM   rN   rO   rP   rQ   r"   r   r2   r:   rS   r5   r   r   rU   rU      s    XF!"5G
r   rU   win32c                  :    \ rS rSrSrSrSSS.rSS jrSS jrS	r	g
)	MacViewer   z2The default viewer on macOS using ``Preview.app``.r   r   TrW   c                F    SnSU S[        U5       S[        U5       S3nU$ )Nzopen -a Preview.app( z; sleep 20; rm -f z)&r   r&   r0   r   commands       r   r2   MacViewer.get_command   s1     (gYad},>uT{m2Nr   c                (   [         R                  R                  U5      (       d  [        e[        R
                  " SSSU/5        [        R                  =(       d    [        R                  " S5      nU(       a  [        R                  " USSU/5        g)r>   openz-azPreview.apppython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )r?   r@   rA   rB   rb   callsys
executableshutilwhichrc   )r&   r@   r   rv   s       r   r:   MacViewer.show_file   sp     ww~~d####}d;<^^>v||I'>
R	 r   r5   NrJ   rL   rf   r5   r   r   ri   ri      s    <F!"5Gr   ri   darwinc                  T    \ rS rSrSrSSS.r\R                  S
S j5       rSS jr	Sr
g	)
UnixViewer   r   r   TrW   c                    g Nr5   r\   s      r   get_command_exUnixViewer.get_command_ex   s    r   c                N    U R                   " U40 UD6S   nU S[        U5       3$ )Nr   rm   )r   r   rn   s       r   r2   UnixViewer.get_command   s1    %%d6g6q9!E$K=))r   r5   Nr0   rK   r   r   rH   tuple[str, str]rJ   )rM   rN   rO   rP   r"   r   abcabstractmethodr   r2   rS   r5   r   r   r|   r|      s.    F!"5G *r   r|   c                  ,    \ rS rSrSrSS jrSS jrSrg)		XDGViewer   z+
The freedesktop.org ``xdg-open`` command.
c                    S=p4X44$ )Nxdg-openr5   )r&   r0   r   ro   rv   s        r   r   XDGViewer.get_command_ex   s    ))""r   c                    [         R                  R                  U5      (       d  [        e[        R
                  " SU/5        g)r>   r   r   r?   r@   rA   rB   rb   rc   rD   s      r   r:   XDGViewer.show_file   s3     ww~~d####*d+,r   r5   Nr   rL   rM   rN   rO   rP   rQ   r   r:   rS   r5   r   r   r   r      s    #r   r   c                  @    \ rS rSrSr S       SS jjrS	S jrSrg)
DisplayViewer   zT
The ImageMagick ``display`` command.
This viewer supports the ``title`` parameter.
Nc                >    S=pEU(       a  US[        U5       3-  nXE4$ )Ndisplayz -title r   r&   r0   r   r   ro   rv   s         r   r   DisplayViewer.get_command_ex   s-      )(%,00G""r   c                    [         R                  R                  U5      (       d  [        eS/nUR	                  S5      nU(       a  USU/-  nUR                  U5        [        R                  " U5        g)r>   r   r   z-titler   r?   r@   rA   rB   getr   rb   rc   r&   r@   r   argsr   s        r   r:   DisplayViewer.show_file   sa     ww~~d####{G$Xu%%DDr   r5   r   r0   rK   r   r)   r   r   rH   r   rL   r   r5   r   r   r   r      s6     .2## *#>A#	#r   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)	GmDisplayVieweri  z*The GraphicsMagick ``gm display`` command.c                    SnSnXC4$ )Ngmz
gm displayr5   r&   r0   r   rv   ro   s        r   r   GmDisplayViewer.get_command_ex  s    
""r   c                    [         R                  R                  U5      (       d  [        e[        R
                  " SSU/5        g)r>   r   r   r   r   rD   s      r   r:   GmDisplayViewer.show_file  s5     ww~~d####$	401r   r5   Nr   rL   r   r5   r   r   r   r     s    4#
r   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)		EogVieweri  z'The GNOME Image Viewer ``eog`` command.c                    SnSnXC4$ )Neogzeog -nr5   r   s        r   r   EogViewer.get_command_ex  s    
""r   c                    [         R                  R                  U5      (       d  [        e[        R
                  " SSU/5        g)r>   r   z-nr   r   rD   s      r   r:   EogViewer.show_file  s5     ww~~d####%t,-r   r5   Nr   rL   r   r5   r   r   r   r     s    1#
r   r   c                  @    \ rS rSrSr S       SS jjrS	S jrSrg)
XVVieweri(  zL
The X Viewer ``xv`` command.
This viewer supports the ``title`` parameter.
Nc                >    S=pEU(       a  US[        U5       3-  nXE4$ )Nxvz -name r   r   s         r   r   XVViewer.get_command_ex.  s-    
  $#u//G""r   c                    [         R                  R                  U5      (       d  [        eS/nUR	                  S5      nU(       a  USU/-  nUR                  U5        [        R                  " U5        g)r>   r   r   z-namer   r   r   s        r   r:   XVViewer.show_file8  sa     ww~~d####vG$We$$DDr   r5   r   r   rL   r   r5   r   r   r   r   (  s6     .2## *#>A#	#r   r   )rg   rz   r   r   r   r   r   c                  "    \ rS rSrSrSS jrSrg)IPythonVieweriU  z!The viewer for IPython frontends.c                    [        U5        g)Nr   )ipython_displayr;   s      r   r%   IPythonViewer.show_imageX  s    r   r5   NrF   )rM   rN   rO   rP   rQ   r%   rS   r5   r   r   r   r   U  s
    +r   r   )r   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   )r   rI   rH   Noner   )r   rG   r   r)   r   r   rH   bool)'
__future__r   r   r?   rw   rb   ru   shlexr   typingr    r   r   r   r   r   rU   platformri   r|   r   r   r   r   r   rx   r   IPython.displayr   r   ImportErrorrM   lenargvprintexitrr   imr5   r   r   <module>r      s   # 
 	   
   #27 7zF 6 <<7] B <<8Y
* 
*
 &J <j $
 $z @ <<**||J||I||D!||E||DF : ] z
388}q>?
	CHHQK	 Bd2%%& 
!	    		 
!	 s   H (HHH
H)