
    ^j                       U d Z ddlmZ ddlZddlZddlmZ ddlT 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 ddlmZ erddlmZ  eed          oej        ZdZded<    G d de           Z! G d de           Z"ej#        d         rda$i Z%da&d Z'd Z(e)Z*d Z)e+Z,d Z+e-Z.d Z-d,dZ/erd	dlm0Z0 nBej#        d         rd	d l1m2Z0 n.ed!v rd	d"l3m4Z0 n# ej5        d#          rd	d$l6m7Z0 ned%k    rd	d&l8m9Z0 da:d'ed(<   es,d)ej;        vr#ej#        d*         rej;        e<         e_        ddlZg d+Ze=                    e           dS )-a  OpenGL interface.

This package imports all OpenGL and registered OpenGL extension
functions.  Functions have identical signatures to their C counterparts.

OpenGL is documented in full at the `OpenGL Reference Pages`_.

The `OpenGL Programming Guide`_, also known as "The Red Book", is a popular
reference manual organised by topic. It is available in digital and paper
editions.

.. _OpenGL Reference Pages: https://www.khronos.org/registry/OpenGL-Refpages/
.. _OpenGL Programming Guide: http://opengl-redbook.com/

The following subpackages are imported into this "mega" package already
(and so are available by importing ``pyglet.gl``):

``pyglet.gl.gl``
    OpenGL
``pyglet.gl.gl.glext_arb``
    ARB registered OpenGL extension functions
``pyglet.gl.gl.gl_compat``
    Deprecated OpenGL extension functions.

These subpackages are also available, but are not imported into this namespace
by default:

``pyglet.gl.glext_nv``
    nVidia OpenGL extension functions
``pyglet.gl.agl``
    AGL (Mac OS X OpenGL context functions)
``pyglet.gl.glx``
    GLX (Linux OpenGL context functions)
``pyglet.gl.glxext_arb``
    ARB registered GLX extension functions
``pyglet.gl.glxext_nv``
    nvidia GLX extension functions
``pyglet.gl.wgl``
    WGL (Windows OpenGL context functions)
``pyglet.gl.wglext_arb``
    ARB registered WGL extension functions
``pyglet.gl.wglext_nv``
    nvidia WGL extension functions

The information modules are provided for convenience, and are documented below.
    )annotationsN)compat_platform)*)gl_info)GL_INTENSITYGL_LUMINANCE)GLException   )__all__)DisplayConfigContextObjectSpace)TYPE_CHECKINGWindowis_pyglet_doc_runzContext | Nonecurrent_contextc                      e Zd ZdS )ContextExceptionN__name__
__module____qualname__     M/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/gl/__init__.pyr   r   M           Dr   r   c                      e Zd ZdS )ConfigExceptionNr   r   r   r   r   r   Q   r   r   r   debug_texturec                b    |t           | <   t          |z  at          t           d| d           d S )Nz (+)_debug_texture_sizes_debug_texture_totalprinttexturesizes     r   _debug_texture_allocr*   [   s@     )-W%$%11$11122222r   c                x    t           |          }t           | = t          |z  at          t           d| d           d S )Nz (-r"   r#   r'   s     r   _debug_texture_deallocr,   d   sG     $G, )$%11$11122222r   c                &    |a t          | |          S )N)_debug_texture_glBindTexture)targetr(   s     r   glBindTexturer1   q   s     fg...r   c	                J   	 t          t                     n# t          $ r Y nw xY w|dt          t          t
          fv rd}	n$|dt          t          fv rd}	n|dt          fv rd}	nd}	|d|z  z   |d|z  z   z  |	z  }
t          t          |
           t          | ||||||||	  	        S )Nr
            )r,   r.   KeyErrorGL_ALPHAr   r   GL_RGB16	GL_RGBA16GL_RGBr*   _glTexImage2D)r0   levelinternalformatwidthheightborderformattypepixelsdepthr)   s              r   glTexImage2DrE   z   s    	">2222 	 	 	D	 a<FFFEE8Y777EE6{**EEEF
"vF
':;eC^T222VUNE66SY[_aghhhs    
$$c                    t          |d          st          |j                   n,t          |           D ]}t          ||         j                   t	          | |          S )N__len__)hasattrr,   valuerange_glDeleteTextures)ntexturesis      r   glDeleteTexturesrO      sd    x++ 	:"8>22221XX : :&x{'89999 H---r   returnNonec                     dd l } | j        d         rt          rd S ddlm}  G d d|          } |            at
                                           ddl m} |j        	                    t
                     d S )Nr   shadow_windowr   c                  <     e Zd ZdZd fdZddZdd	ZddZ xZS )+_create_shadow_window.<locals>.ShadowWindowTrP   rQ   c                P    t                                          ddd           d S )Nr
   F)r>   r?   visible)super__init__)self	__class__s    r   rY   z4_create_shadow_window.<locals>.ShadowWindow.__init__   s(    GG1Q>>>>>r   c                    dS )z)Shadow window does not need a projection.Nr   )rZ   s    r   _create_projectionz>_create_shadow_window.<locals>.ShadowWindow._create_projection         r   r>   intr?   c                    dS zNo projection and not required.Nr   )rZ   r>   r?   s      r   _on_internal_resizez?_create_shadow_window.<locals>.ShadowWindow._on_internal_resize   r^   r   scalefloatdpic                    dS ra   r   )rZ   rc   re   s      r   _on_internal_scalez>_create_shadow_window.<locals>.ShadowWindow._on_internal_scale   r^   r   rP   rQ   )r>   r_   r?   r_   rP   rQ   )rc   rd   re   r_   rP   rQ   )	r   r   r   _shadowrY   r]   rb   rg   __classcell__)r[   s   @r   ShadowWindowrU      s~        	? 	? 	? 	? 	? 	?	< 	< 	< 	<	2 	2 	2 	2	2 	2 	2 	2 	2 	2 	2 	2r   rk   )app)
pygletoptions_is_pyglet_doc_runpyglet.windowr   _shadow_window	switch_torl   windowsremove)rm   r   rk   rl   s       r   _create_shadow_windowru      s     MMM>/* .@ $$$$$$2 2 2 2 2v 2 2 2 "\^^NK~&&&&&r   )Configheadless)HeadlessConfig)win32cygwin)Win32Configlinux)
XlibConfigdarwin)CocoaConfigzWindow | Nonerq   zpyglet.windowrS   )rv   r	   r   rh   )>__doc__
__future__r   sys_sysrm   _pygletr   pyglet.gl.gl	pyglet.glr   pyglet.gl.gl_compatr   r   pyglet.gl.libr	   glr   _gl_allbaser   r   r   typingr   rp   r   rH   r   ro   r   __annotations__	Exceptionr   r   rn   r%   r$   r.   r*   r,   r1   r/   rE   r;   rO   rK   ru   rv   rw   rx   ry   r{   
startswithxlibr}   cocoar   rq   modulesr   extendr   r   r   <module>r      s2  - - -\ # " " " " "         " " " " " "           : : : : : : : : % % % % % % " " " " " " 5 5 5 5 5 5 5 5 5 5             %$$$$$$WT#677RD<R  #' & & & &	 	 	 	 	y 	 	 		 	 	 	 	i 	 	 	 ??# D.N3 3 33 3 3 #N/ / / !Mi i i* ). . .' ' ' '<  
-_Z  -2222222+++,,,,,,,_(( -*******  ,,,,,, !% $ $ $ $  oT\AAgoVeFfAh'GJ
.
.
. w     r   