
    3j7              #          S r SSKJrJrJrJrJrJr  SSKJ	r	J
r
  SSKJr  SSKr\R                  r\R"                  r\R                  r\R(                  " SS5      rSrS	\R.                  \R0                  \R2                  SS
4S\R.                  \R4                  \R2                  SS
4S\R.                  \R6                  \R2                  SS
4S\R.                  \R8                  \R2                  SS
4S\R.                  \R:                  \R2                  SS
4S\R.                  \R<                  \R2                  SS
4S\R.                  \R>                  \R2                  SS
4S\R.                  \R@                  \R2                  SS
4S\RB                  \R<                  \RD                  SS4S\RF                  \R0                  \RH                  SS4S\RF                  \R4                  \RH                  SS4S\RF                  \R6                  \RH                  SS4S\RF                  \R:                  \RH                  SS4S\RF                  \R8                  \RH                  SS4S\RF                  \R<                  \RH                  SS4S\RJ                  \R0                  \RL                  SS4S\RJ                  \R4                  \RL                  SS4S\RJ                  \R6                  \RL                  SS4S\RJ                  \R<                  \RL                  SS4S\RJ                  \R8                  \RL                  SS4S \RN                  \R0                  \RP                  SS4S!\RN                  \R4                  \RP                  SS4S"\RN                  \R6                  \RP                  SS4S#\RN                  \R<                  \RP                  SS4S$\RN                  \R8                  \RP                  SS4S%\RR                  \R0                  \RT                  SS
4S&\RR                  \R4                  \RT                  SS
4S'\RR                  \R6                  \RT                  SS
4S(\RR                  \R6                  \RT                  SS
4S)\RR                  \R8                  \RT                  SS
4/r+S* r,\+ V s/ s H  n \," U 6 PM
     sn  H  u  r-r.\.\/" 5       \-'   M      C-C.\R                  " \RR                  5      Re                  S+\	Rf                  " S+S,5      5      Ri                  \	Rj                  " S+\RT                  5      5      Rm                  \Rn                  " S+5      5      r)\R                  " \RN                  5      Re                  S+\	Rf                  " S+S,5      5      Ri                  \	Rj                  " S+\RP                  5      5      Rm                  \Rn                  " S+5      5      r'\R                  " \RJ                  5      Re                  S+\	Rf                  " S+S,5      5      Ri                  \	Rj                  " S+\RL                  5      5      Rm                  \Rn                  " S+5      5      r%\R                  " \RF                  5      Re                  S+\	Rf                  " S+S,5      5      Ri                  \	Rj                  " S+\RH                  5      5      Rm                  \Rn                  " S+5      5      r#\R                  " \RB                  5      Re                  S+\	Rp                  " S+\
Rr                  5      5      Ri                  \	Rj                  " S+\RD                  5      5      Rm                  \Rn                  " S+5      5      r!\R                  " \R.                  5      Re                  S+\	Rf                  " S+S,5      5      Ri                  \	Rj                  " S+\R2                  5      5      Rm                  \Rn                  " S+5      5      r\R                  " \Rt                  5      Ri                  \	Rj                  " S+\5      5      Rm                  \Rn                  " S+5      5      r:\R                  " \Rv                  5      Re                  S-\	Rf                  " S-S,5      5      Rm                  \Rn                  " S-5      5      r;S. r<\R:                  S/4\R>                  S04\R@                  S144 H  u  r=r>\<" \=\>5      \/" 5       S2\/" 5       -  '   M!      C=C>C<S7S3 jr?S7S4 jr@S5 rAS6 rBgs  sn f ! \0 a  r1 Sr1C1GNZSr1C1ff = f! \0 a
  r1 Sr1C1N5Sr1C1ff = f)8a  Implementations for "held-pointers" of various types

This argument type is special because it is stored, that is, it
needs to be cached on our side so that the memory address does not
go out-of-scope

storedPointers = {}
def glVertexPointerd( array ):
    "Natural writing of glVertexPointerd using standard ctypes"
    arg2 = GL_DOUBLE
    arg3 = 0 # stride
    arg4 = arrays.asArray(array, GL_DOUBLE)
    arg1 = arrays.arraySize( arg4, 'd' )
    platform.PLATFORM.GL.glVertexPointer( arg1, arg2, arg3, arrays.ArrayDatatype.dataPointer(arg4) )
    # only store if we successfully set the value...
    storedPointers[ GL_VERTEX_ARRAY ] = arg4
    return arg4
    )platformerrorwrappercontextdata
convertersconstant)arrayhelpersarraydatatype)GL_1_1NGL_INTERLEAVED_ARRAY_POINTERir).glColorPointerglColorPointerbglColorPointerdglColorPointerfglColorPointeriglColorPointersglColorPointerubglColorPointeruiglColorPointerusglEdgeFlagPointerglEdgeFlagPointerbglIndexPointerglIndexPointerbglIndexPointerdglIndexPointerfglIndexPointeriglIndexPointersglIndexPointerubglNormalPointerglNormalPointerbglNormalPointerdglNormalPointerfglNormalPointeriglNormalPointersglTexCoordPointerglTexCoordPointerbglTexCoordPointerdglTexCoordPointerfglTexCoordPointeriglTexCoordPointersglVertexPointerglVertexPointerbglVertexPointerdglVertexPointerfglVertexPointeriglVertexPointersglDrawElementsglDrawElementsuiglDrawElementsubglDrawElementsusglFeedbackBufferglSelectBufferglRenderModeglGetPointervglInterleavedArraysr   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   c                    [         R                   " U5      nSUR                  ;   a  SnOSn[        USS5      (       a   S5       eU(       a:  [        R                  U   nUR                  U[        R                  " U5      5        O'UR                  U[        R                  " US5      5        UR                  U[        R                  " U5      5        SUR                  ;   a8  UR                  S5        UR                  S[        R                  " WU5      5        SUR                  ;   a#  UR                  S5        UR                  SU5        SUR                  ;   a#  UR                  S5        UR                  SS	5        UR                  [        R                  " Xs5      5        UR                  [         R                   " U5      5        X4$ )
z'Wrap the given pointer-setting functionptrpointerpyConvertersNzReusing wrappers?typesizestrider   )r   argNamesgetattrr
   GL_CONSTANT_TO_ARRAY_TYPEsetPyConverterr	   asArrayTypeAsArrayOfTypesetCConverterr   getPyArgsNamearraySizeOfFirstTypesetStoreValuesstorePointerTypesetReturnValuesreturnPyArgument)	namebaseFunctionglType	arrayType	startArgsdefaultSizefunctionpointer_namearrayModuleTypes	            L/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/GL/pointers.pywrapPointerFunctionr[   e   sv   oo|-H%%% .$88Q:QQ8'AA6K|/G/G/XZ|/I/I,W]/^`L**B*BL*RT""")(I(I/Ze(fh""")08$$$+!-\::LUWg66FH=    r?   rA   indicesc                    [         R                  U    n[        R                  " [        R                  5      R                  S5      R                  SU 5      R                  S5      R                  S[        R                  " SU5      5      R                  S[        R                  " SU5      5      R                  [        R                  " S5      5      nU$ )NrA   countr]   )r
   rF   r   _simpler1   rG   rJ   r	   AsArrayTypedSizeAsArrayTypedrO   rP   )rA   suffixrT   rW   s       rZ   glDrawElementsTypedrd      s    77?InV]]nWmm..	9Fn<,,iDo  )-  Or\   ubuiuszglDrawElements%(suffix)sc                     Uc   [         R                  R                  U 45      n[        R                  " X5        [
        R                  " [        R                  U5        U$ )0Create a selection buffer of the given size
    )r
   GLuintArrayzerosr`   r6   r   setValueGL_SELECTION_BUFFER_POINTER)rB   buffers     rZ   r6   r6      sJ     ~**004';D*'==vGMr\   c                     Uc   [         R                  R                  U 45      n[        R                  " XU5        [
        R                  " [        R                  U5        [
        R                  " SU5        U$ )ri   GL_FEEDBACK_BUFFER_TYPE)r
   GLfloatArrayrk   r`   r5   r   rl   GL_FEEDBACK_BUFFER_POINTER)rB   rA   rn   s      rZ   r5   r5      s]     ~++11D7<d&2'<<fF3T;Mr\   c                    SSK Jn  SSK JnJn  U" [        R
                  5      n US   nU[        R                  S4;   a  [        R                  " U 5      $ [        R                  " U 5      nUS:  a  U[        R                  :X  a%  [        R                  " [        R                  S5      eU[        R                  :X  a%  [        R                  " [        R                  S5      e[        R                  " [        R                  SU< S35      e[         R"                  " 5       nU(       d  [        R$                  " S	5      e[        R                  [        R&                  UR(                  4[        R                  [        R*                  UR,                  R.                  40U   u  p[0        R2                  " U5      n
U
c  [5        U5      n
U	(       a  U	" X5      n
U
$ ! [        [        [        4 a  n SnAGNSnAff = f)
zChange to the given rendering mode

If the current mode is GL_FEEDBACK or GL_SELECT, return
the current buffer appropriate to the mode
r   )glGetIntegerv)	selectionfeedbackNz2glSelectBuffer too small to hold selection resultsz4glFeedbackBuffer too small to hold selection resultszUnknown glRenderMode buffer (z%) too small to hold selection resultsz4Returning from glRenderMode without a valid context!)	OpenGL.GLrt   ru   rv   r`   GL_RENDER_MODE	TypeError
ValueError
IndexError	GL_RENDERr7   	GL_SELECTr   GLErrorGL_STACK_OVERFLOWGL_FEEDBACKr   GetCurrentContextErrorrr   parseFeedbackrm   GLSelectRecord	fromArrayr   getValuer8   )newModert   ru   rv   currentModeerrresultcontextarrayConstantwrapperFunctioncurrents              rZ   r7   r7      s    (-!7!79K!!n w((++##W..!!7,F z'+++--))D  G///--))F 
 --))  ((*GkkF
 	
 	g@@AWAWXG??AYAYAcAcd& &"M ""M3G0!74NY j, s   G G;6G;c                    [         R                  " 5       n[        R                  " U [         R                  " U5      5        [
        R                  " U 5      nUb/  [        R                  R                  U5      UR                  :X  a  U$ U$ )z"Retrieve a stored pointer constant)ctypesvoidpr`   r8   byrefr   r   r
   ArrayDatatypedataPointervalue)r   vpr   s      rZ   r8   r8   )  se     
B8V\\"%57""H.G&&22G=INIr\   )N)C__doc__OpenGLr   r   r   r   r   r   OpenGL.arraysr	   r
   OpenGL.raw.GL.VERSIONr   r`   r   c_intGLsizeic_uintGLenumGLintConstantr   __all__r   	GL_DOUBLEGL_COLOR_ARRAY_POINTERGL_FLOATGL_INTGL_SHORTGL_UNSIGNED_BYTEGL_BYTEGL_UNSIGNED_INTGL_UNSIGNED_SHORTr   GL_EDGE_FLAG_ARRAY_POINTERr   GL_INDEX_ARRAY_POINTERr   GL_NORMAL_ARRAY_POINTERr%   GL_TEXTURE_COORD_ARRAY_POINTERr+   GL_VERTEX_ARRAY_POINTERPOINTER_FUNCTION_DATAr[   rQ   rW   globals	NameErrorr   rG   rI   rM   rN   rO   rP   rb   GLushortArrayr9   r1   rd   rA   rc   r6   r5   r7   r8   )argss   0rZ   <module>r      s  $ O N 5 3 
,,	'002PRXZ B //1B1BGDbDbdeghi//1A1A7CaCacdfgh//A_A_abdef//1A1A7CaCacdfgh//1I1I7KiKiklnop//'B`B`bcefg//1H1H'JhJhjkmno//1J1JGLjLjlmopq744goowGiGiklnrs//1B1BGDbDbdegkl//1A1A7CaCacdfjk//A_A_abdhi//1I1I7KiKiklnrs//1A1A7CaCacdfjk//'B`B`bceij'1173D3DgFeFeghjno'1173C3CWEdEdfgimn'117>>7CbCbdegkl'117??GDcDcefhlm'1173C3CWEdEdfgimnG55w7H7H'JpJprsuvwG55w7G7GIoIoqrtuvG55w~~wGmGmoprstG55wHnHnpqstuG55w7G7GIoIoqrtuv00'2C2CWEdEdfgijk00'2B2BGDcDcefhij00'..'BaBacdfgh00'..'BaBacdfgh00'2B2BGDcDcefhijK& N> &% $ %MD GIdO	
	h //7#:#:<KK|))9f>.!!9g.M.MO/i)	  OOW%>%>@OO|))9f>.!!9g.T.TV/i)	  //7#:#:<KK|))9f>.!!9g.M.MO/i)	  '"8"8:II|))9f>.!!9g.L.LN/i)	  OOW%>%>@OO|(()]5P5PR .!!9g.P.PR/i)  '"8"8:II|))9f>.!!9g.L.LN/i)	  oow'B'BDSS!!9.JL/i)  '"8"8:II|))9f>/i)  --d3W5L5LT4RT[TmTmnrSstKD6I4PV6XGI(23 u	V'8vO  		Z  		s*   =d/$d4 e 4e eee