mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_win32.cpp
This commit is contained in:
		| @@ -254,7 +254,7 @@ bool    ImGui_ImplOpenGL3_Init(const char* glsl_version) | ||||
|     for (GLint i = 0; i < num_extensions; i++) | ||||
|     { | ||||
|         const char* extension = (const char*)glGetStringi(GL_EXTENSIONS, i); | ||||
|         if (strcmp(extension, "GL_ARB_clip_control") == 0) | ||||
|         if (extension != NULL && strcmp(extension, "GL_ARB_clip_control") == 0) | ||||
|             g_HasClipOrigin = true; | ||||
|     } | ||||
| #endif | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
| //  [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'. | ||||
| //  [X] Platform: Multi-viewport support (multiple windows). Enable with 'io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable'. | ||||
|  | ||||
| // You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.  | ||||
| // You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. | ||||
| // Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need. | ||||
| // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. | ||||
| // Read online: https://github.com/ocornut/imgui/tree/master/docs | ||||
| @@ -23,7 +23,7 @@ | ||||
| #include <dwmapi.h> | ||||
|  | ||||
| // Configuration flags to add in your imconfig.h file: | ||||
| //#define IMGUI_IMPL_WIN32_DISABLE_GAMEPAD              // Disable gamepad support (this used to be meaningful before <1.81) but we know load XInput dynamically so the option is less relevant now. | ||||
| //#define IMGUI_IMPL_WIN32_DISABLE_GAMEPAD              // Disable gamepad support. This was meaningful before <1.81 but we now load XInput dynamically so the option is now less relevant. | ||||
|  | ||||
| // Using XInput for gamepad (will load DLL dynamically) | ||||
| #ifndef IMGUI_IMPL_WIN32_DISABLE_GAMEPAD | ||||
| @@ -35,6 +35,7 @@ typedef DWORD (WINAPI *PFN_XInputGetState)(DWORD, XINPUT_STATE*); | ||||
| // CHANGELOG | ||||
| // (minor and older changes stripped away, please see git history for details) | ||||
| //  2021-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface. | ||||
| //  2021-06-08: Fix ImGui_ImplWin32_EnableDpiAwareness() and ImGui_ImplWin32_GetDpiScaleForMonitor() to handle Windows 8.1/10 features without a manifest (per-monitor DPI, and properly calls SetProcessDpiAwareness() on 8.1). | ||||
| //  2021-03-23: Inputs: Clearing keyboard down array when losing focus (WM_KILLFOCUS). | ||||
| //  2021-02-18: Added ImGui_ImplWin32_EnableAlphaCompositing(). Non Visual Studio users will need to link with dwmapi.lib (MinGW/gcc: use -ldwmapi). | ||||
| //  2021-02-17: Fixed ImGui_ImplWin32_EnableDpiAwareness() attempting to get SetProcessDpiAwareness from shcore.dll on Windows 8 whereas it is only supported on Windows 8.1. | ||||
| @@ -497,21 +498,30 @@ IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hwnd, UINT msg, WPARA | ||||
| // If you are trying to implement your own backend for your own engine, you may ignore that noise. | ||||
| //--------------------------------------------------------------------------------------------------------- | ||||
|  | ||||
| // Implement some of the functions and types normally declared in recent Windows SDK. | ||||
| #if !defined(_versionhelpers_H_INCLUDED_) && !defined(_INC_VERSIONHELPERS) | ||||
| static BOOL IsWindowsVersionOrGreater(WORD major, WORD minor, WORD sp) | ||||
| // Perform our own check with RtlVerifyVersionInfo() instead of using functions from <VersionHelpers.h> as they | ||||
| // require a manifest to be functional for checks above 8.1. See https://github.com/ocornut/imgui/issues/4200 | ||||
| static BOOL _IsWindowsVersionOrGreater(WORD major, WORD minor, WORD) | ||||
| { | ||||
|     OSVERSIONINFOEXW osvi = { sizeof(osvi), major, minor, 0, 0, { 0 }, sp, 0, 0, 0, 0 }; | ||||
|     DWORD mask = VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR; | ||||
|     ULONGLONG cond = ::VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL); | ||||
|     cond = ::VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL); | ||||
|     cond = ::VerSetConditionMask(cond, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); | ||||
|     return ::VerifyVersionInfoW(&osvi, mask, cond); | ||||
|     typedef LONG(WINAPI* PFN_RtlVerifyVersionInfo)(OSVERSIONINFOEXW*, ULONG, ULONGLONG); | ||||
|     static PFN_RtlVerifyVersionInfo RtlVerifyVersionInfoFn = NULL; | ||||
| 	if (RtlVerifyVersionInfoFn == NULL) | ||||
| 		if (HMODULE ntdllModule = ::GetModuleHandleA("ntdll.dll")) | ||||
| 			RtlVerifyVersionInfoFn = (PFN_RtlVerifyVersionInfo)GetProcAddress(ntdllModule, "RtlVerifyVersionInfo"); | ||||
|  | ||||
| 	RTL_OSVERSIONINFOEXW versionInfo = { }; | ||||
| 	ULONGLONG conditionMask = 0; | ||||
| 	versionInfo.dwOSVersionInfoSize = sizeof(RTL_OSVERSIONINFOEXW); | ||||
| 	versionInfo.dwMajorVersion = major; | ||||
| 	versionInfo.dwMinorVersion = minor; | ||||
| 	VER_SET_CONDITION(conditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL); | ||||
| 	VER_SET_CONDITION(conditionMask, VER_MINORVERSION, VER_GREATER_EQUAL); | ||||
| 	return (RtlVerifyVersionInfoFn(&versionInfo, VER_MAJORVERSION | VER_MINORVERSION, conditionMask) == 0) ? TRUE : FALSE; | ||||
| } | ||||
| #define IsWindowsVistaOrGreater()   IsWindowsVersionOrGreater(HIBYTE(0x0600), LOBYTE(0x0600), 0) // _WIN32_WINNT_VISTA | ||||
| #define IsWindows8OrGreater()       IsWindowsVersionOrGreater(HIBYTE(0x0602), LOBYTE(0x0602), 0) // _WIN32_WINNT_WIN8 | ||||
| #define IsWindows8Point1OrGreater() IsWindowsVersionOrGreater(HIBYTE(0x0603), LOBYTE(0x0603), 0) // _WIN32_WINNT_WINBLUE | ||||
| #endif | ||||
|  | ||||
| #define _IsWindowsVistaOrGreater()   _IsWindowsVersionOrGreater(HIBYTE(0x0600), LOBYTE(0x0600), 0) // _WIN32_WINNT_VISTA | ||||
| #define _IsWindows8OrGreater()       _IsWindowsVersionOrGreater(HIBYTE(0x0602), LOBYTE(0x0602), 0) // _WIN32_WINNT_WIN8 | ||||
| #define _IsWindows8Point1OrGreater() _IsWindowsVersionOrGreater(HIBYTE(0x0603), LOBYTE(0x0603), 0) // _WIN32_WINNT_WINBLUE | ||||
| #define _IsWindows10OrGreater()      _IsWindowsVersionOrGreater(HIBYTE(0x0A00), LOBYTE(0x0A00), 0) // _WIN32_WINNT_WINTHRESHOLD / _WIN32_WINNT_WIN10 | ||||
|  | ||||
| #ifndef DPI_ENUMS_DECLARED | ||||
| typedef enum { PROCESS_DPI_UNAWARE = 0, PROCESS_SYSTEM_DPI_AWARE = 1, PROCESS_PER_MONITOR_DPI_AWARE = 2 } PROCESS_DPI_AWARENESS; | ||||
| @@ -534,7 +544,7 @@ void ImGui_ImplWin32_EnableDpiAwareness() | ||||
|     // Make sure monitors will be updated with latest correct scaling | ||||
|     g_WantUpdateMonitors = true; | ||||
|  | ||||
|     // if (IsWindows10OrGreater()) // This needs a manifest to succeed. Instead we try to grab the function pointer! | ||||
|     if (_IsWindows10OrGreater()) | ||||
|     { | ||||
|         static HINSTANCE user32_dll = ::LoadLibraryA("user32.dll"); // Reference counted per-process | ||||
|         if (PFN_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContextFn = (PFN_SetThreadDpiAwarenessContext)::GetProcAddress(user32_dll, "SetThreadDpiAwarenessContext")) | ||||
| @@ -543,7 +553,7 @@ void ImGui_ImplWin32_EnableDpiAwareness() | ||||
|             return; | ||||
|         } | ||||
|     } | ||||
|     if (IsWindows8Point1OrGreater()) | ||||
|     if (_IsWindows8Point1OrGreater()) | ||||
|     { | ||||
|         static HINSTANCE shcore_dll = ::LoadLibraryA("shcore.dll"); // Reference counted per-process | ||||
|         if (PFN_SetProcessDpiAwareness SetProcessDpiAwarenessFn = (PFN_SetProcessDpiAwareness)::GetProcAddress(shcore_dll, "SetProcessDpiAwareness")) | ||||
| @@ -564,23 +574,26 @@ void ImGui_ImplWin32_EnableDpiAwareness() | ||||
| float ImGui_ImplWin32_GetDpiScaleForMonitor(void* monitor) | ||||
| { | ||||
|     UINT xdpi = 96, ydpi = 96; | ||||
|     static BOOL bIsWindows8Point1OrGreater = IsWindows8Point1OrGreater(); | ||||
|     if (bIsWindows8Point1OrGreater) | ||||
|     if (_IsWindows8Point1OrGreater()) | ||||
|     { | ||||
|         static HINSTANCE shcore_dll = ::LoadLibraryA("shcore.dll"); // Reference counted per-process | ||||
|         if (PFN_GetDpiForMonitor GetDpiForMonitorFn = (PFN_GetDpiForMonitor)::GetProcAddress(shcore_dll, "GetDpiForMonitor")) | ||||
|             GetDpiForMonitorFn((HMONITOR)monitor, MDT_EFFECTIVE_DPI, &xdpi, &ydpi); | ||||
| 		static HINSTANCE shcore_dll = ::LoadLibraryA("shcore.dll"); // Reference counted per-process | ||||
| 		static PFN_GetDpiForMonitor GetDpiForMonitorFn = NULL; | ||||
| 		if (GetDpiForMonitorFn == NULL && shcore_dll != NULL) | ||||
|             GetDpiForMonitorFn = (PFN_GetDpiForMonitor)::GetProcAddress(shcore_dll, "GetDpiForMonitor"); | ||||
| 		if (GetDpiForMonitorFn != NULL) | ||||
| 		{ | ||||
| 			GetDpiForMonitorFn((HMONITOR)monitor, MDT_EFFECTIVE_DPI, &xdpi, &ydpi); | ||||
|             IM_ASSERT(xdpi == ydpi); // Please contact me if you hit this assert! | ||||
| 			return xdpi / 96.0f; | ||||
| 		} | ||||
|     } | ||||
| #ifndef NOGDI | ||||
|     else | ||||
|     { | ||||
|         const HDC dc = ::GetDC(NULL); | ||||
|         xdpi = ::GetDeviceCaps(dc, LOGPIXELSX); | ||||
|         ydpi = ::GetDeviceCaps(dc, LOGPIXELSY); | ||||
|         ::ReleaseDC(NULL, dc); | ||||
|     } | ||||
| #endif | ||||
|     const HDC dc = ::GetDC(NULL); | ||||
|     xdpi = ::GetDeviceCaps(dc, LOGPIXELSX); | ||||
|     ydpi = ::GetDeviceCaps(dc, LOGPIXELSY); | ||||
|     IM_ASSERT(xdpi == ydpi); // Please contact me if you hit this assert! | ||||
|     ::ReleaseDC(NULL, dc); | ||||
| #endif | ||||
|     return xdpi / 96.0f; | ||||
| } | ||||
|  | ||||
| @@ -952,7 +965,7 @@ static void ImGui_ImplWin32_ShutdownPlatformInterface() | ||||
| // (the Dwm* functions are Vista era functions but we are borrowing logic from GLFW) | ||||
| void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd) | ||||
| { | ||||
|     if (!IsWindowsVistaOrGreater()) | ||||
|     if (!_IsWindowsVistaOrGreater()) | ||||
|         return; | ||||
|  | ||||
|     BOOL composition; | ||||
| @@ -961,7 +974,7 @@ void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd) | ||||
|  | ||||
|     BOOL opaque; | ||||
|     DWORD color; | ||||
|     if (IsWindows8OrGreater() || (SUCCEEDED(::DwmGetColorizationColor(&color, &opaque)) && !opaque)) | ||||
|     if (_IsWindows8OrGreater() || (SUCCEEDED(::DwmGetColorizationColor(&color, &opaque)) && !opaque)) | ||||
|     { | ||||
|         HRGN region = ::CreateRectRgn(0, 0, -1, -1); | ||||
|         DWM_BLURBEHIND bb = {}; | ||||
|   | ||||
| @@ -105,11 +105,22 @@ Other changes: | ||||
|  | ||||
| Other Changes: | ||||
| - TabBar: Fixed using more than 32 KB-worth of tab names. (#4176) | ||||
| - Tables: Added ImGuiTableColumnFlags_Disabled acting a master disable over (hidden from user/context menu). (#3935) | ||||
| - Tables: Clarified that TableSetColumnEnabled() requires the table to use the ImGuiTableFlags_Hideable flag, | ||||
|   because it manipulates the user-accessible show/hide state. (#3935) | ||||
| - Tables: Added ImGuiTableColumnFlags_NoHeaderLabel to request TableHeadersRow() to not submit label for a column. | ||||
|   Convenient for some small columns. Name will still appear in context menu. (#4206). | ||||
| - Tables: Fix columns order on TableSetupScrollFreeze() if previous data got frozen columns out of their section. | ||||
| - Fixed printf-style format checks on non-MinGW flavors. (#4183, #3592) | ||||
| - Demo: Fixed requirement in 1.83 to link with imgui_demo.cpp if IMGUI_DISABLE_METRICS_WINDOW is not set. (#4171) | ||||
|   Normally the right way to disable compiling the demo is to set IMGUI_DISABLE_DEMO_WINDOWS, but we want to avoid | ||||
|   implying that the file is required. | ||||
| - Backends: Win32: Rework to handle certains Windows 8.1/10 features without a manifest. (#4200, #4191) | ||||
|   - ImGui_ImplWin32_GetDpiScaleForMonitor() will handle per-monitor DPI on Windows 10 without a manifest. | ||||
|   - ImGui_ImplWin32_EnableDpiAwareness() will call SetProcessDpiAwareness() fallback on Windows 8.1 without a manifest. | ||||
| - Backends: OpenGL3: Handle GL_CLIP_ORIGIN on <4.5 contexts if "GL_ARB_clip_control" extension is detected. (#4170, #3998) | ||||
| - Examples: Updated all .vcxproj to VS2015 (toolset v140) to facilitate usage with vcpkg. | ||||
| - Examples: SDL2: Accomodate for vcpkg install having headers in SDL2/SDL.h vs SDL.h. | ||||
|  | ||||
| Docking+Viewports Branch: | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| See BACKENDS and EXAMPLES files in the docs/ folder. | ||||
| See BACKENDS and EXAMPLES files in the docs/ folder, or on the web at: https://github.com/ocornut/imgui/tree/master/docs | ||||
|  | ||||
| Backends = Helper code to facilitate integration with platforms/graphics api (used by Examples + should be used by your app). | ||||
| Examples = Standalone applications showcasing integration with platforms/graphics api. | ||||
|  | ||||
| Some Examples have extra README files in their respective directory, please check them too! | ||||
|  | ||||
| Once Dear ImGui is running (in either examples or your own application/game/engine), | ||||
| run and refer to ImGui::ShowDemoWindow() in imgui_demo.cpp for the end-user API. | ||||
|   | ||||
| @@ -23,9 +23,10 @@ You may install Allegro using vcpkg: | ||||
| ``` | ||||
| git clone https://github.com/Microsoft/vcpkg | ||||
| cd vcpkg | ||||
| .\bootstrap-vcpkg.bat | ||||
| .\vcpkg install allegro5 | ||||
| .\vcpkg integrate install    ; optional, automatically register include/libs in Visual Studio | ||||
| bootstrap-vcpkg.bat | ||||
| vcpkg install allegro5 --triplet=x86-windows	; for win32 | ||||
| vcpkg install allegro5 --triplet=x64-windows	; for win64 | ||||
| vcpkg integrate install						    ; register include / libs in Visual Studio | ||||
| ``` | ||||
|  | ||||
| Build: | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -177,4 +177,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -2,6 +2,14 @@ | ||||
| // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. | ||||
| // Read online: https://github.com/ocornut/imgui/tree/master/docs | ||||
|  | ||||
| // On Windows, you can install Allegro5 using vcpkg: | ||||
| //   git clone https://github.com/Microsoft/vcpkg | ||||
| //   cd vcpkg | ||||
| //   bootstrap - vcpkg.bat | ||||
| //   vcpkg install allegro5 --triplet=x86-windows   ; for win32 | ||||
| //   vcpkg install allegro5 --triplet=x64-windows   ; for win64 | ||||
| //   vcpkg integrate install                        ; register include and libs in Visual Studio | ||||
|  | ||||
| #include <stdint.h> | ||||
| #include <allegro5/allegro.h> | ||||
| #include <allegro5/allegro_primitives.h> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -178,4 +178,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -181,4 +181,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -178,4 +178,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -90,7 +90,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;..\..\backends;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -104,7 +104,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;..\..\backends;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -120,7 +120,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;..\..\backends;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -140,7 +140,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;..\..\backends;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -178,4 +178,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -6,6 +6,14 @@ | ||||
| // !!! If someone or something is teaching you GLUT today, you are being abused. Please show some resistance. !!! | ||||
| // !!! Nowadays, prefer using GLFW or SDL instead! | ||||
|  | ||||
| // On Windows, you can install Freeglut using vcpkg: | ||||
| //   git clone https://github.com/Microsoft/vcpkg | ||||
| //   cd vcpkg | ||||
| //   bootstrap - vcpkg.bat | ||||
| //   vcpkg install freeglut --triplet=x86-windows   ; for win32 | ||||
| //   vcpkg install freeglut --triplet=x64-windows   ; for win64 | ||||
| //   vcpkg integrate install                        ; register include and libs in Visual Studio | ||||
|  | ||||
| #include "imgui.h" | ||||
| #include "imgui_impl_glut.h" | ||||
| #include "imgui_impl_opengl2.h" | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -29,27 +29,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -91,7 +91,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -105,7 +105,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -121,7 +121,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -141,7 +141,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -179,4 +179,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,6 +1,10 @@ | ||||
|  | ||||
| # How to Build | ||||
|  | ||||
| - On Windows with Visual Studio's IDE | ||||
|  | ||||
| Use the provided project file (.vcxproj). Add to solution (imgui_examples.sln) if necessary. | ||||
|  | ||||
| - On Windows with Visual Studio's CLI | ||||
|  | ||||
| ``` | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -90,7 +90,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -104,7 +104,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -120,7 +120,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -140,7 +140,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -178,4 +178,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,6 +1,10 @@ | ||||
|  | ||||
| # How to Build | ||||
|  | ||||
| - On Windows with Visual Studio's IDE | ||||
|  | ||||
| Use the provided project file (.vcxproj). Add to solution (imgui_examples.sln) if necessary. | ||||
|  | ||||
| - On Windows with Visual Studio's CLI | ||||
|  | ||||
| ``` | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -90,7 +90,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -104,7 +104,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -120,7 +120,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -140,7 +140,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -181,4 +181,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>MultiByte</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -90,7 +90,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -104,7 +104,7 @@ | ||||
|     <ClCompile> | ||||
|       <WarningLevel>Level4</WarningLevel> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
| @@ -120,7 +120,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -140,7 +140,7 @@ | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <AdditionalIncludeDirectories>..\..;..\..\backends;%VULKAN_SDK%\include;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
| @@ -178,4 +178,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -31,6 +31,9 @@ | ||||
|     <ClCompile Include="..\..\imgui_widgets.cpp"> | ||||
|       <Filter>imgui</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="..\..\imgui_tables.cpp"> | ||||
|       <Filter>sources</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="..\..\imconfig.h"> | ||||
| @@ -55,4 +58,4 @@ | ||||
|       <Filter>sources</Filter> | ||||
|     </None> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -168,4 +168,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -27,27 +27,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -167,4 +167,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -21,7 +21,7 @@ | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectGuid>{b4cf9797-519d-4afe-a8f4-5141a6b521d3}</ProjectGuid> | ||||
|     <RootNamespace>example_win32_directx12</RootNamespace> | ||||
|     <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion> | ||||
|     <WindowsTargetPlatformVersion>10.0.18362.0</WindowsTargetPlatformVersion> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||||
| @@ -169,4 +169,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
| @@ -28,27 +28,27 @@ | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>true</UseDebugLibraries> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | ||||
|     <ConfigurationType>Application</ConfigurationType> | ||||
|     <UseDebugLibraries>false</UseDebugLibraries> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>v110</PlatformToolset> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
| @@ -168,4 +168,4 @@ | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| </Project> | ||||
| @@ -68,7 +68,7 @@ | ||||
|  | ||||
| //---- Use FreeType to build and rasterize the font atlas (instead of stb_truetype which is embedded by default in Dear ImGui) | ||||
| // Requires FreeType headers to be available in the include path. Requires program to be compiled with 'misc/freetype/imgui_freetype.cpp' (in this repository) + the FreeType library (not provided). | ||||
| // On Windows you may use vcpkg with 'vcpkg install freetype' + 'vcpkg integrate install'. | ||||
| // On Windows you may use vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'. | ||||
| //#define IMGUI_ENABLE_FREETYPE | ||||
|  | ||||
| //---- Use stb_truetype to build and rasterize the font atlas (default) | ||||
|   | ||||
							
								
								
									
										46
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -62,7 +62,7 @@ Index of this file: | ||||
| // Version | ||||
| // (Integer encoded as XYYZZ for use in #if preprocessor conditionals. Work in progress versions typically starts at XYY99 then bounce up to XYY00, XYY01 etc. when release tagging happens) | ||||
| #define IMGUI_VERSION               "1.84 WIP" | ||||
| #define IMGUI_VERSION_NUM           18304 | ||||
| #define IMGUI_VERSION_NUM           18305 | ||||
| #define IMGUI_CHECKVERSION()        ImGui::DebugCheckVersionAndDataLayout(IMGUI_VERSION, sizeof(ImGuiIO), sizeof(ImGuiStyle), sizeof(ImVec2), sizeof(ImVec4), sizeof(ImDrawVert), sizeof(ImDrawIdx)) | ||||
| #define IMGUI_HAS_TABLE | ||||
| #define IMGUI_HAS_VIEWPORT          // Viewport WIP branch | ||||
| @@ -751,7 +751,7 @@ namespace ImGui | ||||
|     IMGUI_API int                   TableGetRowIndex();                         // return current row index. | ||||
|     IMGUI_API const char*           TableGetColumnName(int column_n = -1);      // return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column. | ||||
|     IMGUI_API ImGuiTableColumnFlags TableGetColumnFlags(int column_n = -1);     // return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column. | ||||
|     IMGUI_API void                  TableSetColumnEnabled(int column_n, bool v);// change enabled/disabled state of a column, set to false to hide the column. Note that end-user can use the context menu to change this themselves (right-click in headers, or right-click in columns body with ImGuiTableFlags_ContextMenuInBody) | ||||
|     IMGUI_API void                  TableSetColumnEnabled(int column_n, bool v);// change user accessible enabled/disabled state of a column. Set to false to hide the column. User can use the context menu to change this themselves (right-click in headers, or right-click in columns body with ImGuiTableFlags_ContextMenuInBody) | ||||
|     IMGUI_API void                  TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n = -1);  // change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details. | ||||
|  | ||||
|     // Legacy Columns API (2020: prefer using Tables!) | ||||
| @@ -1209,28 +1209,30 @@ enum ImGuiTableColumnFlags_ | ||||
| { | ||||
|     // Input configuration flags | ||||
|     ImGuiTableColumnFlags_None                  = 0, | ||||
|     ImGuiTableColumnFlags_DefaultHide           = 1 << 0,   // Default as a hidden/disabled column. | ||||
|     ImGuiTableColumnFlags_DefaultSort           = 1 << 1,   // Default as a sorting column. | ||||
|     ImGuiTableColumnFlags_WidthStretch          = 1 << 2,   // Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp). | ||||
|     ImGuiTableColumnFlags_WidthFixed            = 1 << 3,   // Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable). | ||||
|     ImGuiTableColumnFlags_NoResize              = 1 << 4,   // Disable manual resizing. | ||||
|     ImGuiTableColumnFlags_NoReorder             = 1 << 5,   // Disable manual reordering this column, this will also prevent other columns from crossing over this column. | ||||
|     ImGuiTableColumnFlags_NoHide                = 1 << 6,   // Disable ability to hide/disable this column. | ||||
|     ImGuiTableColumnFlags_NoClip                = 1 << 7,   // Disable clipping for this column (all NoClip columns will render in a same draw command). | ||||
|     ImGuiTableColumnFlags_NoSort                = 1 << 8,   // Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table). | ||||
|     ImGuiTableColumnFlags_NoSortAscending       = 1 << 9,   // Disable ability to sort in the ascending direction. | ||||
|     ImGuiTableColumnFlags_NoSortDescending      = 1 << 10,  // Disable ability to sort in the descending direction. | ||||
|     ImGuiTableColumnFlags_NoHeaderWidth         = 1 << 11,  // Disable header text width contribution to automatic column width. | ||||
|     ImGuiTableColumnFlags_PreferSortAscending   = 1 << 12,  // Make the initial sort direction Ascending when first sorting on this column (default). | ||||
|     ImGuiTableColumnFlags_PreferSortDescending  = 1 << 13,  // Make the initial sort direction Descending when first sorting on this column. | ||||
|     ImGuiTableColumnFlags_IndentEnable          = 1 << 14,  // Use current Indent value when entering cell (default for column 0). | ||||
|     ImGuiTableColumnFlags_IndentDisable         = 1 << 15,  // Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored. | ||||
|     ImGuiTableColumnFlags_Disabled              = 1 << 0,   // Overriding/master disable flag: hide column, won't show in context menu (unlike calling TableSetColumnEnabled() which manipulates the user accessible state) | ||||
|     ImGuiTableColumnFlags_DefaultHide           = 1 << 1,   // Default as a hidden/disabled column. | ||||
|     ImGuiTableColumnFlags_DefaultSort           = 1 << 2,   // Default as a sorting column. | ||||
|     ImGuiTableColumnFlags_WidthStretch          = 1 << 3,   // Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp). | ||||
|     ImGuiTableColumnFlags_WidthFixed            = 1 << 4,   // Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable). | ||||
|     ImGuiTableColumnFlags_NoResize              = 1 << 5,   // Disable manual resizing. | ||||
|     ImGuiTableColumnFlags_NoReorder             = 1 << 6,   // Disable manual reordering this column, this will also prevent other columns from crossing over this column. | ||||
|     ImGuiTableColumnFlags_NoHide                = 1 << 7,   // Disable ability to hide/disable this column. | ||||
|     ImGuiTableColumnFlags_NoClip                = 1 << 8,   // Disable clipping for this column (all NoClip columns will render in a same draw command). | ||||
|     ImGuiTableColumnFlags_NoSort                = 1 << 9,   // Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table). | ||||
|     ImGuiTableColumnFlags_NoSortAscending       = 1 << 10,  // Disable ability to sort in the ascending direction. | ||||
|     ImGuiTableColumnFlags_NoSortDescending      = 1 << 11,  // Disable ability to sort in the descending direction. | ||||
|     ImGuiTableColumnFlags_NoHeaderLabel         = 1 << 12,  // TableHeadersRow() will not submit label for this column. Convenient for some small columns. Name will still appear in context menu. | ||||
|     ImGuiTableColumnFlags_NoHeaderWidth         = 1 << 13,  // Disable header text width contribution to automatic column width. | ||||
|     ImGuiTableColumnFlags_PreferSortAscending   = 1 << 14,  // Make the initial sort direction Ascending when first sorting on this column (default). | ||||
|     ImGuiTableColumnFlags_PreferSortDescending  = 1 << 15,  // Make the initial sort direction Descending when first sorting on this column. | ||||
|     ImGuiTableColumnFlags_IndentEnable          = 1 << 16,  // Use current Indent value when entering cell (default for column 0). | ||||
|     ImGuiTableColumnFlags_IndentDisable         = 1 << 17,  // Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored. | ||||
|  | ||||
|     // Output status flags, read-only via TableGetColumnFlags() | ||||
|     ImGuiTableColumnFlags_IsEnabled             = 1 << 20,  // Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags. | ||||
|     ImGuiTableColumnFlags_IsVisible             = 1 << 21,  // Status: is visible == is enabled AND not clipped by scrolling. | ||||
|     ImGuiTableColumnFlags_IsSorted              = 1 << 22,  // Status: is currently part of the sort specs | ||||
|     ImGuiTableColumnFlags_IsHovered             = 1 << 23,  // Status: is hovered by mouse | ||||
|     ImGuiTableColumnFlags_IsEnabled             = 1 << 24,  // Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags. | ||||
|     ImGuiTableColumnFlags_IsVisible             = 1 << 25,  // Status: is visible == is enabled AND not clipped by scrolling. | ||||
|     ImGuiTableColumnFlags_IsSorted              = 1 << 26,  // Status: is currently part of the sort specs | ||||
|     ImGuiTableColumnFlags_IsHovered             = 1 << 27,  // Status: is hovered by mouse | ||||
|  | ||||
|     // [Internal] Combinations and masks | ||||
|     ImGuiTableColumnFlags_WidthMask_            = ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_WidthFixed, | ||||
|   | ||||
| @@ -3551,6 +3551,7 @@ static void EditTableSizingFlags(ImGuiTableFlags* p_flags) | ||||
|  | ||||
| static void EditTableColumnsFlags(ImGuiTableColumnFlags* p_flags) | ||||
| { | ||||
|     ImGui::CheckboxFlags("_Disabled", p_flags, ImGuiTableColumnFlags_Disabled); ImGui::SameLine(); HelpMarker("Master disable flag (also hide from context menu)"); | ||||
|     ImGui::CheckboxFlags("_DefaultHide", p_flags, ImGuiTableColumnFlags_DefaultHide); | ||||
|     ImGui::CheckboxFlags("_DefaultSort", p_flags, ImGuiTableColumnFlags_DefaultSort); | ||||
|     if (ImGui::CheckboxFlags("_WidthStretch", p_flags, ImGuiTableColumnFlags_WidthStretch)) | ||||
| @@ -3564,6 +3565,7 @@ static void EditTableColumnsFlags(ImGuiTableColumnFlags* p_flags) | ||||
|     ImGui::CheckboxFlags("_NoSort", p_flags, ImGuiTableColumnFlags_NoSort); | ||||
|     ImGui::CheckboxFlags("_NoSortAscending", p_flags, ImGuiTableColumnFlags_NoSortAscending); | ||||
|     ImGui::CheckboxFlags("_NoSortDescending", p_flags, ImGuiTableColumnFlags_NoSortDescending); | ||||
|     ImGui::CheckboxFlags("_NoHeaderLabel", p_flags, ImGuiTableColumnFlags_NoHeaderLabel); | ||||
|     ImGui::CheckboxFlags("_NoHeaderWidth", p_flags, ImGuiTableColumnFlags_NoHeaderWidth); | ||||
|     ImGui::CheckboxFlags("_PreferSortAscending", p_flags, ImGuiTableColumnFlags_PreferSortAscending); | ||||
|     ImGui::CheckboxFlags("_PreferSortDescending", p_flags, ImGuiTableColumnFlags_PreferSortDescending); | ||||
|   | ||||
| @@ -2285,10 +2285,11 @@ struct ImGuiTableColumn | ||||
|     ImGuiTableColumnIdx     NextEnabledColumn;              // Index of next enabled/visible column within Columns[], -1 if last enabled/visible column | ||||
|     ImGuiTableColumnIdx     SortOrder;                      // Index of this column within sort specs, -1 if not sorting on this column, 0 for single-sort, may be >0 on multi-sort | ||||
|     ImGuiTableDrawChannelIdx DrawChannelCurrent;            // Index within DrawSplitter.Channels[] | ||||
|     ImGuiTableDrawChannelIdx DrawChannelFrozen; | ||||
|     ImGuiTableDrawChannelIdx DrawChannelUnfrozen; | ||||
|     bool                    IsEnabled;                      // Is the column not marked Hidden by the user? (even if off view, e.g. clipped by scrolling). | ||||
|     bool                    IsEnabledNextFrame; | ||||
|     ImGuiTableDrawChannelIdx DrawChannelFrozen;             // Draw channels for frozen rows (often headers) | ||||
|     ImGuiTableDrawChannelIdx DrawChannelUnfrozen;           // Draw channels for unfrozen rows | ||||
|     bool                    IsEnabled;                      // IsUserEnabled && (Flags & ImGuiTableColumnFlags_Disabled) == 0 | ||||
|     bool                    IsUserEnabled;                  // Is the column not marked Hidden by the user? (unrelated to being off view, e.g. clipped by scrolling). | ||||
|     bool                    IsUserEnabledNextFrame; | ||||
|     bool                    IsVisibleX;                     // Is actually in view (e.g. overlapping the host window clipping rectangle, not scrolled). | ||||
|     bool                    IsVisibleY; | ||||
|     bool                    IsRequestOutput;                // Return value for TableSetColumnIndex() / TableNextColumn(): whether we request user to output contents or not. | ||||
|   | ||||
| @@ -517,7 +517,7 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG | ||||
|                 *column = ImGuiTableColumn(); | ||||
|                 column->WidthAuto = width_auto; | ||||
|                 column->IsPreserveWidthAuto = true; // Preserve WidthAuto when reinitializing a live table: not technically necessary but remove a visible flicker | ||||
|                 column->IsEnabled = column->IsEnabledNextFrame = true; | ||||
|                 column->IsEnabled = column->IsUserEnabled = column->IsUserEnabledNextFrame = true; | ||||
|             } | ||||
|             column->DisplayOrder = table->DisplayOrderToIndex[n] = (ImGuiTableColumnIdx)n; | ||||
|         } | ||||
| @@ -751,16 +751,18 @@ void ImGui::TableUpdateLayout(ImGuiTable* table) | ||||
|             column->InitStretchWeightOrWidth = -1.0f; | ||||
|         } | ||||
|  | ||||
|         // Update Enabled state, mark settings/sortspecs dirty | ||||
|         // Update Enabled state, mark settings and sort specs dirty | ||||
|         if (!(table->Flags & ImGuiTableFlags_Hideable) || (column->Flags & ImGuiTableColumnFlags_NoHide)) | ||||
|             column->IsEnabledNextFrame = true; | ||||
|         if (column->IsEnabled != column->IsEnabledNextFrame) | ||||
|             column->IsUserEnabledNextFrame = true; | ||||
|         if (column->IsUserEnabled != column->IsUserEnabledNextFrame) | ||||
|         { | ||||
|             column->IsEnabled = column->IsEnabledNextFrame; | ||||
|             column->IsUserEnabled = column->IsUserEnabledNextFrame; | ||||
|             table->IsSettingsDirty = true; | ||||
|             if (!column->IsEnabled && column->SortOrder != -1) | ||||
|                 table->IsSortSpecsDirty = true; | ||||
|         } | ||||
|         column->IsEnabled = column->IsUserEnabled && (column->Flags & ImGuiTableColumnFlags_Disabled) == 0; | ||||
|  | ||||
|         if (column->SortOrder != -1 && !column->IsEnabled) | ||||
|             table->IsSortSpecsDirty = true; | ||||
|         if (column->SortOrder > 0 && !(table->Flags & ImGuiTableFlags_SortMulti)) | ||||
|             table->IsSortSpecsDirty = true; | ||||
|  | ||||
| @@ -1159,9 +1161,8 @@ void ImGui::TableUpdateBorders(ImGuiTable* table) | ||||
|         if ((table->Flags & ImGuiTableFlags_NoBordersInBody) && table->IsUsingHeaders == false) | ||||
|             continue; | ||||
|  | ||||
|         if (table->FreezeColumnsCount > 0) | ||||
|             if (column->MaxX < table->Columns[table->DisplayOrderToIndex[table->FreezeColumnsCount - 1]].MaxX) | ||||
|                 continue; | ||||
|         if (!column->IsVisibleX && table->LastResizedColumn != column_n) | ||||
|             continue; | ||||
|  | ||||
|         ImGuiID column_id = TableGetColumnResizeID(table, column_n, table->InstanceCurrent); | ||||
|         ImRect hit_rect(column->MaxX - hit_half_width, hit_y1, column->MaxX + hit_half_width, border_y2_hit); | ||||
| @@ -1444,7 +1445,7 @@ void ImGui::TableSetupColumn(const char* label, ImGuiTableColumnFlags flags, flo | ||||
|  | ||||
|         // Init default visibility/sort state | ||||
|         if ((flags & ImGuiTableColumnFlags_DefaultHide) && (table->SettingsLoadedFlags & ImGuiTableFlags_Hideable) == 0) | ||||
|             column->IsEnabled = column->IsEnabledNextFrame = false; | ||||
|             column->IsUserEnabled = column->IsUserEnabledNextFrame = false; | ||||
|         if (flags & ImGuiTableColumnFlags_DefaultSort && (table->SettingsLoadedFlags & ImGuiTableFlags_Sortable) == 0) | ||||
|         { | ||||
|             column->SortOrder = 0; // Multiple columns using _DefaultSort will be reassigned unique SortOrder values when building the sort specs. | ||||
| @@ -1471,11 +1472,22 @@ void ImGui::TableSetupScrollFreeze(int columns, int rows) | ||||
|     IM_ASSERT(columns >= 0 && columns < IMGUI_TABLE_MAX_COLUMNS); | ||||
|     IM_ASSERT(rows >= 0 && rows < 128); // Arbitrary limit | ||||
|  | ||||
|     table->FreezeColumnsRequest = (table->Flags & ImGuiTableFlags_ScrollX) ? (ImGuiTableColumnIdx)columns : 0; | ||||
|     table->FreezeColumnsRequest = (table->Flags & ImGuiTableFlags_ScrollX) ? (ImGuiTableColumnIdx)ImMin(columns, table->ColumnsCount) : 0; | ||||
|     table->FreezeColumnsCount = (table->InnerWindow->Scroll.x != 0.0f) ? table->FreezeColumnsRequest : 0; | ||||
|     table->FreezeRowsRequest = (table->Flags & ImGuiTableFlags_ScrollY) ? (ImGuiTableColumnIdx)rows : 0; | ||||
|     table->FreezeRowsCount = (table->InnerWindow->Scroll.y != 0.0f) ? table->FreezeRowsRequest : 0; | ||||
|     table->IsUnfrozenRows = (table->FreezeRowsCount == 0); // Make sure this is set before TableUpdateLayout() so ImGuiListClipper can benefit from it.b | ||||
|  | ||||
|     // Ensure frozen columns are ordered in their section. We still allow multiple frozen columns to be reordered. | ||||
|     for (int column_n = 0; column_n < table->FreezeColumnsRequest; column_n++) | ||||
|     { | ||||
|         int order_n = table->DisplayOrderToIndex[column_n]; | ||||
|         if (order_n != column_n && order_n >= table->FreezeColumnsRequest) | ||||
|         { | ||||
|             ImSwap(table->Columns[table->DisplayOrderToIndex[order_n]].DisplayOrder, table->Columns[table->DisplayOrderToIndex[column_n]].DisplayOrder); | ||||
|             ImSwap(table->DisplayOrderToIndex[order_n], table->DisplayOrderToIndex[column_n]); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| @@ -1484,7 +1496,7 @@ void ImGui::TableSetupScrollFreeze(int columns, int rows) | ||||
| // - TableGetColumnCount() | ||||
| // - TableGetColumnName() | ||||
| // - TableGetColumnName() [Internal] | ||||
| // - TableSetColumnEnabled() [Internal] | ||||
| // - TableSetColumnEnabled() | ||||
| // - TableGetColumnFlags() | ||||
| // - TableGetCellBgRect() [Internal] | ||||
| // - TableGetColumnResizeID() [Internal] | ||||
| @@ -1520,10 +1532,12 @@ const char* ImGui::TableGetColumnName(const ImGuiTable* table, int column_n) | ||||
|     return &table->ColumnsNames.Buf[column->NameOffset]; | ||||
| } | ||||
|  | ||||
| // Request enabling/disabling a column (often perceived as "showing/hiding" from users point of view) | ||||
| // Change user accessible enabled/disabled state of a column (often perceived as "showing/hiding" from users point of view) | ||||
| // Note that end-user can use the context menu to change this themselves (right-click in headers, or right-click in columns body with ImGuiTableFlags_ContextMenuInBody) | ||||
| // Request will be applied during next layout, which happens on the first call to TableNextRow() after BeginTable() | ||||
| // For the getter you can use (TableGetColumnFlags() & ImGuiTableColumnFlags_IsEnabled) | ||||
| // - Require table to have the ImGuiTableFlags_Hideable flag because we are manipulating user accessible state. | ||||
| // - Request will be applied during next layout, which happens on the first call to TableNextRow() after BeginTable(). | ||||
| // - For the getter you can test (TableGetColumnFlags() & ImGuiTableColumnFlags_IsEnabled) != 0. | ||||
| // - Alternative: the ImGuiTableColumnFlags_Disabled is an overriding/master disable flag which will also hide the column from context menu. | ||||
| void ImGui::TableSetColumnEnabled(int column_n, bool enabled) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
| @@ -1531,11 +1545,12 @@ void ImGui::TableSetColumnEnabled(int column_n, bool enabled) | ||||
|     IM_ASSERT(table != NULL); | ||||
|     if (!table) | ||||
|         return; | ||||
|     IM_ASSERT(table->Flags & ImGuiTableFlags_Hideable); // See comments above | ||||
|     if (column_n < 0) | ||||
|         column_n = table->CurrentColumn; | ||||
|     IM_ASSERT(column_n >= 0 && column_n < table->ColumnsCount); | ||||
|     ImGuiTableColumn* column = &table->Columns[column_n]; | ||||
|     column->IsEnabledNextFrame = enabled; | ||||
|     column->IsUserEnabledNextFrame = enabled; | ||||
| } | ||||
|  | ||||
| // We allow querying for an extra column in order to poll the IsHovered state of the right-most section | ||||
| @@ -2008,6 +2023,7 @@ float ImGui::TableGetMaxColumnWidth(const ImGuiTable* table, int column_n) | ||||
|     if (table->Flags & ImGuiTableFlags_ScrollX) | ||||
|     { | ||||
|         // Frozen columns can't reach beyond visible width else scrolling will naturally break. | ||||
|         // (we use DisplayOrder as within a set of multiple frozen column reordering is possible) | ||||
|         if (column->DisplayOrder < table->FreezeColumnsRequest) | ||||
|         { | ||||
|             max_width = (table->InnerClipRect.Max.x - (table->FreezeColumnsRequest - column->DisplayOrder) * min_column_distance) - column->MinX; | ||||
| @@ -2496,7 +2512,7 @@ void ImGui::TableDrawBorders(ImGuiTable* table) | ||||
|             const bool is_hovered = (table->HoveredColumnBorder == column_n); | ||||
|             const bool is_resized = (table->ResizedColumn == column_n) && (table->InstanceInteracted == table->InstanceCurrent); | ||||
|             const bool is_resizable = (column->Flags & (ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_NoDirectResize_)) == 0; | ||||
|             const bool is_frozen_separator = (table->FreezeColumnsCount != -1 && table->FreezeColumnsCount == order_n + 1); | ||||
|             const bool is_frozen_separator = (table->FreezeColumnsCount == order_n + 1); | ||||
|             if (column->MaxX > table->InnerClipRect.Max.x && !is_resized) | ||||
|                 continue; | ||||
|  | ||||
| @@ -2775,8 +2791,11 @@ float ImGui::TableGetHeaderRowHeight() | ||||
|     float row_height = GetTextLineHeight(); | ||||
|     int columns_count = TableGetColumnCount(); | ||||
|     for (int column_n = 0; column_n < columns_count; column_n++) | ||||
|         if (TableGetColumnFlags(column_n) & ImGuiTableColumnFlags_IsEnabled) | ||||
|     { | ||||
|         ImGuiTableColumnFlags flags = TableGetColumnFlags(column_n); | ||||
|         if ((flags & ImGuiTableColumnFlags_IsEnabled) && !(flags & ImGuiTableColumnFlags_NoHeaderLabel)) | ||||
|             row_height = ImMax(row_height, CalcTextSize(TableGetColumnName(column_n)).y); | ||||
|     } | ||||
|     row_height += GetStyle().CellPadding.y * 2.0f; | ||||
|     return row_height; | ||||
| } | ||||
| @@ -2813,7 +2832,7 @@ void ImGui::TableHeadersRow() | ||||
|         // Push an id to allow unnamed labels (generally accidental, but let's behave nicely with them) | ||||
|         // - in your own code you may omit the PushID/PopID all-together, provided you know they won't collide | ||||
|         // - table->InstanceCurrent is only >0 when we use multiple BeginTable/EndTable calls with same identifier. | ||||
|         const char* name = TableGetColumnName(column_n); | ||||
|         const char* name = (TableGetColumnFlags(column_n) & ImGuiTableColumnFlags_NoHeaderLabel) ? "" : TableGetColumnName(column_n); | ||||
|         PushID(table->InstanceCurrent * table->ColumnsCount + column_n); | ||||
|         TableHeader(name); | ||||
|         PopID(); | ||||
| @@ -3068,16 +3087,19 @@ void ImGui::TableDrawContextMenu(ImGuiTable* table) | ||||
|         for (int other_column_n = 0; other_column_n < table->ColumnsCount; other_column_n++) | ||||
|         { | ||||
|             ImGuiTableColumn* other_column = &table->Columns[other_column_n]; | ||||
|             if (other_column->Flags & ImGuiTableColumnFlags_Disabled) | ||||
|                 continue; | ||||
|  | ||||
|             const char* name = TableGetColumnName(table, other_column_n); | ||||
|             if (name == NULL || name[0] == 0) | ||||
|                 name = "<Unknown>"; | ||||
|  | ||||
|             // Make sure we can't hide the last active column | ||||
|             bool menu_item_active = (other_column->Flags & ImGuiTableColumnFlags_NoHide) ? false : true; | ||||
|             if (other_column->IsEnabled && table->ColumnsEnabledCount <= 1) | ||||
|             if (other_column->IsUserEnabled && table->ColumnsEnabledCount <= 1) | ||||
|                 menu_item_active = false; | ||||
|             if (MenuItem(name, NULL, other_column->IsEnabled, menu_item_active)) | ||||
|                 other_column->IsEnabledNextFrame = !other_column->IsEnabled; | ||||
|             if (MenuItem(name, NULL, other_column->IsUserEnabled, menu_item_active)) | ||||
|                 other_column->IsUserEnabledNextFrame = !other_column->IsUserEnabled; | ||||
|         } | ||||
|         PopItemFlag(); | ||||
|     } | ||||
| @@ -3202,7 +3224,7 @@ void ImGui::TableSaveSettings(ImGuiTable* table) | ||||
|         column_settings->DisplayOrder = column->DisplayOrder; | ||||
|         column_settings->SortOrder = column->SortOrder; | ||||
|         column_settings->SortDirection = column->SortDirection; | ||||
|         column_settings->IsEnabled = column->IsEnabled; | ||||
|         column_settings->IsEnabled = column->IsUserEnabled; | ||||
|         column_settings->IsStretch = (column->Flags & ImGuiTableColumnFlags_WidthStretch) ? 1 : 0; | ||||
|         if ((column->Flags & ImGuiTableColumnFlags_WidthStretch) == 0) | ||||
|             save_ref_scale = true; | ||||
| @@ -3216,7 +3238,7 @@ void ImGui::TableSaveSettings(ImGuiTable* table) | ||||
|             settings->SaveFlags |= ImGuiTableFlags_Reorderable; | ||||
|         if (column->SortOrder != -1) | ||||
|             settings->SaveFlags |= ImGuiTableFlags_Sortable; | ||||
|         if (column->IsEnabled != ((column->Flags & ImGuiTableColumnFlags_DefaultHide) == 0)) | ||||
|         if (column->IsUserEnabled != ((column->Flags & ImGuiTableColumnFlags_DefaultHide) == 0)) | ||||
|             settings->SaveFlags |= ImGuiTableFlags_Hideable; | ||||
|     } | ||||
|     settings->SaveFlags &= table->Flags; | ||||
| @@ -3274,7 +3296,7 @@ void ImGui::TableLoadSettings(ImGuiTable* table) | ||||
|         else | ||||
|             column->DisplayOrder = (ImGuiTableColumnIdx)column_n; | ||||
|         display_order_mask |= (ImU64)1 << column->DisplayOrder; | ||||
|         column->IsEnabled = column->IsEnabledNextFrame = column_settings->IsEnabled; | ||||
|         column->IsUserEnabled = column->IsUserEnabledNextFrame = column_settings->IsEnabled; | ||||
|         column->SortOrder = column_settings->SortOrder; | ||||
|         column->SortDirection = column_settings->SortDirection; | ||||
|     } | ||||
|   | ||||
| @@ -5,7 +5,7 @@ Build font atlases using FreeType instead of stb_truetype (which is the default | ||||
|  | ||||
| ### Usage | ||||
|  | ||||
| 1. Get latest FreeType binaries or build yourself (under Windows you may use vcpkg with `vcpkg install freetype`, `vcpkg integrate install`). | ||||
| 1. Get latest FreeType binaries or build yourself (under Windows you may use vcpkg with `vcpkg install freetype --triplet=x64-windows`, `vcpkg integrate install`). | ||||
| 2. Add imgui_freetype.h/cpp alongside your project files. | ||||
| 3. Add `#define IMGUI_ENABLE_FREETYPE` in your [imconfig.h](https://github.com/ocornut/imgui/blob/master/imconfig.h) file | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user