)Ej) jUddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z gZ ded<d8d9dZd:d;dZGddZGddeZejdkr eeGddeZejdkr eeGd d!ejeZGd"d#eZGd$d%eZGd&d'eZGd(d)eZGd*d+eZejd,vrejd-r eeejd.r eeejd/r eeejd0r eeejd1r eeGd2d3eZ dd4lmZ een #e!$rYnwxYwe"d5kre#ej$d6kre%d7ej&e j'ej$d5Z(e%ee(gej$d6dRddddS#1swxYwYdSdS)<) annotationsNquote)Any)Imagez list[Viewer]_viewersviewertype[Viewer] | ViewerorderintreturnNonect|trt|tr |}|dkrt|dStd|dS)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. rN) isinstancetype issubclassViewerr appendinsert)r r s ?C:\PYTHON\MyICR_Suite\python\Lib\site-packages\PIL/ImageShow.pyregisterrsm&$Jvv$>$> qyy6"""""image Image.Imagetitle str | Noneoptionsrboolc @tD]}|j|fd|i|rdSdS)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. rTF)r show)rrrr s rr!r!3sE 6;u 5 5E 5W 5 5 44  5rcleZdZUdZddZd Zd ed < iZd ed< dd ZddZ ddZ ddZ ddZ ddZ d S)rzBase class for viewers.rrrrrr c |jdvsM|jdkr |jdvs9tj|j}|j|kr||}|j|fi|S)z The main function for displaying an image. Converts the given image to the target format and displays it. )1RGBAPNG)zI;16LA)modeformatr getmodebaseconvert show_image)selfrrbases rr!z Viewer.showGst J- ' ' u$$~)E)E$UZ00DzT!! d++tu00000rNrr)zdict[str, Any]c|jS)z3Return format name, or ``None`` to save as PGM/PPM.)r)r-rs r get_formatzViewer.get_format^s {rfilestrc $d}t|)zj Returns the command used to display the file. Not implemented in the base class. zunavailable in base viewer)NotImplementedErrorr-r2rmsgs r get_commandzViewer.get_commandbs +!#&&&rcP|jdd||i|jS)z+Save to temporary file and return filename.r))_dumpr1rr0s r save_imagezViewer.save_imagejs-u{II$//%"8"8IDLIIIrc D|j||fi|S)zDisplay the given image.) show_filer<r-rrs rr,zViewer.show_imagens(t~dooe44@@@@@rpathc tj|sttj|j|fi|dS)% Display given file. r)osr@existsFileNotFoundErrorsystemr8r-r@rs rr>zViewer.show_filersKw~~d## $# # "$"433733444qrrcttddottd}| r tjpt jd}|rt j|dd|gdSdS)NfrozenF_MEIPASSpython3z-czrUr:rrrrBs!!1111$F/ G    7''''JJJJAAAA      rrc0eZdZdZdZdddZdd ZddZdS) WindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r&rTcompress_levelsave_allr2r3rrrc jd|vrd}t||dd}d|d|dS)N"z.Windows filenames cannot contain double quotes%z"%"zstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ") ValueErrorreplacer6s rr8zWindowsViewer.get_commandsW $;;BCS// !||C'' "T " " " " " rr@r c tj|sttjdkrtj|||dS)rBwin32r)rCr@rDrErMplatform startfilerUrGs rr>zWindowsViewer.show_filesVw~~d## $# # <7 " " L    %%d+++qrNrWrXrYrZr[r\r)rr8r>r:rrr_r_sTXX F!"55G           rr_ric0eZdZdZdZdddZdd ZddZdS) MacViewerz2The default viewer on macOS using ``Preview.app``.r&rTr`r2r3rrrc Vd}d|dt|dt|d}|S)Nzopen -a Preview.app( z; sleep 20; rm -f z)&rr-r2rcommands rr8zMacViewer.get_commands:(NgNNd NNuT{{NNNrr@r c tj|stt jddd|g||dS)rBopenz-az Preview.appr)rCr@rDrErRcallrUrGs rr>zMacViewer.show_filesRw~~d## $# #}d;<<< %%d+++qrNrWrXrlr:rrrnrnsT<< F!"55GrrndarwincFeZdZdZdddZejdd Zdd Zd S) UnixViewerr&rTr`r2r3rrrtuple[str, str]c dSNr:)r-r2rs rget_command_exzUnixViewer.get_command_exs rc R|j|fi|d}|dt|S)Nrrq)r}rrrs rr8zUnixViewer.get_commands;%$%d66g66q9))E$KK)))rNr2r3rrrrzrW) rYrZr[r)rabcabstractmethodr}r8r:rrryrys\ F!"55G    ******rryc"eZdZdZd dZdd Zd S) XDGViewerz3 The freedesktop.org ``xdg-open`` command. r2r3rrrrzc dx}}||fS)Nxdg-openr:)r-r2rrsrOs rr}zXDGViewer.get_command_exs))* ""rr@r c ~tj|stt jd|gdS)rBrrrCr@rDrErRrSrGs rr>zXDGViewer.show_files;w~~d## $# #*d+,,,qrNrrXrYrZr[r\r}r>r:rrrrsF####rrc&eZdZdZ ddd ZddZdS) DisplayViewerz` The ImageMagick ``display`` command. This viewer supports the ``title`` parameter. Nr2r3rrrrrrzc @dx}}|r|dt|z }||fS)Ndisplayz -title rr-r2rrrsrOs rr}zDisplayViewer.get_command_exs: )(*  1 0%,,00 0G ""rr@r c tj|stdg}|d}|r|d|gz }||t j|dS)rBrrz-titlerrCr@rDrEgetrrRrSr-r@rargsrs rr>zDisplayViewer.show_filesww~~d## $# #{ G$$  & Xu% %D Dqrr|r2r3rrrrrrzrXrr:rrrrsP .2#####      rrc"eZdZdZd dZdd Zd S)GmDisplayViewerz*The GraphicsMagick ``gm display`` command.r2r3rrrrzc d}d}||fS)Ngmz gm displayr:r-r2rrOrss rr}zGmDisplayViewer.get_command_ex s  ""rr@r c tj|stt jdd|gdS)rBrrrrrGs rr>zGmDisplayViewer.show_files=w~~d## $# #$ 40111qrNrrXrr:rrrrsB44#### rrc"eZdZdZd dZdd Zd S) EogViewerz'The GNOME Image Viewer ``eog`` command.r2r3rrrrzc d}d}||fS)Neogzeog -nr:rs rr}zEogViewer.get_command_exs  ""rr@r c tj|stt jdd|gdS)rBrz-nrrrGs rr>zEogViewer.show_file"s=w~~d## $# #%t,---qrNrrXrr:rrrrsB11#### rrc&eZdZdZ ddd ZddZdS)XVViewerzX The X Viewer ``xv`` command. This viewer supports the ``title`` parameter. Nr2r3rrrrrrzc @dx}}|r|dt|z }||fS)Nxvz -name rrs rr}zXVViewer.get_command_ex2s: $#*  0 /u// /G ""rr@r c tj|stdg}|d}|r|d|gz }||t j|dS)rBrrz-namerrrs rr>zXVViewer.show_file<sww~~d## $# #v G$$  % We$ $D Dqrr|rrXrr:rrrr,sP .2#####      rr)rirwrrrrrceZdZdZd dZd S) IPythonViewerz!The viewer for IPython frontends.rrrrrr c $t|dS)Nr)ipython_displayr?s rr,zIPythonViewer.show_image\sqrNrV)rYrZr[r\r,r:rrrrYs.++rr)r__main__z.Syntax: python3 ImageShow.py imagefile [title])r)r r r r rrr|)rrrrrrrr)) __future__rrrCrPrRrMshlexrtypingrrr r]rr!rr_rjrnABCryrrrrrrQrIPython.displayrr ImportErrorrYlenargvprintexitruimr:rrrs#""""""  #####,     EEEEEEEEVF:<7 H]0<8 HY * * * * *& * * * &J<j$ $z@<***v|Jv|I v|D"!!!v|Ev|DF:::::: H]   D  z s38}}q >??? CHQK 'B dd2% %%%&&&'''''''''''''''''' s$ FF'&F'9 H&&H*-H*