diff options
Diffstat (limited to 'imgui-1.92.1/backends/imgui_impl_glut.cpp')
| -rw-r--r-- | imgui-1.92.1/backends/imgui_impl_glut.cpp | 309 |
1 files changed, 0 insertions, 309 deletions
diff --git a/imgui-1.92.1/backends/imgui_impl_glut.cpp b/imgui-1.92.1/backends/imgui_impl_glut.cpp deleted file mode 100644 index a68f9db..0000000 --- a/imgui-1.92.1/backends/imgui_impl_glut.cpp +++ /dev/null @@ -1,309 +0,0 @@ -// 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 are obsolete since 1.87 and not supported since 1.91.5] -// Missing features or Issues: -// [ ] Platform: GLUT is unable to distinguish e.g. Backspace from CTRL+H or TAB from CTRL+I -// [ ] Platform: Missing horizontal mouse wheel support. -// [ ] 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. -// Learn about Dear ImGui: -// - FAQ https://dearimgui.com/faq -// - Getting Started https://dearimgui.com/getting-started -// - Documentation https://dearimgui.com/docs (same as your local docs/ folder). -// - Introduction, links and more at the top of imgui.cpp - -// CHANGELOG -// (minor and older changes stripped away, please see git history for details) -// 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-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" -#ifndef IMGUI_DISABLE -#include "imgui_impl_glut.h" -#define GL_SILENCE_DEPRECATION -#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 one 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(); - IMGUI_CHECKVERSION(); - -#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() -{ - ImGuiIO& io = ImGui::GetIO(); - io.BackendPlatformName = nullptr; -} - -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(); - 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); -} - -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); -} - -//----------------------------------------------------------------------------- - -#endif // #ifndef IMGUI_DISABLE |
