+
     iz'  c            	      s   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^RIHt . tR)R R lltR*R R	 llt ! R
 R4      t ! R R]4      t]P$                  R8X  d	   ]! ]4        ! R R]4      t]P$                  R8X  d	   ]! ]4        ! R R]P(                  ]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]P$                  R+9  d   ]P6                  ! R4      '       d	   ]! ]4       ]P6                  ! R4      '       d	   ]! ]4       ]P6                  ! R 4      '       d	   ]! ]4       ]P6                  ! R!4      '       d	   ]! ]4       ]P6                  ! R"4      '       d	   ]! ]4        ! R# R$]4      t ^ R%IHt ]! ]4       ]!R&8X  d   ]"! ]PF                  4      ^8  d   ]$! R'4       ]PJ                  ! 4        ]PL                  ! ]PF                  ^,          4      ;_uu_ 4       t']$! ]! ]'.]PF                  R(,          O5!  4       RRR4       R# R#   ]  d     Li ; i  + '       g   i     R# ; i),    )annotationsNquote)Any)Imagec               $    V ^8  d   QhRRRRRR/# )   viewerztype[Viewer] | ViewerorderintreturnZNone format   "4/usr/lib64/python3.14/site-packages/PIL/ImageShow.py__annotate__r      s"     # #* #3 #t #    c                s    \        V \        4      '       d   \        V \        4      '       d   V ! 4       p V^ 8  d   \        P                  V 4       R# \        P                  ^ V 4       R# )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.
N)Z
isinstanceZtypeZ
issubclassViewer_viewersappendZinsert)r   r	      &&r   registerr      sE     &$Jvv$>$>qy6"r   c               (    V ^8  d   QhRRRRRRRR/# )	r   imageImage.Imagetitle
str | Noneoptionsr   r   Zboolr   r   r   r   r   r   3   s(       J # $ r   c                s\    \          F!  pVP                  ! V 3RV/VB '       g   K    R# 	  R# )z
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      &&, r   r   r   3   s/     ;;u5E5W55  r   c                  s    ] tR t^Bt$ RtR R ltRtR]R&    / tR]R&    R	 R
 lt	R R lt
R R ltR R ltR R ltRtR# )r   zBase class for viewers.c               r   r   r   r   r   r   r   r
   r   r   r   r   r   Viewer.__annotate__G   s!     1 1+ 1# 1# 1r   c                s   VP                   R9   ge   V P                  R8X  d   VP                   R9   gC   \        P                  ! VP                   4      pVP                   V8w  d   VP	                  V4      pV P
                  ! V3/ VB # )zk
The main function for displaying an image.
Converts the given image to the target format and displays it.
PNG)Z1ZRGBA)zI;16ZLA)Zmoder   r   ZgetmodebaseZconvert
show_image)selfr   r   Zbaser   r   r   ZViewer.showG   si     JJ-'u$~)E$$UZZ0DzzT!d+u000r   Nr   r   zdict[str, Any]r   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   r   r   r   r   r!   ^   s       
 r   c                s    V P                   # )z3Return format name, or ``None`` to save as PGM/PPM.r   r$   r   r   r   
get_formatZViewer.get_format^   s    {{r   c               $    V ^8  d   QhRRRRRR/# r   filestrr   r   r   r   r   r   r   r   r!   b   s!     ' ' ' ' 'r   c                s    Rp\        V4      h)zR
Returns the command used to display the file.
Not implemented in the base class.
zunavailable in base viewer)ZNotImplementedError)r$   r*   r   Zmsgr   r   get_commandZViewer.get_commandb   s    
 +!#&&r   c               r%   )r   r   r   r   r+   r   r   r   r   r   r!   j   s     J J J Jr   c                s\    VP                   ! RRV P                  V4      /V P                  B # )z+Save to temporary file and return filename.r   r   )Z_dumpr'   r   r&   r   r   
save_imageZViewer.save_imagej   s&    {{I$//%"8IDLLIIr   c               r   r    r   r   r   r   r   r!   n   s&     A A A A Ar   c                sF    V P                   ! V P                  V4      3/ VB # )zDisplay the given image.)	show_filer-   r$   r   r      &&,r   r#   ZViewer.show_imagen   s    ~~dooe4@@@r   c               r   r   pathr+   r   r   r   r
   r   r   r   r   r   r!   r   !      c c c r   c                s    \         P                  P                  V4      '       g   \        h\         P                  ! V P
                  ! V3/ VB 4       ^# )
Display given file.
)osr2   existsFileNotFoundErrorZsystemr,   r$   r2   r   r0   r   r.   ZViewer.show_filer   s<     ww~~d####
		$""43734r   r   )__name__
__module____qualname____firstlineno____doc__r   r   Z__annotations__r   r'   r,   r-   r#   r.   __static_attributes__r   r   r   r   r   B   sF    !1$ FJ/ G^ 7'JA r   r   c                  sB    ] tR t^tRtRtR^RR/tR R ltR R	 ltR
t	R# )WindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r"   compress_levelsave_allTc               r(   r)   r   r   r   r   r   WindowsViewer.__annotate__   s!     
 
 
 
 
r   c                	s    R V RV R2# )zstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f "Z"r   r$   r*   r   r0   r   r,   ZWindowsViewer.get_command   s    $TF +q"	
r   c               r   r1   r   r   r   r   r   rB      s!      c c c r   c                s    \         P                  P                  V4      '       g   \        h\        P
                  ! V P                  ! V3/ VB R\        \        R4      R7       ^# )r4   TZCREATE_NO_WINDOW)ZshellZcreationflags)r5   r2   r6   r7   
subprocessPopenr,   getattrr8   r0   r   r.   ZWindowsViewer.show_file   sQ     ww~~d####T-W-!*.@A	

 r   r   N
r9   r:   r;   r<   r=   r   r   r,   r.   r>   r   r   r   r?   r?      s'    XFJ5G
 r   r?   win32c                  sB    ] tR t^tRtRtR^RR/tR R ltR R	 ltR
t	R# )	MacViewerz2The default viewer on macOS using ``Preview.app``.r"   r@   rA   Tc               r(   r)   r   r   r   r   r   MacViewer.__annotate__   s!         r   c                	sF    R pRV R\        V4       R\        V4       R2pV# )zopen -a Preview.appZ( z; sleep 20; rm -f z)&r   r$   r*   r   commandr   r   r,   ZMacViewer.get_command   s1     (gYad},>uT{m2Nr   c               r   r1   r   r   r   r   r   rJ      s!      c c c r   c                s   \         P                  P                  V4      '       g   \        h\        P
                  ! RRRV.4       \        \        RR4      ;'       d    \        \        R4      pV'       * ;'       d    \        P                  ;'       g    \        P                  ! R4      pV'       d   \        P                  ! VRR	V.4       ^# )
r4   openz-azPreview.appZfrozenFZ_MEIPASSZpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1]))r5   r2   r6   r7   rD   ZcallrF   sysZhasattr
executableshutilwhichrE   )r$   r2   r   ZpyinstallerrP      &&,  r   r.   ZMacViewer.show_file   s     ww~~d####}d;<c8U3PPZ8P%o88#..TTV\\)=T
R	 r   r   NrG   r   r   r   rI   rI      s'    <FJ5G r   rI   darwinc                  s\    ] tR t^tRtR^RR/t]P                  R R l4       tR R lt	R	t
R
# )
UnixViewerr"   r@   rA   Tc               r   r   r*   r+   r   r   r   tuple[str, str]r   r   r   r   r   UnixViewer.__annotate__   s!      3 3 ? r   c                	s    R # Nr   rC   r0   r   get_command_exZUnixViewer.get_command_ex   s    r   c               r(   r)   r   r   r   r   r   rX      s!     * * * * *r   c                	sV    V P                   ! V3/ VB ^ ,          pV R\        V4       2# )r    rK   )rZ   r   rL   r   r   r,   ZUnixViewer.get_command   s1    %%d6g6q9!E$K=))r   r   N)r9   r:   r;   r<   r   r   abcZabstractmethodrZ   r,   r>   r   r   r   rU   rU      s7    FJ5G * *r   rU   c                  s2    ] tR t^tRtR R ltR R ltRtR# )	XDGViewerz+
The freedesktop.org ``xdg-open`` command.
c               r   rV   r   r   r   r   r   XDGViewer.__annotate__   s!     # #3 #3 #? #r   c                	s    R ;r4W43# )xdg-openr   )r$   r*   r   rM   rP   rS   r   rZ   ZXDGViewer.get_command_ex   s    ))""r   c               r   r1   r   r   r   r   r   r]      r3   r   c                s    \         P                  P                  V4      '       g   \        h\        P
                  ! RV.4       ^# )r4   r^   r5   r2   r6   r7   rD   rE   r8   r0   r   r.   ZXDGViewer.show_file   s3     ww~~d####*d+,r   r   Nr9   r:   r;   r<   r=   rZ   r.   r>   r   r   r   r\   r\      s    # r   r\   c                  s6    ] tR t^tRtRR R lltR R ltRtR# )	DisplayViewerzT
The ImageMagick ``display`` command.
This viewer supports the ``title`` parameter.
Nc               r   	r   r*   r+   r   r   r   r   r   rW   r   r   r   r   r   DisplayViewer.__annotate__   s,     # ## *#>A#	#r   c                	H    R ;rEV'       d   VR\        V4       2,          pWE3# )displayz -title r   r$   r*   r   r   rM   rP      &&&,  r   rZ   ZDisplayViewer.get_command_ex   s-      )(%,00G""r   c               r   r1   r   r   r   r   r   rc      !      c c c r   c                    \         P                  P                  V4      '       g   \        hR.pVP	                  R4      pV'       d   VRV.,          pVP                  V4       \        P                  ! V4       ^# )r4   re   r   z-titler5   r2   r6   r7   Zgetr   rD   rE   r$   r2   r   Zargsr   rS   r   r.   ZDisplayViewer.show_file   sa     ww~~d####{G$Xu%%DDr   r   rY   r`   r   r   r   ra   ra      s    
# r   ra   c                  2    ] tR tRtRtR R ltR R ltRtR# )	GmDisplayVieweri  z*The GraphicsMagick ``gm display`` command.c               r   rV   r   r   r   r   r   GmDisplayViewer.__annotate__  !     # #3 #3 #? #r   c                	    R pRpWC3# )gmz
gm displayr   r$   r*   r   rP   rM   rS   r   rZ   ZGmDisplayViewer.get_command_ex  s    
""r   c               r   r1   r   r   r   r   r   rn     r3   r   c                    \         P                  P                  V4      '       g   \        h\        P
                  ! RRV.4       ^# )r4   rq   re   r_   r8   r0   r   r.   ZGmDisplayViewer.show_file  s5     ww~~d####$	401r   r   Nr`   r   r   r   rm   rm     s    4#
 r   rm   c                  rl   )		EogVieweri  z'The GNOME Image Viewer ``eog`` command.c               r   rV   r   r   r   r   r   EogViewer.__annotate__  ro   r   c                	rp   )eogzeog -nr   rr   rS   r   rZ   ZEogViewer.get_command_ex  s    
""r   c               r   r1   r   r   r   r   r   ru     r3   r   c                rs   )r4   rv   z-nr_   r8   r0   r   r.   ZEogViewer.show_file  s5     ww~~d####%t,-r   r   Nr`   r   r   r   rt   rt     s    1#
 r   rt   c                  s6    ] tR tRtRtR	R R lltR R ltRtR# )
XVVieweri'  zL
The X Viewer ``xv`` command.
This viewer supports the ``title`` parameter.
Nc               r   rb   r   r   r   r   r   XVViewer.__annotate__-  s,     # ## *#>A#	#r   c                	rd   )xvz -name r   rf   rg   r   rZ   ZXVViewer.get_command_ex-  s-    
  $#u//G""r   c               r   r1   r   r   r   r   r   rx   7  rh   r   c                ri   )r4   ry   r   z-namerj   rk   rS   r   r.   ZXVViewer.show_file7  sa     ww~~d####vG$We$$DDr   r   rY   r`   r   r   r   rw   rw   '  s    
# r   rw   r^   re   rq   rv   ry   c                  s&    ] tR tRtRtR R ltRtR# )IPythonVieweriT  z!The viewer for IPython frontends.c               r   r    r   r   r   r   r   ZIPythonViewer.__annotate__W  s!         r   c                	s    \        V4       ^# i   )ipython_displayr/   r0   r   r#   ZIPythonViewer.show_imageW  s    r   r   N)r9   r:   r;   r<   r=   r#   r>   r   r   r   rz   rz   T  s    + r   rz   )re   Z__main__z.Syntax: python3 ImageShow.py imagefile [title]:r   NNr{   rY   )rH   rT   )(Z
__future__r   r[   r5   rQ   rD   rO   Zshlexr   Ztypingr   Z r   r   r   r   r   r?   ZplatformrI   ZABCrU   r\   ra   rm   rt   rw   rR   rz   ZIPython.displayre   r|   ZImportErrorr9   ZlenZargvZprintZexitrN   Zimr   r   r   <module>r}      s   # 
 	   
   #,7 7zF 6 <<7]   F <<8Y
*& 
*
 &J <j $
 $z @ <<**||J||I||D!||E||DF : ] z
388}q>?
	CHHQK	 	 Bd2%%& 
!	    		 
!	 	 s   H9 "I9III	