o
    
i                     @  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ZdddZdS )    )annotationsN   )ImageF)ImageWinbbox tuple[int, int, int, int] | Noneinclude_layered_windowsboolall_screensxdisplay
str | Nonewindowint | ImageWin.HWND | NonereturnImage.Imagec              
   C  s  |d u r=t jdkrtd\}}t| dg}|d ur&|dt|g7 }n| rC| \}}	}
}|d| d|	 d|
|  d||	  g7 }|d|g7 }t|}|rVt	||t
|}|  t| | r|d urtd\}}t| ddt|dd|g}t|}|rt	||t
|}|j|j d	k}W d    n1 sw   Y  t| |r| \}}	}
}|j|
| ||	 ftd
d | D d}n|| }|  |S ||
| ||	 f}|  |S |S t jdkr=|d urd}t
j|||d urt|nd\}}}t
d||dd|d d d d@ d}| r;|\}}| \}}	}
}||| |	| |
| || f}|S |}zt
jjsKd}t|t
j|\}}W nv ty   |d u rt jdvrtdrrddg}ntdr|dg}ntdrg d}n td\}}t| || t|}|rt	||t
|}|  t| | r|| }|  | Y S | Y S  w t
d||dd|d d d}| r|| }|S )Ndarwinz.pngscreencapturez-lz-R,z-x-od   c                 s  s    | ]}|d  V  qdS )   N ).0coordr   r   K/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/PIL/ImageGrab.py	<genexpr>O   s    zgrab.<locals>.<genexpr>)boxwin32r   RGBrawBGR   z$Pillow was built without XCB support)r   r   zgnome-screenshot-fgrim	spectacle)r&   z-nz-br$   r   BGRX   r   )sysplatformtempfilemkstemposclosestr
subprocesscallCalledProcessErrorr   openloadunlinkwidthresizetuplecropcoregrabscreen_win32int	frombytesHAVE_XCBOSErrorgrabscreen_x11shutilwhichappend)r   r   r
   r   r   fhfilepathargslefttoprightbottomretcodeimim_no_shadowretina
im_cropped
im_resizedoffsetsizedatax0y0display_namemsgr   r   r   grab!   s   


*








"









rX   Image.Image | list[str] | Nonec                  C  s$  t jdkr+tjg ddd} | jdkrd S dd l}t|| j	dd }t
|S t jdkrt
j \}}|d	krodd l}|d
|d }|d dkrZ||d  dd}n||d  dd}|d |d S t|trt|}|dkrddlm} ||S |dkrddlm} ||S d S tdrd}	n
tdrd}	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 )#Nr   )	osascriptz-eu#   get the clipboard as «class PNGf»T)capture_outputr      r   fileI   mbcs zutf-16le pngr   )PngImagePluginDIB)BmpImagePluginWAYLAND_DISPLAYwaylandDISPLAYx11wl-paste)ri   N)rl   -timagexclip)rk   N)ro   z
-selection	clipboardrm   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*   r0   run
returncodebinasciiioBytesIO	unhexlifystdoutr   r3   r:   grabclipboard_win32structunpack_fromdecodesplitindex
isinstancebytesrc   re   PngImageFilerg   DibImageFiler-   getenvrA   rB   NotImplementedErrorstderrstripChildProcessErrorr4   )prs   rS   fmtry   ofilesre   rg   session_typerF   rW   errsilent_errorrL   r   r   r   grabclipboard   sl   












r   )NFFNN)r   r   r   r	   r
   r	   r   r   r   r   r   r   )r   rY   )
__future__r   rt   r-   rA   r0   r)   r+   rc   r   TYPE_CHECKINGr   rX   r   r   r   r   r   <module>   s$   x