Ë
    6Š·jM(  ã            	      ó(  — U 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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j8                  d «      r ee«        ej8                  d!«      r ee«        ej8                  d"«      r ee«        ej8                  d#«      r ee«        ej8                  d$«      r ee«        G d%„ d&e«      Z	 d d'lmZ   ee«       e"d(k(  rs e#ejH                  «      d)k  r e%d*«        ejL                  «         ejN                  ejH                  d   «      5 Z( e% ee(gejH                  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é   )ÚImagezlist[Viewer]Ú_viewersc                ó´   — t        | t        «      rt        | t        «      r | «       } |dkD  rt        j                  | «       yt        j                  d| «       y)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)ÚviewerÚorders     úC/root/workspace/.venv/lib/python3.12/site-packages/PIL/ImageShow.pyÚregisterr      s?   € ô �&œ$Ô¤J¨v´vÔ$>Ù“ˆØˆq‚yÜ�‰˜Õä�‰˜˜6Õ"ó    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   3   s3   € ô ò ˆØˆ6�;‰;�uÑ5 EÐ5¨WÓ5Ùðð r   c                  ój   — 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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.showG   sk   € ð �J‰J˜-Ñ'Ø—‘˜uÒ$¨¯©°~Ñ)Eä×$Ñ$ U§Z¡ZÓ0ˆDØ�z‰z˜TÒ!ØŸ™ 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_format^   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_commandb   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_imagej   s(   € àˆu�{‰{ÑI $§/¡/°%Ó"8ÐI¸D¿L¹LÑIÐIr   c                óF   —  | j                   | j                  |«      fi |¤ŽS )zDisplay the given image.)Ú	show_filer5   ©r&   r   r   s      r   r%   zViewer.show_imagen   s!   € àˆt�~‰~˜dŸo™o¨eÓ4Ñ@¸Ñ@Ð@r   c                óš   — t         j                  j                  |«      st        ‚t        j                   | j
                  |fi |¤Ž«       y)ú%
        Display given file.
        r   )ÚosÚpathÚexistsÚFileNotFoundErrorÚsystemr1   ©r&   r<   r   s      r   r7   zViewer.show_filer   s<   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Ü
�	‰	Ð"�$×"Ñ" 4Ñ3¨7Ñ3Ô4Ør   c                óÚ   — t        t        dd«      xr t        t        d«      }| xr t        j                  xs t	        j
                  d«      }|rt        j                  |dd|g«       y y )NÚfrozenFÚ_MEIPASSÚpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1]))ÚgetattrÚsysÚhasattrÚ
executableÚshutilÚwhichÚ
subprocessÚPopen)r&   r<   ÚpyinstallerrH   s       r   Ú_remove_path_after_delayzViewer._remove_path_after_delay{   sa   € Üœc 8¨UÓ3ÒP¼ÄÀZÓ8PˆØ%�oÒ8¬#¯.©.ÒT¼V¿\¹\È)Ó=Tˆ
áÜ×ÑàØØRØð	õð r   ©r   úImage.Imager   r   ÚreturnÚint)r   rP   rQ   r(   ©r/   Ústrr   r   rQ   rT   )r   rP   rQ   rT   ©r<   rT   r   r   rQ   rR   )r<   rT   rQ   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   Ú__annotations__r   r+   r1   r5   r%   r7   rN   r3   r   r   r   r   B   sF   … Ù!ó1ð$ €FˆJÓØ/Ø €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                óZ   — d|v rd}t        |«      ‚|j                  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Úreplacer.   s       r   r1   zWindowsViewer.get_command“   sE   € Ø�$‰;ØBˆCÜ˜S“/Ð!Ø�|‰|˜C Ó'ˆà$ T Fð +à˜˜qð"ð	
r   c                óÀ   — t         j                  j                  |«      st        ‚t        j
                  dk(  rt        j                  |«       | j                  |«       y)r:   Úwin32r   )r;   r<   r=   r>   rF   ÚplatformÚ	startfilerN   r@   s      r   r7   zWindowsViewer.show_filež   sC   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Ü�<‰<˜7Ò"Ü�L‰L˜ÔØ×%Ñ% dÔ+Ør   NrS   rU   ©rW   rX   rY   rZ   r"   r   r1   r7   r3   r   r   r]   r]   �   s   „ ÙXà€FØ!"°Ñ5€Gó	
ô	r   r]   rg   c                  ó.   — 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   Tr^   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   r1   zMacViewer.get_command´   s1   € ð (ˆØ�g�Y˜a¤ d£˜}Ð,>¼uÀT»{¸mÈ2ÐNˆØˆr   c                ó¢   — t         j                  j                  |«      st        ‚t	        j
                  ddd|g«       | j                  |«       y)r:   Úopenz-azPreview.appr   )r;   r<   r=   r>   rK   ÚcallrN   r@   s      r   r7   zMacViewer.show_file»   s@   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Ü�‰˜  }°dÐ;Ô<Ø×%Ñ% dÔ+Ør   NrS   rU   rj   r3   r   r   rl   rl   ®   s   „ Ù<à€FØ!"°Ñ5€Góôr   rl   Údarwinc                  óH   — e Zd ZdZdddœZej                  dd„«       Zd	d„Zy)
Ú
UnixViewerr   r   Tr^   c                 ó   — y ©Nr3   )r&   r/   r   s      r   Úget_command_exzUnixViewer.get_command_exÎ   s   € àr   c                óN   —  | j                   |fi |¤Žd   }|› dt        |«      › �S )Nr   ro   )rz   r   rp   s       r   r1   zUnixViewer.get_commandÒ   s3   € Ø%�$×%Ñ% dÑ6¨gÑ6°qÑ9ˆØ�˜!œE $›K˜=Ð)Ð)r   N©r/   rT   r   r   rQ   útuple[str, str]rS   )	rW   rX   rY   r"   r   ÚabcÚabstractmethodrz   r1   r3   r   r   rw   rw   Ê   s.   „ Ø€FØ!"°Ñ5€Gà×Ñòó ðô*r   rw   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-openr3   )r&   r/   r   rq   rH   s        r   rz   zXDGViewer.get_command_exÜ   s   € Ø)Ð)ˆ�*Ø˜
Ð"Ð"r   c                ó|   — t         j                  j                  |«      st        ‚t	        j
                  d|g«       y)r:   rƒ   r   ©r;   r<   r=   r>   rK   rL   r@   s      r   r7   zXDGViewer.show_fileà   s0   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Ü×Ñ˜* dÐ+Ô,Ør   Nr|   rU   ©rW   rX   rY   rZ   rz   r7   r3   r   r   r�   r�   ×   s   „ ñó#ôr   r�   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   rq   rH   s         r   rz   zDisplayViewer.get_command_exð   s1   € ð  )Ð(ˆ�*ÙØ˜¤%¨£, Ð0Ñ0ˆGØ˜
Ð"Ð"r   c                óÔ   — t         j                  j                  |«      st        ‚dg}|j	                  d«      }|r|d|gz  }|j                  |«       t        j                  |«       y)r:   rŠ   r   z-titler   ©r;   r<   r=   r>   Úgetr   rK   rL   ©r&   r<   r   Úargsr   s        r   r7   zDisplayViewer.show_fileø   s^   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Øˆ{ˆØ—‘˜GÓ$ˆÙØ�X˜uÐ%Ñ%ˆDØ�‰�DÔä×Ñ˜ÔØr   ry   ©r/   rT   r   r(   r   r   rQ   r}   rU   r†   r3   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 displayr3   ©r&   r/   r   rH   rq   s        r   rz   zGmDisplayViewer.get_command_ex  s   € Øˆ
ØˆØ˜
Ð"Ð"r   c                ó~   — t         j                  j                  |«      st        ‚t	        j
                  dd|g«       y)r:   r•   rŠ   r   r…   r@   s      r   r7   zGmDisplayViewer.show_file  s2   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Ü×Ñ˜$ 	¨4Ð0Ô1Ør   Nr|   rU   r†   r3   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 -nr3   r–   s        r   rz   zEogViewer.get_command_ex  s   € Øˆ
ØˆØ˜
Ð"Ð"r   c                ó~   — t         j                  j                  |«      st        ‚t	        j
                  dd|g«       y)r:   r›   z-nr   r…   r@   s      r   r7   zEogViewer.show_file"  s2   € ô �w‰w�~‰~˜dÔ#Ü#Ð#Ü×Ñ˜%  tÐ,Ô-Ør   Nr|   rU   r†   r3   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   rz   zXVViewer.get_command_ex2  s1   € ð
  $Ð#ˆ�*ÙØ˜¤ u£ Ð/Ñ/ˆGØ˜
Ð"Ð"r   c                óÔ   — t         j                  j                  |«      st        ‚dg}|j	                  d«      }|r|d|gz  }|j                  |«       t        j                  |«       y)r:   r    r   z-namer   r�   r�   s        r   r7   zXVViewer.show_file<  s^   € ô �w‰w�~‰~˜dÔ#Ü#Ð#ØˆvˆØ—‘˜GÓ$ˆÙØ�W˜eÐ$Ñ$ˆDØ�‰�DÔä×Ñ˜ÔØr   ry   r‘   rU   r†   r3   r   r   rž   rž   ,  s6   „ ñð .2ð#Øð#Ø *ð#Ø>Að#à	ó#ôr   rž   )rg   ru   rƒ   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_displayr8   s      r   r%   zIPythonViewer.show_image\  s   € Ü˜ÔØr   NrO   )rW   rX   rY   rZ   r%   r3   r   r   r£   r£   Y  s
   „ Ù+ôr   r£   )rŠ   Ú__main__é   z.Syntax: python3 ImageShow.py imagefile [title])r   )r   ztype[Viewer] | Viewerr   rR   rQ   rV   ry   )r   rP   r   r(   r   r   rQ   Úbool))Ú
__future__r   r~   r;   rI   rK   rF   Úshlexr   Útypingr   Ú r   r	   r[   r   r   r   r]   rh   rl   ÚABCrw   r�   rˆ   r“   r™   rž   rJ   r£   ÚIPython.displayrŠ   r¥   ÚImportErrorrW   ÚlenÚargvÚprintÚexitrs   Úimr3   r   r   ú<module>rµ      s  ðö #ã 
Û 	Û Û Û 
Ý Ý å à€ˆ,Ó ô#ô,÷Eñ EôV�Fô ð: ‡<�<�7ÒÙˆ]Ôô�ô ð0 ‡<�<�8ÒÙˆYÔô
*�—‘˜&ô 
*ô�
ô ô&�Jô ô<�jô ô$�
ô ô$ˆzô ð@ ‡<�<Ð*Ñ*Ø€v‡|�|�JÔÙ�ÔØ€v‡|�|�IÔÙ�ÔØ€v‡|�|�DÔÙ�Ô!Ø€v‡|�|�EÔÙ�ÔØ€v‡|�|�DÔÙ�Ôô�Fô ðÝ:ñ ˆ]Ôð ˆzÒÙ
ˆ3�8‰8ƒ}�qÒÙÐ>Ô?Øˆ�‰Œ
à	ˆ�‰�C—H‘H˜Q‘KÓ	 ð ' BÙ‰d�2Ð%˜Ÿ™  ˜Ò%Ô&÷'ð 'ð øð ò 	Ùð	ú÷'ð 'ús   Å6G= ÇHÇ=HÈHÈH