2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// dear imgui: Platform Backend for GLUT/FreeGLUT
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This needs to be used along with a Renderer (e.g. OpenGL2)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// !!! GLUT/FreeGLUT IS OBSOLETE PREHISTORIC SOFTWARE. Using GLUT is not recommended unless you really miss the 90's. !!!
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// !!! If someone or something is teaching you GLUT today, you are being abused. Please show some resistance. !!!
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// !!! Nowadays, prefer using GLFW or SDL instead!
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Implemented features:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  [X] Platform: Partial keyboard support. Since 1.87 we are using the io.AddKeyEvent() function. Pass ImGuiKey values to all key functions e.g. ImGui::IsKeyPressed(ImGuiKey_Space). [Legacy GLUT values will also be supported unless IMGUI_DISABLE_OBSOLETE_KEYIO is set]
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Issues:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  [ ] Platform: GLUT is unable to distinguish e.g. Backspace from CTRL+H or TAB from CTRL+I
  
						 
					
						
							
								
									
										
										
										
											2023-06-08 01:29:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  [ ] Platform: Missing horizontal mouse wheel support.
  
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//  [ ] Platform: Missing mouse cursor shape/visibility support.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  [ ] Platform: Missing clipboard support (not supported by Glut).
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  [ ] Platform: Missing gamepad support.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Read online: https://github.com/ocornut/imgui/tree/master/docs
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// CHANGELOG
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (minor and older changes stripped away, please see git history for details)
  
						 
					
						
							
								
									
										
										
										
											2023-06-08 01:29:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  2023-04-17: BREAKING: Removed call to ImGui::NewFrame() from ImGui_ImplGLUT_NewFrame(). Needs to be called from the main application loop, like with every other backends.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2022-09-26: Inputs: Renamed ImGuiKey_ModXXX introduced in 1.87 to ImGuiMod_XXX (old names still supported).
  
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//  2022-01-26: Inputs: replaced short-lived io.AddKeyModsEvent() (added two weeks ago) with io.AddKeyEvent() using ImGuiKey_ModXXX flags. Sorry for the confusion.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2022-01-17: Inputs: calling new io.AddMousePosEvent(), io.AddMouseButtonEvent(), io.AddMouseWheelEvent() API (1.87+).
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2022-01-10: Inputs: calling new io.AddKeyEvent(), io.AddKeyModsEvent() + io.SetKeyEventNativeData() API (1.87+). Support for full ImGuiKey range.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2019-04-03: Misc: Renamed imgui_impl_freeglut.cpp/.h to imgui_impl_glut.cpp/.h.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2019-03-25: Misc: Made io.DeltaTime always above zero.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2018-11-30: Misc: Setting up io.BackendPlatformName so it can be displayed in the About Window.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  2018-03-22: Added GLUT Platform binding.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "imgui.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-08-30 01:42:51 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifndef IMGUI_DISABLE 
  
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "imgui_impl_glut.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-06-08 01:29:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define GL_SILENCE_DEPRECATION 
  
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef __APPLE__ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <GLUT/glut.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <GL/freeglut.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef _MSC_VER 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# pragma warning (disable: 4505)  // unreferenced local function has been removed (stb stuff)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  g_Time  =  0 ;           // Current time, in milliseconds
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Glut has 1 function for characters and one for "special keys". We map the characters in the 0..255 range and the keys above.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  ImGuiKey  ImGui_ImplGLUT_KeyToImGuiKey ( int  key )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    switch  ( key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' \t ' :                       return  ImGuiKey_Tab ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_LEFT :        return  ImGuiKey_LeftArrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_RIGHT :       return  ImGuiKey_RightArrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_UP :          return  ImGuiKey_UpArrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_DOWN :        return  ImGuiKey_DownArrow ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_PAGE_UP :     return  ImGuiKey_PageUp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_PAGE_DOWN :   return  ImGuiKey_PageDown ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_HOME :        return  ImGuiKey_Home ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_END :         return  ImGuiKey_End ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_INSERT :      return  ImGuiKey_Insert ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  127 :                        return  ImGuiKey_Delete ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  8 :                          return  ImGuiKey_Backspace ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  '   ' :                        return  ImGuiKey_Space ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  13 :                         return  ImGuiKey_Enter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  27 :                         return  ImGuiKey_Escape ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  39 :                         return  ImGuiKey_Apostrophe ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  44 :                         return  ImGuiKey_Comma ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  45 :                         return  ImGuiKey_Minus ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  46 :                         return  ImGuiKey_Period ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  47 :                         return  ImGuiKey_Slash ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  59 :                         return  ImGuiKey_Semicolon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  61 :                         return  ImGuiKey_Equal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  91 :                         return  ImGuiKey_LeftBracket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  92 :                         return  ImGuiKey_Backslash ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  93 :                         return  ImGuiKey_RightBracket ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  96 :                         return  ImGuiKey_GraveAccent ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_CapsLock;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_ScrollLock;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x006D :               return  ImGuiKey_NumLock ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_PrintScreen;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_Pause;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '0':                       return ImGuiKey_Keypad0;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '1':                       return ImGuiKey_Keypad1;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '2':                       return ImGuiKey_Keypad2;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '3':                       return ImGuiKey_Keypad3;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '4':                       return ImGuiKey_Keypad4;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '5':                       return ImGuiKey_Keypad5;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '6':                       return ImGuiKey_Keypad6;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '7':                       return ImGuiKey_Keypad7;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '8':                       return ImGuiKey_Keypad8;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case '9':                       return ImGuiKey_Keypad9;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 46:                        return ImGuiKey_KeypadDecimal;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 47:                        return ImGuiKey_KeypadDivide;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  42 :                         return  ImGuiKey_KeypadMultiply ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 45:                        return ImGuiKey_KeypadSubtract;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  43 :                         return  ImGuiKey_KeypadAdd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 13:                        return ImGuiKey_KeypadEnter;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_KeypadEqual;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x0072 :               return  ImGuiKey_LeftCtrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x0070 :               return  ImGuiKey_LeftShift ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x0074 :               return  ImGuiKey_LeftAlt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_LeftSuper;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x0073 :               return  ImGuiKey_RightCtrl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x0071 :               return  ImGuiKey_RightShift ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  0x0075 :               return  ImGuiKey_RightAlt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_RightSuper;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        //case 0:                         return ImGuiKey_Menu;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 0 ' :                        return  ImGuiKey_0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 1 ' :                        return  ImGuiKey_1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 2 ' :                        return  ImGuiKey_2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 3 ' :                        return  ImGuiKey_3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 4 ' :                        return  ImGuiKey_4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 5 ' :                        return  ImGuiKey_5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 6 ' :                        return  ImGuiKey_6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 7 ' :                        return  ImGuiKey_7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 8 ' :                        return  ImGuiKey_8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' 9 ' :                        return  ImGuiKey_9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' A ' :  case  ' a ' :              return  ImGuiKey_A ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' B ' :  case  ' b ' :              return  ImGuiKey_B ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' C ' :  case  ' c ' :              return  ImGuiKey_C ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' D ' :  case  ' d ' :              return  ImGuiKey_D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' E ' :  case  ' e ' :              return  ImGuiKey_E ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' F ' :  case  ' f ' :              return  ImGuiKey_F ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' G ' :  case  ' g ' :              return  ImGuiKey_G ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' H ' :  case  ' h ' :              return  ImGuiKey_H ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' I ' :  case  ' i ' :              return  ImGuiKey_I ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' J ' :  case  ' j ' :              return  ImGuiKey_J ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' K ' :  case  ' k ' :              return  ImGuiKey_K ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' L ' :  case  ' l ' :              return  ImGuiKey_L ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' M ' :  case  ' m ' :              return  ImGuiKey_M ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' N ' :  case  ' n ' :              return  ImGuiKey_N ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' O ' :  case  ' o ' :              return  ImGuiKey_O ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' P ' :  case  ' p ' :              return  ImGuiKey_P ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' Q ' :  case  ' q ' :              return  ImGuiKey_Q ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' R ' :  case  ' r ' :              return  ImGuiKey_R ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' S ' :  case  ' s ' :              return  ImGuiKey_S ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' T ' :  case  ' t ' :              return  ImGuiKey_T ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' U ' :  case  ' u ' :              return  ImGuiKey_U ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' V ' :  case  ' v ' :              return  ImGuiKey_V ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' W ' :  case  ' w ' :              return  ImGuiKey_W ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' X ' :  case  ' x ' :              return  ImGuiKey_X ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' Y ' :  case  ' y ' :              return  ImGuiKey_Y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  ' Z ' :  case  ' z ' :              return  ImGuiKey_Z ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F1 :          return  ImGuiKey_F1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F2 :          return  ImGuiKey_F2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F3 :          return  ImGuiKey_F3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F4 :          return  ImGuiKey_F4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F5 :          return  ImGuiKey_F5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F6 :          return  ImGuiKey_F6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F7 :          return  ImGuiKey_F7 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F8 :          return  ImGuiKey_F8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F9 :          return  ImGuiKey_F9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F10 :         return  ImGuiKey_F10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F11 :         return  ImGuiKey_F11 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  256  +  GLUT_KEY_F12 :         return  ImGuiKey_F12 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        default :                         return  ImGuiKey_None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  ImGui_ImplGLUT_Init ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef FREEGLUT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . BackendPlatformName  =  " imgui_impl_glut (freeglut) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . BackendPlatformName  =  " imgui_impl_glut " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    g_Time  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_InstallFuncs ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutReshapeFunc ( ImGui_ImplGLUT_ReshapeFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutMotionFunc ( ImGui_ImplGLUT_MotionFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutPassiveMotionFunc ( ImGui_ImplGLUT_MotionFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutMouseFunc ( ImGui_ImplGLUT_MouseFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __FREEGLUT_EXT_H__ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutMouseWheelFunc ( ImGui_ImplGLUT_MouseWheelFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutKeyboardFunc ( ImGui_ImplGLUT_KeyboardFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutKeyboardUpFunc ( ImGui_ImplGLUT_KeyboardUpFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutSpecialFunc ( ImGui_ImplGLUT_SpecialFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    glutSpecialUpFunc ( ImGui_ImplGLUT_SpecialUpFunc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_Shutdown ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2023-06-08 01:29:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . BackendPlatformName  =  nullptr ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_NewFrame ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Setup time step
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  current_time  =  glutGet ( GLUT_ELAPSED_TIME ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  delta_time_ms  =  ( current_time  -  g_Time ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( delta_time_ms  < =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        delta_time_ms  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . DeltaTime  =  delta_time_ms  /  1000.0f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    g_Time  =  current_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  ImGui_ImplGLUT_UpdateKeyModifiers ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  glut_key_mods  =  glutGetModifiers ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 01:29:16 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    io . AddKeyEvent ( ImGuiMod_Ctrl ,  ( glut_key_mods  &  GLUT_ACTIVE_CTRL )  ! =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . AddKeyEvent ( ImGuiMod_Shift ,  ( glut_key_mods  &  GLUT_ACTIVE_SHIFT )  ! =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . AddKeyEvent ( ImGuiMod_Alt ,  ( glut_key_mods  &  GLUT_ACTIVE_ALT )  ! =  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 16:23:10 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  ImGui_ImplGLUT_AddKeyEvent ( ImGuiKey  key ,  bool  down ,  int  native_keycode )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . AddKeyEvent ( key ,  down ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . SetKeyEventNativeData ( key ,  native_keycode ,  - 1 ) ;  // To support legacy indexing (<1.87 user code)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_KeyboardFunc ( unsigned  char  c ,  int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Send character to imgui
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //printf("char_down_func %d '%c'\n", c, c);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( c  > =  32 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        io . AddInputCharacter ( ( unsigned  int ) c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiKey  key  =  ImGui_ImplGLUT_KeyToImGuiKey ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_AddKeyEvent ( key ,  true ,  c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_UpdateKeyModifiers ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( void ) x ;  ( void ) y ;  // Unused
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_KeyboardUpFunc ( unsigned  char  c ,  int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //printf("char_up_func %d '%c'\n", c, c);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiKey  key  =  ImGui_ImplGLUT_KeyToImGuiKey ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_AddKeyEvent ( key ,  false ,  c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_UpdateKeyModifiers ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( void ) x ;  ( void ) y ;  // Unused
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_SpecialFunc ( int  key ,  int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //printf("key_down_func %d\n", key);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiKey  imgui_key  =  ImGui_ImplGLUT_KeyToImGuiKey ( key  +  256 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_AddKeyEvent ( imgui_key ,  true ,  key  +  256 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_UpdateKeyModifiers ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( void ) x ;  ( void ) y ;  // Unused
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_SpecialUpFunc ( int  key ,  int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //printf("key_up_func %d\n", key);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiKey  imgui_key  =  ImGui_ImplGLUT_KeyToImGuiKey ( key  +  256 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_AddKeyEvent ( imgui_key ,  false ,  key  +  256 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui_ImplGLUT_UpdateKeyModifiers ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( void ) x ;  ( void ) y ;  // Unused
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_MouseFunc ( int  glut_button ,  int  state ,  int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . AddMousePosEvent ( ( float ) x ,  ( float ) y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  button  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( glut_button  = =  GLUT_LEFT_BUTTON )  button  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( glut_button  = =  GLUT_RIGHT_BUTTON )  button  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( glut_button  = =  GLUT_MIDDLE_BUTTON )  button  =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( button  ! =  - 1  & &  ( state  = =  GLUT_DOWN  | |  state  = =  GLUT_UP ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        io . AddMouseButtonEvent ( button ,  state  = =  GLUT_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __FREEGLUT_EXT_H__ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_MouseWheelFunc ( int  button ,  int  dir ,  int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . AddMousePosEvent ( ( float ) x ,  ( float ) y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( dir  ! =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        io . AddMouseWheelEvent ( 0.0f ,  dir  >  0  ?  1.0f  :  - 1.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( void ) button ;  // Unused
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_ReshapeFunc ( int  w ,  int  h )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . DisplaySize  =  ImVec2 ( ( float ) w ,  ( float ) h ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ImGui_ImplGLUT_MotionFunc ( int  x ,  int  y )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGuiIO &  io  =  ImGui : : GetIO ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    io . AddMousePosEvent ( ( float ) x ,  ( float ) y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-08-30 01:42:51 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//-----------------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // #ifndef IMGUI_DISABLE