
    ]j                     V    d dl Z dZd ZdefdZd Zd Zd Zd	 Zd
e	de
fdZefdZdS )    Nz2.3.7c                  8   h d} ddl }|                                                                }| D ]}|                    |          r|}|| vrd}|dk    rt	                      S |dk    rt                      S |dk    rt                      S t          d          )a  Get default backend based on the detected platform.
    Supports detecting an existing context and standalone contexts.
    If no context if found for the platform we return the linux backend.

    Example::

        # Get the available backend
        backend = get_default_backend(standalone=False/True)
        # Create an opengl 3.3 context or detect the currently active
        # context requiring at least opengl 3.3 support.
        ctx = backend(330)

    Returns:
        A backend object for creating and/or detecting context
    >   linuxdarwinwindowsr   Nr   r   r   z$Cannot find suitable default backend)platformsystemlower
startswith_wgl_x11_darwin
ValueError)	PLATFORMSr   targetknowns       M/home/agentuser/manim-venv/lib/python3.11/site-packages/glcontext/__init__.pydefault_backendr      s      /..IOOO__$$&&F  U## 	FYvvvvyy
;
<
<<    namec                 n    | dk    rt                      S t          d                    |                     )z"Request a specific backend by nameeglz#Cannot find supported backend: '{}')_eglr   format)r   s    r   get_backend_by_namer   .   s1    u}}vv
:AA$GG
H
HHr   c                      ddl m fd} | S )zCreate wgl backendr   )wglc                      t          |ddt                     t          |dd           d|v r2|d         }d|v sd|v r"t          j                            |          |d<   t          |g d          } j        d	i |S )
N	glversionGLCONTEXT_GLVERSIONarg_typelibglGLCONTEXT_WIN_LIBGL/\)r   moder"    )_apply_env_varintospathabspath_strip_kwargscreate_context)argskwargs_libglr   s      r   createz_wgl.<locals>.create:   s    v{,ACPPPPvw(=>>> fG_Ff}}"$'//&"9"9wv'E'E'EFF!s!++F+++r   )	glcontextr   )r2   r   s    @r   r   r   6   s5    , , , , , Mr   c                  .    ddl m ddlm fd} | S )zCreate x11 backendr   )x11find_libraryc                  B   |                     d          s d          |d<   |                     d          s d          |d<   t          |ddt                     t          |dd           t          |dd	           t          |g d
          } j        di |S )Nr"   GLlibx11X11r   r   r    GLCONTEXT_LINUX_LIBGLGLCONTEXT_LINUX_LIBX11)r   r&   r"   r:   r'   getr(   r)   r-   r.   )r/   r0   r7   r5   s     r   r2   z_x11.<locals>.createO   s    zz'"" 	1*l400F7Ozz(## 	3+|E22F8v{,ACPPPPvw(?@@@vx)ABBBv'O'O'OPP!s!++F+++r   )r3   r5   ctypes.utilr7   )r2   r7   r5   s    @@r   r   r   J   sM    ((((((, , , , , , Mr   c                      ddl m fd} | S )zCreate darwin/cgl contextr   )r   c                  <     j         di t          |dg          S )Nr&   r'   )r.   r-   )r/   r0   r   s     r   r2   z_darwin.<locals>.createc   s(    $v$GG}VfX'F'FGGGr   )r3   r   )r2   r   s    @r   r   r   _   s:          H H H H H Mr   c                  .    ddl m ddlm fd} | S )Nr   )r   r6   c                  r   |                     d          s d          |d<   |                     d          s d          |d<   t          |ddt                     t          |dd	t                     t          |dd
           t          |dd           t          |g d          } j        di |S )Nr"   r9   libeglEGLdevice_indexGLCONTEXT_DEVICE_INDEXr    r   r   r<   GLCONTEXT_LINUX_LIBEGL)r   r&   r"   rE   rG   r'   r>   )r/   r0   r   r7   s     r   r2   z_egl.<locals>.createm   s    zz'"" 	1*l400F7Ozz(## 	3+|E22F8v~/GRUVVVVv{,ACPPPPvw(?@@@vx)ABBBv'_'_'_``!s!++F+++r   )r3   r   r@   r7   )r2   r   r7   s    @@r   r   r   i   sM    ((((((, , , , , , Mr   r0   supported_argsc                 D    fd|                                  D             S )a  Strips away unwanted keyword arguments.

    The backends are using ``PyArg_ParseTupleAndKeywords`` to
    parse the incoming ``kwargs`` data. It's not well suited
    to handle additional arguments.

        - Removes None key arguments
        - Removes unsupported arguments
    c                 (    i | ]\  }}||v ||S )Nr'   ).0kvrJ   s      r   
<dictcomp>z!_strip_kwargs.<locals>.<dictcomp>   s-    UUUTQq}nATATAqATATATr   )items)r0   rJ   s    `r   r-   r-   }   s(     VUUUV\\^^UUUUr   c                     t           j                            ||                     |                    }|r ||          | |<   dS dS )z<Injects an environment variable into the arg dict if presentN)r*   environr?   )r0   arg_nameenv_namer!   values        r   r(   r(      sM    JNN8VZZ%9%9::E +#8E??x+ +r   )r*   __version__r   strr   r   r   r   r   dictlistr-   r(   r'   r   r   <module>r[      s    				%= %= %=PIc I I I I  (  *    (
V$ 
V 
V 
V 
V 
V 9< + + + + + +r   