mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Merge branch 'master' into viewport
# Conflicts: # examples/imgui_impl_dx9.cpp # examples/imgui_impl_opengl2.cpp # examples/imgui_impl_opengl3.cpp # examples/imgui_impl_vulkan.cpp
This commit is contained in:
		| @@ -45,6 +45,7 @@ Other Changes: | ||||
|   erroneously wrapped the value to one of the min/max edge. (#2024, #708, #320, #2075). | ||||
| - DragFloat: Disabled using power curve when one edge is FLT_MAX (broken in 1.61). (#2024) | ||||
| - DragFloat: Disabled setting a default drag speed when one edge is FLT_MAX. (#2024) | ||||
| - BeginMenu(): Fixed menu popup horizontal offset being off the item in the menu bar when WindowPadding=0.0f. | ||||
|    | ||||
|  | ||||
| ----------------------------------------------------------------------- | ||||
|   | ||||
| @@ -45,7 +45,7 @@ You can find binaries of some of those example applications at: | ||||
|  - Dear ImGui has 0 to 1 frame of lag for most behaviors, at 60 FPS your experience should be pleasant. | ||||
|    However, consider that OS mouse cursors are typically drawn through a specific hardware accelerated path | ||||
|    and will feel smoother than common GPU rendered contents (including Dear ImGui windows).  | ||||
|    You may experiment with the io.MouseDrawCursor flag to request ImGui to draw a mouse cursor itself,  | ||||
|    You may experiment with the io.MouseDrawCursor flag to request Dear ImGui to draw a mouse cursor itself,  | ||||
|    to visualize the lag between a hardware cursor and a software cursor. However, rendering a mouse cursor | ||||
|    at 60 FPS will feel slow. It might be beneficial to the user experience to switch to a software rendered | ||||
|    cursor only when an interactive drag is in progress.  | ||||
| @@ -186,7 +186,7 @@ example_glfw_opengl2/ | ||||
|     **DO NOT USE OPENGL2 CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** | ||||
|     **Prefer using OPENGL3 code (with gl3w/glew/glad, you can replace the OpenGL function loader)** | ||||
|     GLFW + OpenGL2 example (legacy, fixed pipeline). | ||||
|     This code is mostly provided as a reference to learn about ImGui integration, because it is shorter. | ||||
|     This code is mostly provided as a reference to learn about Dear ImGui integration, because it is shorter. | ||||
|     If your code is using GL3+ context or any semi modern OpenGL calls, using this renderer is likely to | ||||
|     make things more complicated, will require your code to reset many OpenGL attributes to their initial | ||||
|     state, and might confuse your GPU driver. One star, not recommended. | ||||
| @@ -207,7 +207,7 @@ example_sdl_opengl2/ | ||||
|     **DO NOT USE OPENGL2 CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** | ||||
|     **Prefer using OPENGL3 code (with gl3w/glew/glad, you can replace the OpenGL function loader)** | ||||
|     SDL2 (Win32, Mac, Linux etc.) + OpenGL example (legacy, fixed pipeline). | ||||
|     This code is mostly provided as a reference to learn about ImGui integration, because it is shorter. | ||||
|     This code is mostly provided as a reference to learn about Dear ImGui integration, because it is shorter. | ||||
|     If your code is using GL3+ context or any semi modern OpenGL calls, using this renderer is likely to | ||||
|     make things more complicated, will require your code to reset many OpenGL attributes to their initial | ||||
|     state, and might confuse your GPU driver. One star, not recommended.  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for Allegro 5 | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for Allegro 5 | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include <allegro5/allegro.h> | ||||
|   | ||||
| @@ -45,9 +45,9 @@ | ||||
|      | ||||
|     // If we want to receive key events, we either need to be in the responder chain of the key view, | ||||
|     // or else we can install a local monitor. The consequence of this heavy-handed approach is that | ||||
|     // we receive events for all controls, not just ImGui widgets. If we had native controls in our | ||||
|     // window, we'd want to be much more careful than just ingesting the complete event stream, though | ||||
|     // we do make an effort to be good citizens by passing along events when ImGui doesn't want to capture. | ||||
|     // we receive events for all controls, not just Dear ImGui widgets. If we had native controls in our | ||||
|     // window, we'd want to be much more careful than just ingesting the complete event stream, though we | ||||
|     // do make an effort to be good citizens by passing along events when Dear ImGui doesn't want to capture. | ||||
|     NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel; | ||||
|     [NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) { | ||||
|         BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view); | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for OSX + OpenGL2, using legacy fixed pipeline | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for OSX + OpenGL2, using legacy fixed pipeline | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "../imgui_impl_osx.h" | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for FreeGLUT + OpenGL2, using legacy fixed pipeline | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for FreeGLUT + OpenGL2, using legacy fixed pipeline | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // (Using GLUT or FreeGLUT is not recommended unless you really miss the 90's) | ||||
|  | ||||
| #include "imgui.h" | ||||
| @@ -57,7 +57,7 @@ void my_display_code() | ||||
|  | ||||
| void glut_display_func() | ||||
| { | ||||
|     // Start the ImGui frame | ||||
|     // Start the Dear ImGui frame | ||||
|     ImGui_ImplOpenGL2_NewFrame(); | ||||
|     ImGui_ImplFreeGLUT_NewFrame(); | ||||
|  | ||||
| @@ -95,7 +95,7 @@ int main(int argc, char** argv) | ||||
|     // otherwise it is possible to install our own functions and call the imgui_impl_freeglut.h functions ourselves. | ||||
|     glutDisplayFunc(glut_display_func); | ||||
|  | ||||
|     // Setup ImGui binding | ||||
|     // Setup Dear ImGui binding | ||||
|     ImGui::CreateContext(); | ||||
|     ImGuiIO& io = ImGui::GetIO(); (void)io; | ||||
|     //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;  // Enable Keyboard Controls | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for GLFW + OpenGL2, using legacy fixed pipeline | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for GLFW + OpenGL2, using legacy fixed pipeline | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // (GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||
|  | ||||
| // **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for GLFW + OpenGL 3, using programmable pipeline | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for GLFW + OpenGL 3, using programmable pipeline | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // (GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||
|  | ||||
| #include "imgui.h" | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for Glfw + Vulkan | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for Glfw + Vulkan | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_glfw.h" | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| // ImGui - standalone example application for Marmalade | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for Marmalade | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| // Copyright (C) 2015 by Giovanni Zito | ||||
| // This file is part of ImGui | ||||
| // This file is part of Dear ImGui | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_marmalade.h" | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui - null/dummy example application (compile and link imgui with no inputs, no outputs) | ||||
| // dear imgui: null/dummy example application (compile and link imgui with no inputs, no outputs) | ||||
| #include "imgui.h" | ||||
| #include <stdio.h> | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for SDL2 + OpenGL | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for SDL2 + OpenGL | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // (SDL is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||
|  | ||||
| // **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for SDL2 + OpenGL | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for SDL2 + OpenGL | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // (SDL is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||
| // (GL3W is a helper library to access OpenGL functions since there is no standard header to access modern OpenGL functions easily. Alternatives are GLEW, Glad, etc.) | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for SDL2 + Vulkan | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for SDL2 + Vulkan | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_sdl.h" | ||||
| @@ -332,7 +332,7 @@ int main(int, char**) | ||||
|     ImGui_ImplVulkanH_WindowData* wd = &g_WindowData; | ||||
|     SetupVulkanWindowData(wd, surface, w, h); | ||||
|  | ||||
|     // Setup ImGui binding | ||||
|     // Setup Dear ImGui binding | ||||
|     ImGui::CreateContext(); | ||||
|     ImGuiIO& io = ImGui::GetIO(); (void)io; | ||||
|     io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for DirectX 10 | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for DirectX 10 | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_win32.h" | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for DirectX 11 | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui - standalone example application for DirectX 11 | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_win32.h" | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for DirectX 12 | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for DirectX 12 | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // FIXME: 64-bit only for now! (Because sizeof(ImTextureId) == sizeof(void*)) | ||||
|  | ||||
| #include "imgui.h" | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui - standalone example application for DirectX 9 | ||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
| // dear imgui: standalone example application for DirectX 9 | ||||
| // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_dx9.h" | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer + Platform Binding for: Allegro 5 | ||||
| // dear imgui: Renderer + Platform Binding for Allegro 5 | ||||
| // (Info: Allegro 5 is a cross-platform general purpose library for handling windows, inputs, graphics, etc.) | ||||
|  | ||||
| // Implemented features: | ||||
| @@ -74,7 +74,7 @@ void ImGui_ImplAllegro5_RenderDrawData(ImDrawData* draw_data) | ||||
|     al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); | ||||
|  | ||||
|     // Setup orthographic projection matrix | ||||
|     // Our visible imgui space lies from draw_data->DisplayPps (top left) to draw_data->DisplayPos+data_data->DisplaySize (bottom right). | ||||
|     // Our visible imgui space lies from draw_data->DisplayPos (top left) to draw_data->DisplayPos+data_data->DisplaySize (bottom right). | ||||
|     { | ||||
|         float L = draw_data->DisplayPos.x; | ||||
|         float R = draw_data->DisplayPos.x + draw_data->DisplaySize.x; | ||||
| @@ -108,7 +108,7 @@ void ImGui_ImplAllegro5_RenderDrawData(ImDrawData* draw_data) | ||||
|         const int* indices = NULL; | ||||
|         if (sizeof(ImDrawIdx) == 2) | ||||
|         { | ||||
|             // FIXME-OPT: Unfortunately Allegro doesn't support 16-bit indices.. You can '#define ImDrawIdx int' in imconfig.h to request ImGui to output 32-bit indices. | ||||
|             // FIXME-OPT: Unfortunately Allegro doesn't support 16-bit indices.. You can '#define ImDrawIdx int' in imconfig.h to request Dear ImGui to output 32-bit indices. | ||||
|             // Otherwise, we convert them from 16-bit to 32-bit at runtime here, which works perfectly but is a little wasteful. | ||||
|             static ImVector<int> indices_converted; | ||||
|             indices_converted.resize(cmd_list->IdxBuffer.Size); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer + Platform Binding for: Allegro 5 | ||||
| // dear imgui: Renderer + Platform Binding for Allegro 5 | ||||
| // (Info: Allegro 5 is a cross-platform general purpose library for handling windows, inputs, graphics, etc.) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX10 | ||||
| // dear imgui: Renderer for DirectX10 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX10 | ||||
| // dear imgui: Renderer for DirectX10 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX11 | ||||
| // dear imgui: Renderer for DirectX11 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX11 | ||||
| // dear imgui: Renderer for DirectX11 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX12 | ||||
| // dear imgui: Renderer for DirectX12 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX12 | ||||
| // dear imgui: Renderer for DirectX12 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX9 | ||||
| // dear imgui: Renderer for DirectX9 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: DirectX9 | ||||
| // dear imgui: Renderer for DirectX9 | ||||
| // This needs to be used along with a Platform Binding (e.g. Win32) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: FreeGLUT | ||||
| // dear imgui: Platform Binding for FreeGLUT | ||||
| // This needs to be used along with a Renderer (e.g. OpenGL2) | ||||
|  | ||||
| // Issues: | ||||
| @@ -97,7 +97,7 @@ void ImGui_ImplFreeGLUT_KeyboardFunc(unsigned char c, int x, int y) | ||||
|     //printf("char_down_func %d '%c'\n", c, c); | ||||
|     ImGuiIO& io = ImGui::GetIO(); | ||||
|     if (c >= 32) | ||||
|         io.AddInputCharacter(c); | ||||
|         io.AddInputCharacter((unsigned short)c); | ||||
|  | ||||
|     // Store letters in KeysDown[] array as both uppercase and lowercase + Handle GLUT translating CTRL+A..CTRL+Z as 1..26.  | ||||
|     // This is a hacky mess but GLUT is unable to distinguish e.g. a TAB key from CTRL+I so this is probably the best we can do here. | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: FreeGLUT | ||||
| // dear imgui: Platform Binding for FreeGLUT | ||||
| // This needs to be used along with a Renderer (e.g. OpenGL2) | ||||
|  | ||||
| // Issues: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: GLFW | ||||
| // dear imgui: Platform Binding for GLFW | ||||
| // This needs to be used along with a Renderer (e.g. OpenGL3, Vulkan..) | ||||
| // (Info: GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: GLFW | ||||
| // dear imgui: Platform Binding for GLFW | ||||
| // This needs to be used along with a Renderer (e.g. OpenGL3, Vulkan..) | ||||
| // (Info: GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| // ImGui Renderer + Platform Binding for: Marmalade + IwGx | ||||
| // Marmalade code: Copyright (C) 2015 by Giovanni Zito (this file is part of ImGui) | ||||
| // dear imgui: Renderer + Platform Binding for Marmalade + IwGx | ||||
| // Marmalade code: Copyright (C) 2015 by Giovanni Zito (this file is part of Dear ImGui) | ||||
|  | ||||
| // Implemented features: | ||||
| //  [X] Renderer: User texture binding. Use 'CIwTexture*' as ImTextureID. Read the FAQ about ImTextureID in imgui.cpp. | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| // ImGui Renderer + Platform Binding for: Marmalade + IwGx | ||||
| // dear imgui: Renderer + Platform Binding for Marmalade + IwGx | ||||
| // Marmalade code: Copyright (C) 2015 by Giovanni Zito (this file is part of Dear ImGui) | ||||
|  | ||||
| // Implemented features: | ||||
| //  [X] Renderer: User texture binding. Use 'CIwTexture*' as ImTextureID. Read the FAQ about ImTextureID in imgui.cpp. | ||||
| @@ -7,9 +8,6 @@ | ||||
| // If you are new to dear imgui, read examples/README.txt and read the documentation at the top of imgui.cpp. | ||||
| // https://github.com/ocornut/imgui | ||||
|  | ||||
| // Copyright (C) 2015 by Giovanni Zito | ||||
| // This file is part of ImGui | ||||
|  | ||||
| IMGUI_IMPL_API bool     ImGui_Marmalade_Init(bool install_callbacks); | ||||
| IMGUI_IMPL_API void     ImGui_Marmalade_Shutdown(); | ||||
| IMGUI_IMPL_API void     ImGui_Marmalade_NewFrame(); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: Metal | ||||
| // dear imgui: Renderer for Metal | ||||
| // This needs to be used along with a Platform Binding (e.g. OSX) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: Metal | ||||
| // dear imgui: Renderer for Metal | ||||
| // This needs to be used along with a Platform Binding (e.g. OSX) | ||||
|  | ||||
| // Implemented features: | ||||
| @@ -410,7 +410,7 @@ void ImGui_ImplMetal_DestroyDeviceObjects() | ||||
|     [commandEncoder setDepthStencilState:g_sharedMetalContext.depthStencilState]; | ||||
|      | ||||
|     // Setup viewport, orthographic projection matrix | ||||
|     // Our visible imgui space lies from draw_data->DisplayPps (top left) to | ||||
|     // Our visible imgui space lies from draw_data->DisplayPos (top left) to | ||||
|     // draw_data->DisplayPos+data_data->DisplaySize (bottom right). DisplayMin is typically (0,0) for single viewport apps. | ||||
|     MTLViewport viewport =  | ||||
|     {    | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: OpenGL2 (legacy OpenGL, fixed pipeline) | ||||
| // dear imgui: Renderer for OpenGL2 (legacy OpenGL, fixed pipeline) | ||||
| // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: OpenGL2 (legacy OpenGL, fixed pipeline) | ||||
| // dear imgui: Renderer for OpenGL2 (legacy OpenGL, fixed pipeline) | ||||
| // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: OpenGL3 / OpenGL ES2 / OpenGL ES3 (modern OpenGL with shaders / programmatic pipeline) | ||||
| // dear imgui: Renderer for OpenGL3 / OpenGL ES2 / OpenGL ES3 (modern OpenGL with shaders / programmatic pipeline) | ||||
| // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||
| // (Note: We are using GL3W as a helper library to access OpenGL functions since there is no standard header to access modern OpenGL functions easily. Alternatives are GLEW, Glad, etc..) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: OpenGL3 / OpenGL ES2 / OpenGL ES3 (modern OpenGL with shaders / programmatic pipeline) | ||||
| // dear imgui: Renderer for OpenGL3 / OpenGL ES2 / OpenGL ES3 (modern OpenGL with shaders / programmatic pipeline) | ||||
| // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||
| // (Note: We are using GL3W as a helper library to access OpenGL functions since there is no standard header to access modern OpenGL functions easily. Alternatives are GLEW, Glad, etc..) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: OSX / Cocoa | ||||
| // dear imgui: Platform Binding for OSX / Cocoa | ||||
| // This needs to be used along with a Renderer (e.g. OpenGL2, OpenGL3, Vulkan, Metal..) | ||||
| // [BETA] Beta bindings, not well tested. If you want a portable application, prefer using the Glfw or SDL platform bindings on Mac. | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: OSX / Cocoa | ||||
| // dear imgui: Platform Binding for OSX / Cocoa | ||||
| // This needs to be used along with a Renderer (e.g. OpenGL2, OpenGL3, Vulkan, Metal..) | ||||
| // [BETA] Beta bindings, not well tested. If you want a portable application, prefer using the Glfw or SDL platform bindings on Mac. | ||||
|  | ||||
| @@ -189,7 +189,7 @@ bool ImGui_ImplOSX_HandleEvent(NSEvent* event, NSView* view) | ||||
|         { | ||||
|             int c = [str characterAtIndex:i]; | ||||
|             if (c < 0xF700 && !io.KeyCtrl) | ||||
|                 io.AddInputCharacter(c); | ||||
|                 io.AddInputCharacter((unsigned short)c); | ||||
|  | ||||
|             // We must reset in case we're pressing a sequence of special keys while keeping the command pressed | ||||
|             int key = mapCharacterToKey(c); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: SDL2 | ||||
| // dear imgui: Platform Binding for SDL2 | ||||
| // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) | ||||
| // (Info: SDL2 is a cross-platform general purpose library for handling windows, inputs, graphics context creation, etc.) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: SDL2 | ||||
| // dear imgui: Platform Binding for SDL2 | ||||
| // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) | ||||
| // (Info: SDL2 is a cross-platform general purpose library for handling windows, inputs, graphics context creation, etc.) | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: Vulkan | ||||
| // dear imgui: Renderer for Vulkan | ||||
| // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||
|  | ||||
| // Missing features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Renderer for: Vulkan | ||||
| // dear imgui: Renderer for Vulkan | ||||
| // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||
|  | ||||
| // Missing features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: Windows (standard windows API for 32 and 64 bits applications) | ||||
| // dear imgui: Platform Binding for Windows (standard windows API for 32 and 64 bits applications) | ||||
| // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| // ImGui Platform Binding for: Windows (standard windows API for 32 and 64 bits applications) | ||||
| // dear imgui: Platform Binding for Windows (standard windows API for 32 and 64 bits applications) | ||||
| // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) | ||||
|  | ||||
| // Implemented features: | ||||
|   | ||||
							
								
								
									
										4
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -1944,7 +1944,7 @@ struct ImFont | ||||
|     ImVec2                      DisplayOffset;      // = (0.f,0.f)  // Offset font rendering by xx pixels | ||||
|     ImVector<ImFontGlyph>       Glyphs;             //              // All glyphs. | ||||
|     ImVector<float>             IndexAdvanceX;      //              // Sparse. Glyphs->AdvanceX in a directly indexable way (more cache-friendly, for CalcTextSize functions which are often bottleneck in large UI). | ||||
|     ImVector<unsigned short>    IndexLookup;        //              // Sparse. Index glyphs by Unicode code-point. | ||||
|     ImVector<ImWchar>           IndexLookup;        //              // Sparse. Index glyphs by Unicode code-point. | ||||
|     const ImFontGlyph*          FallbackGlyph;      // == FindGlyph(FontFallbackChar) | ||||
|     float                       FallbackAdvanceX;   // == FallbackGlyph->AdvanceX | ||||
|     ImWchar                     FallbackChar;       // = '?'        // Replacement glyph if one isn't found. Only set via SetFallbackChar() | ||||
| @@ -1973,7 +1973,7 @@ struct ImFont | ||||
|     // 'wrap_width' enable automatic word-wrapping across multiple lines to fit into given width. 0.0f to disable. | ||||
|     IMGUI_API ImVec2            CalcTextSizeA(float size, float max_width, float wrap_width, const char* text_begin, const char* text_end = NULL, const char** remaining = NULL) const; // utf8 | ||||
|     IMGUI_API const char*       CalcWordWrapPositionA(float scale, const char* text, const char* text_end, float wrap_width) const; | ||||
|     IMGUI_API void              RenderChar(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, unsigned short c) const; | ||||
|     IMGUI_API void              RenderChar(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, ImWchar c) const; | ||||
|     IMGUI_API void              RenderText(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, const ImVec4& clip_rect, const char* text_begin, const char* text_end, float wrap_width = 0.0f, bool cpu_fine_clip = false) const; | ||||
|  | ||||
|     // [Internal] | ||||
|   | ||||
| @@ -1894,7 +1894,7 @@ bool    ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas) | ||||
|                     continue; | ||||
|  | ||||
|                 const int codepoint = range.first_unicode_codepoint_in_range + char_idx; | ||||
|                 if (cfg.MergeMode && dst_font->FindGlyphNoFallback((unsigned short)codepoint)) | ||||
|                 if (cfg.MergeMode && dst_font->FindGlyphNoFallback((ImWchar)codepoint)) | ||||
|                     continue; | ||||
|  | ||||
|                 float char_advance_x_org = pc.xadvance; | ||||
| @@ -2316,21 +2316,21 @@ void ImFont::BuildLookupTable() | ||||
|     { | ||||
|         int codepoint = (int)Glyphs[i].Codepoint; | ||||
|         IndexAdvanceX[codepoint] = Glyphs[i].AdvanceX; | ||||
|         IndexLookup[codepoint] = (unsigned short)i; | ||||
|         IndexLookup[codepoint] = (ImWchar)i; | ||||
|     } | ||||
|  | ||||
|     // Create a glyph to handle TAB | ||||
|     // FIXME: Needs proper TAB handling but it needs to be contextualized (or we could arbitrary say that each string starts at "column 0" ?) | ||||
|     if (FindGlyph((unsigned short)' ')) | ||||
|     if (FindGlyph((ImWchar)' ')) | ||||
|     { | ||||
|         if (Glyphs.back().Codepoint != '\t')   // So we can call this function multiple times | ||||
|             Glyphs.resize(Glyphs.Size + 1); | ||||
|         ImFontGlyph& tab_glyph = Glyphs.back(); | ||||
|         tab_glyph = *FindGlyph((unsigned short)' '); | ||||
|         tab_glyph = *FindGlyph((ImWchar)' '); | ||||
|         tab_glyph.Codepoint = '\t'; | ||||
|         tab_glyph.AdvanceX *= 4; | ||||
|         IndexAdvanceX[(int)tab_glyph.Codepoint] = (float)tab_glyph.AdvanceX; | ||||
|         IndexLookup[(int)tab_glyph.Codepoint] = (unsigned short)(Glyphs.Size-1); | ||||
|         IndexLookup[(int)tab_glyph.Codepoint] = (ImWchar)(Glyphs.Size-1); | ||||
|     } | ||||
|  | ||||
|     FallbackGlyph = FindGlyphNoFallback(FallbackChar); | ||||
| @@ -2352,7 +2352,7 @@ void ImFont::GrowIndex(int new_size) | ||||
|     if (new_size <= IndexLookup.Size) | ||||
|         return; | ||||
|     IndexAdvanceX.resize(new_size, -1.0f); | ||||
|     IndexLookup.resize(new_size, (unsigned short)-1); | ||||
|     IndexLookup.resize(new_size, (ImWchar)-1); | ||||
| } | ||||
|  | ||||
| // x0/y0/x1/y1 are offset from the character upper-left layout position, in pixels. Therefore x0/y0 are often fairly close to zero. | ||||
| @@ -2385,13 +2385,13 @@ void ImFont::AddRemapChar(ImWchar dst, ImWchar src, bool overwrite_dst) | ||||
|     IM_ASSERT(IndexLookup.Size > 0);    // Currently this can only be called AFTER the font has been built, aka after calling ImFontAtlas::GetTexDataAs*() function. | ||||
|     int index_size = IndexLookup.Size; | ||||
|  | ||||
|     if (dst < index_size && IndexLookup.Data[dst] == (unsigned short)-1 && !overwrite_dst) // 'dst' already exists | ||||
|     if (dst < index_size && IndexLookup.Data[dst] == (ImWchar)-1 && !overwrite_dst) // 'dst' already exists | ||||
|         return; | ||||
|     if (src >= index_size && dst >= index_size) // both 'dst' and 'src' don't exist -> no-op | ||||
|         return; | ||||
|  | ||||
|     GrowIndex(dst + 1); | ||||
|     IndexLookup[dst] = (src < index_size) ? IndexLookup.Data[src] : (unsigned short)-1; | ||||
|     IndexLookup[dst] = (src < index_size) ? IndexLookup.Data[src] : (ImWchar)-1; | ||||
|     IndexAdvanceX[dst] = (src < index_size) ? IndexAdvanceX.Data[src] : 1.0f; | ||||
| } | ||||
|  | ||||
| @@ -2399,8 +2399,8 @@ const ImFontGlyph* ImFont::FindGlyph(ImWchar c) const | ||||
| { | ||||
|     if (c >= IndexLookup.Size) | ||||
|         return FallbackGlyph; | ||||
|     const unsigned short i = IndexLookup[c]; | ||||
|     if (i == (unsigned short)-1) | ||||
|     const ImWchar i = IndexLookup[c]; | ||||
|     if (i == (ImWchar)-1) | ||||
|         return FallbackGlyph; | ||||
|     return &Glyphs.Data[i]; | ||||
| } | ||||
| @@ -2409,8 +2409,8 @@ const ImFontGlyph* ImFont::FindGlyphNoFallback(ImWchar c) const | ||||
| { | ||||
|     if (c >= IndexLookup.Size) | ||||
|         return NULL; | ||||
|     const unsigned short i = IndexLookup[c]; | ||||
|     if (i == (unsigned short)-1) | ||||
|     const ImWchar i = IndexLookup[c]; | ||||
|     if (i == (ImWchar)-1) | ||||
|         return NULL; | ||||
|     return &Glyphs.Data[i]; | ||||
| } | ||||
| @@ -2608,7 +2608,7 @@ ImVec2 ImFont::CalcTextSizeA(float size, float max_width, float wrap_width, cons | ||||
|     return text_size; | ||||
| } | ||||
|  | ||||
| void ImFont::RenderChar(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, unsigned short c) const | ||||
| void ImFont::RenderChar(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, ImWchar c) const | ||||
| { | ||||
|     if (c == ' ' || c == '\t' || c == '\n' || c == '\r') // Match behavior of RenderText(), those 4 codepoints are hard-coded. | ||||
|         return; | ||||
| @@ -2733,7 +2733,7 @@ void ImFont::RenderText(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col | ||||
|         } | ||||
|  | ||||
|         float char_width = 0.0f; | ||||
|         if (const ImFontGlyph* glyph = FindGlyph((unsigned short)c)) | ||||
|         if (const ImFontGlyph* glyph = FindGlyph((ImWchar)c)) | ||||
|         { | ||||
|             char_width = glyph->AdvanceX * scale; | ||||
|  | ||||
|   | ||||
| @@ -838,7 +838,7 @@ bool ImGui::ImageButton(ImTextureID user_texture_id, const ImVec2& size, const I | ||||
|  | ||||
|     // Default to using texture ID as ID. User can still push string/integer prefixes. | ||||
|     // We could hash the size/uv to create a unique ID but that would prevent the user from animating UV. | ||||
|     PushID((void*)user_texture_id); | ||||
|     PushID((void*)(intptr_t)user_texture_id); | ||||
|     const ImGuiID id = window->GetID("#image"); | ||||
|     PopID(); | ||||
|  | ||||
| @@ -2842,7 +2842,7 @@ static ImVec2 InputTextCalcTextSizeW(const ImWchar* text_begin, const ImWchar* t | ||||
|         if (c == '\r') | ||||
|             continue; | ||||
|  | ||||
|         const float char_width = font->GetCharAdvance((unsigned short)c) * scale; | ||||
|         const float char_width = font->GetCharAdvance((ImWchar)c) * scale; | ||||
|         line_width += char_width; | ||||
|     } | ||||
|  | ||||
| @@ -3695,7 +3695,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | ||||
|                 else | ||||
|                 { | ||||
|                     ImVec2 rect_size = InputTextCalcTextSizeW(p, text_selected_end, &p, NULL, true); | ||||
|                     if (rect_size.x <= 0.0f) rect_size.x = (float)(int)(g.Font->GetCharAdvance((unsigned short)' ') * 0.50f); // So we can see selected empty lines | ||||
|                     if (rect_size.x <= 0.0f) rect_size.x = (float)(int)(g.Font->GetCharAdvance((ImWchar)' ') * 0.50f); // So we can see selected empty lines | ||||
|                     ImRect rect(rect_pos + ImVec2(0.0f, bg_offy_up - g.FontSize), rect_pos +ImVec2(rect_size.x, bg_offy_dn)); | ||||
|                     rect.ClipWith(clip_rect); | ||||
|                     if (rect.Overlaps(clip_rect)) | ||||
| @@ -3923,7 +3923,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag | ||||
|             if (label != label_display_end) | ||||
|             { | ||||
|                 TextUnformatted(label, label_display_end); | ||||
|                 Separator(); | ||||
|                 Spacing(); | ||||
|             } | ||||
|             ImGuiColorEditFlags picker_flags_to_forward = ImGuiColorEditFlags__DataTypeMask | ImGuiColorEditFlags__PickerMask | ImGuiColorEditFlags_HDR | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaBar; | ||||
|             ImGuiColorEditFlags picker_flags = (flags_untouched & picker_flags_to_forward) | ImGuiColorEditFlags__InputsMask | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf; | ||||
| @@ -5549,7 +5549,7 @@ bool ImGui::BeginMenu(const char* label, bool enabled) | ||||
|         // Menu inside an horizontal menu bar | ||||
|         // Selectable extend their highlight by half ItemSpacing in each direction. | ||||
|         // For ChildMenu, the popup position will be overwritten by the call to FindBestWindowPosForPopup() in Begin() | ||||
|         popup_pos = ImVec2(pos.x - window->WindowPadding.x, pos.y - style.FramePadding.y + window->MenuBarHeight()); | ||||
|         popup_pos = ImVec2(pos.x - 1.0f - (float)(int)(style.ItemSpacing.x * 0.5f), pos.y - style.FramePadding.y + window->MenuBarHeight()); | ||||
|         window->DC.CursorPos.x += (float)(int)(style.ItemSpacing.x * 0.5f); | ||||
|         PushStyleVar(ImGuiStyleVar_ItemSpacing, style.ItemSpacing * 2.0f); | ||||
|         float w = label_size.x; | ||||
|   | ||||
| @@ -337,7 +337,7 @@ bool ImGuiFreeType::BuildFontAtlas(ImFontAtlas* atlas, unsigned int extra_flags) | ||||
|         { | ||||
|             for (uint32_t codepoint = in_range[0]; codepoint <= in_range[1]; ++codepoint)  | ||||
|             { | ||||
|                 if (cfg.MergeMode && dst_font->FindGlyphNoFallback((unsigned short)codepoint)) | ||||
|                 if (cfg.MergeMode && dst_font->FindGlyphNoFallback((ImWchar)codepoint)) | ||||
|                     continue; | ||||
|  | ||||
|                 FT_Glyph ft_glyph = NULL; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user