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). |   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 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) | - 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. |  - 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 |    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).  |    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 |    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 |    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.  |    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.)** |     **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)** |     **Prefer using OPENGL3 code (with gl3w/glew/glad, you can replace the OpenGL function loader)** | ||||||
|     GLFW + OpenGL2 example (legacy, fixed pipeline). |     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 |     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 |     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. |     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.)** |     **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)** |     **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). |     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 |     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 |     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.  |     state, and might confuse your GPU driver. One star, not recommended.  | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for Allegro 5 | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include <stdint.h> | #include <stdint.h> | ||||||
| #include <allegro5/allegro.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, |     // 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 |     // 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 |     // 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 |     // window, we'd want to be much more careful than just ingesting the complete event stream, though we | ||||||
|     // we do make an effort to be good citizens by passing along events when ImGui doesn't want to capture. |     // 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; |     NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel; | ||||||
|     [NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) { |     [NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) { | ||||||
|         BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view); |         BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view); | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for OSX + OpenGL2, using legacy fixed pipeline | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "../imgui_impl_osx.h" | #include "../imgui_impl_osx.h" | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for FreeGLUT + OpenGL2, using legacy fixed pipeline | // dear 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. | // 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) | // (Using GLUT or FreeGLUT is not recommended unless you really miss the 90's) | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| @@ -57,7 +57,7 @@ void my_display_code() | |||||||
|  |  | ||||||
| void glut_display_func() | void glut_display_func() | ||||||
| { | { | ||||||
|     // Start the ImGui frame |     // Start the Dear ImGui frame | ||||||
|     ImGui_ImplOpenGL2_NewFrame(); |     ImGui_ImplOpenGL2_NewFrame(); | ||||||
|     ImGui_ImplFreeGLUT_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. |     // otherwise it is possible to install our own functions and call the imgui_impl_freeglut.h functions ourselves. | ||||||
|     glutDisplayFunc(glut_display_func); |     glutDisplayFunc(glut_display_func); | ||||||
|  |  | ||||||
|     // Setup ImGui binding |     // Setup Dear ImGui binding | ||||||
|     ImGui::CreateContext(); |     ImGui::CreateContext(); | ||||||
|     ImGuiIO& io = ImGui::GetIO(); (void)io; |     ImGuiIO& io = ImGui::GetIO(); (void)io; | ||||||
|     //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;  // Enable Keyboard Controls |     //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;  // Enable Keyboard Controls | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for GLFW + OpenGL2, using legacy fixed pipeline | // dear 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. | // 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.) | // (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.)** | // **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 | // dear 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. | // 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.) | // (GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.) | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for Glfw + Vulkan | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "imgui_impl_glfw.h" | #include "imgui_impl_glfw.h" | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| // ImGui - standalone example application for Marmalade | // dear imgui: standalone example application for Marmalade | ||||||
| // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | // 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 | // Copyright (C) 2015 by Giovanni Zito | ||||||
| // This file is part of ImGui | // This file is part of Dear ImGui | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "imgui_impl_marmalade.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 "imgui.h" | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for SDL2 + OpenGL | // dear 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. | // 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.) | // (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.)** | // **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 | // dear 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. | // 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.) | // (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.) | // (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 | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "imgui_impl_sdl.h" | #include "imgui_impl_sdl.h" | ||||||
| @@ -332,7 +332,7 @@ int main(int, char**) | |||||||
|     ImGui_ImplVulkanH_WindowData* wd = &g_WindowData; |     ImGui_ImplVulkanH_WindowData* wd = &g_WindowData; | ||||||
|     SetupVulkanWindowData(wd, surface, w, h); |     SetupVulkanWindowData(wd, surface, w, h); | ||||||
|  |  | ||||||
|     // Setup ImGui binding |     // Setup Dear ImGui binding | ||||||
|     ImGui::CreateContext(); |     ImGui::CreateContext(); | ||||||
|     ImGuiIO& io = ImGui::GetIO(); (void)io; |     ImGuiIO& io = ImGui::GetIO(); (void)io; | ||||||
|     io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; |     io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for DirectX 10 | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "imgui_impl_win32.h" | #include "imgui_impl_win32.h" | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for DirectX 11 | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "imgui_impl_win32.h" | #include "imgui_impl_win32.h" | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for DirectX 12 | // dear 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. | // 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*)) | // FIXME: 64-bit only for now! (Because sizeof(ImTextureId) == sizeof(void*)) | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| // ImGui - standalone example application for DirectX 9 | // dear 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. | // If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp. | ||||||
|  |  | ||||||
| #include "imgui.h" | #include "imgui.h" | ||||||
| #include "imgui_impl_dx9.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.) | // (Info: Allegro 5 is a cross-platform general purpose library for handling windows, inputs, graphics, etc.) | ||||||
|  |  | ||||||
| // Implemented features: | // Implemented features: | ||||||
| @@ -74,7 +74,7 @@ void ImGui_ImplAllegro5_RenderDrawData(ImDrawData* draw_data) | |||||||
|     al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); |     al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); | ||||||
|  |  | ||||||
|     // Setup orthographic projection matrix |     // 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 L = draw_data->DisplayPos.x; | ||||||
|         float R = draw_data->DisplayPos.x + draw_data->DisplaySize.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; |         const int* indices = NULL; | ||||||
|         if (sizeof(ImDrawIdx) == 2) |         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. |             // 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; |             static ImVector<int> indices_converted; | ||||||
|             indices_converted.resize(cmd_list->IdxBuffer.Size); |             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.) | // (Info: Allegro 5 is a cross-platform general purpose library for handling windows, inputs, graphics, etc.) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. Win32) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Renderer (e.g. OpenGL2) | ||||||
|  |  | ||||||
| // Issues: | // 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); |     //printf("char_down_func %d '%c'\n", c, c); | ||||||
|     ImGuiIO& io = ImGui::GetIO(); |     ImGuiIO& io = ImGui::GetIO(); | ||||||
|     if (c >= 32) |     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.  |     // 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. |     // 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) | // This needs to be used along with a Renderer (e.g. OpenGL2) | ||||||
|  |  | ||||||
| // Issues: | // 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..) | // 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.) | // (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..) | // 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.) | // (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 | // dear imgui: Renderer + Platform Binding for Marmalade + IwGx | ||||||
| // Marmalade code: Copyright (C) 2015 by Giovanni Zito (this file is part of ImGui) | // Marmalade code: Copyright (C) 2015 by Giovanni Zito (this file is part of Dear ImGui) | ||||||
|  |  | ||||||
| // Implemented features: | // Implemented features: | ||||||
| //  [X] Renderer: User texture binding. Use 'CIwTexture*' as ImTextureID. Read the FAQ about ImTextureID in imgui.cpp. | //  [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: | // Implemented features: | ||||||
| //  [X] Renderer: User texture binding. Use 'CIwTexture*' as ImTextureID. Read the FAQ about ImTextureID in imgui.cpp. | //  [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. | // 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 | // 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 bool     ImGui_Marmalade_Init(bool install_callbacks); | ||||||
| IMGUI_IMPL_API void     ImGui_Marmalade_Shutdown(); | IMGUI_IMPL_API void     ImGui_Marmalade_Shutdown(); | ||||||
| IMGUI_IMPL_API void     ImGui_Marmalade_NewFrame(); | 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) | // This needs to be used along with a Platform Binding (e.g. OSX) | ||||||
|  |  | ||||||
| // Implemented features: | // 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) | // This needs to be used along with a Platform Binding (e.g. OSX) | ||||||
|  |  | ||||||
| // Implemented features: | // Implemented features: | ||||||
| @@ -410,7 +410,7 @@ void ImGui_ImplMetal_DestroyDeviceObjects() | |||||||
|     [commandEncoder setDepthStencilState:g_sharedMetalContext.depthStencilState]; |     [commandEncoder setDepthStencilState:g_sharedMetalContext.depthStencilState]; | ||||||
|      |      | ||||||
|     // Setup viewport, orthographic projection matrix |     // 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. |     // draw_data->DisplayPos+data_data->DisplaySize (bottom right). DisplayMin is typically (0,0) for single viewport apps. | ||||||
|     MTLViewport viewport =  |     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..) | // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||||
|  |  | ||||||
| // Implemented features: | // 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..) | // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||||
|  |  | ||||||
| // Implemented features: | // 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..) | // 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..) | // (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..) | // 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..) | // (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..) | // 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. | // [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..) | // 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. | // [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]; |             int c = [str characterAtIndex:i]; | ||||||
|             if (c < 0xF700 && !io.KeyCtrl) |             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 |             // We must reset in case we're pressing a sequence of special keys while keeping the command pressed | ||||||
|             int key = mapCharacterToKey(c); |             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..) | // 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.) | // (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..) | // 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.) | // (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..) | // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||||
|  |  | ||||||
| // Missing features: | // 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..) | // This needs to be used along with a Platform Binding (e.g. GLFW, SDL, Win32, custom..) | ||||||
|  |  | ||||||
| // Missing features: | // 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..) | // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) | ||||||
|  |  | ||||||
| // Implemented features: | // 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..) | // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) | ||||||
|  |  | ||||||
| // Implemented features: | // 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 |     ImVec2                      DisplayOffset;      // = (0.f,0.f)  // Offset font rendering by xx pixels | ||||||
|     ImVector<ImFontGlyph>       Glyphs;             //              // All glyphs. |     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<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) |     const ImFontGlyph*          FallbackGlyph;      // == FindGlyph(FontFallbackChar) | ||||||
|     float                       FallbackAdvanceX;   // == FallbackGlyph->AdvanceX |     float                       FallbackAdvanceX;   // == FallbackGlyph->AdvanceX | ||||||
|     ImWchar                     FallbackChar;       // = '?'        // Replacement glyph if one isn't found. Only set via SetFallbackChar() |     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. |     // '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 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 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; |     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] |     // [Internal] | ||||||
|   | |||||||
| @@ -1894,7 +1894,7 @@ bool    ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas) | |||||||
|                     continue; |                     continue; | ||||||
|  |  | ||||||
|                 const int codepoint = range.first_unicode_codepoint_in_range + char_idx; |                 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; |                     continue; | ||||||
|  |  | ||||||
|                 float char_advance_x_org = pc.xadvance; |                 float char_advance_x_org = pc.xadvance; | ||||||
| @@ -2316,21 +2316,21 @@ void ImFont::BuildLookupTable() | |||||||
|     { |     { | ||||||
|         int codepoint = (int)Glyphs[i].Codepoint; |         int codepoint = (int)Glyphs[i].Codepoint; | ||||||
|         IndexAdvanceX[codepoint] = Glyphs[i].AdvanceX; |         IndexAdvanceX[codepoint] = Glyphs[i].AdvanceX; | ||||||
|         IndexLookup[codepoint] = (unsigned short)i; |         IndexLookup[codepoint] = (ImWchar)i; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // Create a glyph to handle TAB |     // 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" ?) |     // 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 |         if (Glyphs.back().Codepoint != '\t')   // So we can call this function multiple times | ||||||
|             Glyphs.resize(Glyphs.Size + 1); |             Glyphs.resize(Glyphs.Size + 1); | ||||||
|         ImFontGlyph& tab_glyph = Glyphs.back(); |         ImFontGlyph& tab_glyph = Glyphs.back(); | ||||||
|         tab_glyph = *FindGlyph((unsigned short)' '); |         tab_glyph = *FindGlyph((ImWchar)' '); | ||||||
|         tab_glyph.Codepoint = '\t'; |         tab_glyph.Codepoint = '\t'; | ||||||
|         tab_glyph.AdvanceX *= 4; |         tab_glyph.AdvanceX *= 4; | ||||||
|         IndexAdvanceX[(int)tab_glyph.Codepoint] = (float)tab_glyph.AdvanceX; |         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); |     FallbackGlyph = FindGlyphNoFallback(FallbackChar); | ||||||
| @@ -2352,7 +2352,7 @@ void ImFont::GrowIndex(int new_size) | |||||||
|     if (new_size <= IndexLookup.Size) |     if (new_size <= IndexLookup.Size) | ||||||
|         return; |         return; | ||||||
|     IndexAdvanceX.resize(new_size, -1.0f); |     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. | // 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. |     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; |     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; |         return; | ||||||
|     if (src >= index_size && dst >= index_size) // both 'dst' and 'src' don't exist -> no-op |     if (src >= index_size && dst >= index_size) // both 'dst' and 'src' don't exist -> no-op | ||||||
|         return; |         return; | ||||||
|  |  | ||||||
|     GrowIndex(dst + 1); |     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; |     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) |     if (c >= IndexLookup.Size) | ||||||
|         return FallbackGlyph; |         return FallbackGlyph; | ||||||
|     const unsigned short i = IndexLookup[c]; |     const ImWchar i = IndexLookup[c]; | ||||||
|     if (i == (unsigned short)-1) |     if (i == (ImWchar)-1) | ||||||
|         return FallbackGlyph; |         return FallbackGlyph; | ||||||
|     return &Glyphs.Data[i]; |     return &Glyphs.Data[i]; | ||||||
| } | } | ||||||
| @@ -2409,8 +2409,8 @@ const ImFontGlyph* ImFont::FindGlyphNoFallback(ImWchar c) const | |||||||
| { | { | ||||||
|     if (c >= IndexLookup.Size) |     if (c >= IndexLookup.Size) | ||||||
|         return NULL; |         return NULL; | ||||||
|     const unsigned short i = IndexLookup[c]; |     const ImWchar i = IndexLookup[c]; | ||||||
|     if (i == (unsigned short)-1) |     if (i == (ImWchar)-1) | ||||||
|         return NULL; |         return NULL; | ||||||
|     return &Glyphs.Data[i]; |     return &Glyphs.Data[i]; | ||||||
| } | } | ||||||
| @@ -2608,7 +2608,7 @@ ImVec2 ImFont::CalcTextSizeA(float size, float max_width, float wrap_width, cons | |||||||
|     return text_size; |     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. |     if (c == ' ' || c == '\t' || c == '\n' || c == '\r') // Match behavior of RenderText(), those 4 codepoints are hard-coded. | ||||||
|         return; |         return; | ||||||
| @@ -2733,7 +2733,7 @@ void ImFont::RenderText(ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         float char_width = 0.0f; |         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; |             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. |     // 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. |     // 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"); |     const ImGuiID id = window->GetID("#image"); | ||||||
|     PopID(); |     PopID(); | ||||||
|  |  | ||||||
| @@ -2842,7 +2842,7 @@ static ImVec2 InputTextCalcTextSizeW(const ImWchar* text_begin, const ImWchar* t | |||||||
|         if (c == '\r') |         if (c == '\r') | ||||||
|             continue; |             continue; | ||||||
|  |  | ||||||
|         const float char_width = font->GetCharAdvance((unsigned short)c) * scale; |         const float char_width = font->GetCharAdvance((ImWchar)c) * scale; | ||||||
|         line_width += char_width; |         line_width += char_width; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -3695,7 +3695,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 | |||||||
|                 else |                 else | ||||||
|                 { |                 { | ||||||
|                     ImVec2 rect_size = InputTextCalcTextSizeW(p, text_selected_end, &p, NULL, true); |                     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)); |                     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); |                     rect.ClipWith(clip_rect); | ||||||
|                     if (rect.Overlaps(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) |             if (label != label_display_end) | ||||||
|             { |             { | ||||||
|                 TextUnformatted(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_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; |             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 |         // Menu inside an horizontal menu bar | ||||||
|         // Selectable extend their highlight by half ItemSpacing in each direction. |         // 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() |         // 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); |         window->DC.CursorPos.x += (float)(int)(style.ItemSpacing.x * 0.5f); | ||||||
|         PushStyleVar(ImGuiStyleVar_ItemSpacing, style.ItemSpacing * 2.0f); |         PushStyleVar(ImGuiStyleVar_ItemSpacing, style.ItemSpacing * 2.0f); | ||||||
|         float w = label_size.x; |         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)  |             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; |                     continue; | ||||||
|  |  | ||||||
|                 FT_Glyph ft_glyph = NULL; |                 FT_Glyph ft_glyph = NULL; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user