a
    i‚j  ã                   @   sz   d Z ddlmZ ddlmZ ddlmZ ddl	Z	e	j
Z
eejƒddd„ƒZeejƒddd	„ƒZeejƒddd„ƒZdZdS )z&glu[Un]Project[4] convenience wrappersé    )ÚGLU)ÚGL)ÚlazyNc              
   C   sœ   |du rt  t j¡}|du r(t  t j¡}|du r<t  t j¡}t d¡}t d¡}t d¡}	| |||||||||	ƒ	}
|
durŒ|
tjkrŒt	dƒ‚|j
|j
|	j
fS )z±Convenience wrapper for gluProject
    
    Automatically fills in the model, projection and viewing matrices
    if not provided.
    
    returns (winX,winY,winZ) doubles
    Nç        úProjection failed!)r   ÚglGetDoublevÚGL_MODELVIEW_MATRIXÚGL_PROJECTION_MATRIXÚglGetIntegervÚGL_VIEWPORTÚ_simpleÚGLdoubleZGLU_TRUEÚ
ValueErrorÚvalue)ÚbaseFunctionÚobjXÚobjYÚobjZÚmodelÚprojÚviewÚwinXÚwinYÚwinZÚresult© r   úS/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/GLU/projection.pyÚ
gluProject   s"    	


ýr   c                 C   s    |du rt  t j¡}|du r(t  t j¡}|du r<t  t j¡}t d¡}t d¡}t d¡}	| ||||||t 	|¡t 	|¡t 	|	¡ƒ	}
|
st
dƒ‚|j|j|	jfS ©z³Convenience wrapper for gluUnProject
    
    Automatically fills in the model, projection and viewing matrices
    if not provided.
    
    returns (objX,objY,objZ) doubles
    Nr   r   ©r   r   r   r	   r
   r   r   r   ÚctypesZbyrefr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   ÚgluUnProject%   s"    	


ýr!   r   ç      ð?c
                 C   s¶   |du rt  t j¡}|du r(t  t j¡}|du r<t  t j¡}t d¡}
t d¡}t d¡}t d¡}| ||||||t 	|
¡t 	|¡t 	|¡t 	|¡ƒ
}|s¢t
dƒ‚|
j|j|j|jfS r   r   )r   r   r   r   ZclipWr   r   r   ZnearZfarr   r   r   ZobjWr   r   r   r   ÚgluUnProject4?   s$    



 ýr#   )r   r!   r#   )NNN)NNN)NNNr   r"   )Ú__doc__Z
OpenGL.rawr   r   ZOpenGLr   ZOpenGL.lazywrapperr   Z_lazyr    ZPOINTERr   r!   r#   Ú__all__r   r   r   r   Ú<module>   s     ü 