a
    hG                     @  s   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Z
e
r\ddlmZ ddddd	d
ddddZddddZdS )    )annotationsN   )ImageF)ImageWinz tuple[int, int, int, int] | Noneboolz
str | Nonezint | ImageWin.HWND | NonezImage.Image)bboxinclude_layered_windowsall_screensxdisplaywindowreturnc              
   C  s  |d u rht jdkrtd\}}t| dg}| rl| \}}	}
}|d| d|	 d|
|  d||	  g7 }t|d|g  t	|}|
  t| | r||
| ||	 f}|  |S |S t jdkrh|d urd}tj|||d urt|nd	\}}}td
||dd|d	 d d d@ d}| rd|\}}| \}}	}
}||| |	| |
| || f}|S |}z*tjjsd}t|tj|\}}W n typ   |d u rjt jdvrjtdrddg}n,tdrdg}ntdrg d}n td\}}t| t||g  t	|}|
  t| | rb|| }|  | Y S | Y S  Y n40 td
||dd|d	 d d}| r|| }|S d S )Ndarwinz.pngZscreencapturez-R,z-xwin32r   ZRGBrawZBGR   z$Pillow was built without XCB support)r   r   zgnome-screenshot-fZgrim	spectacle)r   z-nz-br   -oZBGRX   r   )sysplatformtempfilemkstemposclose
subprocesscallr   openloadunlinkresizecoreZgrabscreen_win32int	frombytesZcropZHAVE_XCBOSErrorZgrabscreen_x11shutilwhich)r   r   r	   r
   r   fhfilepathargslefttoprightZbottomimZ
im_resizedoffsetsizedataZx0Zy0Zdisplay_namemsgZ
im_cropped r5   ;/var/www/auris/lib/python3.9/site-packages/PIL/ImageGrab.pygrab!   s    


*



"







r7   zImage.Image | list[str] | None)r   c                  C  sB  t jdkrVtjg ddd} | jdkr*d S dd l}t|| j	dd }t
|S t jdkr:t
j \}}|d	krdd l}|d
|d }|d dkr||d  dd}n||d  dd}|d |d S t|tr6t|}|dkrddlm} ||S |dkr6ddlm} ||S d S tdrLd}	ntdr^d}	nd }	tdr|	dv rg d}
n,tdr|	dv rg d}
nd}t|tj|
dd} | jdkr| j}d D ]}||v r d S q|
d  d!}|r|d"|    7 }t!|t| j	}t
|}|"  |S d S )#Nr   )Z	osascriptz-eu#   get the clipboard as «class PNGf»T)capture_outputr      r   fileI   mbcs zutf-16le Zpngr   )PngImagePluginZDIB)BmpImagePluginZWAYLAND_DISPLAYwaylandZDISPLAYx11wl-paste)rC   N)rE   -timagexclip)rD   N)rH   z
-selectionZ	clipboardrF   z	image/pngr   zDwl-paste or xclip is required for ImageGrab.grabclipboard() on Linux)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   run
returncodebinasciiioBytesIO	unhexlifystdoutr   r    r$   Zgrabclipboard_win32structunpack_fromdecodesplitindex
isinstancebytesr@   rA   ZPngImageFilerB   ZDibImageFiler   getenvr(   r)   NotImplementedErrorstderrstripChildProcessErrorr!   )prK   r3   fmtrP   ofilesrA   rB   Zsession_typer,   r4   errZsilent_errorr0   r5   r5   r6   grabclipboardv   sj    












ra   )NFFNN)
__future__r   rL   r   r(   r   r   r   r@   r   TYPE_CHECKINGr   r7   ra   r5   r5   r5   r6   <module>   s"        U