U
    puf                  
   @   sd  d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z dZejejB ejB ZdZejdkrzejdejdg ddd	ZW n, ek
r Z zed
eW 5 dZ[X Y nX eZnejrejZned
dd Zdd Zdd Zdd Zeej ee eej re ej!ej" e#d e$dd e%  e&e e'e e(e dd Z)dS )z8GLUT Input hook for interactive use with prompt_toolkit
    N)default_timer<   darwinglutCheckLoopzglutCheckLoop(  ) -> None )dllZ
resultTypeZargTypesdocZargNamesz[Your glut implementation does not allow interactive sessions. Consider installing freeglut.c                   C   s   d S Nr   r   r   r   G/tmp/pip-unpacked-wheel-bxwx4lqe/IPython/terminal/pt_inputhooks/glut.pyglut_display<   s    r   c                   C   s   d S r	   r   r   r   r   r
   	glut_idle@   s    r   c                   C   s   t   t  d S r	   )glutglutHideWindowglutMainLoopEventr   r   r   r
   
glut_closeD   s    r   c                 C   s   t  t jt j td d S )Nz
KeyboardInterrupt)signalSIGINTdefault_int_handlerprint)signumframer   r   r
   glut_int_handlerI   s    r   s   ipython   c                 C   s   t  t jt zxt }t dkr8td t  W dS |  st  t | }|dkrdt	
d q8|dkrxt	
d q8t	
d q8W n tk
r   Y nX dS )	aE  Run the pyglet event loop by processing pending events only.

    This keeps processing pending events until stdin is ready.  After
    processing all pending events, a call to time.sleep is inserted.  This is
    needed, otherwise, CPU usage is at 100%.  This sleep time should be tuned
    though for best performance.
    r   r   g      $@g      ?g?g?gMbP?N)r   r   r   clockr   ZglutGetWindowZglutSetWindowr   Zinput_is_readytimesleepKeyboardInterrupt)contexttZ	used_timer   r   r
   	inputhook^   s"    

r   )*__doc__sysr   r   ZOpenGL.GLUTZGLUTr   ZOpenGL.platformplatformZtimeitr   r   Zglut_fpsZGLUT_DOUBLEZ	GLUT_RGBAZ
GLUT_DEPTHZglut_display_moder   ZcreateBaseFunctionr   AttributeErroreRuntimeErrorZHAVE_FREEGLUTr   r   r   r   ZglutInitargvZglutInitDisplayModeboolZglutSetOptionZGLUT_ACTION_ON_WINDOW_CLOSEZ GLUT_ACTION_GLUTMAINLOOP_RETURNSZglutCreateWindowZglutReshapeWindowr   ZglutWMCloseFuncZglutDisplayFuncZglutIdleFuncr   r   r   r   r
   <module>   sh   
  





