
    _e7              #          d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlZej                  Zej"                  Zej                  Z ej(                  dd      ZdZd	ej.                  ej0                  ej2                  dd
fdej.                  ej4                  ej2                  dd
fdej.                  ej6                  ej2                  dd
fdej.                  ej8                  ej2                  dd
fdej.                  ej:                  ej2                  dd
fdej.                  ej<                  ej2                  dd
fdej.                  ej>                  ej2                  dd
fdej.                  ej@                  ej2                  dd
fdejB                  ej<                  ejD                  ddfdejF                  ej0                  ejH                  ddfdejF                  ej4                  ejH                  ddfdejF                  ej6                  ejH                  ddfdejF                  ej:                  ejH                  ddfdejF                  ej8                  ejH                  ddfdejF                  ej<                  ejH                  ddfdejJ                  ej0                  ejL                  ddfdejJ                  ej4                  ejL                  ddfdejJ                  ej6                  ejL                  ddfdejJ                  ej<                  ejL                  ddfdejJ                  ej8                  ejL                  ddfd ejN                  ej0                  ejP                  ddfd!ejN                  ej4                  ejP                  ddfd"ejN                  ej6                  ejP                  ddfd#ejN                  ej<                  ejP                  ddfd$ejN                  ej8                  ejP                  ddfd%ejR                  ej0                  ejT                  dd
fd&ejR                  ej4                  ejT                  dd
fd'ejR                  ej6                  ejT                  dd
fd(ejR                  ej6                  ejT                  dd
fd)ejR                  ej8                  ejT                  dd
fgZ+d* Z,e+D  cg c]  }  e,|  	 c} D ]  \  Z-Z.e. e/       e-<    	 [-[. ej                  ejR                        je                  d+ e	jf                  d+d,            ji                   e	jj                  d+ejT                              jm                   ejn                  d+            Z) ej                  ejN                        je                  d+ e	jf                  d+d,            ji                   e	jj                  d+ejP                              jm                   ejn                  d+            Z' ej                  ejJ                        je                  d+ e	jf                  d+d,            ji                   e	jj                  d+ejL                              jm                   ejn                  d+            Z% ej                  ejF                        je                  d+ e	jf                  d+d,            ji                   e	jj                  d+ejH                              jm                   ejn                  d+            Z# ej                  ejB                        je                  d+ e	jp                  d+e
jr                              ji                   e	jj                  d+ejD                              jm                   ejn                  d+            Z! ej                  ej.                        je                  d+ e	jf                  d+d,            ji                   e	jj                  d+ej2                              jm                   ejn                  d+            Z ej                  ejt                        ji                   e	jj                  d+e            jm                   ejn                  d+            Z: ej                  ejv                        je                  d- e	jf                  d-d,            jm                   ejn                  d-            Z;d. Z<ej:                  d/fej>                  d0fej@                  d1ffD ]  \  Z=Z> e<e=e>       e/       d2 e/       z  <     	 [=[>[<d7d3Z?d7d4Z@d5 ZAd6 ZByc c} w # e0$ rZ1Y dZ1[1UdZ1[1ww xY w# e0$ r
Z1Y dZ1[11dZ1[1ww xY w)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                 n   t        j                   |      }d|j                  v rd}nd}t        |dd      rJ d       |r9t        j                  |   }|j                  |t        j                  |             n&|j                  |t        j                  |d             |j                  |t        j                  |             d|j                  v r7|j                  d       |j                  dt        j                  |             d|j                  v r#|j                  d       |j                  d|       d|j                  v r#|j                  d       |j                  dd	       |j                  t        j                  ||             |j                  t        j                   |             | |fS )
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	            4/usr/lib/python3/dist-packages/OpenGL/GL/pointers.pywrapPointerFunctionr[   e   sw   oo|-H%%% .$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                    t         j                  |    }t        j                  t        j                        j                  d      j                  d|       j                  d      j                  dt        j                  d|            j                  dt        j                  d|            j                  t        j                  d            }|S )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                     | t         j                  j                  | f      }t        j                  | |       t        j                  t        j                  |       |S )0Create a selection buffer of the given size
    )r
   GLuintArrayzerosr`   r6   r   setValueGL_SELECTION_BUFFER_POINTER)rB   buffers     rZ   r6   r6      sL     ~**004';D&*'==vGMr\   c                     | t         j                  j                  | f      }t        j                  | ||       t        j                  t        j                  |       t        j                  d|       |S )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<dD&2'<<fF3T;Mr\   c                    ddl m} ddl m}m}  |t        j
                        }	 |d   }|t        j                  dfv rt	        j                  |       S t	        j                  |       }|dk  r|t        j                  k(  r$t        j                  t        j                  d      |t        j                  k(  r$t        j                  t        j                  d      t        j                  t        j                  d|d      t!        j"                         }|dk(  rt        j$                  d	      t        j                  t        j&                  |j(                  ft        j                  t        j*                  |j,                  j.                  fi|   \  }}	t1        j2                  |      }
|
t5        |      }
|	r	 |	|
|      }
|
S # t        t        t        f$ r}Y d}~d}~ww xY w)
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!7F4NY j, s   G G&!G&c                 
   t        j                         }t        j                  | t        j                  |             t        j                  |       }|.t        j                  j                  |      |j                  k(  r|S |S )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 
,,	0x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>.!L!!9g.M.MO/Gi)	  $GOOW%>%>@OO)|))9f>.!L!!9g.T.TV/Gi)	  "'//7#:#:<KK)|))9f>.!L!!9g.M.MO/Gi)	  !'"8"8:II)|))9f>.!L!!9g.L.LN/Gi)	  $GOOW%>%>@OO(|(()]5P5PR .!L!!9g.P.PR/Gi)  !'"8"8:II)|))9f>.!L!!9g.L.LN/Gi)	  &goow'B'BDSS!L!!9.JL/Gi)  !'"8"8:II)|))9f>/Gi)  --d3W5L5LT4RT[TmTmnrSst YKD6I4PV6XGI(23Y	V'8vO  		Z  		s*   =d&d+ d> +d;6d;>ee