
    ^j	                        d dl mZ d dlmZ d dlZd dlZddlmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  G d	 d
e          Z G d de
          Z G d de          ZdS )    )annotations)LiteralN   )DisplayScreen
ScreenModeCanvas)byref)egl)eglextc                  *     e Zd Z fdZd Zd Z xZS )HeadlessDisplayc                   t                                                       t          | dddd          g| _        t	          j                    }t          j        dd t          |                     |j	        dk    rt          j        d         }|dk     s||j	        k    rt          d|           t          j        |j	        z              }t          j        |j	        |t          |                     t          j        t          j        ||         d           | _        n@t#          j        d           t	          j                    }t	          j        |          | _        t	          j        | j        d d            d S )Nr   i  i8  headless_devicezInvalid EGL device id: zGNo device available for EGL device platform. Using native display type.)super__init__HeadlessScreen_screensr   EGLintr   eglQueryDevicesEXTr
   valuepygletoptions
ValueErrorEGLDeviceEXTeglGetPlatformDisplayEXTEGL_PLATFORM_DEVICE_EXT_display_connectionwarningswarnEGLNativeDisplayTypeeglGetDisplayeglInitialize)selfnum_devicesr   devicesdisplay	__class__s        R/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/display/headless.pyr   zHeadlessDisplay.__init__   sV   'aD$??@jll!!T5+=+=>>>q  $n->?O""o9J&J&J !L?!L!LMMM*[->>AAG%k&7%BTBTUUU'-'F.0H$(P (PD$$ Mcddd.00G'*'8'A'AD$$2D$?????    c                    | j         S N)r   r$   s    r)   get_screenszHeadlessDisplay.get_screens(   s
    }r*   c                8    t          j        | j                   d S r,   )r   eglTerminater   r-   s    r)   __del__zHeadlessDisplay.__del__+   s    122222r*   )__name__
__module____qualname__r   r.   r1   __classcell__r(   s   @r)   r   r      s[        @ @ @ @ @,  3 3 3 3 3 3 3r*   r   c                       e Zd Z fdZ xZS )HeadlessCanvasc                X    t                                          |           || _        d S r,   )r   r   egl_surface)r$   r'   r:   r(   s      r)   r   zHeadlessCanvas.__init__0   s)    !!!&r*   )r2   r3   r4   r   r5   r6   s   @r)   r8   r8   /   s8        ' ' ' ' ' ' ' ' 'r*   r8   c                  L     e Zd Z fdZd Zd Zd Zd Zd Zdd	Z	ddZ
 xZS )r   c                R    t                                          |||||           d S r,   )r   r   )r$   r'   xywidthheightr(   s         r)   r   zHeadlessScreen.__init__6   s)    !Qv66666r*   c                r    t          | j        d           }|                    |          }|D ]	}| |_        
|S r,   )r8   r'   matchscreen)r$   templatecanvasconfigsconfigs        r)   get_matching_configsz#HeadlessScreen.get_matching_configs9   sA    d33..(( 	! 	!F FMMr*   c                    d S r,    r-   s    r)   	get_modeszHeadlessScreen.get_modesA       r*   c                    d S r,   rJ   r-   s    r)   get_modezHeadlessScreen.get_modeD   rL   r*   c                    d S r,   rJ   )r$   modes     r)   set_modezHeadlessScreen.set_modeG   rL   r*   c                    d S r,   rJ   r-   s    r)   restore_modezHeadlessScreen.restore_modeJ   rL   r*   return	str | intc                P    t          | j        | j        | j        | j        f          S r,   )hashr=   r>   r?   r@   r-   s    r)   get_display_idzHeadlessScreen.get_display_idM   s!    TVTVTZ=>>>r*   str | Literal['Unknown']c                    dS )NHeadlessrJ   r-   s    r)   get_monitor_namezHeadlessScreen.get_monitor_nameQ   s    zr*   )rT   rU   )rT   rY   )r2   r3   r4   r   rH   rK   rN   rQ   rS   rX   r\   r5   r6   s   @r)   r   r   5   s        7 7 7 7 7          ? ? ? ?       r*   r   )
__future__r   typingr   r   r   baser   r   r   r	   ctypesr
   pyglet.libs.eglr   r   r   r8   r   rJ   r*   r)   <module>rb      s   " " " " " "         5 5 5 5 5 5 5 5 5 5 5 5             " " " " " "3 3 3 3 3g 3 3 3>' ' ' ' 'V ' ' '    V     r*   