
    R5h!              	       &   S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSKrSSK	r	SSK
r
S rS rS rS	 rS
 rS rS r\R$                  R'                  SS5      (       a!   \R(                  " \R$                  S   5      rg\R.                  S:X  Ga  Sr \R(                  " S5      r\c   \R(                  " \R0                  R3                  \R0                  R5                  \R0                  R7                  \5      5      S5      5      r\R(                  " \R0                  R3                  \R0                  R5                  \R0                  R7                  \5      5      S5      5      r\c:   \R(                  " \R0                  R3                  \R<                  SSS5      5      rgg\" \SS5      (       d  \" SS/SS/\" 5       \5      rg\" SS/SS/\" 5       5      rg! \ a    Sr gf = f! \ a     GNMf = f! \ a     Nf = f! \ a     gf = f)z
Python bindings for GLFW.
    )print_function)division)unicode_literalsNc           	      4   / nU GH  nU(       d  M  U  GHz  n[         R                  R                  USU-   S-   5      n[        R                  " U5       GH5  n[         R                  R                  U5      nXs;   a  M*  [         R                  R                  U5      nUR                  SU-   5      (       a  U[        SU-   5      S n	O'UR                  U5      (       a  U[        U5      S n	OM  U H  n
U	R                  U
5      (       a*  U	[        U
5      S SS S;   a  UR                  U5        MA  MC  U	R                  U
5      (       d  M[  U	S[        U
5      *  n[        S U 5       5      (       d  M  UR                  U5        M     GM8     GM}     GM     U$ )zM
Finds and returns filenames which might be the library you are looking for.
*z.*libN   ) .c              3   *   #    U  H	  oS ;   v   M     g7f)z0123456789.N ).0cs     fZ:\mnt\Skyabridged\SteamLibrary\steamapps\common\Borderlands 2\sdk_mods\blimgui\dist32\glfw\library.py	<genexpr>+_find_library_candidates.<locals>.<genexpr>.   s     K?aM1?s   )ospathjoinglobiglobrealpathbasename
startswithlenappendendswithall)library_nameslibrary_file_extensionslibrary_search_paths
candidatessearch_pathlibrary_name
glob_queryfilenamer   basename_endfile_extensionbasename_middles               r   _find_library_candidatesr*      sp    J+)Lk3|3CD3HIJ JJz277++H5)77++H5&&u\'9::#+Cl0B,C,D#EL((66#+C,=,>#?L&=N#..~>>'N(;(<=bqAYN&--h7 O%..~>>*67L^9L8L*MK?KKK&--h7 '> 3 * ,0     c                     [        U UU5      n/ n[        U5       H*  nU" U5      nUc  M  US:  d  M  UR                  Xv45        M,     U(       d  gUR                  5         [        R
                  " US   S   5      $ )zB
Finds, loads and returns the most recent version of the library.
N   r   r   r	   )r*   setr   sortctypesCDLL)r   r    r!   version_check_callbackr"   library_versionsr&   versions           r   _load_libraryr7   3   s    
 *-*A*>@J 
O(27i#7##W$78 $
 ;;'+A.//r+   c                 |   [        U UU5      nSnU H@  n[        R                  R                  U5      (       d  M)   [        R
                  " U5      n  O   Ub  [        R                  " S5      n[        R                  " U5      n[        R                  " S5      n[        R                  " U5      n	[        R                  " S5      n
[        R                  " U
5      n[        US5      (       a=  UR                  XyU5        UR                  UR                  U
R                  4nUS:  a  U$ g! [         a     GM(  f = f)zB
Finds, loads and returns the first found version of the library.
Nr   glfwGetVersionr-   )r*   r   r   isfiler2   r3   OSErrorc_intpointerhasattrr9   value)r   r    r!   r"   libraryr&   major_valuemajorminor_valueminor	rev_valuerevr6   s                r   _load_first_libraryrG   G   s   
 *J
 G77>>(## ++h/	  ll1o{+ll1o{+LLO	nnY'7,--""55"((+*;*;Y__MG)#  s   D,,
D;:D;c                 (   Sn[         R                  S[        R                  " U5      /n[        R
                  " US[        R                  [        R                  S9nUR                  U 5      S   nUR                  5       nU(       a  [        U5      $ g)zN
Queries and returns the library version tuple or None by using a
subprocess.
av  
        import sys
        import ctypes

        def get_version(library_handle):
            """
            Queries and returns the library version tuple or None.
            """
            major_value = ctypes.c_int(0)
            major = ctypes.pointer(major_value)
            minor_value = ctypes.c_int(0)
            minor = ctypes.pointer(minor_value)
            rev_value = ctypes.c_int(0)
            rev = ctypes.pointer(rev_value)
            if hasattr(library_handle, 'glfwGetVersion'):
                library_handle.glfwGetVersion(major, minor, rev)
                version = (major_value.value,
                           minor_value.value,
                           rev_value.value)
                return version
            else:
                return None

        if sys.version_info[0] == 2:
            input_func = raw_input
        else:
            input_func = input
        filename = input_func().strip()

        try:
            library_handle = ctypes.CDLL(filename)
        except OSError:
            pass
        else:
            version = get_version(library_handle)
            print(version)
    z-cT)universal_newlinesstdinstdoutr   N)
sys
executabletextwrapdedent
subprocessPopenPIPEcommunicatestripeval)r&   version_checker_sourceargsprocessouts        r   _glfw_get_versionrZ   h   sy    
$L NND(//2H"IJDt%/__Z__NG


h
'
*C
))+C
Cyr+   c                     [         R                  R                  [         R                  R                  [        5      5      n SU [
        R                  S-   SSSSSSS	S
S/n[        U 5      nU(       a  UR                  SU5        [
        R                  S:X  a  SnOSnU[         R                  ;   a1  UR                  [         R                  U   R                  S5      5        U$ )z
Returns a list of library search paths, considering of the current working
directory, default paths and paths from environment variables.
r
   z/libz
/usr/lib64z/usr/local/lib64z/usr/libz/usr/local/libz/opt/homebrew/libz/run/current-system/sw/libz/usr/lib/x86_64-linux-gnu/z/usr/lib/aarch64-linux-gnu/z/usr/lib/arm-linux-gnueabihfr	   darwinDYLD_LIBRARY_PATHLD_LIBRARY_PATH:)r   r   abspathdirname__file__rL   prefix_get_package_path_variantinsertplatformenvironextendsplit)package_pathsearch_pathspackage_path_variantpath_environment_variables       r   _get_library_search_pathsrn      s    
 77??277??8#<=L


V$$$%&L 5\BA34
||x$7!$5! BJJ.BJJ'@AGGLMr+   c                     [         R                  R                  [         R                  " 5       5      n [         R                  R                  [         R                  R	                  [
        R                  5      5      n[         R                  R                  [         R                  R	                  [        5      5      n[        U5      nUUUU /$ )z@
Returns a list of library search paths for frozen executables.
)	r   r   r`   getcwdra   rL   rM   rb   rd   )current_pathexecutable_pathrj   rl   s       r    _get_frozen_library_search_pathsrs      s     77??299;/Lggoobggoocnn&EFO77??277??8#<=L4\B	 r+   c                    [         R                  S;   a  g [        R                  R	                  SS5      R                  5       S;   a?  [        R                  R                  U [        R                  S   R                  5       5      $ [        R                  R	                  S5      S:X  a   [        R                  R                  U S5      $ [        R                  R                  U S5      $ )N)r\   win32PYGLFW_LIBRARY_VARIANTr
   )waylandx11XDG_SESSION_TYPErw   rx   )rL   rf   r   rg   getlowerr   r   )rj   s    r   rd   rd      s    
||**	zz~~.399;?QQww||L"**5M*N*T*T*VWW	*	+y	8ww||L)44 ww||L%00r+   PYGLFW_LIBRARYr
   ru   z	glfw3.dllzmsvcr120.dllLibrarybinfrozenFglfwglfw3z.soz.dylib) __doc__
__future__r   r   r   r2   r   r   rL   rP   rN   r*   r7   rG   rZ   rn   rs   rd   rg   rz   r3   r   r;   rf   r   r   r`   ra   rb   msvcrrc   getattrr   r+   r   <module>r      s   &  '  	  
  D0(B3lB 
1 ::>>"B''{{2::&678 	\\WD{{;'
 |	KKRWW__RWW__X=V-WYg hiE;;rww||BGGOOBGGOOH<U,VXcdeD
 |	;;rww||CJJ	5+VWD 
 
h	&	&&'*UH,=357HJD 05(2C?ACD?      		  		sI   $G  G. .B<G; .8H  G+*G+.G87G8;HHHH