
     h,              	       :   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Z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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 d" d#e          Z	 d d$lmZ  ee           n# e$ r Y nw xY wed%k    r eej                  d&k     r e d'            ej!                      ej"        ej        d                   5 Z# e  ee#gej        d&d         R             ddd           dS # 1 swxY w Y   dS dS )*    Nquote)Image   )	deprecatec                     	 t          | t                    r
 |             } n# t          $ r Y nw xY 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orders     I/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/PIL/ImageShow.pyregisterr      s    ff%% 	VXXF   qyy6"""""s   " 
//c                 @    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.
    titleTF)r   show)imager   optionsr   s       r   r   r   4   sE       6;u55E5W55 	44	5    c                   D    e Zd ZdZd ZdZ	 i Z	 d Zd Zd Z	d Z
d	dZdS )
r
   zBase class for viewers.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.showH   st     J-''u$$~)E)E$UZ00DzT!!d++tu00000r   Nc                     | j         S )z3Return format name, or ``None`` to save as PGM/PPM.)r    r$   r   s     r   
get_formatzViewer.get_format_   s
    {r   c                     t           )zj
        Returns the command used to display the file.
        Not implemented in the base class.
        )NotImplementedErrorr$   filer   s      r   get_commandzViewer.get_commandc   s
    
 "!r   c                 P     |j         dd|                     |          i| j        S )z+Save to temporary file and return filename.r     )_dumpr(   r   r'   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_filer1   r$   r   r   s      r   r#   zViewer.show_imagen   s(    t~dooe44@@@@@r   c                     |<d|v r't          ddd           |                    d          }nd}t          |          t          j         | j        |fi |           dS )
        Display given file.

        Before Pillow 9.1.0, the first argument was ``file``. This is now deprecated,
        and will be removed in Pillow 10.0.0 (2023-07-01). ``path`` should be used
        instead.
        Nr,   The 'file' argument
   'path'!Missing required argument: 'path'r   )r   popr   ossystemr-   r$   pathr   msgs       r   r3   zViewer.show_filer   sv     <  /X>>>{{6**9nn$
	"$"433733444qr   N)__name__
__module____qualname____doc__r   r    r   r(   r-   r1   r#   r3   r/   r   r   r
   r
   C   s        !!1 1 1$ F/G7  " " "J J JA A A     r   r
   c                   &    e Zd ZdZdZdddZd ZdS )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 ""r/   r+   s      r   r-   zWindowsViewer.get_command   s*    "T " "" " "	
r   N)rB   rC   rD   rE   r    r   r-   r/   r   r   rG   rG      s;        XXF!"55G
 
 
 
 
r   rG   win32c                   .    e Zd ZdZdZdddZd Zd	dZdS )
	MacViewerz2The default viewer on macOS using ``Preview.app``.r   r   TrH   c                 V    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   s:     (NgNNdNNuT{{NNNr   Nc                 &   |<d|v r't          ddd           |                    d          }nd}t          |          t          j        ddd	|g           t
          j        pt          j        d
          }|rt          j	        |dd|g           dS )r6   Nr,   r7   r8   r9   r:   openz-azPreview.apppython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )
r   r;   r   
subprocesscallsys
executableshutilwhichPopen)r$   r?   r   r@   r[   s        r   r3   zMacViewer.show_file   s     <  /X>>>{{6**9nn$}d;<<<^>v|I'>'>
 	R	   qr   rA   )rB   rC   rD   rE   r    r   r-   r3   r/   r   r   rO   rO      sO        <<F!"55G       r   rO   darwinc                   "    e Zd ZdZdddZd ZdS )
UnixViewerr   r   TrH   c                 T     | j         |fi |d         }d| dt          |           S )Nr   rQ   rR   )get_command_exr   rS   s       r   r-   zUnixViewer.get_command   s=    %$%d66g66q9*7**U4[[***r   N)rB   rC   rD   r    r   r-   r/   r   r   ra   ra      s5        F!"55G+ + + + +r   ra   c                        e Zd ZdZd ZddZdS )	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    c                     dx}}||fS )Nxdg-openr/   )r$   r,   r   rT   r[   s        r   rc   zXDGViewer.get_command_ex   s    ))*
""r   Nc                     |<d|v r't          ddd           |                    d          }nd}t          |          t          j        d|g           dS )	r6   Nr,   r7   r8   r9   r:   rg   r   r   r;   r   rX   r^   r>   s       r   r3   zXDGViewer.show_file   sf     <  /X>>>{{6**9nn$*d+,,,qr   rA   rB   rC   rD   rE   rc   r3   r/   r   r   re   re      sA         # # #     r   re   c                   "    e Zd ZdZddZddZdS )DisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nc                 @    dx}}|r|dt          |           z  }||fS )Ndisplayz -title r   r$   r,   r   r   rT   r[   s         r   rc   zDisplayViewer.get_command_ex   s8    ((* 	10%,,000G
""r   c                    |<d|v r't          ddd           |                    d          }nd}t          |          dg}|                    d          }|r|d	|gz  }|                    |           t          j        |           d
S )
        Display given file.

        Before Pillow 9.1.0, the first argument was ``file``. This is now deprecated,
        and ``path`` should be used instead.
        Nr,   r7   r8   r9   r:   rn   r   z-titler   r   r;   r   getr   rX   r^   r$   r?   r   r@   argsr   s         r   r3   zDisplayViewer.show_file   s     <  /X>>>{{6**9nn${G$$ 	&Xu%%DDqr   rA   rj   r/   r   r   rl   rl      sF         
# # # #     r   rl   c                        e Zd ZdZd ZddZdS )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                     d}d}||fS )Ngmz
gm displayr/   r$   r,   r   r[   rT   s        r   rc   zGmDisplayViewer.get_command_ex  s    

""r   Nc                     |<d|v r't          ddd           |                    d          }nd}t          |          t          j        dd|g           d	S )
rq   Nr,   r7   r8   r9   r:   ry   rn   r   ri   r>   s       r   r3   zGmDisplayViewer.show_file  sh     <  /X>>>{{6**9nn$$	40111qr   rA   rj   r/   r   r   rw   rw     s=        44# # #
     r   rw   c                        e Zd ZdZd ZddZdS )	EogViewerz'The GNOME Image Viewer ``eog`` command.c                     d}d}||fS )Neogzeog -nr/   rz   s        r   rc   zEogViewer.get_command_ex.  s    

""r   Nc                     |<d|v r't          ddd           |                    d          }nd}t          |          t          j        dd|g           d	S )
rq   Nr,   r7   r8   r9   r:   r   z-nr   ri   r>   s       r   r3   zEogViewer.show_file3  sh     <  /X>>>{{6**9nn$%t,---qr   rA   rj   r/   r   r   r}   r}   +  s=        11# # #
     r   r}   c                   "    e Zd ZdZddZddZdS )XVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nc                 @    dx}}|r|dt          |           z  }||fS )Nxvz -name r   ro   s         r   rc   zXVViewer.get_command_exK  s:      $#* 	0/u///G
""r   c                    |<d|v r't          ddd           |                    d          }nd}t          |          dg}|                    d          }|r|d	|gz  }|                    |           t          j        |           d
S )rq   Nr,   r7   r8   r9   r:   r   r   z-namer   rr   rt   s         r   r3   zXVViewer.show_fileS  s     <  /X>>>{{6**9nn$vG$$ 	%We$$DDqr   rA   rj   r/   r   r   r   r   E  sF         
# # # #     r   r   )rM   r_   rg   rn   ry   r   r   c                       e Zd ZdZd ZdS )IPythonViewerz!The viewer for IPython frontends.c                 $    t          |           dS )Nr   )ipython_displayr4   s      r   r#   zIPythonViewer.show_image{  s    qr   N)rB   rC   rD   rE   r#   r/   r   r   r   r   x  s)        ++    r   r   )rn   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   rA   )$r<   r\   rX   rZ   shlexr   PILr   
_deprecater   r   r   r   r
   rG   platformrO   ra   re   rl   rw   r}   r   r]   r   IPython.displayrn   r   ImportErrorrB   lenargvprintexitrV   imr/   r   r   <module>r      st   
			      



             ! ! ! ! ! !# # # #2   ? ? ? ? ? ? ? ?J
 
 
 
 
F 
 
 
 <7H]' ' ' ' ' ' ' 'T <8HY+ + + + + + + +    
   8! ! ! ! !J ! ! !H    j   4    
   4# # # # #z # # #L <***v|J v|I  v|D "!!!v|E v|D     F   :::::: H]  	 	 	D	 z
s38}}q>???


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