
    3j+                    Hz   S r SSKJr  SSKJr  SSKJr  SrSrSrSrS	q	S
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SKrSSKJr  \c  \" S5      e\R,                  R/                  S5      r\c   SSKrS
rO\" \5      r \R6                  r\R>                  R@                  S:  a  S r!S r"OS r!S r" SSK#J$r$  \$" 5       r%S r& " S S\'5      r(/ r) " S S\RT                  5      r+ " S S\RT                  5      r, " S S \RT                  5      r- " S! S"\RT                  5      r. " S# S$\RT                  5      r/ " S% S&\RT                  5      r0 " S' S(\RT                  5      r1S)r2S*r3Sr4Sr5Sr6Sr7Sr8Sr9Sr:Sr;Sr<S*r=S+r>\<\;-  r?\<\=-  r@\>\;-  rA\>\=-  rBS,rCS-rDS.rES/rFS0rGS1rHS2rIS3rJS4rKS5rLS6rMS7rNS8rOS9rPS:rQS;rRS<rSS=rTS>rUS?rVS@rWSArXSBrYSCrZSDr[SEr\SFr]SGr^SHr_SIr`SJraSKrbSLrcSMrdSNreSOrfSPrgSQrhSRriSSrjSTrkSUrlSVrmSWrnSXroSYrpSZrqS[rrS\rsS]rtS^ruS_rvS`rwSarxSbryScrzSdr{Ser|Sfr}Sgr~ShrSirSjrSkrSlrSmrSnrSorSprSqrSrrSsrStrSurSvrSwrSxrSyrSzrS{rS|rS}rS~rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr\rSrSrS*rS+rSrS-rSrSrSrS)rS*rSrSrSr\r\r\r\rSrSrSrS)rS*rSrSrSrS+rSrSrSrSrSrSrSr\rSrSrSrS)rS*rSrSrSrS+rSrSrSrSrSrSr\r\r\r\r\rSrSrSrS)rS*rSr\rSrSrSrSrSrSGr SGrSGrSGrSGrSGrSGrSGrSGrSGr	SGr
SGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGr SGr!SGr"SGr#SGr$SGr%SGr&SGr'SGr(SGr)SGr*SGr+SGr,SGr-SGr.SGr/SGr0SGr1SGr2SGr3SGr4SGr5SGr6SGr7SGr8SGr9SGr:SGr;SGr<SGr=SGr>SGr?SGr@SGrASGrBSGrCSGrDSGrESGrFSGrGSGrHSGrISGrJSGrKSGrLSGrMSGrNSGrOGS GrPSGrQGSGrRGSGrSGSGrTGSGrUGSGrVGSGrWGSGrXGSGrYGSGrZGSGr[GSGr\GSGr]GSGr^GSGr_GS	Gr`GS
GraGSGrbGSGrcGSGrdGSGreGSGrfGSGrgGSGrhGSGriGSGrjGSGrkGSGrlGSGrmGSGrnGSGroGSGrpGSGrqGSGrrGSGrsGSGrtGSGruGSGrvGS GrwGS!GrxGS"GryGS#GrzGS$Gr{GS%Gr|S,Gr}\(       a  GS&Gr~SGqGS' GrGS( Gr\GR                  " S\GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      5      Gr\GR                  " S\GR                  " \+5      5      Gr\GR                  " S\GR                  " \+5      \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR$                  \GR$                  5      Gr\GR                  " S\GR                  " \+5      \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR$                  \GR$                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  \GR                  \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  5      Gr\GR                  " S\GR                  " \,5      \GR                  5      Gr\GR                  " S\GR                  " \+5      \GR                  \GR                  " \GR                  5      5      Gr\GR                  " S\GR                  " \+5      \GR4                  \GR                  5      Gr\GR                  " S\GR                  \GR                  5      Gr\GR                  " \GR:                  \GR<                  \GR:                  5      Gr\GR                  " \GR:                  \GR:                  \GR<                  \GR:                  5      Gr\GR                  " S\GR:                  \GR:                  5      Gr " GS) GS*\RT                  5      Gr\GR                  \GRF                  Gl        / \GRF                  Gl        GS+ GrS\GRN                  Gl        / \GRN                  Gl        GS, GrG\" \GS-5      (       aC  S\GRT                  Gl        \GR                  \GR                  /\GRT                  Gl        GS. GrS\GRX                  Gl        \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GRX                  Gl        GS/ Gr\GR                  \GR\                  Gl        / \GR\                  Gl        GS0 GrG\" \GS15      (       aS  \GR                  \GR`                  Gl        \GR                  " \GR                  5      /\GR`                  Gl        GS2 GrG\GS3 5       GrG\" G\5      GrG\G\4GqG\\GRj                  Gl        G\/\GRj                  Gl        \GRj                  " G\5        GS4 Gr\GR                  " \GR                  " \,5      5      \GRn                  Gl        \GR                  " \GR                  5      /\GRn                  Gl        GS5 Gr\GR                  " \,5      \GRr                  Gl        / \GRr                  Gl        GS6 GrS\GRv                  Gl        \GR                  " \,5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GRv                  Gl        GS7 GrG\" \GS85      (       a  S\GRz                  Gl        \GR                  " \,5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GRz                  Gl        GS9 GrS\GR~                  Gl        \GR                  " \,5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GR~                  Gl        GS: GrG\" \GS;5      (       aw  S\GR                  Gl        \GR                  " \,5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GR                  Gl        GS< Gr\GR                  \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GS= GrG\" \GS>5      (       a  G\" \GS?5      (       a  0 GrS\GR                  Gl        \GR                  " \,5      \GR:                  /\GR                  Gl        GS@ Gr\GR:                  \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GSA GrSGqG\\GR                  Gl        G\/\GR                  Gl        GSB Gr\GR                  " \-5      \GR                  Gl        \GR                  " \,5      \GR                  " \GR                  5      /\GR                  Gl        GSC Gr\GR                  " \-5      \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GSD GrS\GR                  Gl        \GR                  " \,5      \GR                  /\GR                  Gl        GSE Gr\GR                  " \.5      \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GSF GrS\GR                  Gl        \GR                  " \,5      \GR                  " \.5      /\GR                  Gl        GSG GrS\GR                  Gl        / \GR                  Gl        GSH GrS\GR                  Gl        \GR                  \GR                  /\GR                  Gl        GSI GrG\" \GSJ5      (       aC  S\GR                  Gl        \GR                  \GR                  /\GR                  Gl        GSK Gr\GR                  " \+5      \GR                  Gl        \GR                  \GR                  \GR                  \GR                  " \,5      \GR                  " \+5      /\GR                  Gl        GSL GrS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GSM Gr\GR                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GSN GrS\GR                  Gl        \GR                  " \+5      \GR                  /\GR                  Gl        GSO GrS\GR                  Gl        \GR                  " \+5      \GR                  /\GR                  Gl        GSP GrS\GR                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GR                  Gl        GSQ GrS\GR                  Gl        \GR                  " \+5      \GR                  \GR                  /\GR                  Gl        GSR GrS\GR                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GR                  Gl        GSS GrS\GR                  Gl        \GR                  " \+5      \GR                  \GR                  /\GR                  Gl        GST GrS\GR                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GR                  Gl        GSU GrG\" \GSV5      (       aw  S\GR                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GR                  Gl        GSW GrG\" \GSX5      (       aH  \GR                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GSY GrG\" \GSZ5      (       aI  S\GR                  Gl        \GR                  " \+5      \GR                  /\GR                  Gl        GS[ GrS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS\ GrS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS] GrS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS^ GrS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS_ GrG\" \GS`5      (       a=  S\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GSa Gr \GR                  " \,5      \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GSb Gr\GR                  \GR                  Gl        \GR                  " \+5      \GR                  /\GR                  Gl        GSc GrG\" \GSd5      (       aU  S\GR
                  Gl        \GR                  " \+5      \GR                  \GR                  /\GR
                  Gl        GSe Gr0 GrS\GR                  Gl        \GR                  " \+5      \GR:                  /\GR                  Gl        GSf Gr	\GR:                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GSg Gr0 Gr\)GR                  G\5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GSh Gr0 Gr\)GR                  G\5        G\\GR"                  Gl        \GR                  " \+5      G\/\GR"                  Gl        GSi Gr0 Gr\)GR                  G\5        G\\GR(                  Gl        \GR                  " \+5      G\/\GR(                  Gl        GSj Gr0 Gr\)GR                  G\5        G\\GR.                  Gl        \GR                  " \+5      G\/\GR.                  Gl        GSk Gr0 Gr\)GR                  G\5        G\\GR4                  Gl        \GR                  " \+5      G\/\GR4                  Gl        GSl Gr0 Gr\)GR                  G\5        G\\GR:                  Gl        \GR                  " \+5      G\/\GR:                  Gl        GSm GrG\" \GSn5      (       aV  0 Gr\)GR                  G\5        G\\GR@                  Gl        \GR                  " \+5      G\/\GR@                  Gl        GSo Gr!0 Gr"\)GR                  G\"5        G\\GRF                  Gl        \GR                  " \+5      G\/\GRF                  Gl        GSp Gr$G\" \GSq5      (       aV  0 Gr%\)GR                  G\%5        G\\GRL                  Gl        \GR                  " \+5      G\/\GRL                  Gl        GSr Gr'S\GRP                  Gl        / \GRP                  Gl        GSs Gr)S\GRT                  Gl        / \GRT                  Gl        GSt Gr+\GR                  \GRX                  Gl        \GR                  " \+5      \GR                  /\GRX                  Gl        GSu Gr-S\GR\                  Gl        \GR                  " \+5      \GR                  \GR                  /\GR\                  Gl        GSv Gr/G\" \GSw5      (       a6  \GR                  \GR`                  Gl        / \GR`                  Gl        GSx Gr1\GR                  \GRd                  Gl        \GR                  " \+5      \GR                  /\GRd                  Gl        GSy Gr3\GR                  \GRh                  Gl        \GR                  " \+5      \GR                  /\GRh                  Gl        GSz Gr5S\GRl                  Gl        \GR                  " \+5      \GR                  " \GR$                  5      \GR                  " \GR$                  5      /\GRl                  Gl        GS{ Gr7S\GRp                  Gl        \GR                  " \+5      \GR$                  \GR$                  /\GRp                  Gl        GS| Gr90 Gr:\)GR                  G\:5        G\\GRv                  Gl        \GR                  " \+5      G\/\GRv                  Gl        GS} Gr<0 Gr=\)GR                  G\=5        G\\GR|                  Gl        \GR                  " \+5      G\/\GR|                  Gl        GS~ Gr?0 Gr@\)GR                  G\@5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GS GrB0 GrC\)GR                  G\C5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GS GrE0 GrF\)GR                  G\F5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GS GrH0 GrI\)GR                  G\I5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GS GrK\GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS GrM\GR                  " \GR                  5      \GR                  Gl        \GR                  \GR                  " \GR                  5      /\GR                  Gl        GS GrO\GR                  " \GR                  5      \GR                  Gl        \GR                  \GR                  " \GR                  5      /\GR                  Gl        GS GrRG\" \GS5      (       ap  \GR                  " \GR                  5      \GR                  Gl        \GR                  \GR                  " \GR                  5      /\GR                  Gl        GS GrT\GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS GrVG\" \GS5      (       aB  \GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS GrXG\" \GS5      (       a  G\" \GS5      (       a  0 GrYS\GR                  Gl        \GR                  \GR:                  /\GR                  Gl        GS Gr[\GR:                  \GR                  Gl        \GR                  /\GR                  Gl        GS Gr]G\" \GS5      (       aB  \GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS Gr_G\" \GS5      (       aT  \GR                  \GR                  Gl        \GR                  \GR                  " \15      /\GR                  Gl        GS GraS\GR                  Gl        \GR                  " \+5      \GR                  /\GR                  Gl        GS Grc\GR                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS Gre\GR$                  \GR                  Gl        / \GR                  Gl        GS GrgS\GR                  Gl        \GR$                  /\GR                  Gl        GS GriS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS Grk\GR                  " \+5      \GR                  Gl        / \GR                  Gl        GS GrmS\GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GroS\GR                  Gl        \GR                  /\GR                  Gl        GS Grq\GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS Grs\GR:                  \GR                  Gl        \GR                  /\GR                  Gl        GS GruG\" \GS5      (       aV  0 Grv\)GR                  G\v5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GS GrxG\" \GS5      (       aV  0 Gry\)GR                  G\y5        G\\GR                  Gl        \GR                  " \+5      G\/\GR                  Gl        GS Gr{G\" \GS5      (       a6  \GR                  \GR                  Gl        / \GR                  Gl        GS Gr}G\" \GS5      (       ad  \GR                  " \GR                  5      \GR                  Gl        \GR                  " \GR                  5      /\GR                  Gl        GS GrG\" \GS5      (       a6  \GR                  \GR                  Gl        / \GR                  Gl        GS GrG\" \GS5      (       a6  \GR                  \GR                  Gl        / \GR                  Gl        GS GrG\" \GS5      (       a1  SGqG\\GR                  Gl        G\/\GR                  Gl        GS GrG\" \GS5      (       aB  \GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS GrG\" \GS5      (       aB  \GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS GrG\" \GS5      (       aN  \GR                  \GR                  Gl        \GR                  \GR                  /\GR                  Gl        GS GrG\" \GS5      (       aB  \GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS GrG\" \GS5      (       af  \GR                  " \/5      \GR"                  Gl        \GR                  " \05      \GR                  \GR                  /\GR"                  Gl        GS GrG\" \GS5      (       aH  \GR                  " \/5      \GR&                  Gl        \GR                  /\GR&                  Gl        GS GrG\" \GS5      (       a=  S\GR*                  Gl        \GR                  " \/5      /\GR*                  Gl        GS GrG\" \GS5      (       aO  S\GR.                  Gl        \GR                  " \+5      \GR                  " \/5      /\GR.                  Gl        GS GrG\" \GS5      (       al  \GR                  \GR2                  Gl        \GR:                  \GR                  " \+5      \GR:                  \GR:                  /\GR2                  Gl        GS GrG\" \GS5      (       aZ  \GR                  \GR6                  Gl        \GR:                  \GR:                  \GR                  /\GR6                  Gl        GS GrG\" \GS5      (       aN  \GR:                  \GR:                  Gl        \GR:                  \GR                  /\GR:                  Gl        GS GrG\" \GS5      (       a[  S\GR>                  Gl        \GR                  " \+5      \GR                  \GR                  " \05      /\GR>                  Gl        GS GrG\" \GS5      (       am  S\GRB                  Gl        \GR                  " \+5      \GR                  \GR                  \GR                  \GR                  /\GRB                  Gl        GS GrG\" \GS5      (       aU  S\GRF                  Gl        \GR                  " \+5      \GR                  \GR                  /\GRF                  Gl        GS GrG\" \GS5      (       a  S\GRJ                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      /\GRJ                  Gl        GS GrG\" \GS5      (       a=  S\GRN                  Gl        \GR                  " \+5      /\GRN                  Gl        GS GrG\" \GS5      (       a=  S\GRR                  Gl        \GR                  " \+5      /\GRR                  Gl        GS GrG\" \GS5      (       a  S\GRV                  Gl        \GR                  " \+5      \GR                  " \,5      \GR                  \GR                  \GR                  \GR                  \GR                  /\GRV                  Gl        GS GrG\" \GS5      (       a7  S\GRZ                  Gl        \GR$                  /\GRZ                  Gl        GS GrG\" \GS5      (       a+  S\GR^                  Gl        / \GR^                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GRb                  Gl        \GR                  " \,5      /\GRb                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GRf                  Gl        \GR                  " \,5      /\GRf                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GRj                  Gl        \GR                  " \+5      /\GRj                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GRn                  Gl        \GR                  " \+5      /\GRn                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GRr                  Gl        \GR                  " \,5      /\GRr                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GRv                  Gl        \GR                  " \+5      /\GRv                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GRz                  Gl        \GR                  " \+5      /\GRz                  Gl        GS GrG\" \GS5      (       a6  \GR:                  \GR~                  Gl        / \GR~                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       a7  S\GR                  Gl        \GR                  /\GR                  Gl        GS GrG\" \GS5      (       a6  \GR                  \GR                  Gl        / \GR                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       aH  \GR                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       a6  \GR:                  \GR                  Gl        / \GR                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GR                  Gl        \GR                  " \,5      /\GR                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       a6  \GR:                  \GR                  Gl        / \GR                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       aH  \GR:                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       a  \GR                  \GR                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR:                  5      /\GR                  Gl        GS GrG\" \GS5      (       a  \GR                  \GR                  Gl        \GR                  " \+5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR                  5      \GR                  " \GR:                  5      /\GR                  Gl        GS  GrG\" \GS5      (       aH  \GR:                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" \GS5      (       aG  SGqSGqSGqS\GR                  Gl        \GR                  " G\5      /\GR                  Gl        GS GrG\" \GS5      (       ag  SGq\GR                  " \GR:                  \GR:                  \GR                  5      GrS\GR                  Gl        G\/\GR                  Gl        GS GrG\" \GS5      (       a6  \GR                  \GR                  Gl        / \GR                  Gl        GS GrG\" \GS	5      (       aB  \GR                  \GR                  Gl        \GR                  /\GR                  Gl        GS
 GrG\" \GS5      (       aH  \GR                  \GR                  Gl        \GR                  " \+5      /\GR                  Gl        GS GrG\" 5         g!   Sr G<N|= f! \ a    \R<                  r G<Nf = f! \ a    S r& G<N_f = f(  z
Python bindings for GLFW.
    )print_function)division)unicode_literalsz'Florian Rhiem (florian.rhiem@gmail.com)z%Copyright (c) 2013-2024 Florian RhiemMITz2.10.0warnTN   )glfwz$Failed to load GLFW3 shared library.PYGLFW_PREVIEWF   c                 $    U R                  S5      $ Nutf-8)encodess    G/home/wildlama/miniconda3/lib/python3.13/site-packages/glfw/__init__.py<lambda>r   D   s    188G,    c                 $    U R                  U5      eN)with_traceback	exception	tracebacks     r   _reraiser   E   s    &&y11r   c                     U $ r    r   s    r   r   r   H   s    1r   c                     [        S5        g )Nz raise exception, None, traceback)execr   s     r   r   r   I   s    /0r   )FFIc                     [        U [        R                  5      (       aB  [        R                  " [        [        R	                  SU 5      5      [        R                  5      $ U $ )N	uintptr_t)
isinstanceffiCDatactypescastintc_void_pptrs    r   _cffi_to_ctypes_void_pr,   T   s=    c399%%;;s388K#=>PP
r   c                     U $ r   r   r*   s    r   r   r   Q   s    r   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )	GLFWErrorZ   z1
Exception class used for reporting GLFW errors.
c                 8   > [         [        U ]  U5        X l        g r   )superr/   __init__
error_code)selfmessager4   	__class__s      r   r3   GLFWError.__init__^   s    i'0$r   r4   r   )__name__
__module____qualname____firstlineno____doc__r3   __static_attributes____classcell__)r7   s   @r   r/   r/   Z   s    % %r   r/   c                   6    \ rS rSrSrS\R                  4/rSrg)_GLFWwindowf   z8
Wrapper for:
    typedef struct GLFWwindow GLFWwindow;
dummyr   N	r:   r;   r<   r=   r>   r&   c_int_fields_r?   r   r   r   rB   rB   f        &,,'(Hr   rB   c                   6    \ rS rSrSrS\R                  4/rSrg)_GLFWmonitorn   z:
Wrapper for:
    typedef struct GLFWmonitor GLFWmonitor;
rD   r   NrE   r   r   r   rJ   rJ   n   rH   r   rJ   c                   H   \ rS rSrSrS\R                  4S\R                  4S\R                  4S\R                  4S\R                  4S\R                  4/r\	R                  " S	/ S
Q5      r\	R                  " SSS/5      r\	R                  " S/ SQ5      rS rS rS rSrg)_GLFWvidmodev   z:
Wrapper for:
    typedef struct GLFWvidmode GLFWvidmode;
widthheightred_bits
green_bits	blue_bitsrefresh_rateGLFWvidmode)sizebitsrT   SizeBitsredgreenbluec                     [         R                  R                  U 5        SU l        SU l        SU l        SU l        SU l        SU l        g Nr   )	r&   	Structurer3   rO   rP   rQ   rR   rS   rT   r5   s    r   r3   _GLFWvidmode.__init__   sA    !!$'
r   c                 `    Uu  p#U l         Uu  U l        U l        Uu  U l        U l        U l        g)!
Wraps a nested python sequence.
N)rT   rO   rP   rQ   rR   rS   )r5   
video_moderV   rW   s       r   wrap_GLFWvidmode.wrap   s1     )3%D%"&
DK9=6tr   c                     U R                  U R                  U R                  5      nU R                  U R                  U R
                  U R                  5      nU R                  XU R                  5      $ z
Returns a GLFWvidmode object.
)	rX   rO   rP   rY   rQ   rR   rS   rU   rT   )r5   rV   rW   s      r   unwrap_GLFWvidmode.unwrap   sS     yyT[[1yyHD,=,=>>r   )rS   rR   rP   rQ   rT   rO   N)r:   r;   r<   r=   r>   r&   rF   c_uintrG   collections
namedtuplerU   rX   rY   r3   rf   rj   r?   r   r   r   rM   rM   v   s     &,,'6<<(V\\*v||,fll+/1H (( 9 K !!&+ D !!& + D>?r   rM   c                       \ rS rSrSrS\R                  " \R                  5      4S\R                  " \R                  5      4S\R                  " \R                  5      4S\R                  4/r	\
R                  " S/ SQ5      rS	 rS
 rS rSrg)_GLFWgammaramp   z>
Wrapper for:
    typedef struct GLFWgammaramp GLFWgammaramp;
r[   r\   r]   rV   GLFWgammaramprZ   c                     [         R                  R                  U 5        S U l        S U l        S U l        S U l        S U l        S U l        SU l	        g r_   )
r&   r`   r3   r[   	red_arrayr\   green_arrayr]   
blue_arrayrV   ra   s    r   r3   _GLFWgammaramp.__init__   sH    !!$'
		r   c                    Uu  p#n[        [        U5      [        U5      [        U5      5      n[        R                  U-  n[        R                  " U5      U l        U" 5       U l        U" 5       U l        U" 5       U l        [        (       a<  U Vs/ s H  owS-  PM	     nnU Vs/ s H  owS-  PM	     nnU Vs/ s H  owS-  PM	     nn[        U R
                  5       HQ  n[        X(   5      U R                  U'   [        X8   5      U R                  U'   [        XH   5      U R                  U'   MS     [        R                  " [        R                  5      n	[        R                  " U R                  U	5      U l        [        R                  " U R                  U	5      U l        [        R                  " U R                  U	5      U l        gs  snf s  snf s  snf )rd   i  N)minlenr&   c_ushortrl   rV   rt   ru   rv   NORMALIZE_GAMMA_RAMPSranger(   POINTERr'   r[   r\   r]   )
r5   	gammarampr[   r\   r]   rV   
array_typevalueipointer_types
             r   rf   _GLFWgammaramp.wrap   s^    %D3s8SZT3__T)
MM$'	#%<$,  .12cU5=cC2056uU]E6/34teEMtD4tyy!A #CFDNN1"%eh-DQ!$TWDOOA " ~~foo6;;t~~|<[[!1!1<@
KK>	 364s   G#G7Gc                    [        U R                  5       Vs/ s H  oR                  U   PM     nn[        U R                  5       Vs/ s H  oR                  U   PM     nn[        U R                  5       Vs/ s H  oR                  U   PM     nn[
        (       a<  U Vs/ s H  oUS-  PM	     nnU Vs/ s H  oUS-  PM	     nnU Vs/ s H  oUS-  PM	     nnU R                  X#U5      $ s  snf s  snf s  snf s  snf s  snf s  snf )z!
Returns a GLFWgammaramp object.
g    @)r}   rV   r[   r\   r]   r|   rr   )r5   r   r[   r\   r]   r   s         r   rj   _GLFWgammaramp.unwrap   s     %*$))$45$4qxx{$45(-dii(89(81A(89&+DII&67&6		!&67  034u7?C4278%W_%E8156GOD6!!#d33 697486s#   C-	C2:C7#C<7DD)r]   rv   r\   ru   r[   rt   rV   N)r:   r;   r<   r=   r>   r&   r~   r{   rl   rG   rm   rn   rr   r3   rf   rj   r?   r   r   r   rp   rp      s     v78&..9:89')H
  **? = M?04r   rp   c                   6    \ rS rSrSrS\R                  4/rSrg)_GLFWcursor   z8
Wrapper for:
    typedef struct GLFWcursor GLFWcursor;
rD   r   NrE   r   r   r   r   r      rH   r   r   c                       \ rS rSrSrS\R                  4S\R                  4S\R                  " \R                  5      4/r	\
R                  " S/ SQ5      rS rS	 rS
 rSrg)
_GLFWimage   z6
Wrapper for:
    typedef struct GLFWimage GLFWimage;
rO   rP   pixels	GLFWimage)rO   rP   r   c                 z    [         R                  R                  U 5        SU l        SU l        S U l        S U l        g r_   )r&   r`   r3   rO   rP   r   pixels_arrayra   s    r   r3   _GLFWimage.__init__   s3    !!$'
 r   c                 d   [        US5      (       a  [        US5      (       a  UR                  u  U l        U l        [        R
                  S-  U R                  U R                  -  -  nU" 5       U l        UR                  S5      R                  5       n[        U5       H  u  pEXPR                  U'   M     OUu  U l        U l        n[        R
                  S-  U R                  -  U R                  -  nU" 5       U l        [        U R                  5       HN  n[        U R                  5       H2  n[        S5       H   nX4   U   U   U R                  U   U   U'   M"     M4     MP     [        R                  " [        R
                  5      n[        R                  " U R                  U5      U l        g)z5
Wraps a nested python sequence or PIL/pillow Image.
rV   convert   RGBAN)hasattrrV   rO   rP   r&   c_ubyter   r   getdata	enumerater}   r~   r'   r   )	r5   imager   r   r   pixeljkr   s	            r   rf   _GLFWimage.wrap   sO    5&!!geY&?&?&+jj#DJ!+tzzDKK/GHJ *D]]6*224F%f-',!!!$ . /4+DJV!+djj84;;FJ *D4;;'tzz*A"1X5;Yq\!_))!,Q/2 & + ( ~~fnn5kk$"3"3\Br   c                 
   U R                    VVVs/ s H0  o VVs/ s H  o" Vs/ s H  n[        U5      PM     snPM      snnPM2     nnnnU R                  U R                  U R                  U5      $ s  snf s  snnf s  snnnf )z
Returns a GLFWimage object.
)r   r(   r   rO   rP   )r5   lpcr   s        r   rj   _GLFWimage.unwrap  si     =A<M<MN<Mq21A&AqCFA&2<MN~~djj$++v>> '2Ns&   
A>	A8A3A8 A>3A88A>)rP   r   r   rO   N)r:   r;   r<   r=   r>   r&   rF   r~   r   rG   rm   rn   r   r3   rf   rj   r?   r   r   r   r   r      sf     &,,'6<<(6>>&..9:<H &&{ 5 I!C.?r   r   c                       \ rS rSrSrS\R                  S-  4S\R                  S-  4/r\	R                  " SSS/5      rS rS	 rS
 rSrg)_GLFWgamepadstatei  zD
Wrapper for:
    typedef struct GLFWgamepadstate GLFWgamepadstate;
buttons   axes   GLFWgamepadstatec                     [         R                  R                  U 5        [         R                  S-  " S/S-  6 U l        [         R
                  S-  " S/S-  6 U l        g )Nr   r   r   )r&   r`   r3   r   r   c_floatr   ra   s    r   r3   _GLFWgamepadstate.__init__+  sL    !!$'+sRx8^^a'A373	r   c                     Uu  p#[        S5       H  nX$   U R                  U'   M     [        S5       H  nX4   U R                  U'   M     g)rd   r   r   N)r}   r   r   )r5   gamepad_stater   r   r   s        r   rf   _GLFWgamepadstate.wrap0  sE     &rA%jDLLO qA7DIIaL r   c                     U R                    Vs/ s H  n[        U5      PM     nnU R                   Vs/ s H  n[        U5      PM     nnU R	                  X$5      $ s  snf s  snf ri   )r   r(   r   floatr   )r5   buttonr   axisr   s        r   rj   _GLFWgamepadstate.unwrap:  sU     .2\\:\63v;\:(,		2	d	2$$W33 ;2s
   AA!)r   r   N)r:   r;   r<   r=   r>   r&   r   r   rG   rm   rn   r   r3   rf   rj   r?   r   r   r   r   r     sb     V^^b02&..1,.0H #--.@6C 4
#4r   r      r          '   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   ;   =   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   r0   [   \   ]   `            i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  i  i  i  i  i"  i#  i$  i%  i&  i'  i(  i)  i*  i+  i,  i-  i.  i/  i0  i1  i2  i3  i4  i5  i6  i7  i8  i9  i:  i@  iA  iB  iC  iD  iE  iF  iG  iH  iI  iJ  iK  iL  iM  iN  iO  iP  iT  iU  iV  iW  iX  iY  iZ  i[  i\        r      	   
               r   i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  i  i i i i i i i i i	 i
 i i i i i i i  i  i  i  i  i  i  i  i	  i
  i  i  i  i0 i0 i0 i@ i@ iP iP i` i  i  i i i  i  i0 i0 i0 i0 i0 i@ i@ i@ i@ iP iP i` i` i` i` i` i` i` i` i	` i
` ip ip ip ip ip ip ip i i i  i  i  i  i  i i i  i0 i   i  i  i  i  i  l        i0 c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                  ~   > [         b  g  T" U 0 UD6$ ! [        [        4 a    e   [        R                  " 5       q  g = fr   )_exc_info_from_callbackKeyboardInterrupt
SystemExitsysexc_info)argskwargsfuncs     r   callback_wrapper7_callback_exception_decorator.<locals>.callback_wrapper  sH     #. 	5(((!:. 		5&)lln#s    '<)	functoolswraps)r   r   s   ` r   _callback_exception_decoratorr    s&    __T5 5 r   c                  .   S n [        [        5       H0  nUR                  S5      (       d  M  U [        [        U5      l        M2     [        5       nU H?  nUR                  S5      (       d  M  UR                  S5      (       d  M3  X!   4S jnX2U'   MA     g)a9  
This function sets the errcheck attribute of all ctypes wrapped functions
to evaluate the _exc_info_from_callback global variable and re-raise any
exceptions that might have been raised in callbacks.
It also modifies all callback types to automatically wrap the function
using the _callback_exception_decorator.
c                 H    [         b  [         nS q [        US   US   5        U $ )Nr   r   )r   r   )resultr   excs      r   errcheck#_prepare_errcheck.<locals>.errcheck  s*    ".)C&*#SVSV$r   r	   _GLFWfunc                 $    U" [        U 5      5      $ r   )r  )r   	cfunctypes     r   wrapper_cfunctype,_prepare_errcheck.<locals>.wrapper_cfunctype  s     !>t!DEEr   N)dir_glfw
startswithgetattrr  globalsendswith)r  symbol_globalsr  s       r   _prepare_errcheckr    s}     e*V$$.6GE6"+  yHW%%&//%*@*@2:2B F0V	 r   c                   .    \ rS rSrSrS\4S\4S\4/rSr	g)_GLFWallocatori  z>
Wrapper for:
    typedef struct GLFWallocator GLFWallocator;
allocate
reallocate
deallocater   N)
r:   r;   r<   r=   r>   _GLFWallocatefun_GLFWreallocatefun_GLFWdeallocatefunrG   r?   r   r   r   r  r    s+    
 
%&	)*	)*Hr   r  c                  p    [        5       n [        R                  " 5       n[        R                  " U 5        U$ )zE
Initializes the GLFW library.

Wrapper for:
    int glfwInit(void);
)_getcwdr  glfwInitoschdir)cwdress     r   initr'  %  s'     )C
..
CHHSMJr   c                      [          H%  n [        U R                  5       5       H  nX	 M     M'     [        [        R                  5       5       H
  n[        U	 M     [        R
                  " 5         g)zJ
Terminates the GLFW library.

Wrapper for:
    void glfwTerminate(void);
N)_callback_repositorieslistkeys_window_user_data_repositoryr  glfwTerminate)callback_repositorywindow_addrs     r   	terminater0  3  s^      6 3 8 8 :;K#0 <  6 8==?@(5 A	r   glfwInitHintc                 0    [         R                  " X5        g)zn
Sets the specified init hint to the desired value.

Wrapper for:
    void glfwInitHint(int hint, int value);
N)r  r1  hintr   s     r   	init_hintr5  G  s     	4'r   c                  ~   [         R                  " S5      n [         R                  " U 5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        U R
                  UR
                  UR
                  4$ )zu
Retrieves the version of the GLFW library.

Wrapper for:
    void glfwGetVersion(int* major, int* minor, int* rev);
r   )r&   rF   pointerr  glfwGetVersionr   )major_valuemajorminor_valueminor	rev_valuerevs         r   get_versionr?  U  s     ,,q/KNN;'E,,q/KNN;'EQI
..
#C	s+k//@@r   c                  ,    [         R                  " 5       $ )zw
Returns a string describing the compile-time configuration.

Wrapper for:
    const char* glfwGetVersionString(void);
)r  glfwGetVersionStringr   r   r   get_version_stringrB  g  s     %%''r   glfwGetErrorc                  j    [         R                  S-  " 5       n [        R                  " U 5      nXS   4$ )zy
Returns and clears the last error for the calling thread.

Wrapper for:
    int glfwGetError(const char** description);
r   r   )r&   c_char_pr  rC  )error_descriptionr4   s     r   	get_errorrG  t  s5     $__q03''(9:
Q///r   c                 X   SX4-  n[         n[        U[        5      (       a  X;   a  X0   nOSU;   a  US   nOSnUS;   a	  [        X S9eUS;   a  [        R
                  " U[        5        gUS;   a&  [        R                  " S5      R                  U5        gUS;   a  g[        S	U-   5      e)
z
Default error callback that raises GLFWError exceptions, issues GLFWError
warnings or logs to the 'glfw' logger.
Set an alternative error callback or set glfw.ERROR_REPORTING to False or
'ignore' to disable this behavior.
z(%d) %sN)raiser   Tr9   )r   warning)logr	   )ignoreFz<Invalid value of ERROR_REPORTING while handling GLFW error:
)
ERROR_REPORTINGr#   dictr/   warningsr   logging	getLoggerdebug
ValueError)r4   descriptionr6   error_reportings       r   _handle_glfw_errorsrV    s     :33G%O/4(((-9O_$-d3O"O6677	/	/gy)	H	$&!''0	-	-X[bbccr   c                     [         nU c  [        n [        nO[        U 5      nX4q Un [        R
                  " U 5        Ub  US   [        :w  a  US   $ gg)zc
Sets the error callback.

Wrapper for:
    GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun);
Nr   )_error_callbackrV  _default_error_callback_GLFWerrorfunr  glfwSetErrorCallbackcbfunprevious_callbackc_cbfuns      r   set_error_callbackr`    sf     (}#)&&OE	u%$):1)=AT)T ## *U$r   c                      [         R                  " S5      n [         R                  " U 5      n[        R                  " U5      n[        U R                  5       Vs/ s H  o2U   PM	     nnU$ s  snf )zh
Returns the currently connected monitors.

Wrapper for:
    GLFWmonitor** glfwGetMonitors(int* count);
r   )r&   rF   r7  r  glfwGetMonitorsr}   r   )count_valuecountr  r   monitorss        r   get_monitorsrf    s\     ,,q/KNN;'E""5)F#():):#;<#;aq	#;H<O =s   A,c                  ,    [         R                  " 5       $ )zZ
Returns the primary monitor.

Wrapper for:
    GLFWmonitor* glfwGetPrimaryMonitor(void);
)r  glfwGetPrimaryMonitorr   r   r   get_primary_monitorri         &&((r   c                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Returns the position of the monitor's viewport on the virtual screen.

Wrapper for:
    void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);
r   )r&   rF   r7  r  glfwGetMonitorPosr   )monitor
xpos_valuexpos
ypos_valueyposs        r   get_monitor_posrr    sa     aJ>>*%DaJ>>*%D	G40Z----r   glfwGetMonitorWorkareac                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XXFU5        UR
                  UR
                  UR
                  UR
                  4$ )z
Retrives the work area of the monitor.

Wrapper for:
    void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
r   )r&   rF   r7  r  rs  r   )	rm  rn  ro  rp  rq  width_valuerO   height_valuerP   s	            r   get_monitor_workarearw    s     \\!_
~~j)\\!_
~~j)ll1o{+||A-$$WDH	
 	
r   c                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Returns the physical size of the monitor.

Wrapper for:
    void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* width, int* height);
r   )r&   rF   r7  r  glfwGetMonitorPhysicalSizer   )rm  ru  rO   rv  rP   s        r   get_monitor_physical_sizerz    sa     ,,q/KNN;'E<<?L^^L)F	$$WV<l0000r   glfwGetMonitorContentScalec                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Retrieves the content scale for the specified monitor.

Wrapper for:
    void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale);
r   )r&   r   r7  r  r{  r   )rm  xscale_valuexscaleyscale_valueyscales        r   get_monitor_content_scaler    sc     ~~a(-~~a(-((&A!!<#5#555r   c                 .    [         R                  " U 5      $ )zt
Returns the name of the specified monitor.

Wrapper for:
    const char* glfwGetMonitorName(GLFWmonitor* monitor);
)r  glfwGetMonitorNamerm  s    r   get_monitor_namer  ,  s     ##G,,r   glfwSetMonitorUserPointerglfwGetMonitorUserPointerc                    SU4n[        U[        R                  5      (       dQ  SU4n[        R                  " [        R                  " [        R
                  " U5      5      [        R                  5      n[        R                  " [        R                  " U 5      [        R                  " [        R                  5      5      R                  R                  nU[        U'   [        R                  " X5        g)a)  
Sets the user pointer of the specified monitor. You may pass a normal
python object into this function and it will be wrapped automatically.
The object will be kept in existence until the pointer is set to
something else.

Wrapper for:
    void glfwSetMonitorUserPointer(int jid, void* pointer);
FTN)r#   r&   r)   r'   r7  	py_objectr~   c_longcontentsr   _monitor_user_data_repositoryr  r  )rm  r7  datamonitor_addrs       r   set_monitor_user_pointerr  =  s     w'6??33'?Dkk&..1A1A'1J"K"(//3G {{6>>'#:"(.."?AAI%% 	6:%l3''9r   c                 8   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a  [        U   nUS   nU(       a  US   $ [        R                  " U 5      $ )zp
Returns the user pointer of the specified monitor.

Wrapper for:
    void* glfwGetMonitorUserPointer(int jid);
r   r   )
r&   r'   r7  r~   r  r  r   r  r  r  )rm  r  r  is_wrapped_py_objects       r   get_monitor_user_pointerr  Y  sv     {{6>>'#:"(.."?AAI%% 	 880>D#'7 #Aw..w77r   c                     [         nU c  Sn [        U 5      nX4q Un [        R                  " U 5        Ub  US   S:w  a  US   $ gg)zy
Sets the monitor configuration callback.

Wrapper for:
    GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun);
Nr   )_monitor_callback_GLFWmonitorfunr  glfwSetMonitorCallbackr\  s      r   set_monitor_callbackr  n  sa     *}e$G(E	  '$):1)=)B ## *C$r   c                     [         R                  " S5      n[         R                  " U5      n[        R                  " X5      n[        UR                  5       Vs/ s H  oCU   R                  5       PM     nnU$ s  snf )z
Returns the available video modes for the specified monitor.

Wrapper for:
    const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);
r   )r&   rF   r7  r  glfwGetVideoModesr}   r   rj   )rm  rc  rd  r  r   
videomodess         r   get_video_modesr    sg     ,,q/KNN;'E$$W4F.3K4E4E.FG.F)""$.FJG Hs   A:c                 b    [         R                  " U 5      R                  nUR                  5       $ )z
Returns the current mode of the specified monitor.

Wrapper for:
    const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);
)r  glfwGetVideoModer  rj   )rm  	videomodes     r   get_video_moder    )     &&w/88Ir   c                 0    [         R                  " X5        g)z
Generates a gamma ramp and sets it for the specified monitor.

Wrapper for:
    void glfwSetGamma(GLFWmonitor* monitor, float gamma);
N)r  glfwSetGamma)rm  gammas     r   	set_gammar    s     
w&r   c                 b    [         R                  " U 5      R                  nUR                  5       $ )z
Retrieves the current gamma ramp for the specified monitor.

Wrapper for:
    const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);
)r  glfwGetGammaRampr  rj   )rm  r   s     r   get_gamma_rampr    r  r   c                     [        5       nUR                  U5        [        R                  " U [        R
                  " U5      5        g)z
Sets the current gamma ramp for the specified monitor.

Wrapper for:
    void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);
N)rp   rf   r  glfwSetGammaRampr&   r7  )rm  rampr   s      r   set_gamma_rampr    s1      INN4	7FNN9$=>r   c                  .    [         R                  " 5         g)zg
Resets all window hints to their default values.

Wrapper for:
    void glfwDefaultWindowHints(void);
N)r  glfwDefaultWindowHintsr   r   r   default_window_hintsr    s     
  "r   c                 0    [         R                  " X5        g)zr
Sets the specified window hint to the desired value.

Wrapper for:
    void glfwWindowHint(int hint, int value);
N)r  glfwWindowHintr3  s     r   window_hintr    s     
%r   glfwWindowHintStringc                 D    [         R                  " U [        U5      5        g)z
Sets the specified window hint to the desired value.

Wrapper for:
    void glfwWindowHintString(int hint, const char* value);
N)r  r  
_to_char_pr3  s     r   window_hint_stringr    s     	""4E):;r   c                 D    [         R                  " X[        U5      X45      $ )z
Creates a window and its associated context.

Wrapper for:
    GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);
)r  glfwCreateWindowr  )rO   rP   titlerm  shares        r   create_windowr    s#     !!%E1B")2 2r   c                 B   [         R                  " U 5        [        R                  " [        R                  " U 5      [        R
                  " [        R                  5      5      R                  R                  n[         H  nX;   d  M
  X!	 M     U[        ;   a  [        U	 gg)zn
Destroys the specified window and its context.

Wrapper for:
    void glfwDestroyWindow(GLFWwindow* window);
N)r  glfwDestroyWindowr&   r'   r7  r~   c_ulongr  r   r)  r,  )windowr/  r.  s      r   destroy_windowr    sv     
F#++fnnV4$nnV^^<>>Fhuu 5-#0  6 22(5 3r   c                 .    [         R                  " U 5      $ )zq
Checks the close flag of the specified window.

Wrapper for:
    int glfwWindowShouldClose(GLFWwindow* window);
)r  glfwWindowShouldCloser  s    r   window_should_closer    s     &&v..r   c                 0    [         R                  " X5        g)z~
Sets the close flag of the specified window.

Wrapper for:
    void glfwSetWindowShouldClose(GLFWwindow* window, int value);
N)r  glfwSetWindowShouldClose)r  r   s     r   set_window_should_closer    s     
""61r   c                 D    [         R                  " U [        U5      5        g)z{
Sets the title of the specified window.

Wrapper for:
    void glfwSetWindowTitle(GLFWwindow* window, const char* title);
N)r  glfwSetWindowTitler  )r  r  s     r   set_window_titler  $  s     
VZ%67r   c                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Retrieves the position of the client area of the specified window.

Wrapper for:
    void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);
r   )r&   rF   r7  r  glfwGetWindowPosr   r  rn  ro  rp  rq  s        r   get_window_posr  1  sa     aJ>>*%DaJ>>*%D	6.Z----r   c                 2    [         R                  " XU5        g)z
Sets the position of the client area of the specified window.

Wrapper for:
    void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);
N)r  glfwSetWindowPosr  ro  rq  s      r   set_window_posr  C       
6.r   c                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Retrieves the size of the client area of the specified window.

Wrapper for:
    void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);
r   )r&   rF   r7  r  glfwGetWindowSizer   r  ru  rO   rv  rP   s        r   get_window_sizer  P  sa     ,,q/KNN;'E<<?L^^L)F	F62l0000r   c                 2    [         R                  " XU5        g)z
Sets the size of the client area of the specified window.

Wrapper for:
    void glfwSetWindowSize(GLFWwindow* window, int width, int height);
N)r  glfwSetWindowSize)r  rO   rP   s      r   set_window_sizer  b  s     
F62r   c                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Retrieves the size of the framebuffer of the specified window.

Wrapper for:
    void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);
r   )r&   rF   r7  r  glfwGetFramebufferSizer   r  s        r   get_framebuffer_sizer  o  sa     ,,q/KNN;'E<<?L^^L)F	  7l0000r   glfwGetWindowContentScalec                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Retrieves the content scale for the specified window.

Wrapper for:
    void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale);
r   )r&   r   r7  r  r  r   )r  r}  r~  r  r  s        r   get_window_content_scaler    sc     ~~a(-~~a(-''?!!<#5#555r   glfwGetWindowOpacityc                 .    [         R                  " U 5      $ )zl
Returns the opacity of the whole window.

Wrapper for:
    float glfwGetWindowOpacity(GLFWwindow* window);
)r  r  r  s    r   get_window_opacityr         ))&11r   glfwSetWindowOpacityc                 \    [         R                  " U5      n[        R                  " X5        g)zw
Sets the opacity of the whole window.

Wrapper for:
    void glfwSetWindowOpacity(GLFWwindow* window, float opacity);
N)r&   r   r  r  )r  opacitys     r   set_window_opacityr    s      ..)""63r   c                 0    [         R                  " U 5        g)z_
Iconifies the specified window.

Wrapper for:
    void glfwIconifyWindow(GLFWwindow* window);
N)r  glfwIconifyWindowr  s    r   iconify_windowr         
F#r   c                 0    [         R                  " U 5        g)z^
Restores the specified window.

Wrapper for:
    void glfwRestoreWindow(GLFWwindow* window);
N)r  glfwRestoreWindowr  s    r   restore_windowr    r  r   c                 0    [         R                  " U 5        g)z`
Makes the specified window visible.

Wrapper for:
    void glfwShowWindow(GLFWwindow* window);
N)r  glfwShowWindowr  s    r   show_windowr         
 r   c                 0    [         R                  " U 5        g)zX
Hides the specified window.

Wrapper for:
    void glfwHideWindow(GLFWwindow* window);
N)r  glfwHideWindowr  s    r   hide_windowr    r  r   glfwRequestWindowAttentionc                 0    [         R                  " U 5        g)zy
Requests user attention to the specified window.

Wrapper for:
    void glfwRequestWindowAttention(GLFWwindow* window);
N)r  r  r  s    r   request_window_attentionr    s     	((0r   c                 .    [         R                  " U 5      $ )z
Returns the monitor that the window uses for full screen mode.

Wrapper for:
    GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window);
)r  glfwGetWindowMonitorr  s    r   get_window_monitorr    s     %%f--r   c                 .    [         R                  " X5      $ )zz
Returns an attribute of the specified window.

Wrapper for:
    int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
)r  glfwGetWindowAttrib)r  attribs     r   get_window_attribr    s     $$V44r   glfwSetWindowAttribc                 2    [         R                  " XU5        g)z
Returns an attribute of the specified window.

Wrapper for:
    void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value);
N)r  r   )r  r  r   s      r   set_window_attribr    s     	!!&%8r   c                    SU4n[        U[        R                  5      (       dQ  SU4n[        R                  " [        R                  " [        R
                  " U5      5      [        R                  5      n[        R                  " [        R                  " U 5      [        R                  " [        R                  5      5      R                  R                  nU[        U'   [        R                  " X5        g)aS  
Sets the user pointer of the specified window. You may pass a normal python object into this function and it will
be wrapped automatically. The object will be kept in existence until the pointer is set to something else or
until the window is destroyed.

Wrapper for:
    void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
FTN)r#   r&   r)   r'   r7  r  r~   r  r  r   r,  r  glfwSetWindowUserPointer)r  r7  r  r/  s       r   set_window_user_pointerr    s     7Dgv//g++fnnV-=-=g-FGY++fnnV4$nnV]];==EXee 04 -	""63r   c                 8   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a  [        U   nUS   nU(       a  US   $ [        R                  " U 5      $ )zy
Returns the user pointer of the specified window.

Wrapper for:
    void* glfwGetWindowUserPointer(GLFWwindow* window);
r   r   )
r&   r'   r7  r~   r  r  r   r,  r  glfwGetWindowUserPointer)r  r/  r  r  s       r   get_window_user_pointerr  *  su     ++fnnV4$nnV]];==EXee  22+K8#Aw7N))&11r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the position callback for the specified window.

Wrapper for:
    GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   _window_pos_callback_repository_GLFWwindowposfunr  glfwSetWindowPosCallbackr  r]  r/  r^  r_  s        r   set_window_pos_callbackr  A       ++fnnV4$nnV]];==EXee 55;KH }&G493C#K0E	""61$):1)=)B ## *C$r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the size callback for the specified window.

Wrapper for:
    GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun);
Nr   )r&   r'   r7  r~   r  r  r    _window_size_callback_repository_GLFWwindowsizefunr  glfwSetWindowSizeCallbackr  s        r   set_window_size_callbackr  \  s     ++fnnV4$nnV]];==EXee 66<[I } 'G5:4D$[1E	##F2$):1)=)B ## *C$r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the close callback for the specified window.

Wrapper for:
    GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   !_window_close_callback_repository_GLFWwindowclosefunr  glfwSetWindowCloseCallbackr  s        r   set_window_close_callbackr  w       ++fnnV4$nnV]];==EXee 77=kJ }!%(G6;5E%k2E	$$V3$):1)=)B ## *C$r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the refresh callback for the specified window.

Wrapper for:
    GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   #_window_refresh_callback_repository_GLFWwindowrefreshfunr  glfwSetWindowRefreshCallbackr  s        r   set_window_refresh_callbackr         ++fnnV4$nnV]];==EXee 99?L }#E*G8=7G'4E	&&v5$):1)=)B ## *C$r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the focus callback for the specified window.

Wrapper for:
    GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   !_window_focus_callback_repository_GLFWwindowfocusfunr  glfwSetWindowFocusCallbackr  s        r   set_window_focus_callbackr%    r  r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the iconify callback for the specified window.

Wrapper for:
    GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   #_window_iconify_callback_repository_GLFWwindowiconifyfunr  glfwSetWindowIconifyCallbackr  s        r   set_window_iconify_callbackr*    r   r   glfwSetWindowMaximizeCallbackc                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the maximize callback for the specified window.

Wrapper for:
    GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   $_window_maximize_callback_repository_GLFWwindowmaximizefunr  r+  r  s        r   set_window_maximize_callbackr/    s     kk&.."8"(.."?AAI%% 	>> D! !%=E(/=B<L,[9++F:(->q-AQ-F$Q'' .G(r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the framebuffer resize callback for the specified window.

Wrapper for:
    GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   %_framebuffer_size_callback_repository_GLFWframebuffersizefunr  glfwSetFramebufferSizeCallbackr  s        r   set_framebuffer_size_callbackr4    s     ++fnnV4$nnV]];==EXee ;;A+N }%e,G:?9I)+6E	((7$):1)=)B ## *C$r   !glfwSetWindowContentScaleCallbackc                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the window content scale callback for the specified window.

Wrapper for:
    GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   )_window_content_scale_callback_repository_GLFWwindowcontentscalefunr  r5  r  s        r   !set_window_content_scale_callbackr9  $  s     kk&.."8"(.."?AAI%% 	CC I! !%=E,U3BGAQ1+>//>(->q-AQ-F$Q'' .G(r   c                  .    [         R                  " 5         g)zL
Processes all pending events.

Wrapper for:
    void glfwPollEvents(void);
N)r  glfwPollEventsr   r   r   poll_eventsr<  >       
r   c                  .    [         R                  " 5         g)za
Waits until events are pending and processes them.

Wrapper for:
    void glfwWaitEvents(void);
N)r  glfwWaitEventsr   r   r   wait_eventsr@  I  r=  r   c                 .    [         R                  " X5      $ )z
Returns the value of an input option for the specified window.

Wrapper for:
    int glfwGetInputMode(GLFWwindow* window, int mode);
)r  glfwGetInputMode)r  modes     r   get_input_moderD  U  s     !!&//r   c                 2    [         R                  " XU5        g)aM  
Sets an input option for the specified window.
@param[in] window The window whose input mode to set.
@param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or
`GLFW_STICKY_MOUSE_BUTTONS`.
@param[in] value The new value of the specified input mode.

Wrapper for:
    void glfwSetInputMode(GLFWwindow* window, int mode, int value);
N)r  glfwSetInputMode)r  rC  r   s      r   set_input_moderG  b  s     
6/r   glfwRawMouseMotionSupportedc                  2    [         R                  " 5       S:g  $ )zi
Returns whether raw mouse motion is supported.

Wrapper for:
    int glfwRawMouseMotionSupported(void);
r   )r  rH  r   r   r   raw_mouse_motion_supportedrJ  s  s     002a77r   c                 .    [         R                  " X5      $ )z
Returns the last reported state of a keyboard key for the specified
window.

Wrapper for:
    int glfwGetKey(GLFWwindow* window, int key);
)r  
glfwGetKey)r  keys     r   get_keyrN    s     F((r   c                 .    [         R                  " X5      $ )z
Returns the last reported state of a mouse button for the specified
window.

Wrapper for:
    int glfwGetMouseButton(GLFWwindow* window, int button);
)r  glfwGetMouseButton)r  r   s     r   get_mouse_buttonrQ    s     ##F33r   c                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R                  " XU5        UR
                  UR
                  4$ )z
Retrieves the last reported cursor position, relative to the client
area of the window.

Wrapper for:
    void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);
g        )r&   c_doubler7  r  glfwGetCursorPosr   r  s        r   get_cursor_posrU    sc     %J>>*%D%J>>*%D	6.Z----r   c                 2    [         R                  " XU5        g)z
Sets the position of the cursor, relative to the client area of the window.

Wrapper for:
    void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);
N)r  glfwSetCursorPosr  s      r   set_cursor_posrX    r  r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)zo
Sets the key callback.

Wrapper for:
    GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   _key_callback_repository_GLFWkeyfunr  glfwSetKeyCallbackr  s        r   set_key_callbackr]    s     ++fnnV4$nnV]];==EXee ..4[A }% G-2,<[)E	V+$):1)=)B ## *C$r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the Unicode character callback.

Wrapper for:
    GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   _char_callback_repository_GLFWcharfunr  glfwSetCharCallbackr  s        r   set_char_callbackrb    s     ++fnnV4$nnV]];==EXee //5kB }5!G.3-=k*E	f,$):1)=)B ## *C$r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the mouse button callback.

Wrapper for:
    GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   !_mouse_button_callback_repository_GLFWmousebuttonfunr  glfwSetMouseButtonCallbackr  s        r   set_mouse_button_callbackrg    r  r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the cursor position callback.

Wrapper for:
    GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   _cursor_pos_callback_repository_GLFWcursorposfunr  glfwSetCursorPosCallbackr  s        r   set_cursor_pos_callbackrl    r  r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the cursor enter/exit callback.

Wrapper for:
    GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   !_cursor_enter_callback_repository_GLFWcursorenterfunr  glfwSetCursorEnterCallbackr  s        r   set_cursor_enter_callbackrq  (  r  r   c                 z   [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z{
Sets the scroll callback.

Wrapper for:
    GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun);
Nr   )r&   r'   r7  r~   r  r  r   _scroll_callback_repository_GLFWscrollfunr  glfwSetScrollCallbackr  s        r   set_scroll_callbackrv  C  s     ++fnnV4$nnV]];==EXee 117D }U#G05/?,E	.$):1)=)B ## *C$r   c                 .    [         R                  " U 5      $ )zh
Returns whether the specified joystick is present.

Wrapper for:
    int glfwJoystickPresent(int joy);
)r  glfwJoystickPresentjoys    r   joystick_presentr{  [       $$S))r   c                     [         R                  " S5      n[         R                  " U5      n[        R                  " X5      nX1R
                  4$ )z
Returns the values of all axes of the specified joystick.

Wrapper for:
    const float* glfwGetJoystickAxes(int joy, int* count);
r   )r&   rF   r7  r  glfwGetJoystickAxesr   rz  rc  rd  r  s       r   get_joystick_axesr  g  s>     ,,q/KNN;'E&&s2F$$$$r   c                     [         R                  " S5      n[         R                  " U5      n[        R                  " X5      nX1R
                  4$ )z
Returns the state of all buttons of the specified joystick.

Wrapper for:
    const unsigned char* glfwGetJoystickButtons(int joy, int* count);
r   )r&   rF   r7  r  glfwGetJoystickButtonsr   r  s       r   get_joystick_buttonsr  v  s>     ,,q/KNN;'E))#5F$$$$r   glfwGetJoystickHatsc                     [         R                  " S5      n[         R                  " U5      n[        R                  " X5      nX1R
                  4$ )z
Returns the state of all hats of the specified joystick.

Wrapper for:
    const unsigned char* glfwGetJoystickButtons(int joy, int* count);
r   )r&   rF   r7  r  r  r   )joystick_idrc  rd  r  s       r   get_joystick_hatsr    s>     ll1o{+**;>((((r   c                 .    [         R                  " U 5      $ )zi
Returns the name of the specified joystick.

Wrapper for:
    const char* glfwGetJoystickName(int joy);
)r  glfwGetJoystickNamery  s    r   get_joystick_namer    r|  r   glfwGetJoystickGUIDc                 .    [         R                  " U 5      $ )zx
Returns the SDL compatible GUID of the specified joystick.

Wrapper for:
    const char* glfwGetJoystickGUID(int jid);
)r  r  r  s    r   get_joystick_guidr    s     ((55r   glfwSetJoystickUserPointerglfwGetJoystickUserPointerc                 *   SU4n[        U[        R                  5      (       dQ  SU4n[        R                  " [        R                  " [        R
                  " U5      5      [        R                  5      nU[        U '   [        R                  " X5        g)a+  
Sets the user pointer of the specified joystick. You may pass a normal
python object into this function and it will be wrapped automatically.
The object will be kept in existence until the pointer is set to
something else.

Wrapper for:
    void glfwSetJoystickUserPointer(int jid, void* pointer);
FTN)	r#   r&   r)   r'   r7  r  _joystick_user_data_repositoryr  r  )r  r7  r  s      r   set_joystick_user_pointerr    sn     w'6??33'?Dkk&..1A1A'1J"K"(//3G 7;&{3&&{<r   c                 v    U [         ;   a  [         U    nUS   nU(       a  US   $ [        R                  " U 5      $ )zr
Returns the user pointer of the specified joystick.

Wrapper for:
    void* glfwGetJoystickUserPointer(int jid);
r   r   )r  r  r  )r  r  r  s      r   get_joystick_user_pointerr    s>     881+>D#'7 #Aw//<<r   glfwJoystickIsGamepadc                 4    [         R                  " U 5      S:g  $ )zu
Returns whether the specified joystick has a gamepad mapping.

Wrapper for:
    int glfwJoystickIsGamepad(int jid);
r   )r  r  r  s    r   joystick_is_gamepadr    s     **;71<<r   glfwGetGamepadStatec                     [        5       n[        R                  " U [        R                  " U5      5      [
        :X  a  gUR                  5       $ )z
Retrieves the state of the specified joystick remapped as a gamepad.

Wrapper for:
    int glfwGetGamepadState(int jid, GLFWgamepadstate* state);
N)r   r  r  r&   byrefFALSErj   )r  r   s     r   get_gamepad_stater    s=     *+$$[&,,}2MNRWW##%%r   c                 ~    U b  [         R                  " S[        SS9  [        R                  " U [        U5      5        g)z
Sets the clipboard to the specified string.

Wrapper for:
    void glfwSetClipboardString(GLFWwindow* window, const char* string);
N<The window parameter to glfwSetClipboardString is deprecatedr   
stacklevel)rO  r   DeprecationWarningr  glfwSetClipboardStringr  )r  strings     r   set_clipboard_stringr    s2     TVhuvw	  F);<r   c                 h    U b  [         R                  " S[        SS9  [        R                  " U 5      $ )z
Retrieves the contents of the clipboard as a string.

Wrapper for:
    const char* glfwGetClipboardString(GLFWwindow* window);
r  r   r  )rO  r   r  r  glfwGetClipboardStringr  s    r   get_clipboard_stringr  	  s.     TVhuvw''//r   c                  ,    [         R                  " 5       $ )zR
Returns the value of the GLFW timer.

Wrapper for:
    double glfwGetTime(void);
)r  glfwGetTimer   r   r   get_timer  	  s     r   c                 0    [         R                  " U 5        g)zG
Sets the GLFW timer.

Wrapper for:
    void glfwSetTime(double time);
N)r  glfwSetTime)times    r   set_timer  #	  s     
dr   c                 0    [         R                  " U 5        g)z
Makes the context of the specified window current for the calling
thread.

Wrapper for:
    void glfwMakeContextCurrent(GLFWwindow* window);
N)r  glfwMakeContextCurrentr  s    r   make_context_currentr  .	  s     
  (r   c                  ,    [         R                  " 5       $ )z
Returns the window whose context is current on the calling thread.

Wrapper for:
    GLFWwindow* glfwGetCurrentContext(void);
)r  glfwGetCurrentContextr   r   r   get_current_contextr  :	  rj  r   c                 0    [         R                  " U 5        g)zw
Swaps the front and back buffers of the specified window.

Wrapper for:
    void glfwSwapBuffers(GLFWwindow* window);
N)r  glfwSwapBuffersr  s    r   swap_buffersr  E	  s     
&!r   c                 0    [         R                  " U 5        g)zh
Sets the swap interval for the current context.

Wrapper for:
    void glfwSwapInterval(int interval);
N)r  glfwSwapInterval)intervals    r   swap_intervalr  P	  s     
8$r   c                 @    [         R                  " [        U 5      5      $ )z|
Returns whether the specified extension is available.

Wrapper for:
    int glfwExtensionSupported(const char* extension);
)r  glfwExtensionSupportedr  )	extensions    r   extension_supportedr  [	  s     ''
9(=>>r   c                 @    [         R                  " [        U 5      5      $ )z
Returns the address of the specified function for the current
context.

Wrapper for:
    GLFWglproc glfwGetProcAddress(const char* procname);
)r  glfwGetProcAddressr  )procnames    r   get_proc_addressr  f	  s     ##Jx$899r   glfwSetDropCallbackc                    [         R                  " [         R                  " U 5      [         R                  " [         R                  5      5      R
                  R                  nU[        ;   a
  [        U   nOSnUc  SnOU4S jnUn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)zx
Sets the file drop callback.

Wrapper for:
    GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun);
Nr   c                 v    [        U5       Vs/ s H  oBU   R                  S5      PM     nnU" X5        g s  snf r   )r}   decode)r  rd  c_pathsr]  r   pathss         r   
cb_wrapper%set_drop_callback.<locals>.cb_wrapper	  s5    =B5\J\**73\Jf$ Ks   6)r&   r'   r7  r~   r  r  r    _window_drop_callback_repository_GLFWdropfunr  r  )r  r]  r/  r^  r  r_  s         r   set_drop_callbackr  v	  s     kk&.."8"(.."?AAI%% 	:: @ M $=E9> % Eu%9>8H(5!!&0(->q-AQ-F$Q'' .G(r   glfwSetCharModsCallbackc                    [         R                  " S[        SS9  [        R                  " [        R
                  " U 5      [        R                  " [        R                  5      5      R                  R                  nU[        ;   a
  [        U   nOSnUc  Sn[        U5      nX4[        U'   Un[        R                  " X5        Ub  US   S:w  a  US   $ gg)z
Sets the Unicode character with modifiers callback.

Wrapper for:
    GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun);
z<glfwSetCharModsCallback is scheduled for removal in GLFW 4.0r   r  Nr   )rO  r   r  r&   r'   r7  r~   r  r  r   %_window_char_mods_callback_repository_GLFWcharmodsfunr  r  r  s        r   set_char_mods_callbackr  	  s     	TVhuvwkk&.."8"(.."?AAI%% 	?? Ek R $=E"5)>C=M-k:%%f4(->q-AQ-F$Q'' .G(r   glfwVulkanSupportedc                  2    [         R                  " 5       S:g  $ )zd
Returns whether the Vulkan loader has been found.

Wrapper for:
    int glfwVulkanSupported(void);
r   )r  r  r   r   r   vulkan_supportedr  	  s     ((*a//r   !glfwGetRequiredInstanceExtensionsc                     [         R                  " S5      n [         R                  " U 5      n[        R                  " U5      nU R
                  n[        U5       Vs/ s H  o2U   R                  S5      PM     nnU$ s  snf )z
Returns the Vulkan instance extensions required by GLFW.

Wrapper for:
    const char** glfwGetRequiredInstanceExtensions(uint32_t* count);
r   r   )r&   c_uint32r7  r  r  r   r}   r  )rc  rd  c_extensionsr   
extensionss        r    get_required_instance_extensionsr  	  sl     ooa({+>>uE!!?DU|L|!1o,,W5|
L Ms   A=glfwGetTimerValuec                  >    [        [        R                  " 5       5      $ )za
Returns the current value of the raw timer.

Wrapper for:
    uint64_t glfwGetTimerValue(void);
)r(   r  r  r   r   r   get_timer_valuer  	  s     5**,--r   glfwGetTimerFrequencyc                  >    [        [        R                  " 5       5      $ )zi
Returns the frequency, in Hz, of the raw timer.

Wrapper for:
    uint64_t glfwGetTimerFrequency(void);
)r(   r  r  r   r   r   get_timer_frequencyr  	  s     5..011r   glfwSetJoystickCallbackc                     [         nU c  Sn [        U 5      nX4qUn [        R                  " U 5        Ub  US   S:w  a  US   $ gg)zl
Sets the error callback.

Wrapper for:
    GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun);
Nr   )rX  _GLFWjoystickfun_joystick_callbackr  r  r\  s      r   set_joystick_callbackr  	  sa     ,=E"5)#-%%e,(->q-AQ-F$Q'' .G(r   glfwUpdateGamepadMappingsc                 @    [         R                  " [        U 5      5      $ )z
Adds the specified SDL_GameControllerDB gamepad mappings.

Wrapper for:
    int glfwUpdateGamepadMappings(const char* string);
)r  r  r  )r  s    r   update_gamepad_mappingsr  	  s     ..z&/ABBr   glfwGetGamepadNamec                 `    [         R                  " U 5      nU(       a  UR                  S5      $ g)z
Returns the human-readable gamepad name for the specified joystick.

Wrapper for:
    const char* glfwGetGamepadName(int jid);
r   N)r  r  r  )r  gamepad_names     r   get_gamepad_namer  
  s+     //<&&w//r   glfwGetKeyNamec                 `    [         R                  " X5      nU(       a  UR                  S5      $ g)z
Returns the localized name of the specified printable key.

Wrapper for:
    const char* glfwGetKeyName(int key, int scancode);
r   N)r  r  r  )rM  scancodekey_names      r   get_key_namer  
  s)     ''6??7++r   glfwGetKeyScancodec                 .    [         R                  " U 5      $ )zq
Returns the platform-specific scancode of the specified key.

Wrapper for:
    int glfwGetKeyScancode(int key);
)r  r  )rM  s    r   get_key_scancoder  +
  s     '',,r   glfwCreateCursorc                     [        5       nUR                  U 5        [        R                  " [        R
                  " U5      X5      $ )zv
Creates a custom cursor.

Wrapper for:
    GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);
)r   rf   r  r  r&   r7  )r   xhotyhotc_images       r   create_cursorr  :
  s3     ,U%%fnnW&=tJJr   glfwCreateStandardCursorc                 .    [         R                  " U 5      $ )zl
Creates a cursor with a standard shape.

Wrapper for:
    GLFWcursor* glfwCreateStandardCursor(int shape);
)r  r  )shapes    r   create_standard_cursorr  H
  s     --e44r   glfwDestroyCursorc                 0    [         R                  " U 5        g)zR
Destroys a cursor.

Wrapper for:
    void glfwDestroyCursor(GLFWcursor* cursor);
N)r  r  )cursors    r   destroy_cursorr  T
  s     	'r   glfwSetCursorc                 0    [         R                  " X5        g)zo
Sets the cursor for the window.

Wrapper for:
    void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);
N)r  r  )r  r  s     r   
set_cursorr  a
  s     	F+r   glfwCreateWindowSurfacec                 r    [        U 5      n [        U5      n[        U5      n[        R                  " XX#5      $ )z
Creates a Vulkan surface for the specified window.

Wrapper for:
    VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
)r,   r  r	  )instancer  	allocatorsurfaces       r   create_window_surfacer  p
  s5     *(3(1*95	,,XyRRr   (glfwGetPhysicalDevicePresentationSupportc                 \    [        U 5      n [        U5      n[        R                  " XU5      $ )z
Creates a Vulkan surface for the specified window.

Wrapper for:
    int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
)r,   r  r  )r  devicequeuefamilys      r   (get_physical_device_presentation_supportr  
  s,     *(3'/==hP[\\r   glfwGetInstanceProcAddressc                 D    [        U 5      n [        R                  " X5      $ )z
Returns the address of the specified Vulkan instance function.

Wrapper for:
    GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);
)r,   r  r  )r  r  s     r   get_instance_proc_addressr  
  s     *(3//CCr   glfwSetWindowIconc                     US:X  a#  [        US5      (       a  [        U5      S:X  a  U/n[        U-  nU" 5       n[        U5       H  u  pVXE   R	                  U5        M     [
        R                  " XU5        g)z
Sets the icon for the specified window.

Wrapper for:
    void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);
r   __len__r   N)r   rz   r   r   rf   r  r  )r  rd  imagesr   _imagesr   r   s          r   set_window_iconr  
  si     A:wvy99S[A=MXF%'
,!&)HAJOOE" *w7r   glfwSetWindowSizeLimitsc                 4    [         R                  " U XX45        g)z
Sets the size limits of the specified window.

Wrapper for:
    void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
N)r  r  )r  minwidth	minheightmaxwidth	maxheights        r   set_window_size_limitsr#  
  s     	%%f&.&.	;r   glfwSetWindowAspectRatioc                 2    [         R                  " XU5        g)z
Sets the aspect ratio of the specified window.

Wrapper for:
    void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);
N)r  r$  )r  numerdenoms      r   set_window_aspect_ratior(  
  s     	&&ve<r   glfwGetWindowFrameSizec           	         [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        R                  " U [         R                  " U5      [         R                  " U5      [         R                  " U5      [         R                  " U5      5        UR
                  UR
                  UR
                  UR
                  4$ )z
Retrieves the size of the frame of the window.

Wrapper for:
    void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
r   )r&   rF   r  r)  r7  r   )r  lefttoprightbottoms        r   get_window_frame_sizer/  
  s     ||All1oQa$$V%+^^D%9%+^^C%8%+^^E%:%+^^F%;		=
 zz399ekk6<<??r   glfwMaximizeWindowc                 0    [         R                  " U 5        g)z`
Maximizes the specified window.

Wrapper for:
    void glfwMaximizeWindow(GLFWwindow* window);
N)r  r0  r  s    r   maximize_windowr2  
  s     	  (r   glfwFocusWindowc                 0    [         R                  " U 5        g)zx
Brings the specified window to front and sets input focus.

Wrapper for:
    void glfwFocusWindow(GLFWwindow* window);
N)r  r3  r  s    r   focus_windowr5  
  s     	f%r   glfwSetWindowMonitorc           	      6    [         R                  " XX#XEU5        g)z
Sets the mode, monitor, video mode and placement of a window.

Wrapper for:
    void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
N)r  r6  )r  rm  ro  rq  rO   rP   rT   s          r   set_window_monitorr8  
  s     	""6#'ul	Lr   glfwWaitEventsTimeoutc                 0    [         R                  " U 5        g)z~
Waits with timeout until events are queued and processes them.

Wrapper for:
    void glfwWaitEventsTimeout(double timeout);
N)r  r9  )timeouts    r   wait_events_timeoutr<    s     	##G,r   glfwPostEmptyEventc                  .    [         R                  " 5         g)zW
Posts an empty event to the event queue.

Wrapper for:
    void glfwPostEmptyEvent();
N)r  r=  r   r   r   post_empty_eventr?  $  s     	  "r   glfwGetWin32Adapterc                 `    [         R                  " U 5      nU(       a  UR                  S5      $ g)z
Returns the adapter device name of the specified monitor.

Wrapper for:
    const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
r   N)r  r@  r  )rm  adapter_names     r   get_win32_adapterrC  1  +     009&&w//r   glfwGetWin32Monitorc                 `    [         R                  " U 5      nU(       a  UR                  S5      $ g)z
Returns the display device name of the specified monitor.

Wrapper for:
    const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
r   N)r  rE  r  )rm  monitor_names     r   get_win32_monitorrH  A  rD  r   glfwGetWin32Windowc                 .    [         R                  " U 5      $ )zj
Returns the HWND of the specified window.

Wrapper for:
    HWND glfwGetWin32Window(GLFWwindow* window);
)r  rI  r  s    r   get_win32_windowrK  Q       ''//r   glfwGetWGLContextc                 .    [         R                  " U 5      $ )zk
Returns the HGLRC of the specified window.

Wrapper for:
    HGLRC glfwGetWGLContext(GLFWwindow* window);
)r  rM  r  s    r   get_wgl_contextrO  ^       &&v..r   glfwGetCocoaMonitorc                 .    [         R                  " U 5      $ )z
Returns the CGDirectDisplayID of the specified monitor.

Wrapper for:
    CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
)r  rQ  r  s    r   get_cocoa_monitorrS  k  s     ((11r   glfwGetCocoaWindowc                 .    [         R                  " U 5      $ )zl
Returns the NSWindow of the specified window.

Wrapper for:
    id glfwGetCocoaWindow(GLFWwindow* window);
)r  rT  r  s    r   get_cocoa_windowrV  x  rL  r   glfwGetNSGLContextc                 .    [         R                  " U 5      $ )zs
Returns the NSOpenGLContext of the specified window.

Wrapper for:
    id glfwGetNSGLContext(GLFWwindow* window);
)r  rW  r  s    r   get_nsgl_contextrY    rL  r   glfwGetX11Displayc                  ,    [         R                  " 5       $ )zW
Returns the Display used by GLFW.

Wrapper for:
    Display* glfwGetX11Display(void);
)r  rZ  r   r   r   get_x11_displayr\         &&((r   glfwGetX11Adapterc                 .    [         R                  " U 5      $ )zp
Returns the RRCrtc of the specified monitor.

Wrapper for:
    RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
)r  r^  r  s    r   get_x11_adapterr`         &&w//r   glfwGetX11Monitorc                 .    [         R                  " U 5      $ )zt
Returns the RROutput of the specified monitor.

Wrapper for:
    RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
)r  rb  r  s    r   get_x11_monitorrd    ra  r   glfwGetX11Windowc                 .    [         R                  " U 5      $ )zl
Returns the Window of the specified window.

Wrapper for:
    Window glfwGetX11Window(GLFWwindow* window);
)r  re  r  s    r   get_x11_windowrg         %%f--r   glfwSetX11SelectionStringc                 R    U R                  S5      n[        R                  " U5        g)z
Sets the current primary selection to the specified string.

Wrapper for:
    void glfwSetX11SelectionString(const char* string);
r   N)r   r  ri  )r  binary_strings     r   set_x11_selection_stringrl    s      g.''6r   glfwGetX11SelectionStringc                  ^    [         R                  " 5       n U (       a  U R                  S5      $ g)z
Returns the contents of the current primary selection as a string.

Wrapper for:
    const char* glfwGetX11SelectionString(void);
r   N)r  rm  r  )selection_strings    r   get_x11_selection_stringrp    s*     !::<#**733r   glfwGetGLXContextc                 .    [         R                  " U 5      $ )zu
Returns the GLXContext of the specified window.

Wrapper for:
    GLXContext glfwGetGLXContext(GLFWwindow* window);
)r  rq  r  s    r   get_glx_contextrs    rP  r   glfwGetGLXWindowc                 .    [         R                  " U 5      $ )zr
Returns the GLXWindow of the specified window.

Wrapper for:
    GLXWindow glfwGetGLXWindow(GLFWwindow* window);
)r  rt  r  s    r   get_glx_windowrv    rh  r   glfwGetWaylandDisplayc                  ,    [         R                  " 5       $ )zp
Returns the struct wl_display* used by GLFW.

Wrapper for:
    struct wl_display* glfwGetWaylandDisplay(void);
)r  rw  r   r   r   get_wayland_displayry    s     **,,r   glfwGetWaylandMonitorc                 .    [         R                  " U 5      $ )z
Returns the struct wl_output* of the specified monitor.

Wrapper for:
    struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
)r  rz  r  s    r   get_wayland_monitorr|    s     **733r   glfwGetWaylandWindowc                 .    [         R                  " U 5      $ )z
Returns the main struct wl_surface* of the specified window.

Wrapper for:
    struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
)r  r}  r  s    r   get_wayland_windowr    r  r   glfwGetEGLDisplayc                  ,    [         R                  " 5       $ )z\
Returns the EGLDisplay used by GLFW.

Wrapper for:
    EGLDisplay glfwGetEGLDisplay(void);
)r  r  r   r   r   get_egl_displayr  %  r]  r   glfwGetEGLContextc                 .    [         R                  " U 5      $ )zu
Returns the EGLContext of the specified window.

Wrapper for:
    EGLContext glfwGetEGLContext(GLFWwindow* window);
)r  r  r  s    r   get_egl_contextr  2  rP  r   glfwGetEGLSurfacec                 .    [         R                  " U 5      $ )zu
Returns the EGLSurface of the specified window.

Wrapper for:
    EGLSurface glfwGetEGLSurface(GLFWwindow* window);
)r  r  r  s    r   get_egl_surfacer  ?  rP  r   glfwGetOSMesaColorBufferc                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R
                  " XXFU5      n	U	(       d  gUR                  UR                  UR                  UR                  4$ )z
Retrieves the color buffer associated with the specified window.

Wrapper for:
    int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
r   N)r&   rF   r7  r)   r  r  r   )
r  ru  rO   rv  rP   format_valueformatbuffer_valuebuffersuccesss
             r   get_os_mesa_color_bufferr  L  s     ll1o{+||A-||A-q)-00PVW{{FLL&,,DDr   glfwGetOSMesaDepthBufferc                    [         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[         R                  " S5      n[         R                  " U5      n[        R
                  " XXFU5      n	U	(       d  gUR                  UR                  UR                  UR                  4$ )z
Retrieves the depth buffer associated with the specified window.

Wrapper for:
    int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
r   N)r&   rF   r7  r)   r  r  r   )
r  ru  rO   rv  rP   bytes_per_value_valuebytes_per_valuer  r  r  s
             r   get_os_mesa_depth_bufferr  d  s     ll1o{+||A- &Q ..)>?q)-00Y_`{{FLL/*?*?MMr   glfwGetOSMesaContextc                 .    [         R                  " U 5      $ )z~
Returns the OSMesaContext of the specified window.

Wrapper for:
    OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
)r  r  r  s    r   get_os_mesa_contextr  |  r  r   glfwInitAllocatorc                 Z   U c'  Uc$  Uc!  [         R                  " [        5      " S5      nOkU c  Sn [        U 5      nX4qUc  Sn[        U5      nX4qUc  Sn[        U5      nX&4q[        5       nXGl	        XWl
        Xgl        [         R                  " U5      n[        R                  " U5        g)zy
Sets the init allocator to the desired value.

Wrapper for:
    void glfwInitAllocator(const GLFWallocator* allocator);
Nr   )r&   r~   r  r  _allocate_callbackr  _reallocate_callbackr  _deallocate_callbackr  r  r  r  r  r  )r  r  r  allocator_ptr
c_allocatec_reallocatec_deallocater  s           r   init_allocatorr    s     
 2z7I"NN>:1=M)(3J"*!7!
-j9L$.#= !
-j9L$.#= &(I!+#/ #/ "LL3M.r   glfwInitVulkanLoaderc                 V    U c  Sn [        U 5      nX4q[        R                  " U5        g)z
Sets the desired Vulkan `vkGetInstanceProcAddr` function.

Wrapper for:
    void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader);
Nr   )_loader_callback_type_loader_callbackr  r  )loaderc_loaders     r   init_vulkan_loaderr    s/     >F(0"-""8,r   glfwGetPlatformc                  ,    [         R                  " 5       $ )zW
Returns the currently selected platform.

Wrapper for:
    int glfwGetPlatform(void);
)r  r  r   r   r   get_platformr    s     $$&&r   glfwPlatformSupportedc                 .    [         R                  " U 5      $ )z
Returns whether the library includes support for the specified platform.

Wrapper for:
    int glfwPlatformSupported(int platform);
)r  r  )platforms    r   platform_supportedr    s     **844r   glfwGetWindowTitlec                 `    [         R                  " U 5      nU(       a  UR                  S5      $ g)zr
Returns the title of the specified window.

Wrapper for:
    const char* glfwGetWindowTitle(GLFWwindow* window);
r   N)r  r  r  )r  window_titles     r   get_window_titler    s+     //7&&w//r   (  r>   
__future__r   r   r   
__author____copyright____license____version__rM  r|   rm   r&   rP  r#  r   r   rO  libraryr	   r  ImportErrorenvironget_PREVIEWglfw_previewboolgetcwdur!  AttributeErrorgetcwdversion_infor:  r  r   cffir    r$   r,   UserWarningr/   r)  r`   rB   rJ   rM   rp   r   r   r   VERSION_MAJORVERSION_MINORVERSION_REVISIONTRUEr  RELEASEPRESSREPEATHAT_CENTEREDHAT_UP	HAT_RIGHTHAT_DOWNHAT_LEFTHAT_RIGHT_UPHAT_RIGHT_DOWNHAT_LEFT_UPHAT_LEFT_DOWNKEY_UNKNOWN	KEY_SPACEKEY_APOSTROPHE	KEY_COMMA	KEY_MINUS
KEY_PERIOD	KEY_SLASHKEY_0KEY_1KEY_2KEY_3KEY_4KEY_5KEY_6KEY_7KEY_8KEY_9KEY_SEMICOLON	KEY_EQUALKEY_AKEY_BKEY_CKEY_DKEY_EKEY_FKEY_GKEY_HKEY_IKEY_JKEY_KKEY_LKEY_MKEY_NKEY_OKEY_PKEY_QKEY_RKEY_SKEY_TKEY_UKEY_VKEY_WKEY_XKEY_YKEY_ZKEY_LEFT_BRACKETKEY_BACKSLASHKEY_RIGHT_BRACKETKEY_GRAVE_ACCENTKEY_WORLD_1KEY_WORLD_2
KEY_ESCAPE	KEY_ENTERKEY_TABKEY_BACKSPACE
KEY_INSERT
KEY_DELETE	KEY_RIGHTKEY_LEFTKEY_DOWNKEY_UPKEY_PAGE_UPKEY_PAGE_DOWNKEY_HOMEKEY_ENDKEY_CAPS_LOCKKEY_SCROLL_LOCKKEY_NUM_LOCKKEY_PRINT_SCREEN	KEY_PAUSEKEY_F1KEY_F2KEY_F3KEY_F4KEY_F5KEY_F6KEY_F7KEY_F8KEY_F9KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_KP_0KEY_KP_1KEY_KP_2KEY_KP_3KEY_KP_4KEY_KP_5KEY_KP_6KEY_KP_7KEY_KP_8KEY_KP_9KEY_KP_DECIMALKEY_KP_DIVIDEKEY_KP_MULTIPLYKEY_KP_SUBTRACT
KEY_KP_ADDKEY_KP_ENTERKEY_KP_EQUALKEY_LEFT_SHIFTKEY_LEFT_CONTROLKEY_LEFT_ALTKEY_LEFT_SUPERKEY_RIGHT_SHIFTKEY_RIGHT_CONTROLKEY_RIGHT_ALTKEY_RIGHT_SUPERKEY_MENUKEY_LAST	MOD_SHIFTMOD_CONTROLMOD_ALT	MOD_SUPERMOD_CAPS_LOCKMOD_NUM_LOCKMOUSE_BUTTON_1MOUSE_BUTTON_2MOUSE_BUTTON_3MOUSE_BUTTON_4MOUSE_BUTTON_5MOUSE_BUTTON_6MOUSE_BUTTON_7MOUSE_BUTTON_8MOUSE_BUTTON_LASTMOUSE_BUTTON_LEFTMOUSE_BUTTON_RIGHTMOUSE_BUTTON_MIDDLE
JOYSTICK_1
JOYSTICK_2
JOYSTICK_3
JOYSTICK_4
JOYSTICK_5
JOYSTICK_6
JOYSTICK_7
JOYSTICK_8
JOYSTICK_9JOYSTICK_10JOYSTICK_11JOYSTICK_12JOYSTICK_13JOYSTICK_14JOYSTICK_15JOYSTICK_16JOYSTICK_LASTGAMEPAD_BUTTON_AGAMEPAD_BUTTON_BGAMEPAD_BUTTON_XGAMEPAD_BUTTON_YGAMEPAD_BUTTON_LEFT_BUMPERGAMEPAD_BUTTON_RIGHT_BUMPERGAMEPAD_BUTTON_BACKGAMEPAD_BUTTON_STARTGAMEPAD_BUTTON_GUIDEGAMEPAD_BUTTON_LEFT_THUMBGAMEPAD_BUTTON_RIGHT_THUMBGAMEPAD_BUTTON_DPAD_UPGAMEPAD_BUTTON_DPAD_RIGHTGAMEPAD_BUTTON_DPAD_DOWNGAMEPAD_BUTTON_DPAD_LEFTGAMEPAD_BUTTON_LASTGAMEPAD_BUTTON_CROSSGAMEPAD_BUTTON_CIRCLEGAMEPAD_BUTTON_SQUAREGAMEPAD_BUTTON_TRIANGLEGAMEPAD_AXIS_LEFT_XGAMEPAD_AXIS_LEFT_YGAMEPAD_AXIS_RIGHT_XGAMEPAD_AXIS_RIGHT_YGAMEPAD_AXIS_LEFT_TRIGGERGAMEPAD_AXIS_RIGHT_TRIGGERGAMEPAD_AXIS_LASTNO_ERRORNOT_INITIALIZEDNO_CURRENT_CONTEXTINVALID_ENUMINVALID_VALUEOUT_OF_MEMORYAPI_UNAVAILABLEVERSION_UNAVAILABLEPLATFORM_ERRORFORMAT_UNAVAILABLENO_WINDOW_CONTEXTCURSOR_UNAVAILABLEFEATURE_UNAVAILABLEFEATURE_UNIMPLEMENTEDPLATFORM_UNAVAILABLEFOCUSED	ICONIFIED	RESIZABLEVISIBLE	DECORATEDAUTO_ICONIFYFLOATING	MAXIMIZEDCENTER_CURSORTRANSPARENT_FRAMEBUFFERHOVEREDFOCUS_ON_SHOWMOUSE_PASSTHROUGH
POSITION_X
POSITION_YRED_BITS
GREEN_BITS	BLUE_BITS
ALPHA_BITS
DEPTH_BITSSTENCIL_BITSACCUM_RED_BITSACCUM_GREEN_BITSACCUM_BLUE_BITSACCUM_ALPHA_BITSAUX_BUFFERSSTEREOSAMPLESSRGB_CAPABLEREFRESH_RATEDOUBLEBUFFER
CLIENT_APICONTEXT_VERSION_MAJORCONTEXT_VERSION_MINORCONTEXT_REVISIONCONTEXT_ROBUSTNESSOPENGL_FORWARD_COMPATOPENGL_DEBUG_CONTEXTCONTEXT_DEBUGOPENGL_PROFILECONTEXT_RELEASE_BEHAVIORCONTEXT_NO_ERRORCONTEXT_CREATION_APISCALE_TO_MONITORSCALE_FRAMEBUFFERCOCOA_RETINA_FRAMEBUFFERCOCOA_FRAME_NAMECOCOA_GRAPHICS_SWITCHINGX11_CLASS_NAMEX11_INSTANCE_NAMEWIN32_KEYBOARD_MENUWIN32_SHOWDEFAULTWAYLAND_APP_IDNO_API
OPENGL_APIOPENGL_ES_APINO_ROBUSTNESSNO_RESET_NOTIFICATIONLOSE_CONTEXT_ON_RESETOPENGL_ANY_PROFILEOPENGL_CORE_PROFILEOPENGL_COMPAT_PROFILECURSORSTICKY_KEYSSTICKY_MOUSE_BUTTONSLOCK_KEY_MODSRAW_MOUSE_MOTIONCURSOR_NORMALCURSOR_HIDDENCURSOR_DISABLEDCURSOR_CAPTUREDANY_RELEASE_BEHAVIORRELEASE_BEHAVIOR_FLUSHRELEASE_BEHAVIOR_NONENATIVE_CONTEXT_APIEGL_CONTEXT_APIOSMESA_CONTEXT_APIARROW_CURSORIBEAM_CURSORCROSSHAIR_CURSORHAND_CURSORPOINTING_HAND_CURSORHRESIZE_CURSORRESIZE_EW_CURSORVRESIZE_CURSORRESIZE_NS_CURSORRESIZE_NWSE_CURSORRESIZE_NESW_CURSORRESIZE_ALL_CURSORNOT_ALLOWED_CURSORANGLE_PLATFORM_TYPE_NONEANGLE_PLATFORM_TYPE_OPENGLANGLE_PLATFORM_TYPE_OPENGLESANGLE_PLATFORM_TYPE_D3D9ANGLE_PLATFORM_TYPE_D3D11ANGLE_PLATFORM_TYPE_VULKANANGLE_PLATFORM_TYPE_METALWAYLAND_PREFER_LIBDECORWAYLAND_DISABLE_LIBDECOR	CONNECTEDDISCONNECTEDJOYSTICK_HAT_BUTTONSANGLE_PLATFORM_TYPEPLATFORMCOCOA_CHDIR_RESOURCESCOCOA_MENUBARX11_XCB_VULKAN_SURFACEWAYLAND_LIBDECORANY_PLATFORMPLATFORM_WIN32PLATFORM_COCOAPLATFORM_WAYLANDPLATFORM_X11PLATFORM_NULLANY_POSITION	DONT_CAREUNLIMITED_MOUSE_BUTTONSr   r  r  	CFUNCTYPErF   rE  rZ  r~   r  r  r  r  r#  r(  r.  r2  r   r8  re  rS  rj  ro  rt  r[  r`  r  r  rl   r  r  r)   c_size_tr  r  r  r  r"  restypeargtypesr'  r-  r0  r   r1  r5  r8  r?  rA  rB  rC  rG  rV  rY  rX  r[  r`  rb  rf  rh  ri  rl  rr  rs  rw  ry  rz  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r,  r  r  r  r  r
  appendr  r  r  r  r  r  r  r  r  r  r  r"  r$  r%  r'  r)  r*  r-  r+  r/  r1  r3  r4  r7  r5  r9  r;  r<  r?  r@  rB  rD  rF  rG  rH  rJ  rL  rN  rP  rQ  rT  rU  rW  rX  rZ  r\  r]  r_  ra  rb  rd  rf  rg  ri  rk  rl  rn  rp  rq  rs  ru  rv  rx  r{  r~  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  c_uint64r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r#  r$  r(  r)  r/  r0  r2  r3  r5  r6  r8  r9  r<  r=  r?  r@  rC  rE  rH  rI  rK  rM  rO  rQ  rS  rT  rV  rW  rY  rZ  r\  r^  r`  rb  rd  re  rg  ri  rl  rm  rp  rq  rs  rt  rv  rw  ry  rz  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s3   &  '6
7       	  
  "=
<
== ::>>*+ H~HjjG A,J2 J1
	 %C% %  )&"" ))6## )-?6## -?`;4V%% ;4|)&"" )0?!! 0?f!4(( !4H  	
		
	
	6!X%8#			
	









	

























   
	


		
 										
















  	
	" " # $ 








               . ' ( ( *       .         " ! 
		
		$ 
 


	

  	

" "   " ! %  !   %  %     	

" "    " 	!   # "    !       % ' ) % & ' & $ % 	!   " #   	(  $18   !'!'2 $$T%+^^K%@%+\\%+\\3  %%d&,nn[&A&,ll&,ll4  &&t'-~~k'BD (()/)DF &&t'-~~k'B'-||5  (()/)D)/7   ))$*0..*E*0,,8  !**4+1>>++F+1<<+1<<9  $--d.4nn[.I.4nn.4nn>  &&t'-~~k'B'-||'-||'-||	5 
 $$T%+^^K%@%+__%+__6  &&t'-~~k'B'-||5  !!$"(.."="(//"(//3 t%~~k:%||%||%||%||-  &{ ; &. ""4#)>>,#?#)<<1  &{ ; & &v ?A ##D$*NN;$?$*MM$*LL2  ##D$*LL$*LL2  ##FOO&,oo&,oo7  %%foo&,oo&,oo&,oo7  %%d&,oo&,oo7 
	V%% 	    
 #   !     5.!!!%E#)<<%+\\#3E(  $   !'!=!'!=!'!=!?   A  &,__   "&(   #( 5.!!!'E#)>>&//#B"CE	0 d d8 ((;< &(?@%2   "'4o   #   2 3$( !'v~~l/K L   "(..">!?    '-nn\&B   #')   $) #'   $*NN<$@$*NN6<<$@$*NN6<<$@$B    . 5*+++/E  (-3^^L-I(.v||(D(.v||(D(.v||(D(.v||(D	-FE  )
. ,0     (-3^^L-I-3^^FLL-I-3^^FLL-I-K     )1 5.///3E$$,171M171O171O1QE$$-6 $*??    %+^^L%A$B   !- 5-..75B]3^3^$&!.2E##+06|0L060AE##,:0 /5ooE##+06|0L/ME##,8$  '6   $)8(9   %$$ #)..">   $*NN<$@$*NN6<<$@$B     "(!=   #)>>,#?"@    "   %~~l;%~~/   ' "(!?   #)>>,#?"@    "&   #)>>,#?#)>>.#A#C   	? (,   $(*   %#  $   !'!'!/   & 5()))-E&+1<<+1??+<E'< "(!<   #)<<#)<<#)??#)>>,#?#)>>+#>	#@   
2 #'   $*NN;$?#@    6  '-ll   #(.{(C'D   $/ *.   &+1>>++F+1<<+9   '2 $(    %+^^K%@%+__%6   !8 "&   #)>>+#>#)>>&,,#?#)>>&,,#?#A   . "&   #)>>+#>#)<<#)<<#1   / #'   $*NN;$?$*NN6<<$@$*NN6<<$@$B    1 #'   $*NN;$?$*LL$*LL$2    3 (,   $)/)D)/)E)/)E)G   %1 5-...2E##+06{0K06v~~0N06v~~0N0PE##,6 5()))/E&+1>>++F*GE'2 5()))-E&+1>>++F+1>>+;E'4 #'   $*NN;$?#@    $ #'   $*NN;$?#@    $  $   !'!< =   !  $   !'!< =   ! 5.///3E$$,171L0ME$$-1 &,^^L%A   "'-~~k'B&C   #. %+LL   !&,nn[&A&,ll&4   "5 5'(((,E%*0..*E*0,,*0,,*8E&9  " )-   &+1>>++F+1??+<   '4* *0   &+1>>++F*G   '2$ #%    = >):   &+1>>++F+<+>   '$, $&     > ?*<   ',2NN;,G,>,@   ($, %' !   ? @+>     (-3^^K-H-@-B     )$, ') #   A B-B " " */5~~k/J/D/F " " +$, %' !   ? @+>     (-3^^K-H-@-B     )$, ') #   A B-B " " */5~~k/J/D/F " " +$. 5122+-(!!"FG2HE''/{#4E''0(0 )+ %   C D/F $ $ ,171L1H1J $ $ -$. 556602-!!"KL6PE++3{#"8$E++4
(0  $    "     $    "    "(   #)>>+#>#)<<#1   0 "&   #)>>+#>#)<<#)<<#1   0 5/0006E%%-13E%%.8 "<<   #^^K8#\\+   ) $*<<    %+^^K%@%+\\%3   !4 "&   #)>>+#>#)>>&//#B#)>>&//#B#D   . "&   #)>>+#>#)??#)??#4   /     6 7#.    %+^^K%@%0%2   !$,     7 8$0   !&,nn[&A&2&4   "$, %' !   ? @+>     (-3^^K-H-@-B     )$, #%    = >):   &+1>>++F+<+>   '$, %' !   ? @+>     (-3^^K-H-@-B     )$, !    9 :&4   #(.{(C(6(8   $$, %+LL   !&,ll^   "* %+NN6>>$B   !&,ll&,nnV\\&B&D   "
% (.~~fnn'E   $)/)/)E)G   %
% 5'(((.v~~(FE%*0,,-3^^FLL-I*KE&
) %+OO   !&,ll^   "* 5'(((.E%*0,,E&6 5.//GEC_4`4`%'"/3E$$,17/51@E$$-=, 06E$$,17E$$-=  5)***0,,E',2LL>E(= 5'(((.E%*0,,*0..9J*K*ME&
& (,   $)/)D)/):   %	= (.   $)/)D(E   %	0 #OO       !   $oo.    (,   $)/)D(E   %) '-nn[&A   #')   $) !%   "(.."=!>   " "&   #)<<.   % (.||   $)/(9   %? $*??    %+__$5   !: 5'((')$!!"BC(4E%*0..*E*6*8E&(6 5+,,,.)!!"GH,<E!!).4nn[.I.>.@E!!*(. 5'(((.E%)+E&0 55666<nnV__6UE++38>v8W7XE++4 5%&&&,ooE#')E$. 5)***0//E'+-E(2 5+,,,<E!!).>-?E!!*(& 5-...4llE##+06/@E##,C 5&'''-E$)/E%
 5"###)??E %+\\6<<$@E!
 5&'''-||E$)/E%- 5$%%%+^^K%@E"'-~~j'A'-||'-||'5E#	K 5,---3^^K-HE""*/5||nE""+5 5%&&&*E#(.{(C'DE$( 5/"""&E$*NN;$?$*NN;$?$AE , 5+,,,2LLE!!).4oo.4nn[.I.4oo.4oo.?E!!*
S 5<===C\\E22:?E?E?E?PE22;	] 5.///5E$$,17171BE$$-D 5%&&&*E#(.{(C(.(.z(B(DE$8  5+,,,0E!!).4nn[.I.4llFLL.4llFLL.JE!!*; 5,---1E""*/5~~k/J/5||V\\/KE""+= 5*+++/E  (-3^^K-H-3^^FLL-I-3^^FLL-I-3^^FLL-I-3^^FLL-I	-KE  )
@$ 5&'''+E$)/)D(EE%) 5#$$$(E!&,nn[&A%BE"& 5()))-E&+1>>++F+1>>,+G+1<<+1<<+1<<+1<<+1<<+9E'	L 5)***.E',2OO+<E(- 5&'''+E$(*E%# 5'(((.E%*0..*F)GE&
 5'(((.E%*0..*F)GE&
 5&'''-E$)/)D(EE%0 5%&&&,ooE#(.{(C'DE$/ 5'(((.E%*0..*F)GE&2 5&'''-E$)/)D(EE%0 5&'''-E$)/)D(EE%0 5%&&&,ooE#')E$) 5%&&&,ooE#(.|(D'EE$0 5%&&&,ooE#(.|(D'EE$0 5$%%%+__E"'-~~k'B&CE#. 5-...2E##+06/@E##,7 5-...4ooE##+/1E##,
 5%&&&,ooE#(.{(C'DE$/ 5$%%%+__E"'-~~k'B&CE#. 5)***0//E'+-E(- 5)***0//E',2NN<,H+IE(4 5()))/E&+1>>++F*GE'2 5%&&&,ooE#')E$) 5%&&&,ooE#(.{(C'DE$/ 5%&&&,ooE#(.{(C'DE$/ 5,---3\\E""*/5~~k/JFNN[a[g[gLhjpjxjxy  zF  zF  kG  IO  IW  IW  X^  Xd  Xd  Ie  gm  gu  gu  v|  vE  vE  gF  /GE""+E* 5,---3\\E""*/5~~k/JFNN[a[g[gLhjpjxjxy  zF  zF  kG  IO  IW  IW  X^  Xd  Xd  Ie  gm  gu  gu  v|  vE  vE  gF  /GE""+N* 5()))/E&+1>>++F*GE'2 5%&&&*E#(.~(F'GE$/@ 5())",,V__foov_)-E&+@*AE'- 5#$$$*LLE!%'E"' 5)***0,,E',2LL>E(5 5&'''-E$)/)D(EE%
  [e  iiG  -,-s=   -Cs1 =Cs; 1Ct s1Cs8s;CttCtt	Ct!t Ct!