o
     Pj1                      @  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ZdddZdS )    )annotationsN   )ImageF)ImageWin)
scale_downbbox tuple[int, int, int, int] | Noneinclude_layered_windowsboolall_screensxdisplay
str | Nonewindowint | ImageWin.HWND | Noner   returnImage.Imagec             
   C  s  |d u rJt 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| \}	}
}}|rd
nd}|j||	 | ||
 | ftdd | D d}n|| }|  |S |r|||	 ||
 f}|  |S |S t jdkrJ|d urd}t
j|||d urt|nd\}}}t
d||dd|d d d d@ d}| rH|\}}| \}	}
}}||	| |
| || || f}|S |}zt
jjsXd}t|t
j|\}}W nv ty   |d u rt jdvrtdrddg}ntdrd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   r      c                 s  s    | ]}|d  V  qdS )r   N ).0coordr   r   B/home/thesage/.local/lib/python3.10/site-packages/PIL/ImageGrab.py	<genexpr>R   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   )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   r   fhfilepathargslefttoprightbottomretcodeimim_no_shadowretinascale
im_cropped
im_resizedoffsetsizedatax0y0display_namemsgr   r   r   grab!   s   



*









"









rZ   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)rk   N)rn   -timagexclip)rm   N)rq   z
-selection	clipboardro   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+   r1   run
returncodebinasciiioBytesIO	unhexlifystdoutr   r4   r;   grabclipboard_win32structunpack_fromdecodesplitindex
isinstancebytesre   rg   PngImageFileri   DibImageFiler.   getenvrB   rC   NotImplementedErrorstderrstripChildProcessErrorr5   )pru   rU   fmtr{   ofilesrg   ri   session_typerG   rY   errsilent_errorrM   r   r   r   grabclipboard   sl   












r   )NFFNN)r   r   r	   r
   r   r
   r   r   r   r   r   r
   r   r   )r   r[   )
__future__r   rv   r.   rB   r1   r*   r,   re   r   TYPE_CHECKINGr   rZ   r   r   r   r   r   <module>   s(   {