a
    &g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   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	frombytescropZHAVE_XCBOSErrorZgrabscreen_x11shutilwhich)r   r   r	   r
   r   fhfilepathargslefttoprightbottomimZ
im_resizedoffsetsizedataZx0Zy0display_namemsgZ
im_cropped r9   ]/mounts/lovelace/software/anaconda3/envs/metaDMG/lib/python3.9/site-packages/PIL/ImageGrab.pygrab!   s    


*



"







r;   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)rG   N)rI   -timagexclip)rH   N)rL   z
-selection	clipboardrJ   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bytesrD   rE   ZPngImageFilerF   ZDibImageFiler   getenvr*   r+   NotImplementedErrorstderrstripChildProcessErrorr"   )prP   r6   fmtrU   ofilesrE   rF   Zsession_typer.   r8   errZsilent_errorr3   r9   r9   r:   grabclipboardv   sj    












rf   )NFFNN)
__future__r   rQ   r   r*   r   r   r   rD   r   TYPE_CHECKINGr   r;   rf   r9   r9   r9   r:   <module>   s"        U