
    3j%                        S r SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
JrJr  SSKJr  \R                  rSSKJr  SS	Kr " S
 S\	R$                  \R&                  5      rS	=rr\" \R.                  R1                  5        V Vs/ s H.  u  pU \" S\S	\R3                  \5      \R4                  U/SSS94PM0     snn 5      \l         CCS rS rSS jr \" \" S\\R2                  " \5      SS95      S 5       r!\" \RD                  5      SS j5       r"\R                  " \R@                  5      RG                  SS5      r$Sr%g	s  snn f ! \ a
  r S	rCNS	rCff = f)zBWrapper/Implementation of the GLU tessellator objects for PyOpenGL    )GLU)GL_1_1)createBaseFunction)	glustruct)arrayswrapper)PLATFORM)lazyNc                      \ rS rSrSr\R                  " \R                  5      r\	R                  \" S\	R                  5      \	R                  \" S\	R                  \R                  5      \	R                  \" S\	R                   5      \	R"                  \" S\	R                   \R                  5      \	R$                  \" S\R                  5      \	R&                  \" S\R                  \R                  5      \	R(                  \" S5      \	R*                  \" S\R                  5      \	R,                  \" S\R.                  " \	R0                  5      \R.                  " \R                  5      \R.                  " \	R2                  5      \R.                  " \R                  5      5      \	R4                  \" S\R.                  " \	R0                  5      \R.                  " \R                  5      \R.                  " \	R2                  5      \R.                  " \R                  5      \R                  5      \	R6                  \" S\	R                  5      \	R8                  \" S\	R                  \R                  5      \	R:                  \" S\	R                  5      0r\	R                  S\	R"                  S\	R$                  S\	R&                  S\	R*                  S\	R,                  S\	R4                  S\	R8                  S0rSS jr S r!S	 r"S
 r#S r$S r%Sr&g)GLUtesselator   zCImplementation class for GLUTessellator structures in OpenGL-ctypesNdataWrappervertexWrappercombineWrapperc                    [        U SS5      nUc  / U l        U R                  n[        R                  R	                  U[
        R                  5      n[        R                  R                  U5      S:w  a  [        SU< 35      eU R                  U5      n[        R                  " U5      nU R                  R                  U5        [        XU5      $ )z?Add a vertex to this tessellator, storing data for later lookupvertexCacheN   z+Require 3 doubles for array location, got: )getattrr   r   GLdoubleArrayasArrayr   	GL_DOUBLE	arraySize
ValueError
noteObjectctypesc_void_pappendgluTessVertexBase)selflocationdatar   oorValuevps         I/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/GLU/tess.pygluTessVertexGLUtesselator.gluTessVertexB   s    dM48!D**K''//&:J:JK))(3q8GOQ  ??4(__X&) 44    c                 v    [         R                  " U [        R                  " U R	                  U5      5      5      $ )z7Note the object pointer to return it as a Python object)_simplegluTessBeginPolygonr   r   r   )r   r!   s     r$   r*   !GLUtesselator.gluTessBeginPolygonR   s(    **4QUAV1WXXr'   c                 ^   ^ ^ Tb   [        TS5      (       d  [        ST< 35      eUU 4S jnU$ )a  Wrap a Python function with ctypes-compatible wrapper for combine callback

For a Python combine callback, the signature looks like this:
    def combine(
        GLdouble coords[3],
        void *vertex_data[4],
        GLfloat weight[4]
    ):
        return data
While the C signature looks like this:
    void combine(
        GLdouble coords[3],
        void *vertex_data[4],
        GLfloat weight[4],
        void **outData
    )
__call__#Require a callable callback, got:  c                 `  > TR                  U S[        R                  5      n TR                  US[        R                  5      n[	        S5       Vs/ s H  nTR                  X   5      PM     nn[        U Vs/ s H  nTR                  U5      PM     sn5      n T
" XU/UQ76 n[        R                  " TR                  U5      5      n	U(       a  XS	'   g[        S
5      es  snf s  snf ! [         a7  nUR                  ST
< SU < SU< SU< SU< S[        U5      < 35      eSnAff = f)z(The run-time wrapper around the functionr      z Failure during combine callback z with args( ,z,*z):
Nr   zNull outData passed to callback)
ptrAsArrayr   r   GLfloatArrayrangeoriginalObjecttuple	Exception	__class__strr   r   r   RuntimeError)coordsvertex_dataweightoutDataargsixresulterroutPfunctionr   s             r$   wrap*GLUtesselator.combineWrapper.<locals>.wrapk   s   __VQ0D0DEF__VQ0C0CDFHMaQ14..{~>KQ$?$Q$--a0$?@D!&vEE ??4??6#:;D!
  ##DEE) R?  mm !#C
 
s$   C"9C'
C, ,
D-62D((D-hasattr	TypeErrorr   rE   rF   s   `` r$   r   GLUtesselator.combineWrapperV   s1    $  78Z+H+H8UVV	8 r'   c                 ^   ^ ^ Tb   [        TS5      (       d  [        ST< 35      eUU 4S jnU$ )z?Wrap a function which only has the one data-pointer as last argr-   r.   c                     > U SS TR                  U S   5      4-   n  T" U 6 $ ! [         a  nU=R                  TU 4-  sl        e SnAff = f)0Just return the original object for polygon_dataNr5   r7   r?   r?   rC   rE   r   s     r$   rF   'GLUtesselator.dataWrapper.<locals>.wrap   sZ    9 3 3DH =??D& Xt,,s   # 
A
AA
rH   rK   s   `` r$   r   GLUtesselator.dataWrapper   s/     78Z+H+H8UVV	 r'   c                 ^   ^ ^ Tb   [        TS5      (       d  [        ST< 35      eUU 4S jnU$ )z8Wrap a function which has two data-pointers as last argsr-   r.   c                     > U SS TR                  U S   5      TR                  U S   5      4-   n  T" U 6 $ ! [         a  nU=R                  TU 4-  sl        e SnAff = f)rO   NrP   rQ   rR   s     r$   rF   (GLUtesselator.dataWrapper2.<locals>.wrap   sq    9##DH-##DH-  D& Xt,,s   6 
A AArH   rK   s   `` r$   dataWrapper2GLUtesselator.dataWrapper2   s/     78Z+H+H8UVV
	 r'   c                 b   ^ ^ Tb   [        TS5      (       d  [        ST< 35      eSUU 4S jjnU$ )z;Converts a vertex-pointer into an OOR vertex for processingr-   r.   c                    > TR                  U 5      n  Ub  TR                  U5      nT" X5      $ T" U 5      $ ! [         a  nU=R                  TX44-  sl        e SnAff = f)rO   NrQ   )vertexr!   rC   rE   r   s      r$   rF   )GLUtesselator.vertexWrapper.<locals>.wrap   sl    ((0F#..t4D#F11#F++ X~66s   8 8 
A AA NrH   rK   s   `` r$   r   GLUtesselator.vertexWrapper   s4     78Z+H+H8UVV	 	 r'   )r   r_   )'__name__
__module____qualname____firstlineno____doc__r	   functionTypeForr   FUNCTION_TYPEr)   GLU_TESS_BEGINGLenumGLU_TESS_BEGIN_DATAr   r   GLU_TESS_EDGE_FLAG	GLbooleanGLU_TESS_EDGE_FLAG_DATAGLU_TESS_VERTEXGLU_TESS_VERTEX_DATAGLU_TESS_ENDGLU_TESS_END_DATAGLU_TESS_COMBINEPOINTERGLdoubleGLfloatGLU_TESS_COMBINE_DATAGLU_TESS_ERRORGLU_TESS_ERROR_DATA	GLU_ERRORCALLBACK_TYPESWRAPPER_METHODSr%   r*   r   r   rY   r   __static_attributes__ r'   r$   r   r      sx   M,,X\\:M 	dGNN C##]'..&//&
 	""M$8I8I$J'''##V__*
 	tV__!E$$m&//6??'
 	mD1!!=v#G  -NN7++,NN6??+NN7??+NN6??+#
 	%%}NN7++,NN6??+NN7??+NN6??+OO(
 	dGNN C##]'..&//&
 	=w~~>G$NL 	##]''$$o!!=  "2%%'7##]	O5 Y1f &r'   r   gluTessCallbackzagluTessCallback( POINTER(GLUtesselator)(tess), GLenum(which), _GLUfuncptr(CallBackFunc) ) -> None)tesswhichCallBackFunc)dll
resultTypeargTypesdocargNamesc                 $    U R                  X5      $ )z=Set a given gluTessellator callback for the given tessellator)addCallback)r   r   rE   s      r$   r~   r~      s    E,,r'   c                 $    U R                  U5      $ )z.Start definition of polygon in the tessellator)r*   )r   r!   s     r$   r*   r*      s    ##D))r'   c                 $    U R                  X5      $ )z1Add a vertex to the tessellator's current polygon)r%   )r   r    r!   s      r$   r%   r%      s    h--r'   
gluNewTessz(gluNewTess(  ) -> POINTER(GLUtesselator))r   r   r   c                     U " 5       S   $ )z?Get a new tessellator object (just unpacks the pointer for you)r   r}   )baseFunctions    r$   r   r      s     >!r'   c                 p    Uc+  [         R                  " S5      nU " XU5        UR                  $ U " XU5      $ )z1Retrieve single double for a tessellator propertyg        )r)   rt   value)r   r   r   r!   s       r$   gluGetTessPropertyr      s:     |$T$'zzD..r'   r    r   )r   r   r*   r~   r%   r_   )&re   
OpenGL.rawr   r)   OpenGL.raw.GL.VERSIONr   OpenGL.platformr   
OpenGL.GLUr   OpenGLr   r   r	   OpenGL.lazywrapperr
   _lazyr   	GLUStructr   cfuncTypedictrz   itemsrs   ri   CALLBACK_FUNCTION_REGISTRARS	NameErrorrC   r~   r*   r%   r   r   setInputArraySizer   __all__)r   r   s   00r$   <module>r      s~   H % ( .   " $ll , pI'')>)> pf  H-1 +99??A BMQ ! ..7Rw:
	
 B. * 		8
-
*
. >>-06	
 w!!"/ #/ OOG$9$9:LL 
E"  		s   5E 
E EE