
    ^jf                       U 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
mZmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZm Z m!Z! d d	l"m#Z#m$Z$ ed
vr e%d          d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dlZd dl3m4Z4 d dl5m6Z6 d dlm7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK i eJjL        dfeJjM        eJjN        dfeJjO        eJjP        dfeJjQ        eJjR        dfeJjS        eJjN        dfeJjT        eJjR        dfeJjU        eJjV        dfeJjW        eJjX        dfeJjY        eJjZ        dfeJj[        eJj\        dfeJj]        eJjV        dfeJj^        eJjX        dfeJj_        eJj`        dfeJja        eJjb        dfeJjc        eJjd        dfeJje        eJjf        dfeJjg        Zhdeid<    G d deF          Zjdakdeid<   eHZleIZmejn        ejo        ejp        ejq        gZr G d deC          ZsddgZtdS )    )annotationsN)DWORDHICONHWNDMSGPOINTRECTSIZEUINT)	lru_cache)CallableSequence)compat_platform)	constants)BITMAPINFOHEADERBYTECOLORREFHCURSOR	HRAWINPUTICONINFO
MINMAXINFORAWINPUTRAWINPUTHEADERTRACKMOUSEEVENTWCHAR)chmapkeymap)cygwinwin32zNot a win32 platform.)POINTERbyrefc_intc_int16c_shortc_void_p	c_wchar_pcastcreate_unicode_buffermemmovesizeof
wstring_at)Win32Canvas)EventDispatcher)BITMAPV5HEADERDWM_BLURBEHINDMAKEINTRESOURCERAWINPUTDEVICEWNDCLASSWNDPROC_dwmapi_gdi32	_kernel32_shell32_user32)	
BaseWindowDefaultMouseCursorImageMouseCursorMouseCursorWindowException_PlatformEventHandler_ViewEventHandlerkeymouseFTzdict[tuple[int, bool], int]_motion_mapc                  4    e Zd ZU dZded<   dZded<   dd
ZdS )Win32MouseCursorFboolgl_drawableThw_drawablecursorr   returnNonec                    || _         d S N)rH   )selfrH   s     W/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/window/win32/__init__.py__init__zWin32MouseCursor.__init__a   s        N)rH   r   rI   rJ   )__name__
__module____qualname__rF   __annotations__rG   rO    rP   rN   rD   rD   ]   sL         KK     rP   rD   rE   _win32_cursor_visiblec                  
    e Zd ZU dZdZdZdZdZdZdZ	dZ
ded<   dZded<   dZded<   dZded<   dZdZd	ZdZded
<   dZded<   dZded<   dZded<   dddZded<   d	Zded<   d	Zded<   dZded<   dZded<   d fdZddZddZdd"Zd fd#Zdd$Z e!dd%            Z"dd'Z#dd(Z$dd)Z%dd*Z&dd,Z'dd/Z(dd1Z)d fd2Z*dd3Z+dd4Z,dd5Z-ddd7Z.dd8Z/dd9Z0d: Z1dd=Z2ddd@Z3ddAZ4ddBZ5ddCZ6ddDZ7dddFZ8dddHZ9dddIZ:ddLZ;ddOZ<e=ddS            Z>ddUZ?ddVZ@ddXZAdY ZBddZZCdd[ZDdd\ZEdd`ZFdddbZGeHddd            ZI eJeKjL                   eJeKjM                   eJeKjN                   eJeKjO                  ddh                                                ZP eJeKjQ                  ddi            ZR eJeKjS                  ddj            ZT eJeKjU                  ddk            ZV eJeKjW                  ddl            ZXeY eJeKjZ                  ddm                        Z[eY eJeKj\                  ddn                        Z]ddqZ^eY eJeKj_                  ddr                        Z`eY eJeKja                  dds                        ZbeY eJeKjc                  ddt                        ZdeY eJeKje                  ddu                        ZfeY eJeKjg                  ddv                        ZheY eJeKji                  ddw                        ZjeY eJeKjk                  ddx                        ZleY eJeKjm                  ddy                        Zn eJeKjo                  ddz            Zp eJeKjq                  dd{            ZreY eJeKjs                  dd|                        Zt eJeKju                  dd}            Zv eJeKjw                  dd~            Zx eJeKjy                  dd            Zz eJeKj{                  dd            Z| eJeKj}                  dd            Z~ eJeKj                  dd            Z eJeKj                  dd            Z eJeKj                  dd            Z eJeKj                  dd            Z eJeKj                  dd            Z eJeKj                  dd            ZeY eJeKj                  dd                        Z eJeKj                  dd            Z eJeKj                  dd            Z eJeKj                  dd            Z xZS )Win32WindowNFrE   _exclusive_keyboardT_exclusive_keyboard_focus_exclusive_mouse_exclusive_mouse_focusr   _mouse_platform_visible_pending_click_in_title_bar   float_mouse_scale)*   6   zdict[int, bool]_keyboard_stateint	_ws_style_ex_ws_styleztuple[int, int] | None_minimum_size_maximum_sizerI   rJ   c                P   i | _         i | _        | j        D ]R}t          | |          st	          | |          }|j        D ]'}t          |d          r|| j        |<   || j         |<   (St          j                    dk    | _        d| _	         t                      j        |i | d S )N_view)      r   )_event_handlers_view_event_handlers_platform_event_nameshasattrgetattr_platform_event_datasysgetwindowsversion_always_dwm	_intervalsuperrO   )rM   argskwargs	func_namefuncmessage	__class__s         rN   rO   zWin32Window.__init__   s    469;!3 	9 	9I4++ 4++D4 9 94)) 99=D-g6648D(11	9 022f<$)&)))))rP   changesSequence[str]c                D    d|v rd | _         |                                  d S )Ncontext)_wgl_context_create)rM   r   s     rN   	_recreatezWin32Window._recreate   s&     $DrP   c                   | j         rt          j        | _        d| _        n| j        t          j        df| j        t          j        t          j	        z  t          j
        z  t          j        f| j        t          j        t          j	        z  t          j
        z  t          j        f| j        t          j        df| j        t          j        t          j        f| j        t          j        t          j        t          j        z  fi}|| j                 \  | _        | _        | j        r"| j         s| xj        t          j        z  c_        n(| xj        t          j        t          j        z   z  c_        | j                                        | _        | j         r| j        j        }| j        j        }nt:          j        j        dv rp|                                  \  }}tC          || j"        z            | _#        tC          || j"        z            | _$        t:          j        j        dk    r| j"        | _%        | &                    | j#        | j$        | j                  \  }}| j'        smtQ          j)        d           }tU          j+        t          j,                  }tU          j+        t          j-                  }t]                      | _'        dt_          |           z  | j'        _0        tc          | 2                    | j3                            | j'        _4        t          j5        t          j6        z  t          j7        z  | j'        _8        d| j'        _9        tu          j;        |ty          d          t          j=        ddt          j>        t          j?        z            | j'        _@        || j'        _A        d | j'        _B        d| j'        _C        d| j'        _D        tu          jE        t          | j'                             t]                      | _G        dt_          |           z  | jG        _0        tc          | 2                    | jH                            | jG        _4        d| jG        _8        d| jG        _9        d| jG        _@        || jG        _A        d | jG        _B        d| jG        _C        d| jG        _D        tu          jE        t          | jG                             | jI        stu          jJ        | j        | j'        j0        d| j        t          jK        t          jK        ||dd| j'        j9        d          | _I        tu          jJ        d| jG        j0        dt          jL        t          jM        z  dddd| jI        d| jG        j9        d          | _N        tu          jO        | jN                  | _P        | jQ        rt          jR        rtu          jS        | jI        t          jT        t          jU        d            tu          jS        | jI        t          jV        t          jU        d            tu          jS        | jI        t          jW        t          jU        d            t          jY        | jI        d           t          dd	dd           }	tu          j[        t          |	          dt          t                              st          d
           nxtu          j^        | jI        t          j_                   tu          j`        | jI        t          ja        | j                   tu          j`        | jI        t          jb        | j                   | j         ra| j8        dk    rt          jc        nt          jd        }
tu          je        | jI        |
| j        jf        | j        jg        ||t          jh                   n| j8        dk    s| j8        dk    r`| i                                 | j8        dk    r@tu          je        | jI        t          jc        dd||t          jj        t          jk        z             n@tu          je        | jI        t          jd        dd||t          jj        t          jh        z             | l                    | j#        | j$                   | jm        sUt          | jo        | jN        | jP                  | _p        | jq        r                    | jp                   | jq        js        | _m        | t                                 | u                    | jv                   | w                    | jx                   | jy        rL| z                                 | {                    d| j#        | j$                   | {                    d           d S d S )Nr   scaledstretchr   zGenericAppClass%dr`   zGenericViewClass%d Trm   z1Warning: Failed to unregister raw input keyboard.overlaytransparent_on_internal_resize	on_expose)|_fullscreenr   WS_POPUPrg   rh   WINDOW_STYLE_DEFAULTWS_OVERLAPPEDWINDOWWINDOW_STYLE_DIALOGWS_OVERLAPPED
WS_CAPTION
WS_SYSMENUWS_EX_DLGMODALFRAMEWINDOW_STYLE_TOOLWS_EX_TOOLWINDOWWINDOW_STYLE_BORDERLESSWINDOW_STYLE_TRANSPARENTWS_EX_LAYEREDWINDOW_STYLE_OVERLAYWS_EX_TRANSPARENT_style
_resizableWS_THICKFRAMEWS_MAXIMIZEBOX_screenget_dpi_dpiscreenwidthheightpygletoptionsdpi_scalingget_requested_sizerf   scale_width_heightrb   _client_to_window_size_window_classr6   GetModuleHandleWr5   GetStockObjectWHITE_BRUSHBLACK_BRUSHr2   idlpszClassNamer3   _get_window_procro   lpfnWndProc
CS_VREDRAW
CS_HREDRAWCS_OWNDCstyle	hInstancer8   
LoadImageWr0   
IMAGE_ICONLR_DEFAULTSIZE	LR_SHAREDhIconhbrBackgroundlpszMenuName
cbClsExtra
cbWndExtraRegisterClassWr!   _view_window_classrp   _hwndCreateWindowExWCW_USEDEFAULTWS_CHILD
WS_VISIBLE
_view_hwndGetDC_dc_file_dropsWINDOWS_7_OR_GREATERChangeWindowMessageFilterExWM_DROPFILESMSGFLT_ALLOWWM_COPYDATAWM_COPYGLOBALDATAr7   DragAcceptFilesr1   RegisterRawInputDevicesr*   print
ShowWindowSW_HIDESetWindowLongW	GWL_STYLEGWL_EXSTYLEHWND_TOPMOSTHWND_NOTOPMOSTSetWindowPosxySWP_FRAMECHANGED_set_transparency
SWP_NOMOVE
SWP_NOSIZE_update_view_locationr   r,   displaycanvasr   attach_context	switch_toset_caption_caption	set_vsync_vsync_visibleset_visibledispatch_event)rM   stylesr   r   whmodulewhiteblackraw_keyboard
hwnd_afters              rN   r   zWin32Window._create   s    	D&/DN !D )I,I1+M(+i.BBYEYY1+ &+i.BBYEYY.) ,y/A1.E-	0MyOf/g)I,>	@WZcZu@u+vF 17t{0C-DND-? 	T4#3 	TNNi55NNNNN	 7):R RSSNNL((**	 	RK%E['FF~)-BBB..001!!dj.11"1tz>22>-::(,
D% ++DKtyQQ E6 ! 	C/55F))*?@@E))*?@@E!)D/BRXX/MD,-4%%d&:;;.= .=D*'0';i>R'RU^Ug'gD$+,D('.'9&/RSBTBTV_Vj:;Q	@X[d[n@n(p (pD$/4D,.2D+,-D),-D)"5);#<#<===&.jjD#$r$xx/ #129%%d&?@@3B 3BD#/,-D#)01D#-,-D#)49D#137D#012D#.12D#."5)@#A#ABBBz ;	6 0!"0''", DJ &5'5"Y%991a
'1	 	DO }T_55DH  	;1 >7
IDZ\e\r8<> > >7
IDY[d[qswxxx7
ID_ajaw8<> > > (T::: *$a>>L2,''F>,B,BD D KIJJJ tz9+<==="4:#,#6#'>3 3 3 "4:#,#8#'#46 6 6
  	i37:3J3J//PYPhJ Z!%PYPjl l l lZ=((DJ),C,C""$$$zY&&$TZ1G%&vy7KiNb7bd d d  Y-E!"Aufi6JYMg6gi i i 	""4;===   	6%dlDOTXNNDKL,,, $ 5D'''t{###= 	- 5t{DLQQQ,,,,,		- 	-rP   r   r   c           
         | j         r%| j        j        |z
  dz  }| j        j        |z
  dz  }ndx}}t	          j        | j        d||||t          j        t          j	        z             d S )Nrn   r   )
r   r   r   r   r8   r   r   r   SWP_NOZORDERSWP_NOOWNERZORDER)rM   r   r   r   r   s        rN   r   z!Win32Window._update_view_locationW  s     	"U*q0A#f,2AAIAT_a5&)2H9Kf2f	h 	h 	h 	h 	hrP   c                   | j         s"t                                                       d S |                     d           t	          j        | j                    t	          j        | j        j        d           t	          j        | j	        j        d           d | _	        d | _        | j
                                         | j                                         d | _         d | _        d | _        t                                                       d S )NTr   )r   ry   closeset_mouse_platform_visibler8   DestroyWindowUnregisterClassWr   r   r   rp   clearro   r   r   )rM   r   s    rN   r  zWin32Window.close`  s    z 	GGMMOOOF''---dj))) !8!FJJJ !3!A1EEE!"&!'')))""$$$
 rP   c                n    t                      }t          j        t          |                     |j        S )zf Checks if Windows DWM is enabled (Windows Vista+)
            Note: Always on for Windows 8+
        )r"   r4   DwmIsCompositionEnabledr!   value)rM   
is_enableds     rN   _dwm_composition_enabledz$Win32Window._dwm_composition_enabledt  s/     WW
'j(9(9:::rP   c                *    t          | j                  S rL   )rE   rx   rM   s    rN   vsynczWin32Window.vsync|  s    DN###rP   r  c                    t           j        d         t           j        d         }|| _        | j        s| j        s|                                 rd}| j                            |           d S )Nr  r   )r   r   rx   r   rw   r  r   r   )rM   r  s     rN   r   zWin32Window.set_vsync  sm    >'".N7+E  	T%5 	9V9V9X9X 	Eu%%%%%rP   c                8    | j                                          d S rL   )r   set_currentr  s    rN   r   zWin32Window.switch_to  s      """""rP   c                j   t          j        dddd          }t                      }t          j        t          j        z  |_        ||_        d|_        t          j
        | j        t          |                     t          j        |           t          j        | j        ddt          j                   d S )Nr   T   )r5   CreateRectRgnr/   r   DWM_BB_ENABLEDWM_BB_BLURREGIONdwFlagshRgnBlurfEnabler4   DwmEnableBlurBehindWindowr   r!   DeleteObjectr8   SetLayeredWindowAttributes	LWA_ALPHA)rM   regionbbs      rN   r   zWin32Window._set_transparency  s    %aB33,y/JJ

)$*eBii@@@F###*4:q#y?RSSSSSrP   c                    |                                   | j        s5| j        s.|                                 r| j        rt          j                     | j                                         d S rL   )	draw_mouse_cursorr   rw   r  rx   r4   DwmFlushr   flipr  s    rN   r&  zWin32Window.flip  sp        	(8 	T=Z=Z=\=\ 	aeao 	rP   statec                   t                      }t                      }t                      }| j        t          j        z  rCt          j        | j        t          |          t          |          t          |                     |r(| xj        t          j
        t          j        z  z  c_        n^| xj        t          j
         z  c_        | j        t          j        z  r/|j        t          j        z  s| xj        t          j         z  c_        t          j        | j        t          j        | j                   |r-t          j        | j        |j        |j        |j                   d S d S rL   )r   r   r   rh   r   r   r8   GetLayeredWindowAttributesr   r!   r   r  r   r   r   r  )rM   r'  	color_refalphaflagss        rN   set_mouse_passthroughz!Win32Window.set_mouse_passthrough  s?   JJ	y66 	i.tz5;K;KUSX\\[`af[g[ghhh 	>)"=	@W"WX)"=!== 9#:: >5;QZQdCd >!!i&=%==!!tz9+@$BSTTT 	f.tz9?EKY^Ydeeeee	f 	frP   r   r   c           
         |                      ||          \  }}t          j        | j        d||ddt          j        t          j        z  t          j        z             d S Nr   )_client_to_window_posr8   r   r   r   r  r   r  )rM   r   r   s      rN   set_locationzWin32Window.set_location  sd    ))!Q//1TZAq!Q'4'23'9:	< 	< 	< 	< 	<rP   tuple[int, int]c                    t          dd          }t          j        | j        t	          |                     |j        |j        fS r/  )r   r8   ClientToScreenr   r!   r   r   )rM   points     rN   get_locationzWin32Window.get_location  s9    atz5<<888wrP   c           
        t           j        j        dv r.t          || j        z            }t          || j        z            }t                                          ||           |                     ||          \  }}t          j	        | j
        ddd||t          j        t          j        z  t          j        z             |                     d| j        | j                   d S )Nr   r   r   )r   r   r   rf   r   ry   set_size_client_to_window_size_dpir8   r   r   r   r  r   r  r   r   r   )rM   r   r   r   s      rN   r8  zWin32Window.set_size  s    >%)>>>
*++E$*,--F'''77vFFvTZAq%'4y7KKiNii	l 	l 	l14;MMMMMrP   c                    ||f| _         d S rL   )ri   rM   r   r   s      rN   set_minimum_sizezWin32Window.set_minimum_size      "F]rP   c                    ||f| _         d S rL   )rj   r;  s      rN   set_maximum_sizezWin32Window.set_maximum_size  r=  rP   c                8    t          j        | j                   d S rL   )r8   SetForegroundWindowr   r  s    rN   activatezWin32Window.activate  s    #DJ/////rP   visiblec           
        |rt           j        }t          j        | j        |ddddt           j        t           j        z  t           j        z             |                     d| j	        | j
                   |                                  |                     d           n9t          j        | j        t           j                   |                     d           || _        |                                  d S )Nr   r   on_showon_hide)r   HWND_TOPr8   r   r   r   r   SWP_SHOWWINDOWr   r   r   rB  r   r   r   r  )rM   rC  insertAfters      rN   r   zWin32Window.set_visible  s     		+#,K [!Q1!*!5	8L!LyOg!gi i i 5t{DLQQQMMOOO	****tz9+<===	***'')))))rP   c                N    t          j        | j        t          j                   d S rL   )r8   r   r   r   SW_MINIMIZEr  s    rN   minimizezWin32Window.minimize       4:y'<=====rP   c                N    t          j        | j        t          j                   d S rL   )r8   r   r   r   SW_MAXIMIZEr  s    rN   maximizezWin32Window.maximize  rM  rP   c                    t          j        | j        t          j                  fd| j                                        D             d         S )z Gets the current screen the window is on.
            If between monitors will retrieve the screen with the most screen space.
        c                *    g | ]}|j         k    |S rU   )_handle).0r   handles     rN   
<listcomp>z1Win32Window.get_window_screen.<locals>.<listcomp>  s&    \\\66>U[C[C[C[C[C[rP   r   )r8   MonitorFromWindowr   r   MONITOR_DEFAULTTONEARESTr   get_screens)rM   rU  s    @rN   get_window_screenzWin32Window.get_window_screen  sJ     *4:y7YZZ\\\\T\%=%=%?%?\\\]^__rP   captionstrc                b    || _         t          j        | j        t	          |                     d S rL   )r   r8   SetWindowTextWr   r&   )rM   r[  s     rN   r   zWin32Window.set_caption  s,    tz9W+=+=>>>>>rP   platform_visiblebool | Nonec                j   |8| j         r!| j         r| j        j         p| j        j        p| j         p| j         }|r| j        j        rt          | j        t                    r| j        j	        }nat          | j        t                    r-t          j        d t          t          j                            }n|                     | j                  }t          j        | j        t          j        |           t          j        |           || j        k    rd S |                     |           || _        d S rL   )_mouse_visibler[   _mouse_cursorrF   rG   _mouse_in_window
_has_focus
isinstancerD   rH   r:   r8   LoadCursorWr0   r   	IDC_ARROW_create_cursor_from_imageSetClassLongPtrWr   GCL_HCURSOR	SetCursorr]   _set_cursor_visibility)rM   r_  rH   s      rN   r  z&Win32Window.set_mouse_platform_visible  sD   # $ 3 !g$($9 9!g%)%7%C!C!etGYGe 5 %)$9 9 !4$(O 3	   		& 2 > 		&$,.>?? L+2D.0BCC L ,T?9CV3W3WXX778JKK$T_i6KVTTTf%%%t;;;F##$4555'7$$$rP   c                    t           j        j        dk    r8t          | j        | j        z            t          | j        | j        z            fS | j        | j        fS )Nr   )r   r   r   rf   r   r   r   r  s    rN   get_sizezWin32Window.get_size  sN    >%22t{TZ/00#dlTZ6O2P2PPP{DL((rP   c                    | j         | j        fS rL   )r   r   r  s    rN   get_framebuffer_sizez Win32Window.get_framebuffer_size  s    {DL((rP   c                L    t           |k    rt          j        |           |a d S d S rL   )rV   r8   
ShowCursor)rM   r_  s     rN   rm  z"Win32Window._set_cursor_visibility  s6     !$444/000$4!!! 54rP   c                   | j         s| j        rd S t                      }t          j        | j        t          |                     t          j        | j        t          j	        t          |          d           |xj
        dz  c_
        |xj        dz  c_        |xj        dz  c_        |xj        dz  c_        t          j        t          |                     d S )Nrn   r`   )r_   r^   r	   r8   GetClientRectr   r!   MapWindowPointsr   HWND_DESKTOPtopleftrightbottom
ClipCursor)rM   rects     rN   _update_clipped_cursorz"Win32Window._update_clipped_cursor"  s      	!4 	FvvdouT{{;;;1G %dQ	0 	0 	0 	A		Q		

a

q5;;'''''rP   	exclusivec                   | j         |k    r| j        | j        k    rd S t          dddd           }|st          j        |_        d |_        t          j	        t          |          dt          t                              s|rd}t          |          d| _        |r| j        r|                                  nt          j        d            || _         | j        | _        |                     |            d S )Nr`   rn   r   z"Cannot enter mouse exclusive mode.)r[   r\   re  r1   r   RIDEV_REMOVEr  
hwndTargetr8   r   r!   r*   r=   _exclusive_mouse_buttonsr~  r|  r  )rM   r  	raw_mousemsgs       rN   set_exclusive_mousezWin32Window.set_exclusive_mouse5  s    I--+t>>F #4q$77	 	( ) 6I#'I .i  !VN%;%;= = 	+ +:%c***()% 	% 	%'')))) t$$$ )&*o#''I66666rP   absolutec                L   |st                      }t          j        | j        t	          |                     t          j        | j        t          j        t	          |          d           ||j        z   }|j	        |j
        |j	        z
  z   |z
  }t          j        ||           d S )Nrn   )r	   r8   ru  r   r!   rv  r   rw  ry  rx  r{  SetCursorPos)rM   r   r   r  r}  s        rN   set_mouse_positionzWin32Window.set_mouse_positionQ  s     	866D!$/5;;???#DOY5KUSW[[Z[\\\DIADK$(23a7AQ"""""rP   c                    | j         |k    r| j        | j        k    rd S |r8| j        r1t          j        | j        dt          j        t          j                   n#| j         r|st          j	        | j        d           || _         | j        | _        d S r/  )
rY   rZ   re  r8   RegisterHotKeyr   r   WIN32_MOD_ALTVK_TABUnregisterHotKey)rM   r  s     rN   set_exclusive_keyboardz"Win32Window.set_exclusive_keyboard\  s    #y00.$/AAF 	4 	4"4:q)2I9K[\\\\% 	4i 	4$TZ333#, )-&&&rP   name%DefaultMouseCursor | Win32MouseCursorc                b   || j         k    rt                      S i | j        t          j        | j        t          j        | j        t          j        | j	        t          j
        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j        | j        t          j         i}||vrd| d}tC          |          tE          j#        d tI          ||                             }tK          |          S )NzUnknown cursor name "")&CURSOR_DEFAULTr:   CURSOR_CROSSHAIRr   	IDC_CROSSCURSOR_HANDIDC_HANDCURSOR_HELPIDC_HELP	CURSOR_NOIDC_NOCURSOR_SIZEIDC_SIZEALLCURSOR_SIZE_UP
IDC_SIZENSCURSOR_SIZE_UP_RIGHTIDC_SIZENESWCURSOR_SIZE_RIGHT
IDC_SIZEWECURSOR_SIZE_DOWN_RIGHTIDC_SIZENWSECURSOR_SIZE_DOWNCURSOR_SIZE_DOWN_LEFTCURSOR_SIZE_LEFTCURSOR_SIZE_UP_LEFTCURSOR_SIZE_UP_DOWNCURSOR_SIZE_LEFT_RIGHTCURSOR_TEXT	IDC_IBEAMCURSOR_WAITIDC_WAITCURSOR_WAIT_ARROWIDC_APPSTARTINGRuntimeErrorr8   rg  r0   rD   )rM   r  namesr  rH   s        rN   get_system_mouse_cursorz#Win32Window.get_system_mouse_cursori  s   4&&&%'''
!9#6
i0
 i0
 NI,	

 i3
 !5
 %y'=
 "I$8
 ')?
 !9#7
 &	(>
 !9#7
 $i&<
 $i&:
 ')=
  i1!
" i0#
$ "I$=%
 
( u1$111Cs###$T?5;+G+GHH'''rP   imagespyglet.image.ImageDatac                   d
fd}dd	} |t          j        t          j                  t          j        t          j                            } ||          }t          j        | j        t          j        |            |t          j        t          j                  t          j        t          j	                            } ||          }t          j        | j        t          j
        |           d S )Nr   rf   r   rI   r  c                    d         }D ]I}|j         | k    r|j        |k    r|c S |j         | k    r"|j         |j        z  |j         |j        z  k    r|}J|S r/  )r   r   )r   r   b_imageimgr  s       rN   
best_imagez(Win32Window.set_icon.<locals>.best_image  sr    QiG " "9%%#**>*>JJJ9%%	CJ.1OOO!GNrP   r  r   c                   d}t          |          | j        z  }t                      }t          |          |_        | j        |_        | j        |_        d|_        d|_	        t          j        |_        d|_        d|_        d|_        d|_        t#          j        d           }t'                      }t)          j        |t-          |          t          j        t-          |          d d          }t#          j        d |           |                                 } |                     ||          }t7          ||t          |                     t)          j        | j        | j        ddd           }t;                      }	d	|	_        ||	_        ||	_         t#          j!        t-          |	                    }
t)          j"        |           t)          j"        |           |
S )
NBGRAr`       i      r  l      ~ r   T)#lenr   r.   r*   bV5SizebV5Widthr   	bV5Height	bV5PlanesbV5BitCountr   BI_BITFIELDSbV5Compression
bV5RedMaskbV5GreenMaskbV5BlueMaskbV5AlphaMaskr8   r   r%   r5   CreateDIBSectionr!   DIB_RGB_COLORS	ReleaseDCget_image_dataget_datar)   CreateBitmapr   fIconhbmMaskhbmColorCreateIconIndirectr  )r  fmtpitchheaderhdcdataptrbitmapdatamaskiconinfoicon_indirects              rN   get_iconz&Win32Window.set_icon.<locals>.get_icon  s   CHHsy(E#%%F#F^^FN!iFO"zF F!#F$-$:F! *F",F!+F",F-%%CjjG,S%--AY-27^^T1F FFdC((($$&&C<<U++DGT3t99---&sy#*aDIIDzzH!HN#H &H#6uXGGM%%%'''  rP   )r   rf   r   rf   rI   r  )r  r  rI   r   )r8   GetSystemMetricsr   	SM_CXICON	SM_CYICONrj  r   	GCL_HICONSM_CXSMICONSM_CYSMICONGCL_HICONSM)rM   r  r  r  imageicons    `    rN   set_iconzWin32Window.set_icon  s    	 	 	 	 	 	&	! &	! &	! &	!R 
73I4GHH"3I4GHHJ Jx Y-@$GGG 
73I4IJJ"3I4IJJL Lx Y-BDIIIIIrP   rH   r;   r   c                   d}|j         }t          |          |j        z  }t                      }t	          |          |_        |j        |_        |j        |_        d|_	        d|_
        t          j        d          }t                      }t          j        |t!          |          t"          j        t!          |          dd          }t          j        d|           |                                }|                    ||          }	t-          ||	t          |	                     t          j        |j        |j        ddd          }
t1                      }d|_        |
|_        ||_        t9          |j                  |_        t9          |j        |j        z
            |_         t          j!        t!          |                    }t          j"        |
           t          j"        |           |S )z5Creates platform cursor from an ImageCursor instance.r  r`   r  Nr   F)#texturer  r   r   r*   biSizebiWidthr   biHeightbiPlanes
biBitCountr8   r   r%   r5   r  r!   r   r  r  r  r  r)   r  r   r  r  r  rf   hot_xxHotspothot_yyHotspotr  r  )rM   rH   r  r  r  r  r  r  r  r  r  r  r  s                rN   ri  z%Win32Window._create_cursor_from_image  s    C5;&!##v,mD!!**(eFmmY=U).wqB B$$$$$$&&~~c5))s4yy)))"5;aDII::"--v| ;<<)%//::D!!!F###rP   textc                   t          j        | j                  }|sd S t          j                     t	          |          dz   t          t                    z  }t          j        t          j
        |          }t          j        |          }t          |||           t          j        |           t          j        t          j        |           t          j                     d S Nr`   )r8   OpenClipboardr   EmptyClipboardr  r*   r   r6   GlobalAllocr   GMEM_MOVEABLE
GlobalLockr)   GlobalUnlockSetClipboardDataCF_UNICODETEXTCloseClipboard)rM   r  validsizecb_datalocked_datas         rN   set_clipboard_textzWin32Window.set_clipboard_text  s    %do66 	F   D		A.'	(?FF*733T4(((w''' !97CCC     rP   c                :   d}t          j        | j                  }|st          d           dS t          j        t
          j                  }|r9t          j        |          }|r#t          |          }t          j
        |           t          j                     |S )Nr   zCould not open clipboard)r8   r  r   r   GetClipboardDatar   r  r6   r  r+   r   r  )rM   r  r  cb_objr  s        rN   get_clipboard_textzWin32Window.get_clipboard_text  s    %do66 	,---2))*BCC 	/#.v66K /!+..&v...   rP   dpic                f   t                      }d|_        d|_        ||_        ||_        t
          j        r0t          j        t          |          | j
        d| j        |           n.t          j        t          |          | j
        d| j                   |j        |j        z
  |j        |j        z
  fS )Nr   F)r	   ry  rx  rz  r{  r   (WINDOWS_10_ANNIVERSARY_UPDATE_OR_GREATERr8   AdjustWindowRectExForDpir!   rg   rh   AdjustWindowRectEx)rM   r   r   r  r}  s        rN   r   z"Win32Window._client_to_window_size  s    vv	
= 	Q,U4[[-1^UDDUWZ\ \ \ \ &uT{{'+~ud>OQ Q Q zDI%t{TX'===rP   c           	        t                      }d|_        d|_        ||_        ||_        t
          j        rGt          j        t          |          | j
        d| j        t          j        | j                             n.t          j        t          |          | j
        d| j                   |j        |j        z
  |j        |j        z
  fS )z This returns the true window size factoring in styles, borders, title bars.
            Retrieves DPI directly from the Window hwnd, used after window creation.
        r   F)r	   ry  rx  rz  r{  r   r  r8   r  r!   rg   rh   GetDpiForWindowr   r  )rM   r   r   r}  s       rN   r9  z&Win32Window._client_to_window_size_dpi)  s     vv	
= 	:,U4[[t'8':QRVR\:]:]_ _ _ _ &uT{{t'8: : : zDI%t{TX'===rP   c           	     D   t          ||||          }t          j        rGt          j        t          |          | j        d| j        t          j        | j	                             n.t          j
        t          |          | j        d| j                   |j        |j        fS )NF)r	   r   r  r8   r  r!   rg   rh   r  r   r  ry  rx  )rM   r   r   r}  s       rN   r0  z!Win32Window._client_to_window_pos<  s    Aq!Q= 	:,U4[[t'8':QRVR\:]:]_ _ _ _ &uT{{t'8: : :y$(""rP   c                   ddl m} |j                                         d| _        |                                  t                      }t          j        t          |          dddt          j                  rqt          j        t          |                     t          j        t          |                     t          j        t          |          dddt          j                  qd| _        dS )Legacy or manual dispatch.r   appTFN)r   r  platform_event_loopstart_allow_dispatch_eventdispatch_pending_eventsr   r8   PeekMessageWr!   r   	PM_REMOVETranslateMessageDispatchMessageW)rM   r  r  s      rN   dispatch_eventszWin32Window.dispatch_eventsI  s    %%'''%)"$$&&&ee"5::q!Q	8KLL 	1$U3ZZ000$U3ZZ000 "5::q!Q	8KLL 	1 &+"""rP   c                    | j         rc| j                                         }t          |d         t                    rt	          j        | g|R   n |d         |dd           | j         adS dS )r  r   r`   N)_event_queuepopleftrf  r\  r-   r   )rM   events     rN   r  z#Win32Window.dispatch_pending_eventsV  s     	%%--//E%(C(( %.t<e<<<<< a%)$$  	% 	% 	% 	% 	%rP   event_handlersdict+Callable[[HWND, MSG, int, int], int | None]c                     d fd
}|S )Nhwndr   r  r   wParamrf   lParamrI   
int | Nonec                                         |          }d }|rEj        sj        r	|t          v r ||||          }n d}j                            ||||f           |t          j        | |||          }|S r/  )getr  _enable_event_queue_priority_eventsr#  appendr8   DefWindowProcW)r*  r  r+  r,  event_handlerresultr&  rM   s         rN   fz'Win32Window._get_window_proc.<locals>.fb  s    *..s33MF ?- ?T5M ?QTXhQhQh*]3??FFF%,,mS.4f.> ? ? ?~ /c66JJMrP   )
r*  r   r  r   r+  rf   r,  rf   rI   r-  rU   )rM   r&  r6  s   `` rN   r   zWin32Window._get_window_proca  s.    	 	 	 	 	 	 	 rP   
key_lParamc                   d}| j         d         s| j         d         r|t          j        z  }t          j        t
          j                  dz  r|t          j        z  }t          j        t
          j                  dz  r|t          j	        z  }t          j        t
          j
                  dz  r|t          j        z  }t          j        t
          j                  dz  r|t          j        z  }t          j        t
          j                  dz  r|t          j        z  }|r|dz  r|t          j        z  }n1t          j        t
          j                  dk     r|t          j        z  }|S )Nr   rd   rc   r  r  i    )re   r@   	MOD_SHIFTr8   GetKeyStater   
VK_CONTROLMOD_CTRLVK_LWINMOD_WINDOWS
VK_CAPITALMOD_CAPSLOCK
VK_NUMLOCKMOD_NUMLOCK	VK_SCROLLMOD_SCROLLLOCKMOD_ALTVK_MENU)rM   r7  	modifierss      rN   _get_modifierszWin32Window._get_modifierst  sD   	& 	'$*>u*E 	'&Iy344v= 	&%Iy011F: 	)(Iy344v= 	*))Iy344v= 	)(Iy233f< 	,++I 	%W% )S[(	 !233a77$IrP   r,  c                f    t          | dz            j        }t          | dz	            j        }||fS )Ni     )r#   r  )r,  r   r   s      rN   _get_locationzWin32Window._get_location  s3    FVO$$*FbL!!'!trP   r  r+  r-  c                6   d}|dz  r|t           j        t           j        fvrd}d}nd}t          j        |d           }|3t          j        |t           j                  }t          j        |          }|t          j
        |          }nC|t          j        k    r|dz  rt          j        }n!|t          j        k    r|dz  rt          j        }|t           j        k    rd S |                     |          }|s|                     |||           |t          j        z  dk    }	||	ft&          v re|t           j        t           j        fvrKt&          ||	f         }
|t          j        z  r|                     d|
           n|                     d	|
           | j        rdS d S )
NFi   @Ton_key_releaseon_key_pressi   r   on_text_motion_selecton_text_motion)r   WM_KEYUPWM_SYSKEYUPr   r/  r8   MapVirtualKeyWMAPVK_VK_TO_CHARr   r@   user_keyLCTRLRCTRLLALTRALTVK_SHIFTrH  r   r<  rB   r9  rY   )rM   r  r+  r,  repeatevsymbolchrG  ctrlmotions              rN   
_event_keyzWin32Window._event_key  s   
 W 	 9-y/DEEE!BBBFD))>'	0JKKBYr]]F>\&))FFsy  Vw%7 YFFsxFg$6XFY'''4''//	 	7FI6663<'1,D>[((S9KYMb8c-c-c .F3=( >##$;VDDDD##$4f=== # 	1trP   c                    d| _         d S )NT)r_   rM   r  r+  r,  s       rN   _event_ncl_button_downz"Win32Window._event_ncl_button_down  s    !rP   c                    d| _         | j        rUt          j        t          j                  }|dz  s4| j        rd| _        | j        s| j        s| 	                                 d S d S d S d S )NFi   )
r_   r[   r8   GetAsyncKeyStater   
VK_LBUTTONr^   re  _hiddenr~  )rM   r  r+  r,  r'  s        rN   _event_capture_changedz"Win32Window._event_capture_changed  s    "  	2,Y-ABBE6> 2& 0*/D'? 2$, 2//11111	2 	22 22 2rP   c                    t          |          }t          j        |          dk    s|dk    r|                     d|           dS )NCcon_textr   )chrunicodedatacategoryr   )rM   r  r+  r,  r  s        rN   _event_charzWin32Window._event_char  sF    6{{%%--	4000qrP   c           
        t          |t                    }t                      }t          t	          |                    }t          j        |t          j        t          |          t          |          t	          t                               |j        j        t          j        k    rs| j        sdS |j        j        }|j        dz  t          j        k    r|j        dk    s|j        dk    rw| j        }| j        rE|                     ddd|j        |z  |j         |z  | j        |                                            n|                     ddd|j        |j                    nd| j        |j        |j        f| _        | j        \  }	}
|j        |	z
  }|j        |
z
  }|dk    s|dk    rq| j        r>|                     ddd|j        |j         | j        |                                            n|                     ddd||           |j        |j        f| _        n|j        j        t          j        k    r|j        j        j        dk    rdS |j        j        j        t          j        z  }|j        j        j        dk    r|sK| j         d         s>d| j         d<   |                     d	tB          j"        |                                            n|rJ| j         d         r=d
| j         d<   |                     dtB          j"        |                                            n|j        j        j        dk    r|sK| j         d         s>d| j         d<   |                     d	tB          j#        |                                            nL|rJ| j         d         r=d
| j         d<   |                     dtB          j#        |                                            dS )Nr   r`   on_mouse_dragon_mouse_motiong        r  rc   TrN  FrM  rd   )$r'   r   r   r   r*   r8   GetRawInputDatar   	RID_INPUTr!   r   r  dwTypeRIM_TYPEMOUSEr[   r  rA   usFlagsMOUSE_MOVE_RELATIVElLastXlLastYr   r  r   rH  _exclusive_mouse_lposRIM_TYPEKEYBOARDkeyboardVKeyFlagsRI_KEY_BREAKMakeCodere   r@   LSHIFTRSHIFT)rM   r  r+  r,  	hRawInputinpr  rmouser   last_xlast_yrel_xrel_ykey_ups                 rN   _event_raw_inputzWin32Window._event_raw_input  s   ++	jjF3KK  	9+>c

 %dVN-C-C	E 	E 	E :	 777( qX^F~$	(EEE=A%%!);); JE 4 K++OQ,2ME,AFM>TYCY,0,I,0,?,?,A,AC C C C
 ++,=q!,2MFM>K K K -5171MD.!%!;..A::#4 :++OQ,2MFM>,0,I,0,?,?,A,AC C C C
 ++,=q!,15: : :171MD.Z)"<<<x %,,qX&,y/EEFx )U22 ]d&:5&A ]26D(/''
DDWDWDYDYZZZZ ] 4U ; ]27D(/''(8#*dFYFYF[F[\\\"+u44 ]d&:5&A ]26D(/''
DDWDWDYDYZZZZ ] 4U ; ]27D(/''(8#*dFYFYF[F[\\\qrP   c           	        | j         r	| j        rdS |                     |          \  }}| j        |z
  }|| j        z
  }|| j        z
  }| j        sd| _        |                                  | 	                    d|| j
        z  || j
        z             d| _        t                      }t          |          |_        t          j        |_        | j        |_        t'          j        t+          |                     | j        |k    r| j        |k    rdS || _        || _        d}	|t          j        z  r|	t.          j        z  }	|t          j        z  r|	t.          j        z  }	|t          j        z  r|	t.          j        z  }	|t          j        z  r|	t.          j        z  }	|t          j        z  r|	t.          j         z  }	|	rP| !                                }
| 	                    d|| j
        z  || j
        z  || j
        z  || j
        z  |	|
           n9| 	                    d|| j
        z  || j
        z  || j
        z  || j
        z             dS )Nr   Ton_mouse_enterrs  rt  )"r[   re  rK  r   _mouse_x_mouse_y	_trackingrd  r  r   rb   r   r*   cbSizer   	TME_LEAVEr  r   	hwndTrackr8   TrackMouseEventr!   
MK_LBUTTONrA   LEFT
MK_MBUTTONMIDDLE
MK_RBUTTONRIGHTMK_XBUTTON1MOUSE4MK_XBUTTON2MOUSE5rH  )rM   r  r+  r,  r   r   dxdytrackbuttonsrG  s              rN   _event_mousemovezWin32Window._event_mousemove  s      	T_ 	1!!&))1L1~ 	2
 %)D!++--- 0!d6G2GTM^I^___!DN#%%E!%==EL%/EM"oEO#E%LL111 =A$-1"4"41I(( 	"uz!GI(( 	$u|#GI(( 	#u{"GI)) 	$u|#GI)) 	$u|#G 	Q++--I !D$5 5q4;L7LbSWSdNdfhkok|f|  F  HQR R R R  11t7H3H!dN_J_acfjfwawy{  C  P  zP  Q  Q  QqrP   c                p   t                      }t          j        t          |                     t          j        | j        t          |                     |j        }| j        |j        z
  }d| _	        d| _
        |                                  |                     d|| j        z  || j        z             dS )NFon_mouse_leaver   )r   r8   GetCursorPosr!   ScreenToClientr   r   r   r   r  rd  r  r   rb   )rM   r  r+  r,  r5  r   r   s          rN   _event_mouseleavezWin32Window._event_mouseleaveX  s     U5\\***te===GL57" %''))),a$2C.CQIZEZ[[[qrP   r\  buttonc                &   |dk    rt          j        | j                   nt          j                     |                     |          \  }}| j        |z
  }|                     ||| j        z  || j        z  ||                                            dS )Non_mouse_pressr   )	r8   
SetCapturer   ReleaseCapturerK  r   r   rb   rH  )rM   r\  r  r,  r   r   s         rN   _event_mousebuttonzWin32Window._event_mousebuttonf  s    !!!t////"$$$!!&))1L1BD$5 5q4;L7LfVZViViVkVklllqrP   c                D    |                      dt          j        |          S Nr  r  rA   r  rc  s       rN   _event_lbuttondownzWin32Window._event_lbuttondownp  s%     &&ej&2 2 	2rP   c                D    |                      dt          j        |          S Non_mouse_releaser  rc  s       rN   _event_lbuttonupzWin32Window._event_lbuttonupv  s%     &&
F4 4 	4rP   c                D    |                      dt          j        |          S r  r  rA   r  rc  s       rN   _event_mbuttondownzWin32Window._event_mbuttondown|  s%     &&elF4 4 	4rP   c                D    |                      dt          j        |          S r  r  rc  s       rN   _event_mbuttonupzWin32Window._event_mbuttonup  s%     &&f6 6 	6rP   c                D    |                      dt          j        |          S r  r  rA   r  rc  s       rN   _event_rbuttondownzWin32Window._event_rbuttondown  s%     &&ek63 3 	3rP   c                D    |                      dt          j        |          S r  r  rc  s       rN   _event_rbuttonupzWin32Window._event_rbuttonup  s%     &&V5 5 	5rP   c                    t          |dz	            j        dk    rt          j        }t          |dz	            j        dk    rt          j        }|                     d||          S )NrJ  r`   rn   r  r$   r  rA   r  r  r  rM   r  r+  r,  r  s        rN   _event_xbuttondownzWin32Window._event_xbuttondown  se     6R<  &!++\F6R<  &!++\F&&ff. . 	.rP   c                    t          |dz	            j        dk    rt          j        }t          |dz	            j        dk    rt          j        }|                     d||          S )NrJ  r`   rn   r  r  r  s        rN   _event_xbuttonupzWin32Window._event_xbuttonup  se     6R<  &!++\F6R<  &!++\F&&0 0 	0rP   c           
         t          |dz	            j        }|                     d| j        | j        d|t          t          j                  z             dS )NrJ  on_mouse_scrollr   )r$   r  r   r  r  ra   r   WHEEL_DELTA)rM   r  r+  r,  deltas        rN   _event_mousewheelzWin32Window._event_mousewheel  sV    "%%+- M4=!UU9K`EaEa=a	c 	c 	cqrP   c                0    |                      d           dS )Non_closer   r   rc  s       rN   _event_closezWin32Window._event_close  s    J'''qrP   c                0    |                      d           d S )Nr   r  rc  s       rN   _event_paintzWin32Window._event_paint  s     	K(((
 	rP   c                R    ddl m} |j        |j                                         dS )Nr   r  r`   )r   r  
event_loopenter_blockingrM   r  r+  r,  r  s        rN   _event_sizingzWin32Window._event_sizing  s5    >%N))+++qrP   c                   | j         sd S |t          j        k    rd| _        |                     d           dS | j        rd| _        |                     d           |                     |          \  }}| j        s||c| _        | _        | 	                    | j        | j                   | j
        r|                                  |                                  |                     d| j        | j                   dS )NTrF  r   FrE  r   )r   r   SIZE_MINIMIZEDrh  r   rK  r   r   r   r   r[   r~  r   )rM   r  r+  r,  r   r   s         rN   _event_sizezWin32Window._event_size  s   x 	 4Y---DL	***1< 	+ DL	***!!&))1 	-()1%DK""4;===  	*'')))14;MMMqrP   c                <    |t           j        k    r|dz  dk    rdS d S r/  )r   
SC_KEYMENUrc  s       rN   _event_syscommandzWin32Window._event_syscommand  s+     Y)))f.@A.E.E1trP   c                    |                      |          \  }}|                     d|| j        z  || j        z             dS )Non_mover   )rK  r   rb   )rM   r  r+  r,  r   r   s         rN   _event_movezWin32Window._event_move  sF    !!&))1Iq4+<'<a$BS>STTTqrP   c                .   | j         r| j        s|                     |          \  }}|t          j        k    r|                     d           dS |t          j        t          j        t          j        t          j	        fv r|                     d           dS d S )NFr`   T)
r[   r]   rK  r   HTCLIENTrm  	HTCAPTIONHTCLOSEHTMAXBUTTONHTMINBUTTON)rM   r  r+  r,  lohis         rN   _event_setcursorzWin32Window._event_setcursor  s      	)E 	''//FBY'''++E222q	+Y->	@U!-/ / /++D111qtrP   c                d    d| _         ddlm} |j        |j                                         d S d S )NTr   r  )_movingr   r  r  r  r  s        rN   _event_entersizemovez Win32Window._event_entersizemove  sE    >%N))+++++ &%rP   c                    d| _         ddlm} |j        |j                                         | j        r|                                  d S d S )NFr   r  )r  r   r  r  exit_blockingr[   r~  r  s        rN   _event_exitsizemovezWin32Window._event_exitsizemove  sd    >%N((***  	*'')))))	* 	*rP   c                    |                      d           d| _        | j        r%t          j        t
          j                  rd| _        |                     | j	                   | 
                    | j                   dS )Non_activateTr   )r   re  r[   r8   rf  r   rg  r^   r  rY   r  rc  s       rN   _event_setfocuszWin32Window._event_setfocus  sx    M***  	'W%=i>R%S%S 	'"&D##D$<===  !6777qrP   c                   |                      d           d| _        | j        }| j        }|                     d           |                     d           | j        D ]}d| j        |<   || _        d| _        || _        d| _        dS )Non_deactivateFr   )	r   re  rY   r[   r  r  re   rZ   r\   )rM   r  r+  r,  exclusive_keyboardexclusive_mouser]  s          rN   _event_killfocuszWin32Window._event_killfocus  s    O,,,!5/##E***  ''' * 	1 	1F+0D (( $6 ).& /&+#qrP   c                    t          j        |          }| j        r& | j        | j         \  |j        _        |j        _        | j        r& | j        | j         \  |j        _        |j        _        dS r/  )	r   from_addressri   r9  ptMinTrackSizer   r   rj   ptMaxTrackSize)rM   r  r+  r,  infos        rN   _event_getminmaxinfoz Win32Window._event_getminmaxinfo2  sy    &v.. 	E//1CD 9D!4#6#8 	E//1CD 9D!4#6#8qrP   c                    | j         rdS dS )Nr   r`   )r   rc  s       rN   _event_erasebkgndzWin32Window._event_erasebkgnd>  s      	1qrP   c                    dS r  rU   rc  s       rN   _event_erasebkgnd_viewz"Win32Window._event_erasebkgnd_viewF  s	     qrP   c                   |}t          j        |dd d          }t                      }t          j        |t	          |                     g }t          |          D ]_}t          j        ||d d          }	t          |	dz             }
t          j        |||
|	dz              |                    |
j                   `t          j	        |           | 
                    d|j        | j        |j        z
  |           dS )Nl    r   r`   on_file_drop)r7   DragQueryFileWr   DragQueryPointr!   ranger(   r2  r  
DragFinishr   r   r   r   )rM   r  r+  r,  drop
file_countr5  pathsilengthbuffers              rN   _event_drop_fileszWin32Window._event_drop_filesL  s     ,T:tQGG
 eEll333z"" 	' 	'A,T1dA>>F*6A:66F#D!VVaZ@@@LL&&&&D!!! 	NEGT\EG5KUSSSqrP   c           	     t   t           j        j        dv rd S t          |t	          t
                              j        }|}t          j        rt                      }t                      }t          j        t          |          | j        d| j        t          j        | j                             t          j        t          |          | j        d| j        |           |xj        |j        |j        z
  |j        |j        z
  z
  z  c_        |xj        |j        |j        z
  |j        |j        z
  z
  z  c_        dS d S )Nr   Fr`   )r   r   r   r'   r    r
   contentsr   %WINDOWS_10_CREATORS_UPDATE_OR_GREATERr	   r8   r  r!   rg   rh   r  r   cxrz  ry  cyr{  rx  )rM   r  r+  r,  r  r  currentr5  s           rN   _event_dpi_scaled_sizez"Win32Window._event_dpi_scaled_sizeg  s   >%)>>>4FGDMM**3: 	ffGVVF ,U7^^-1^UDDU-4-DTZ-P-PR R R ,U6]]-1^UDDUWZ\ \ \ GGv{2w}w|7STTGGGG
2w~7STTGG1trP   c           
     l   |                      |          \  }}|t          j        z  }|| _        | j        st
          j        j        dk    st          j        rt          |t          t                              j        }|j        }|j        }	|j        |j        z
  }
|j        |j        z
  }t#          j        | j        d||	|
|t          j        t          j        z  t          j        z             t
          j        j        dk    r|| _        |                                  |                     d||           dS )Nrealr   r   _on_internal_scaler`   )rK  r   USER_DEFAULT_SCREEN_DPIr   r   r   r   r   r  r'   r    r	   r  ry  rx  rz  r{  r8   r   r   r  r  SWP_NOACTIVATErb   r   r   )rM   r  r+  r,  y_dpix_dpir   suggested_rectr   r   r   r   s               rN   _event_dpi_changezWin32Window._event_dpi_change  s   ))&11u	99	 
	r+v559h5!&'$--88AN#A"A"(>+>>E#*^-??F Q1eV!*!7):U!UXaXp!pr r r >%22 %D0%???qrP   )rI   rJ   )r   r   rI   rJ   )r   rf   r   rf   rI   rJ   )rI   rf   )rI   rE   )r  rE   rI   rJ   )r'  rE   rI   rJ   )r   rf   r   rf   rI   rJ   )rI   r2  )T)rC  rE   rI   rJ   )r[  r\  rI   rJ   rL   )r_  r`  rI   rJ   )r_  rE   rI   rJ   )r  rE   rI   rJ   )F)r   rf   r   rf   r  rE   rI   rJ   )r  r\  rI   r  )r  r  rI   rJ   )rH   r;   rI   r   )r  r\  rI   rJ   )rI   r\  )r   rf   r   rf   r  rf   rI   r2  )r   rf   r   rf   rI   r2  )r&  r'  rI   r(  )r   )r7  rf   rI   rf   )r,  rf   rI   r2  )r  rf   r+  rf   r,  rf   rI   r-  )r  rf   r+  rf   r,  rf   rI   rJ   )r  rf   r+  rf   r,  rf   rI   rf   )r\  r\  r  rf   r,  rf   rI   rf   )rQ   rR   rS   r   r   r   r   r  rh  re  rY   rT   rZ   r[   r\   _exclusive_mouse_screenr}  r  r]   r^   r_   rb   re   rg   rh   ri   rj   rO   r   r   r   r  r  propertyr  r   r   r   r&  r-  r1  r6  r8  r<  r?  rB  r   rL  rP  rZ  r   r  ro  rq  rm  r~  r  r  r  r  r  r   ri  r  r  r   r9  r0  r!  r  r   rH  staticmethodrK  Win32EventHandlerr   
WM_KEYDOWNrQ  WM_SYSKEYDOWNrR  ra  WM_NCLBUTTONDOWNrd  WM_CAPTURECHANGEDri  WM_CHARrq  WM_INPUTr  ViewEventHandlerWM_MOUSEMOVEr  WM_MOUSELEAVEr  r  WM_LBUTTONDOWNr  WM_LBUTTONUPr  WM_MBUTTONDOWNr  WM_MBUTTONUPr  WM_RBUTTONDOWNr  WM_RBUTTONUPr  WM_XBUTTONDOWNr  WM_XBUTTONUPr  WM_MOUSEWHEELr  WM_CLOSEr  WM_PAINTr  	WM_SIZINGr  WM_SIZEr  WM_SYSCOMMANDr  WM_MOVEr  WM_SETCURSORr  WM_ENTERSIZEMOVEr  WM_EXITSIZEMOVEr  WM_SETFOCUSr  WM_KILLFOCUSr  WM_GETMINMAXINFOr  WM_ERASEBKGNDr  r  r   r  WM_GETDPISCALEDSIZEr  WM_DPICHANGEDr   __classcell__)r   s   @rN   rX   rX   w   s#        ME
CLIGJ %%%%%&*****"""""#'''''"  $((((( N    ML/4U'C'COCCCCIL,0M0000,0M0000* * * * * *&   h- h- h- h-Th h h h     (        $ $ $ X$
& 
& 
& 
&# # # #
T 
T 
T 
T   f f f f*< < < <       
	N 	N 	N 	N 	N 	N+ + + ++ + + +0 0 0 0* * * * *> > > >> > > >` ` `? ? ? ?8 8 8 8 84) ) ) )) ) ) )5 5 5 5( ( ( (&7 7 7 7 78	# 	# 	# 	# 	#9 9 9 9 9( ( ( (<CJ CJ CJ CJJ $ $ $ Y$L! ! ! !$   (> > > > > > >&	# 	# 	# 	#+ + + +	% 	% 	% 	%   &    ,    \
 y+,,y)**y.//y,--) ) ) .- 0/ +* -,)V y122" " " 32" y233
2 
2 
2 43
2 y())   *) y)**E E E +*EN y-..5 5 5 /. 5n y.//
 
 
 0/ 
    y/002 2 2 10 2 y-..4 4 4 /. 4 y/004 4 4 10 4 y-..6 6 6 /. 6 y/003 3 3 10 3 y-..5 5 5 /. 5 y/00. . . 10 . y-..0 0 0 /. 0 y.//   0/ y)**   +* y)**   +*  y*++   ,+ y())   *)6 y.//   0/ y())   *)
 y-..
 
 
 /.
 y122, , , 32, y011* * * 21* y,--
 
 
 .-
 y-..   /., y122	 	 	 32	 y.//   0/ y.//   0/  y-..   /.4 y455   654 y.//   0/    rP   rX   r$  )u
__future__r   ru   ro  ctypes.wintypesr   r   r   r   r   r	   r
   r   	functoolsr   typingr   r   r   r   pyglet.libs.win32r   pyglet.libs.win32.typesr   r   r   r   r   r   r   r   r   r   r   pyglet.libs.win32.winkeyr   r   ImportErrorctypesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   pyglet.display.win32r,   pyglet.eventr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   pyglet.windowr9   r:   r;   r<   r=   r>   r?   r@   rA   UP	MOTION_UPr  MOTION_RIGHTDOWNMOTION_DOWNr  MOTION_LEFTMOTION_NEXT_WORDMOTION_PREVIOUS_WORDHOMEMOTION_BEGINNING_OF_LINEENDMOTION_END_OF_LINEPAGEUPMOTION_PREVIOUS_PAGEPAGEDOWNMOTION_NEXT_PAGEMOTION_BEGINNING_OF_FILEMOTION_END_OF_FILE	BACKSPACEMOTION_BACKSPACEDELETEMOTION_DELETECMOTION_COPYVMOTION_PASTErB   rT   rD   rV   r$  r+  rB  rD  rE  r*  r1  rX   __all__rU   rP   rN   <module>rn     s;   " " " " " " " 



     L L L L L L L L L L L L L L L L L L L L       % % % % % % % % " " " " " " ' ' ' ' ' '                          3 2 2 2 2 2 2 2---
+-
.
..                             , , , , , , ( ( ( ( ( (                         
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
,VUOS],Y(, 	Xus, 	Xus	,
 	Ys+, 	Xtc., 	Xus3, 	Wec,, 	Z1, 	\53/, 	Xtc2, 	WdOS+, 	]EC0, 	Z*, 	UDM3?,  	UDM3#!,    (    {    #  " " " ") $  !	 d d d d d* d d dP) 
.rP   