
    ^jpC                       d dl mZ d dlZd dlZd dlmZmZmZmZmZm	Z	 d dl
mZ d dl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 d	dlmZmZmZmZ erd dlmZ 	 d dlmZ dZn	#  dZY nxY w	 d dlmZ dZ n	#  dZ Y nxY w	 d dlm!Z! dZ"n	#  dZ"Y nxY w	 d dlm#Z# dZ$n# e%$ r dZ$Y nw xY w G d de&          Z'd Z( ej)        e(          Z* ej+        e*            G d dee          Z, G d de          Z- G d de-          Z. G d de-          Z/ G d de          Z0 G d  d!e0          Z1 G d" d#e0          Z2 G d$ d%e          Z3dS )&    )annotationsN)POINTERbyrefc_bufferc_char_pc_intcast)TYPE_CHECKING)app)XlibSelectDevice)xlib)asbytes   )xlib_vidmoderestore)CanvasDisplayScreen
ScreenMode)Config)xineramaTF)xsync)	xf86vmode)xrandrc                      e Zd ZdS )NoSuchDisplayExceptionN)__name__
__module____qualname__     N/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/display/xlib.pyr   r   1   s        Dr    r   c                   t           j        d         r|j        }t          d          }t	          j        | |j        |t          |                     t          d|j	                   t          d|j
                   t          d|j                   t          d|j                   t          d|j                   dd l}t          d	           |                                 dS )
N	debug_x11i   z
X11 error:z
   serial:z
  request:z
    minor:z
 resource:r   z$Python stack trace (innermost last):)pygletoptionscontentsr   r   XGetErrorText
error_codelenprintvalueserialrequest_code
minor_code
resourceid	tracebackprint_stack)displayeventbufr0   s       r!   _error_handlerr5   6   s     ~k"  tnn7E$4c3s88DDDlCI&&&lEL)))lE.///lE,---lE,---45551r    c                  `     e Zd ZU dZdZdZded<   d fd	ZddZdd
Z	ddZ
ddZddZ xZS )XlibDisplayNFz8list[XlibScreen | XlibScreenXrandr | XlibScreenXinerama]_screensc                   g | _         |d}t          |t                    r"t          |                    d                    }t          j        |          | _        | j        st          d| d          t          j	        | j                  }||k    rt          d| d|d          t                                                       || _        || _        t          j        | j                  | _        i | _        t"          rt%                      }t%                      }t'          j        | j        t+          |          t+          |                    rXt%                      }t%                      }t'          j        | j        t+          |          t+          |                    rd| _        t0          j        j                            |            d S )	Nr   asciizCannot connect to ""z	Display "z" has no screen dT)r8   
isinstancestrr   encoder   XOpenDisplay_displayr   XScreenCountsuper__init__namex_screenXConnectionNumber_fileno_window_map_have_xsyncr   r   XSyncQueryExtensionr   XSyncInitialize_enable_xsyncr   platform_event_loopselect_devicesadd)	selfrE   rF   screen_count
event_base
error_basemajor_versionminor_version	__class__s	           r!   rD   zXlibDisplay.__init__[   s   HdC   	2DKK0011D)$//} 	H()Ft)F)F)FGGG(77|##()WT)W)W8)W)W)WXXX	 -dm<<  	.JJ(j8I8I5Q[K\K\]] . % %(m8L8LeTaNbNbcc .)-D& 	.22488888r    returnr   c                r    |                                  }t          r|D ]}|j        r|c S | j        d         S Nr   )get_screens_have_xrandr
is_primaryr8   )rQ   screensscreens      r!   get_default_screenzXlibDisplay.get_default_screen   sR    ""$$ 	"! " "$ "!MMM" }Qr    list[XlibScreen]c                :   g | _         t          rt          j        | j                  }t          j        | j        |          }|rat          j        | j        |          }|j        }t          |j
                  D ]*}|j        |         }t          j        | j        ||          }|st          j        |           B|j        }t          j        | j        ||j                  }	|	st          j        |	           |	j        }
| j                             t%          | |
j        |
j        |
j        |
j        |j        |t/          j        |j        |j                                                  ||k    	  	                   t          j        |	           t          j        |           ,t          j        |           | j         st:          rt=          j        | j                  rtA                      }t=          j!        | j        tE          |                    }tG          |tI          t<          j%        |j&        z                      j        }|j&        dk    }tO          |          D ]F\  }}| j                             tQ          | |j)        |j*        |j        |j        ||                     Gt          j+        |           nU| j         sNt          j,        | j        | j-                  }t]          | dd|j        j        |j        j                  }|g| _         | j         S )Nr   r   )/r8   r\   r   XDefaultRootWindowrA   r   XRRGetScreenResourcesXRRGetOutputPrimaryr&   rangenoutputoutputsXRRGetOutputInfoXRRFreeOutputInfoXRRGetCrtcInfocrtcXRRFreeCrtcInfoappendXlibScreenXrandrxywidthheightctypes	string_atrE   nameLendecodeXRRFreeScreenResources_have_xineramar   XineramaIsActiver   XineramaQueryScreensr   r	   r   XineramaScreenInfor+   	enumerateXlibScreenXineramax_orgy_orgXFreeXScreenOfDisplayrF   
XlibScreen)rQ   rootres_ptrprimaryresi	output_idoutput_info_ptroutput_infocrtc_info_ptr	crtc_infonumberinfosusing_xineramaidxinfoscreen_infor_   s                     r!   r[   zXlibDisplay.get_screens   s     (	3*4=99D24=$GGG "> 4T]DII&s{++ > >A #AI&,&=dmWV_&`&`O* !0AAA 8G8PK$*$9$-R]Rb$c$cM( !.}=== 4A4JIM((( %K%K%O%,',%",[-={?RSSZZ\\%0
 
   *=999,_====)'222} 	% 	%H4Mdm4\4\ 	%WWF1$-vOOE(Cfl(R S STT]E#\A-N&u--  	T$$&tTZTZQUQ\^lnqrr    Ju 	%/t}MMKaK,@,FH\HcddF#HDM}r    intc                    | j         S N)rH   rQ   s    r!   filenozXlibDisplay.fileno   s
    |r    Nonec                   t          j                    }t          j        | j                  rt          j        | j        |           |j        j        t           j        t           j        fvr t          j	        ||j        j
                  rw	 | j        |j        j
                 }n# t          $ r Y w xY w ||           t          j        | j                  d S d S r   )r   XEventXPendingrA   
XNextEventxanytypeKeyPress
KeyReleaseXFilterEventwindowrI   KeyError)rQ   edispatchs      r!   selectzXlibDisplay.select   s    KMMmDM** 	ODM1--- v{4=$/"BBB$Q66 +AFM:    HQKKK mDM** 	 	 	 	 	s   B$ $
B10B1c                4    t          j        | j                  S r   )r   r   rA   r   s    r!   pollzXlibDisplay.poll   s    }T]+++r    )NN)rX   r   )rX   ra   rX   r   )rX   r   )r   r   r   rA   _x_imrM   __annotations__rD   r`   r[   r   r   r   __classcell__rW   s   @r!   r7   r7   S   s         HEMFFFF#9 #9 #9 #9 #9 #9J       > > > >D      ", , , , , , , ,r    r7   c                  p     e Zd ZdZd fd	ZddZddZd dZd!dZd"dZ	d#dZ
d ZddZd$dZd Z xZS )%r   Nr2   r7   rp   r   rq   rr   rs   c                R    t                                          |||||           d S r   )rC   rD   )rQ   r2   rp   rq   rr   rs   rW   s         r!   rD   zXlibScreen.__init__   s)    !Qv66666r    rX   c           	        t          j        | j        j                  }d}|rt          j                     t          j        |          }|rt                      }t          j                    }t          j        |t          d          t          d          t          |          t          |                    r&|j        r|j        dk    rt          |j                  }t          j        |           |S )N`   zXft.dpis   String)r   XResourceManagerStringr2   rA   XrmInitializeXrmGetStringDatabaser   XrmValueXrmGetResourcer   r   addrr+   r   XrmDestroyDatabase)rQ   resourcedpidbrs_typer+   s         r!   get_dpizXlibScreen.get_dpi   s    .t|/DEE 	,   *844B ,"**&r79+=+=wy?Q?QSXY`SaSachincocopp .z .gmy&@&@!%*oo'+++
r    floatc                0    |                                  dz  S )Nr   )r   r   s    r!   	get_scalezXlibScreen.get_scale   s    ||~~""r    templater   c                r    t          | j        d           }|                    |          }|D ]	}| |_        
|S r   )
XlibCanvasr2   matchr_   )rQ   r   canvasconfigsconfigs        r!   get_matching_configszXlibScreen.get_matching_configs   sA    DL$//..(( 	! 	!F FMMr    list[XlibScreenModeXF86]c                   t           sg S t          j                    } t          j        t          j        t          j                                        }t	          j        | j        j        | j        j	        ||           t          j        | j        j        | j        j	                  }g }t          |j                  D ]}t	          j                    }t          j        t          j        |          t          j        |j        |                   t          j        |                     |                    t'          | ||                     |j        rt          j        |j                   t          j        |           |S r   )_have_xf86vmodert   r   r   r   XF86VidModeModeInfoXF86VidModeGetAllModeLinesr2   rA   rF   r   XDefaultDepthrf   r+   memmover   r&   sizeofrn   XlibScreenModeXF86privsizer   private)rQ   count
info_arraydepthmodesr   r   s          r!   	get_modeszXlibScreen.get_modes  sA    	IRV^FN93P$Q$QRRTT
,T\-BDLDY[`blmmm"4<#8$,:OPP u{## 
	) 
	)A022DNT""Z0344d##   LL+D$>>???} )
4<(((
:r    XlibScreenModec                B    |                                  }|r|d         S d S rZ   )r   )rQ   r   s     r!   get_modezXlibScreen.get_mode"  s'       	8Otr    moder   c                   |j         | u sJ | j        s2|                                 | _        t          j        | j                   t          j        | j        j        | j        j	        |j
                   t          j        | j        j                   t          j        | j        j        | j        j	        dd           t          j        | j        j                   |j        | _        |j        | _        d S rZ   )r_   _initial_moder   r   set_initial_moder   XF86VidModeSwitchToModer2   rA   rF   r   r   XFlushXF86VidModeSetViewPortrr   rs   )rQ   r   s     r!   set_modezXlibScreen.set_mode(  s    {d""""! 	E!%D01CDDD)$,*?AVX\XabbbDL)***()>@UWXZ[\\\DL)***Z
kr    c                L    | j         r|                     | j                    d S d S r   )r   r   r   s    r!   restore_modezXlibScreen.restore_mode7  s2     	.MM$,-----	. 	.r    c                P    t          | j        | j        | j        | j        f          S r   )hashrp   rq   rr   rs   r   s    r!   get_display_idzXlibScreen.get_display_id;  s!    TVTVTZ=>>>r    r>   c                    dS )NUnknownr   r   s    r!   get_monitor_namezXlibScreen.get_monitor_name?  s    yr    c                p    | j         j         d| j        d| j         d| j         d| j         d| j         dS )Nz	(display=z, x=z, y=z, width=	, height=))rW   r   r2   rp   rq   rr   rs   r   s    r!   __repr__zXlibScreen.__repr__C  sh    ~& 9 9 9 9TV 9 9QUQW 9 9Z9 9*.+9 9 9	
r    )
r2   r7   rp   r   rq   r   rr   r   rs   r   r   )rX   r   )r   r   )rX   r   )rX   r   )r   r   rX   r>   )r   r   r   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   s   @r!   r   r      s        M7 7 7 7 7 7   $# # # #      6   " " " ". . .? ? ? ?   
 
 
 
 
 
 
r    r   c                  2     e Zd Zd fdZddZ fdZ xZS )r~   r2   r7   rp   r   rq   rr   rs   r   boolr   rX   r   c                n    t                                          |||||           || _        || _        d S r   )rC   rD   	_xineramar   )	rQ   r2   rp   rq   rr   rs   r   r   rW   s	           r!   rD   zXlibScreenXinerama.__init__K  s5    !Qv666'r    c                \    t          | j        | j        | j        | j        | j        f          S r   )r   r   rp   rq   rr   rs   r   s    r!   r   z!XlibScreenXinerama.get_display_idP  s%    TXtvtvtz4;GHHHr    c                V    | j         rg S t                                                      S r   )r   rC   r   )rQ   rW   s    r!   r   zXlibScreenXinerama.get_modesT  s*    > 	 Iww  """r    )r2   r7   rp   r   rq   r   rr   r   rs   r   r   r   r   r   rX   r   r   )r   r   r   rD   r   r   r   r   s   @r!   r~   r~   J  sn             
I I I I# # # # # # # # #r    r~   c                  v     e Zd Zd  fdZed             Zed!d            Zd"dZd#dZ	d$dZ
d%dZd&dZ xZS )'ro   r2   r7   rp   r   rq   rr   rs   crtc_idr   rE   r>   r]   r   c
                    t                                          |||||           || _        || _        || _        |	| _        d S r   )rC   rD   r   r   rE   _is_primary)rQ   r2   rp   rq   rr   rs   r   r   rE   r]   rW   s             r!   rD   zXlibScreenXrandr.__init___  sH     	!Qv666"	%r    c                    | j         S r   )r   r   s    r!   r]   zXlibScreenXrandr.is_primaryq  s    r    r   xrandr.XRRScreenResources	rrmode_idrX   xrandr.XRRModeInfo | Nonec                ~    t          | j                  D ]'}| j        |         j        |k    r| j        |         c S (d S r   )rf   nmoder   id)r   r   r   s      r!   _get_mode_infozXlibScreenXrandr._get_mode_infou  sO    x~&& 	) 	)A~a #y00~a(((( 1 tr    r   XlibScreenModeXrandrr   c                   |j         | u sJ | j        s|                                 | _        t          j        | j        j                  }t          j        | j        j        |          }|rt          j	        | j        j        || j
                  }|r|j        }t          j        | j        j        || j
        t          j        |j        |j        |j        |j        |j        |j        
  
        }|dk    r)t(          j        d         rt-          j        d|            t          j        | j        j                   |j        | _        |j        | _        t          j        |           t          j        |           d S )Nr   r#   zCould not set screen mode: )r_   r   r   r   rc   r2   rA   r   XRRGetScreenResourcesCurrentrk   r   r&   XRRSetCrtcConfigCurrentTimerp   rq   mode_idrotationrh   rg   r$   r%   warningswarnr   rr   rs   rm   rx   )rQ   r   r   r   r   r   statuss          r!   r   zXlibScreenXrandr.set_mode}  sX   {d""""! 	1!%D&t|'<==5dl6KTRR 	2"1$,2GRVR^__M *)2	0L)L$KKL&%%  Q;;6>+#>;M"H"H"HIIIDL1222!Z
"k"=111%g.....r    list[XlibScreenModeXrandr]c                \   g }t          j        | j        j                  }t	          j        | j        j        |          }t	          j        | j        j        || j                  }|j        }|j        }t          j	        | j        j        | j        j
                  }t          |j        j                  D ]N}|j        |         }	|                     ||	          }
|
r't          | |
|	|          }|                    |           Ot	          j        |           t	          j        |           |S r   )r   rc   r2   rA   r   r  ri   r   r&   r   rF   rf   r  r   r  r  rn   rj   rx   )rQ   r   r   r   r   r   r   r   r   r	  xrandr_moder   s               r!   r   zXlibScreenXrandr.get_modes  s   &t|'<==5dl6KTRR 1$,2GRVR`aa%."4<#8$,:OPP/566 	# 	#A!'*G--c7;;K #+D+wNNT""" 111%g...r    XlibScreenModeXrandr | Nonec                   t          j        | j        j                  }t	          j        | j        j        |          }t	          j        | j        j        || j                  }|j        }d }| 	                                D ]}|j
        |j        k    r|} nt	          j        |           t	          j        |           |S r   )r   rc   r2   rA   r   r  rk   r   r&   r   r   r	  rm   rx   )rQ   r   r   r   r   
found_moder   s          r!   r   zXlibScreenXrandr.get_mode  s    &t|'<==5dl6KTRR-dl.CWdl[[!*	
NN$$ 	 	D~--!
 . 	}---%g...r    c                    | j         S r   )r   r   s    r!   r   zXlibScreenXrandr.get_display_id  s
    ~r    c                    | j         S r   )rE   r   s    r!   r   z!XlibScreenXrandr.get_monitor_name  s
    yr    )r2   r7   rp   r   rq   r   rr   r   rs   r   r   r   r   r   rE   r>   r]   r   )r   r   r   r   rX   r   )r   r  rX   r   )rX   r  )rX   r  r   r   )r   r   r   rD   propertyr]   staticmethodr  r   r   r   r   r   r   r   s   @r!   ro   ro   ^  s        & & & & & &$     X     \ /  /  /  /D   ,   $          r    ro   c                        e Zd Zd	 fdZ xZS )
r   r_   r   rr   r   rs   rater   c                    t                                          |           || _        || _        || _        || _        d S r   )rC   rD   rr   rs   r  r   )rQ   r_   rr   rs   r  r   rW   s         r!   rD   zXlibScreenMode.__init__  s;       
	


r    )
r_   r   rr   r   rs   r   r  r   r   r   )r   r   r   rD   r   r   s   @r!   r   r     s=                 r    r   c                  (     e Zd Zd fd	ZddZ xZS )r   r_   r   r   xf86vmode.XF86VidModeModeInfor   r   rX   r   c                    || _         |j        }|j        }t          |j        dz  |j        |j        z  z            }t                                          |||||           d S )Ni  )	r   hdisplayvdisplayrounddotclockhtotalvtotalrC   rD   )rQ   r_   r   r   rr   rs   r  rW   s          r!   rD   zXlibScreenModeXF86.__init__  s`    	dmd*t{T[/HIJJe<<<<<r    r>   c           	     H    d| j         d| j        d| j        d| j         d	S NzXlibScreenMode(width=r   z, depth=z, rate=r   rr   rs   r   r  r   s    r!   r   zXlibScreenModeXF86.__repr__  7    vtzvvdkvvUYU_vvjnjsvvvvr    )r_   r   r   r  r   r   rX   r   r   )r   r   r   rD   r   r   r   s   @r!   r   r     sY        = = = = = =w w w w w w w wr    r   c                  @     e Zd Zd fd
Zedd            ZddZ xZS )r  r_   r   	mode_infoxrandr.XRRModeInfor	  r   r   rX   r   c                    || _         t                                          ||j        |j        |                     |          |           d S r   )r	  rC   rD   rr   rs   _calculate_refresh_rate)rQ   r_   r)  r	  r   rW   s        r!   rD   zXlibScreenModeXrandr.__init__  sE    )2BDD`D`ajDkDkmrsssssr    c                z    | j         dk    r/| j        dk    r$t          | j        | j         | j        z  z            S dS rZ   )hTotalvTotalr   dotClock)r)  s    r!   r,  z,XlibScreenModeXrandr._calculate_refresh_rate  sC    aI$4q$8$8+y/?)BR/RSTTTqr    r>   c           	     H    d| j         d| j        d| j        d| j         d	S r%  r&  r   s    r!   r   zXlibScreenModeXrandr.__repr__  r'  r    )
r_   r   r)  r*  r	  r   r   r   rX   r   )r)  r*  rX   r   r   )r   r   r   rD   r  r,  r   r   r   s   @r!   r  r    s        t t t t t t    \
w w w w w w w wr    r  c                  ,     e Zd ZU ded<   d fdZ xZS )	r   r7   r2   x_windowxlib.WindowrX   r   c                X    t                                          |           || _        d S r   )rC   rD   r3  )rQ   r2   r3  rW   s      r!   rD   zXlibCanvas.__init__  s&    !!! r    )r2   r7   r3  r4  rX   r   )r   r   r   r   rD   r   r   s   @r!   r   r     sK         ! ! ! ! ! ! ! ! ! !r    r   )4
__future__r   rt   r  r   r   r   r   r   r	   typingr
   r$   r   pyglet.app.xlibr   pyglet.libs.x11r   pyglet.utilr    r   baser   r   r   r   	pyglet.glr   r   ry   r   rJ   r   r   r   r\   ImportError	Exceptionr   r5   XErrorHandler_error_handler_ptrXSetErrorHandlerr7   r   r~   ro   r   r   r  r   r   r    r!   <module>rC     s   " " " " " "   B B B B B B B B B B B B B B B B                    , , , , , ,                   ! ! ! ! ! ! 5 5 5 5 5 5 5 5 5 5 5 5 !      ((((((NNNNN%%%%%%KKKKK))))))OOOOO&&&&&&LL   LLL	 	 	 	 	Y 	 	 	
  2 (T'77   ( ) ) )N, N, N, N, N,"G N, N, N,bc
 c
 c
 c
 c
 c
 c
 c
L# # # # # # # #(m m m m mz m m m`    Z   	w 	w 	w 	w 	w 	w 	w 	ww w w w w> w w w! ! ! ! ! ! ! ! ! !s6   A% %A+/A8 8A>B BB B('B(