
    %j                         d Z ddlZddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ 	 ddlmZ  ej&                  e      Z G d	 d
ej,                        Z G d de      Zy# e$ r eZY <w xY w)z3Created on Sun Apr 07 2024 19:52:19 by codeskyblue
    N)OptionalUnion)AdbError)Sync)
WindowSize)Image)UnidentifiedImageErrorc            	           e Zd Zeej
                  defd              Zej
                  dede	e   de
eef   fd       Zej
                  defd       Zej
                  dej                  fd       Zy)	AbstractDevicereturnc                      y N selfs    W/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/adbutils/screenshot.pysynczAbstractDevice.sync   s     	    cmdencodingc                      y r   r   )r   r   r   s      r   shellzAbstractDevice.shell       r   c                      y r   r   r   s    r   window_sizezAbstractDevice.window_size#   r   r   c                      y r   r   r   s    r   framebufferzAbstractDevice.framebuffer'   r   r   N)__name__
__module____qualname__propertyabcabstractmethodr   r   strr   r   bytesr   r   r   r   r   r   r   r   r   r      s    d    	  %U
:K   	Z   	U[[  r   r   c                   r    e Zd Zddee   dedej                  fdZd	dedej                  fdZdede	fdZ
y)
ScreenshotExtesionN
display_iderror_okr   c                 ,   	 | j                  |      }|j                  dk(  r|j                  d      }|S # t        $ rU}t        j                  d|       |r,| j                         }t        j                  d|d      cY d}~S t        d      |d}~ww xY w)a   Take a screenshot and return PIL.Image.Image object
        Args:
            display_id: int, default None, see "dumpsys SurfaceFlinger --display-id" for valid display IDs
            error_ok: bool, default True, if True, return a black image when capture failed
        
        Returns:
            PIL.Image.Image object
        
        Raises:
            AdbError: when capture failed and error_ok is False
        RGBARGBzscreencap error: %s)r   r   r   Nzscreencap error)
_ScreenshotExtesion__screencapmodeconvertr	   loggerwarningr   r   newr   )r   r(   r)   	pil_imageewsizes         r   
screenshotzScreenshotExtesion.screenshot,   s    	9((4I~~'%--e4	% 	9NN0!4((*yyy9901q8	9s    25 	B>B<BBBc                     ddg}|$| j                  |      }|j                  d|g       | j                  |d      }t        j                  t        j                  |            S )z= Take a screenshot and return PIL.Image.Image object
        	screencapz-pNz-d)r   )(_ScreenshotExtesion__get_real_display_idextendr   r   openioBytesIO)r   r(   cmdargs_id	png_bytess        r   __screencapzScreenshotExtesion.__screencapE   s^     %!,,Z8CNND#;'JJwJ6	zz"**Y/00r   c                     | j                  d      }t        j                  d      }|j                  |      }|st	        d      |t        |      k\  rt	        d|      ||   S )Nz#dumpsys SurfaceFlinger --display-idzDisplay (\d+) zBNo display found, debug with 'dumpsys SurfaceFlinger --display-id'zInvalid display_id)r   recompilefindallr   len)r   r(   output_REidss        r   __get_real_display_idz(ScreenshotExtesion.__get_real_display_idP   sc     ABjj*+kk&!_``S!/<<:r   )NTr   )r   r   r    r   intboolr   r6   r-   r$   r9   r   r   r   r'   r'   +   sQ    9Xc] 9T 9UZU`U` 92	1c 	1U[[ 	1
 
 
r   r'   )__doc__r"   r<   loggingrC   typingr   r   adbutils.errorsr   adbutils.syncr   adbutils._protor   PILr   r	   ImportErrorOSError	getLoggerr   r0   ABCr   r'   r   r   r   <module>rX      sv     	  	 " $  & %*
 
		8	$SWW $/ /1  %$%s   A- -A76A7