U
    <þjgÖ  ã                   @  sr   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Zddlm	Z	 dddddd	d
œdd„Z
ddœdd„ZdS )é    )ÚannotationsNé   )ÚImageFz tuple[int, int, int, int] | NoneÚboolz
str | NonezImage.Image)ÚbboxÚinclude_layered_windowsÚall_screensÚxdisplayÚreturnc              
   C  sV  |d krJt jdkrÄt d¡\}}t |¡ dg}| rl| \}}}	}
|d|› d|› d|	| › d|
| › g7 }t |d|g ¡ t 	|¡}| 
¡  t |¡ | rÀ| |	| |
| f¡}| ¡  |S |S t jdkrJtj ||¡\}}}t d||d	d
|d d d d@ d¡}| rF|\}}| \}}}	}
| || || |	| |
| f¡}|S |}z*tjjsfd}t|ƒ‚tj |¡\}}W n¦ tk
r   |d krt jdkrt d¡rt d¡\}}t |¡ t dd|g¡ t 	|¡}| 
¡  t |¡ | r| | ¡}| ¡  | Y S | Y S ‚ Y n4X t d||d	d|d d d¡}| rN| | ¡}|S d S )NÚdarwinú.pngZscreencapturez-Rú,z-xÚwin32ZRGBÚrawZBGRr   é   éüÿÿÿéÿÿÿÿz$Pillow was built without XCB support)r   r   zgnome-screenshotz-fZBGRXé   r   )ÚsysÚplatformÚtempfileÚmkstempÚosÚcloseÚ
subprocessÚcallr   ÚopenÚloadÚunlinkÚresizeÚcoreZgrabscreen_win32Z	frombytesZcropZHAVE_XCBÚOSErrorZgrabscreen_x11ÚshutilÚwhich)r   r   r   r	   ÚfhÚfilepathÚargsÚleftÚtopÚrightZbottomÚimZ
im_resizedÚoffsetÚsizeÚdataZx0Zy0Zdisplay_nameÚmsgZ
im_cropped© r/   ú1/tmp/pip-unpacked-wheel-f170kk4x/PIL/ImageGrab.pyÚgrab   s‚    


*

 ÿ
ø
"
ÿþý




r1   zImage.Image | list[str] | None)r
   c                  C  sŠ  t jdkr’t d¡\} }t | ¡ d| d ddddg}d	g}|D ]}|d
|g7 }qBt |¡ d }t |¡j	dkr„t
 |¡}| ¡  t |¡ |S t jdkrxt
j ¡ \}}|dkrdd l}| d|¡d }	|d dkrô||	d …  d¡ d¡}
n||	d …  d¡ d¡}
|
d |
 d¡… S t|tƒrtt |¡}|dkrTddlm} | |¡S |dkrtddlm} | |¡S d S t d¡rŠd}nt d¡rœd}nd }t  d¡rÂ|dkrÂddd g}n4t  d!¡rê|d"krêd!d#d$dd%d&g}nd'}t!|ƒ‚tj"|d(d)}|j#dkrd|j$}d*D ]}||kr d S q|d › d+}|r\|d,| %¡  ¡ › 7 }t&|ƒ‚t |j'¡}t
 |¡}| ¡  |S d S )-Nr   r   z,set theFile to (open for access POSIX file "z" with write permission)Útryu6       write (the clipboard as Â«class PNGfÂ») to theFilezend tryzclose access theFileZ	osascriptz-er   r   ÚfileÚIé   zutf-16leú ÚmbcsÚ Zpngr   )ÚPngImagePluginZDIB)ÚBmpImagePluginZWAYLAND_DISPLAYÚwaylandZDISPLAYÚx11zwl-paste)r;   Nz-tÚimageZxclip)r<   Nz
-selectionZ	clipboardz	image/pngz-ozDwl-paste or xclip is required for ImageGrab.grabclipboard() on LinuxT)Úcapture_output)s   Nothing is copieds   No selections"   No suitable type of content copieds    not availables   cannot convert s(   xclip: Error: There is no owner for the z errorz: )(r   r   r   r   r   r   r   r   ÚstatÚst_sizer   r   r   r   r    Zgrabclipboard_win32ÚstructÚunpack_fromÚdecodeÚsplitÚindexÚ
isinstanceÚbytesÚioÚBytesIOr8   r9   ZPngImageFiler:   ZDibImageFileÚgetenvr"   r#   ÚNotImplementedErrorÚrunÚ
returncodeÚstderrÚstripÚChildProcessErrorÚstdout)r$   r%   ÚcommandsÚscriptÚcommandr*   Úfmtr-   rA   ÚoÚfilesr9   r:   Zsession_typer&   r.   ÚpÚerrZsilent_errorr/   r/   r0   Úgrabclipboardi   s„    

ÿþù	











rZ   )NFFN)Ú
__future__r   rH   r   r"   r   r   r   r8   r   r1   rZ   r/   r/   r/   r0   Ú<module>   s       üL