
    tht               	       .   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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   )Imagec                     	 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     a/var/www/html/mycamper/aliexpress-site/backend/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   2   sE       6;u55E5W55 	44	5    c                   B    e Zd ZdZd ZdZ	 i Z	 d Zd Zd Z	d Z
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.showF   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_commanda   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_imageh   s-    u{II$//%"8"8IDLIIIr   c                 D     | j         |                     |          fi |S )zDisplay the given image.)	show_filer0   r#   r   r   s      r   r"   zViewer.show_imagel   s(    t~dooe44@@@@@r   c                 F    t          j         | j        |fi |           dS )%
        Display given file.
        r   )ossystemr,   r#   pathr   s      r   r2   zViewer.show_filep   s/     		"$"433733444qr   )__name__
__module____qualname____doc__r   r   r   r'   r,   r0   r"   r2   r.   r   r   r	   r	   A   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)r:   r;   r<   r=   r   r   r,   r.   r   r   r?   r?   {   s;        XXF!"55G
 
 
 
 
r   r?   win32c                   ,    e Zd ZdZdZdddZd Zd ZdS )		MacViewerz2The default viewer on macOS using ``Preview.app``.r   r   Tr@   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   c                     t          j        ddd|g           t          j        pt	          j        d          }|rt          j        |dd|g           dS )r5   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#   r9   r   rS   s       r   r2   zMacViewer.show_file   sh     	}d;<<<^>v|I'>'>
 	R	   qr   N)r:   r;   r<   r=   r   r   r,   r2   r.   r   r   rG   rG      sJ        <<F!"55G      r   rG   darwinc                   "    e Zd ZdZdddZd ZdS )
UnixViewerr   r   Tr@   c                 T     | j         |fi |d         }d| dt          |           S )Nr   rI   rJ   )get_command_exr   rK   s       r   r,   zUnixViewer.get_command   s=    %$%d66g66q9*7**U4[[***r   N)r:   r;   r<   r   r   r,   r.   r   r   rY   rY      s5        F!"55G+ + + + +r   rY   c                       e Zd ZdZd Zd ZdS )	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    c                     dx}}||fS )Nxdg-openr.   )r#   r+   r   rL   rS   s        r   r[   zXDGViewer.get_command_ex   s    ))*
""r   c                 2    t          j        d|g           dS )r5   r_   r   rP   rV   r8   s      r   r2   zXDGViewer.show_file   s     	*d+,,,qr   Nr:   r;   r<   r=   r[   r2   r.   r   r   r]   r]      s<         # # #    r   r]   c                        e Zd ZdZddZ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   rL   rS   s         r   r[   zDisplayViewer.get_command_ex   s8    ((* 	10%,,000G
""r   c                     dg}|                     d          }|r|d|gz  }|                    |           t          j        |           dS )r5   rf   r   z-titler   getr   rP   rV   r#   r9   r   argsr   s        r   r2   zDisplayViewer.show_file   s[     {G$$ 	&Xu%%DDqr   Nrb   r.   r   r   rd   rd      sA         
# # # #    r   rd   c                       e Zd ZdZd Zd ZdS )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                     d}d}||fS )Ngmz
gm displayr.   r#   r+   r   rS   rL   s        r   r[   zGmDisplayViewer.get_command_ex   s    

""r   c                 4    t          j        dd|g           dS )r5   rq   rf   r   ra   r8   s      r   r2   zGmDisplayViewer.show_file   s!     	$	40111qr   Nrb   r.   r   r   ro   ro      s8        44# # #
    r   ro   c                       e Zd ZdZd Zd ZdS )	EogViewerz'The GNOME Image Viewer ``eog`` command.c                     d}d}||fS )Neogzeog -nr.   rr   s        r   r[   zEogViewer.get_command_ex   s    

""r   c                 4    t          j        dd|g           dS )r5   rw   z-nr   ra   r8   s      r   r2   zEogViewer.show_file   s!     	%t,---qr   Nrb   r.   r   r   ru   ru      s8        11# # #
    r   ru   c                        e Zd ZdZddZ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   rg   s         r   r[   zXVViewer.get_command_ex
  s:      $#* 	0/u///G
""r   c                     dg}|                     d          }|r|d|gz  }|                    |           t          j        |           dS )r5   r|   r   z-namer   ri   rk   s        r   r2   zXVViewer.show_file  s[     vG$$ 	%We$$DDqr   rm   rb   r.   r   r   rz   rz     sA         
# # # #    r   rz   )rE   rW   r_   rf   rq   rw   r|   c                       e Zd ZdZd ZdS )IPythonViewerz!The viewer for IPython frontends.c                 $    t          |           dS )Nr   )ipython_displayr3   s      r   r"   zIPythonViewer.show_image0  s    qr   N)r:   r;   r<   r=   r"   r.   r   r   r   r   -  s)        ++    r   r   )rf   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   rm   )"r6   rT   rP   rR   shlexr    r   r   r   r   r	   r?   platformrG   rY   r]   rd   ro   ru   rz   rU   r   IPython.displayrf   r   ImportErrorr:   lenargvprintexitrN   imr.   r   r   <module>r      s_   
			      



            # # # #2   4 4 4 4 4 4 4 4t
 
 
 
 
F 
 
 
 <7H]       > <8HY+ + + + + + + +    
   "    J   4    j        
        z   8 <***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