§
    þÜÒj*  ã            	      óz  — U d dl mZ ddh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Zerd d	lmZ g Zd
ed<   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j        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        d0¦  «        r ee¦  «          ej        d1¦  «        r ee¦  «          ej        d2¦  «        r ee¦  «          ej        d3¦  «        r ee¦  «          ej        d4¦  «        r ee¦  «          G d5„ d6e¦  «        Z	 d d7l m!Z"  ee¦  «         n# e#$ r Y nw xY we$d8k    rƒ e%ej&        ¦  «        d9k     r e'd:¦  «          ej(        ¦   «           ej)        ej&        d         ¦  «        5 Z* e' ee*gej&        d9d…         ¢R Ž ¦  «         ddd¦  «         dS # 1 swxY w Y   dS dS )?é    )ÚannotationsÚshlexÚ
subprocessN©Úquoteé   )ÚImageF)ÚAnyzlist[Viewer]Ú_viewersÚ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ÚViewerr   ÚappendÚinsert)r   r   s     úYC:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL/ImageShow.pyÚregisterr   "   sm   € õ �&�$ÑÔð ¥J¨vµvÑ$>Ô$>ð Ø�‘”ˆØˆq‚y€yÝ�Š˜ÑÔÐÐÐå�Š˜˜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#   8   sE   € õ ð ð ˆØˆ6Œ;�uÐ5Ð5 EÐ5¨WÐ5Ð5ð 	Ø�4�4ð	àˆ5r   c                  ól   — 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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.showL   st   € ð ŒJ˜-Ð'Ð'Ø”˜uÒ$Ð$¨¬°~Ð)EÐ)EåÔ$ U¤ZÑ0Ô0ˆDØŒz˜TÒ!Ð!ØŸš 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_formatc   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/   r4   r    Úmsgs       r   Úget_commandzViewer.get_commandg   s   € ð
 +ˆÝ! #Ñ&Ô&Ð&r   c                óP   —  |j         dd|                      |¦  «        i| j        ¤ŽS )z+Save to temporary file and return filename.r+   © )Ú_dumpr3   r    r2   s     r   Ú
save_imagezViewer.save_imageo   s-   € àˆuŒ{ÐIÐI $§/¢/°%Ñ"8Ô"8ÐI¸D¼LÐ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_images   s(   € àˆtŒ~˜dŸošo¨eÑ4Ô4Ð@Ð@¸Ð@Ð@Ð@r   Úpathc                ó’   — t           j                             |¦  «        st          ‚t          j         | j        |fi |¤Ž¦  «         dS )ú%
        Display given file.
        r   )ÚosrB   ÚexistsÚFileNotFoundErrorÚsystemr:   ©r/   rB   r    s      r   r@   zViewer.show_filew   sK   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#Ý
Œ	Ð"�$Ô" 4Ð3Ð3¨7Ð3Ð3Ñ4Ô4Ð4Øˆqr   r   c                óÚ   — t          t          dd¦  «        ot          t          d¦  «        }| rt          j        pt	          j        d¦  «        }|rt          j        |dd|g¦  «         d S d S )NÚfrozenFÚ_MEIPASSÚpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1]))ÚgetattrÚsysÚhasattrÚ
executableÚshutilÚwhichr   ÚPopen)r/   rB   ÚpyinstallerrQ   s       r   Ú_remove_path_after_delayzViewer._remove_path_after_delay€   s�   € Ý�c 8¨UÑ3Ô3ÐP½ÅÀZÑ8PÔ8PˆØ%�oÐ8­#¬.ÐT½V¼\È)Ñ=TÔ=Tˆ
àð 	ÝÔàØØRØð	ñô ð ð ð ð	ð 	r   ©r   r   r    r
   r   r   )r   r   r   r   ©r4   r5   r    r
   r   r5   )r   r   r   r5   ©rB   r5   r    r
   r   r   )rB   r5   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   r+   Ú__annotations__r    r3   r:   r>   r.   r@   rV   r<   r   r   r   r   G   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_allr4   r5   r    r
   r   c                ój   — d|v rd}t          |¦  «        ‚|                     dd¦  «        }d|› d|› d�S )Nú"z.Windows filenames cannot contain double quotesú%z"%"zstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ")Ú
ValueErrorÚreplacer8   s       r   r:   zWindowsViewer.get_command˜   sW   € Ø�$ˆ;ˆ;ØBˆCÝ˜S‘/”/Ð!Ø�|Š|˜C Ñ'Ô'ˆð" Tð "ð "àð"ð "ð "ð	
r   rB   r   c                óÄ   — t           j                             |¦  «        st          ‚t          j        dk    rt          j        |¦  «         |                      |¦  «         dS )rD   Úwin32r   )rE   rB   rF   rG   rO   ÚplatformÚ	startfilerV   rI   s      r   r@   zWindowsViewer.show_file£   sV   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#ÝŒ<˜7Ò"Ð"ÝŒL˜ÑÔÐØ×%Ò% dÑ+Ô+Ð+Øˆqr   NrX   rY   ©rZ   r[   r\   r]   r+   r    r:   r@   r<   r   r   r`   r`   ’   sT   € € € € € ØXÐXà€FØ!"°Ð5Ð5€Gð	
ð 	
ð 	
ð 	
ð	ð 	ð 	ð 	ð 	ð 	r   r`   rj   c                  ó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   Tra   r4   r5   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/   r4   r    Úcommands       r   r:   zMacViewer.get_command¹   s:   € ð (ˆØN�gÐNÐN¥ d¡¤ÐNÐN½uÀT¹{¼{ÐNÐNÐNˆØˆr   rB   r   c                ó¬   — t           j                             |¦  «        st          ‚t	          j        ddd|g¦  «         |                      |¦  «         dS )rD   Úopenz-azPreview.appr   )rE   rB   rF   rG   r   ÚcallrV   rI   s      r   r@   zMacViewer.show_fileÀ   sR   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#ÝŒ˜  }°dÐ;Ñ<Ô<Ð<Ø×%Ò% dÑ+Ô+Ð+Øˆqr   NrX   rY   rm   r<   r   r   ro   ro   ³   sT   € € € € € Ø<Ð<à€FØ!"°Ð5Ð5€Gðð ð ð ðð ð ð ð ð r   ro   Údarwinc                  óF   — e Zd ZdZdddœZej        dd„¦   «         Zdd„ZdS )Ú
UnixViewerr(   r   Tra   r4   r5   r    r
   r   útuple[str, str]c                ó   — d S ©Nr<   )r/   r4   r    s      r   Úget_command_exzUnixViewer.get_command_exÓ   s   € àˆr   c                óR   —  | j         |fi |¤Žd         }|› dt          |¦  «        › �S )Nr   rr   )r~   r   rs   s       r   r:   zUnixViewer.get_command×   s;   € Ø%�$Ô% dÐ6Ð6¨gÐ6Ð6°qÔ9ˆØÐ)Ð)�E $™KœKÐ)Ð)Ð)r   N©r4   r5   r    r
   r   r{   rX   )	rZ   r[   r\   r+   r    ÚabcÚabstractmethodr~   r:   r<   r   r   rz   rz   Ï   s\   € € € € € Ø€FØ!"°Ð5Ð5€GàÔðð ð ñ Ôðð*ð *ð *ð *ð *ð *r   rz   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )Ú	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    r4   r5   r    r
   r   r{   c                ó   — dx}}||fS )Núxdg-openr<   )r/   r4   r    rt   rQ   s        r   r~   zXDGViewer.get_command_exá   s   € Ø)Ð)ˆ�*Ø˜
Ð"Ð"r   rB   r   c                ó~   — t           j                             |¦  «        st          ‚t	          j        d|g¦  «         dS )rD   r†   r   ©rE   rB   rF   rG   r   rT   rI   s      r   r@   zXDGViewer.show_fileå   s;   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#ÝÔ˜* dÐ+Ñ,Ô,Ð,Øˆqr   Nr€   rY   ©rZ   r[   r\   r]   r~   r@   r<   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.
    Nr4   r5   r   r   r    r
   r   r{   c                ó@   — dx}}|r|dt          |¦  «        › �z  }||fS )NÚdisplayz -title r   ©r/   r4   r   r    rt   rQ   s         r   r~   zDisplayViewer.get_command_exõ   s:   € ð  )Ð(ˆ�*Øð 	1ØÐ0¥%¨¡,¤,Ð0Ð0Ñ0ˆGØ˜
Ð"Ð"r   rB   r   c                óæ   — t           j                             |¦  «        st          ‚dg}|                     d¦  «        }|r|d|gz  }|                     |¦  «         t          j        |¦  «         dS )rD   r�   r   z-titler   ©rE   rB   rF   rG   Úgetr   r   rT   ©r/   rB   r    Úargsr   s        r   r@   zDisplayViewer.show_fileý   sw   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#Øˆ{ˆØ—’˜GÑ$Ô$ˆØð 	&Ø�X˜uÐ%Ñ%ˆDØ�Š�DÑÔÐåÔ˜ÑÔÐØˆqr   r}   ©r4   r5   r   r   r    r
   r   r{   rY   r‰   r<   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.r4   r5   r    r
   r   r{   c                ó   — d}d}||fS )NÚgmz
gm displayr<   ©r/   r4   r    rQ   rt   s        r   r~   zGmDisplayViewer.get_command_ex  s   € Øˆ
ØˆØ˜
Ð"Ð"r   rB   r   c                ó€   — t           j                             |¦  «        st          ‚t	          j        dd|g¦  «         dS )rD   r˜   r�   r   rˆ   rI   s      r   r@   zGmDisplayViewer.show_file  s=   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#ÝÔ˜$ 	¨4Ð0Ñ1Ô1Ð1Øˆqr   Nr€   rY   r‰   r<   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.r4   r5   r    r
   r   r{   c                ó   — d}d}||fS )NÚeogzeog -nr<   r™   s        r   r~   zEogViewer.get_command_ex"  s   € Øˆ
ØˆØ˜
Ð"Ð"r   rB   r   c                ó€   — t           j                             |¦  «        st          ‚t	          j        dd|g¦  «         dS )rD   rž   z-nr   rˆ   rI   s      r   r@   zEogViewer.show_file'  s=   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#ÝÔ˜%  tÐ,Ñ-Ô-Ð-Øˆqr   Nr€   rY   r‰   r<   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.
    Nr4   r5   r   r   r    r
   r   r{   c                ó@   — dx}}|r|dt          |¦  «        › �z  }||fS )NÚxvz -name r   rŽ   s         r   r~   zXVViewer.get_command_ex7  s:   € ð
  $Ð#ˆ�*Øð 	0ØÐ/¥ u¡¤Ð/Ð/Ñ/ˆGØ˜
Ð"Ð"r   rB   r   c                óæ   — t           j                             |¦  «        st          ‚dg}|                     d¦  «        }|r|d|gz  }|                     |¦  «         t          j        |¦  «         dS )rD   r£   r   z-namer   r�   r’   s        r   r@   zXVViewer.show_fileA  sw   € õ Œw�~Š~˜dÑ#Ô#ð 	$Ý#Ð#ØˆvˆØ—’˜GÑ$Ô$ˆØð 	%Ø�W˜eÐ$Ñ$ˆDØ�Š�DÑÔÐåÔ˜ÑÔÐØˆqr   r}   r”   rY   r‰   r<   r   r   r¡   r¡   1  sP   € € € € € ðð ð .2ð#ð #ð #ð #ð #ðð ð ð ð ð r   r¡   )rj   rx   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_displayrA   s      r   r.   zIPythonViewer.show_imagea  s   € Ý˜ÑÔÐØˆqr   NrW   )rZ   r[   r\   r]   r.   r<   r   r   r¦   r¦   ^  s.   € € € € € Ø+Ð+ðð ð ð ð ð r   r¦   )r�   Ú__main__é   z.Syntax: python3 ImageShow.py imagefile [title])r   )r   r   r   r   r   r   r}   )r   r   r   r   r    r
   r   r!   )+Ú
__future__r   Ú__lazy_modules__r�   rE   rR   r   rO   r   r   Ú r	   ÚTYPE_CHECKINGÚtypingr
   r   r^   r   r#   r   r`   rk   ro   ÚABCrz   r„   r‹   r–   rœ   r¡   rS   r¦   ÚIPython.displayr�   r¨   ÚImportErrorrZ   ÚlenÚargvÚprintÚexitrv   Úimr<   r   r   ú<module>r¸      sÊ  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à˜\Ð*Ð à 
€
€
€
Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð à€Øð ØÐÐÐÐÐà€Ð Ð Ð Ñ ð#ð #ð #ð #ð #ð,ð ð ð ð ðEð Eð Eð Eð Eñ Eô Eð EðVð ð ð ð �Fñ ô ð ð: „<�7ÒÐØ€Hˆ]ÑÔÐðð ð ð ð �ñ ô ð ð0 „<�8ÒÐØ€HˆYÑÔÐð
*ð 
*ð 
*ð 
*ð 
*�”˜&ñ 
*ô 
*ð 
*ðð ð ð ð �
ñ ô ð ð&ð ð ð ð �Jñ ô ð ð<ð ð ð ð �jñ ô ð ð$ð ð ð ð �
ñ ô ð ð$ð ð ð ð ˆzñ ô ð ð@ „<Ð*Ð*Ð*Ø€v„|�JÑÔð Øˆ�ÑÔÐØ€v„|�IÑÔð  Øˆ�ÑÔÐØ€v„|�DÑÔð "Øˆ�Ñ!Ô!Ð!Ø€v„|�EÑÔð Øˆ�ÑÔÐØ€v„|�DÑÔð Øˆ�ÑÔÐðð ð ð ð �Fñ ô ð ðØ:Ð:Ð:Ð:Ð:Ð:ð €Hˆ]ÑÔÐÐøð ð 	ð 	ð 	Ø€Dð	øøøð ˆzÒÐØ
€sˆ3Œ8�}„}�qÒÐØˆÐ>Ñ?Ô?Ð?ØˆŒ‰
Œ
ˆ
à	ˆŒ�C”H˜Q”KÑ	 Ô	 ð ' BØˆˆdˆd�2Ð%˜œ   œÐ%Ð%Ð%Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 'ð Ðs$   ÆF' Æ'F/Æ.F/È H.È.H2È5H2