mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Merge branch 'master' into viewport
# Conflicts: # examples/imgui_impl_opengl3.cpp # imgui.cpp # imgui.h # imgui_draw.cpp # imgui_internal.h
This commit is contained in:
		@@ -51,15 +51,19 @@ Other Changes:
 | 
			
		||||
 - Drag and Drop: Fixed ImGuiDragDropFlags_SourceNoDisableHover to affect hovering state prior to calling IsItemHovered() + fixed description. (#143)
 | 
			
		||||
 - Drag and Drop: Calling BeginTooltip() between a BeginDragSource()/EndDragSource() or BeginDropTarget()/EndDropTarget() uses adjusted tooltip
 | 
			
		||||
   settings matching the one created when calling BeginDragSource() without the ImGuiDragDropFlags_SourceNoPreviewTooltip flag. (#143)
 | 
			
		||||
 - IsItemHovered(): Added ImGuiHoveredFlags_AllowWhenDisabled flag to query hovered status on disabled items. (#1940, #211)
 | 
			
		||||
 - Misc: Added ImGuiMouseCursor_Hand cursor enum + corresponding software cursor. (#1913, 1914) [@aiekick, @ocornut] 
 | 
			
		||||
 - Misc: Tweaked software mouse cursor offset to match the offset of the corresponding Windows 10 cursors.
 | 
			
		||||
 - Fixed a include build issue for Cygwin in non-POSIX (Win32) mode. (#1917, #1319, #276)
 | 
			
		||||
 - Windows: Fixed missing ImmReleaseContext() call in the default Win32 IME handler. (#1932) [@vby]
 | 
			
		||||
 - OS/Windows: Fixed missing ImmReleaseContext() call in the default Win32 IME handler. (#1932) [@vby]
 | 
			
		||||
 - Demo: Added basic Drag and Drop demo. (#143)
 | 
			
		||||
 - Examples: Metal: Added Metal rendering backend. (#1929, #1873) [@warrenm]
 | 
			
		||||
 - Examples: OSX: Added early raw OSX platform backend. (#1873) [@pagghiu, @itamago, @ocornut]
 | 
			
		||||
 - Examples: Added mac OSX & iOS + Metal example in example_apple_metal/. (#1929, #1873) [@warrenm]
 | 
			
		||||
 - Examples: Added mac OSX + OpenGL2 example in example_apple_opengl2/. (#1873)
 | 
			
		||||
 - Examples: OpenGL3: Added shaders more versions of GLSL. (#1938, #1900, #1513, #1466, etc.) 
 | 
			
		||||
 - Examples: OpenGL3: Made the example app default to GL 3.0 + GLSL 130 (instead of GL 3.2 + GLSL 150) unless on Mac.
 | 
			
		||||
 - Examples: OpenGL3: Added error output when shaders fail to compile/link.
 | 
			
		||||
 - Examples: Win32, Glfw, SDL: Added support for the ImGuiMouseCursor_Hand cursor.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -761,9 +765,9 @@ Other Changes:
 | 
			
		||||
- Clipboard: Added a void* user_data parameter to Clipboard function handlers. (#875) (BREAKING API)
 | 
			
		||||
- Internals: Refactor internal text alignment options to use ImVec2, removed ImGuiAlign. (#842, #222)
 | 
			
		||||
- Internals: Renamed ImLoadFileToMemory to ImFileLoadToMemory to be consistent with ImFileOpen + fix mismatching .h name. (#917)
 | 
			
		||||
- Windows: Fixed Windows default clipboard handler leaving its buffer unfreed on application's exit. (#714)
 | 
			
		||||
- Windows: No default IME handler when compiling for Windows using GCC. (#738)
 | 
			
		||||
- Windows: Now using _wfopen() instead of fopen() to allow passing in paths/filenames with UTF-8 characters. (#917)
 | 
			
		||||
- OS/Windows: Fixed Windows default clipboard handler leaving its buffer unfreed on application's exit. (#714)
 | 
			
		||||
- OS/Windows: No default IME handler when compiling for Windows using GCC. (#738)
 | 
			
		||||
- OS/Windows: Now using _wfopen() instead of fopen() to allow passing in paths/filenames with UTF-8 characters. (#917)
 | 
			
		||||
- Tools: binary_to_compressed_c: Avoid ?? trigraphs sequences in string outputs which break some older compilers. (#839)
 | 
			
		||||
- Demo: Added an extra 3-way columns demo.
 | 
			
		||||
- Demo: ShowStyleEditor: show font character map / grid in more details.
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,8 @@ int main(int, char**)
 | 
			
		||||
    if (!glfwInit())
 | 
			
		||||
        return 1;
 | 
			
		||||
    GLFWwindow* window = glfwCreateWindow(1280, 720, "ImGui GLFW+OpenGL2 example", NULL, NULL);
 | 
			
		||||
    if (window == NULL)
 | 
			
		||||
        return 1;
 | 
			
		||||
    glfwMakeContextCurrent(window);
 | 
			
		||||
    glfwSwapInterval(1); // Enable vsync
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,13 +26,28 @@ int main(int, char**)
 | 
			
		||||
    glfwSetErrorCallback(glfw_error_callback);
 | 
			
		||||
    if (!glfwInit())
 | 
			
		||||
        return 1;
 | 
			
		||||
 | 
			
		||||
    // Decide GL+GLSL versions
 | 
			
		||||
#if __APPLE__
 | 
			
		||||
    // GL 3.2 + GLSL 150
 | 
			
		||||
    const char* glsl_version = "#version 150";
 | 
			
		||||
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
			
		||||
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
 | 
			
		||||
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
 | 
			
		||||
#if __APPLE__
 | 
			
		||||
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
 | 
			
		||||
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);  // 3.2+ only
 | 
			
		||||
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);            // Required on Mac
 | 
			
		||||
#else
 | 
			
		||||
    // GL 3.0 + GLSL 130
 | 
			
		||||
    const char* glsl_version = "#version 130";
 | 
			
		||||
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
			
		||||
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
 | 
			
		||||
    //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);  // 3.2+ only
 | 
			
		||||
    //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);            // 3.0+ only
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // Create window with graphics context
 | 
			
		||||
    GLFWwindow* window = glfwCreateWindow(1280, 720, "ImGui GLFW+OpenGL3 example", NULL, NULL);
 | 
			
		||||
    if (window == NULL)
 | 
			
		||||
        return 1;
 | 
			
		||||
    glfwMakeContextCurrent(window);
 | 
			
		||||
    glfwSwapInterval(1); // Enable vsync
 | 
			
		||||
    gl3wInit();
 | 
			
		||||
@@ -48,7 +63,7 @@ int main(int, char**)
 | 
			
		||||
    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;   // Enable Gamepad Controls
 | 
			
		||||
 | 
			
		||||
    ImGui_ImplGlfw_InitForOpenGL(window, true);
 | 
			
		||||
    ImGui_ImplOpenGL3_Init();
 | 
			
		||||
    ImGui_ImplOpenGL3_Init(glsl_version);
 | 
			
		||||
 | 
			
		||||
    // Setup style
 | 
			
		||||
    ImGui::GetStyle().WindowRounding = 0.0f;
 | 
			
		||||
 
 | 
			
		||||
@@ -23,14 +23,27 @@ int main(int, char**)
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Setup window
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
 | 
			
		||||
    // Decide GL+GLSL versions
 | 
			
		||||
#if __APPLE__
 | 
			
		||||
    // GL 3.2 Core + GLSL 150
 | 
			
		||||
    const char* glsl_version = "#version 150";
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG); // Always required on Mac
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
 | 
			
		||||
#else
 | 
			
		||||
    // GL 3.0 + GLSL 130
 | 
			
		||||
    const char* glsl_version = "#version 130";
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // Create window with graphics context
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
 | 
			
		||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
 | 
			
		||||
    SDL_DisplayMode current;
 | 
			
		||||
    SDL_GetCurrentDisplayMode(0, ¤t);
 | 
			
		||||
    SDL_Window* window = SDL_CreateWindow("ImGui SDL2+OpenGL3 example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
 | 
			
		||||
@@ -47,7 +60,7 @@ int main(int, char**)
 | 
			
		||||
    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;  // Enable Keyboard Controls
 | 
			
		||||
 | 
			
		||||
    ImGui_ImplSDL2_InitForOpenGL(window, gl_context);
 | 
			
		||||
    ImGui_ImplOpenGL3_Init();
 | 
			
		||||
    ImGui_ImplOpenGL3_Init(glsl_version);
 | 
			
		||||
 | 
			
		||||
    // Setup style
 | 
			
		||||
    ImGui::StyleColorsDark();
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,11 @@
 | 
			
		||||
 | 
			
		||||
#include "imgui.h"
 | 
			
		||||
#include "imgui_impl_opengl2.h"
 | 
			
		||||
#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier
 | 
			
		||||
#include <stddef.h>     // intptr_t
 | 
			
		||||
#else
 | 
			
		||||
#include <stdint.h>     // intptr_t
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Include OpenGL header (without an OpenGL loader) requires a bit of fiddling
 | 
			
		||||
#if defined(_WIN32) && !defined(APIENTRY)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@
 | 
			
		||||
// CHANGELOG 
 | 
			
		||||
// (minor and older changes stripped away, please see git history for details)
 | 
			
		||||
//  2018-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface.
 | 
			
		||||
//  2018-07-10: OpenGL: Support for more GLSL versions (based on the GLSL version string). Added error output when shaders fail to compile/link.
 | 
			
		||||
//  2018-06-08: Misc: Extracted imgui_impl_opengl3.cpp/.h away from the old combined GLFW/SDL+OpenGL3 examples.
 | 
			
		||||
//  2018-06-08: OpenGL: Use draw_data->DisplayPos and draw_data->DisplaySize to setup projection matrix and clipping rectangle.
 | 
			
		||||
//  2018-05-25: OpenGL: Removed unnecessary backup/restore of GL_ELEMENT_ARRAY_BUFFER_BINDING since this is part of the VAO state.
 | 
			
		||||
@@ -27,12 +28,36 @@
 | 
			
		||||
//  2016-09-05: OpenGL: Fixed save and restore of current scissor rectangle.
 | 
			
		||||
//  2016-07-29: OpenGL: Explicitly setting GL_UNPACK_ROW_LENGTH to reduce issues because SDL changes it. (#752)
 | 
			
		||||
 | 
			
		||||
//----------------------------------------
 | 
			
		||||
// OpenGL    GLSL      GLSL
 | 
			
		||||
// version   version   string
 | 
			
		||||
//----------------------------------------
 | 
			
		||||
//  2.0       110       "#version 110"
 | 
			
		||||
//  2.1       120
 | 
			
		||||
//  3.0       130
 | 
			
		||||
//  3.1       140
 | 
			
		||||
//  3.2       150       "#version 150"
 | 
			
		||||
//  3.3       330
 | 
			
		||||
//  4.0       400
 | 
			
		||||
//  4.1       410
 | 
			
		||||
//  4.2       420
 | 
			
		||||
//  4.3       430
 | 
			
		||||
//  ES 2.0    100       "#version 100"
 | 
			
		||||
//  ES 3.0    300       "#version 300 es"
 | 
			
		||||
//----------------------------------------
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS)
 | 
			
		||||
#define _CRT_SECURE_NO_WARNINGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "imgui.h"
 | 
			
		||||
#include "imgui_impl_opengl3.h"
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier
 | 
			
		||||
#include <stddef.h>     // intptr_t
 | 
			
		||||
#else
 | 
			
		||||
#include <stdint.h>     // intptr_t
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <GL/gl3w.h>    // This example is using gl3w to access OpenGL functions. You may use another OpenGL loader/header such as: glew, glext, glad, glLoadGen, etc.
 | 
			
		||||
//#include <glew.h>
 | 
			
		||||
@@ -40,9 +65,9 @@
 | 
			
		||||
//#include <glad/glad.h>
 | 
			
		||||
 | 
			
		||||
// OpenGL Data
 | 
			
		||||
static char         g_GlslVersion[32] = "";
 | 
			
		||||
static char         g_GlslVersionString[32] = "";
 | 
			
		||||
static GLuint       g_FontTexture = 0;
 | 
			
		||||
static int          g_ShaderHandle = 0, g_VertHandle = 0, g_FragHandle = 0;
 | 
			
		||||
static GLuint       g_ShaderHandle = 0, g_VertHandle = 0, g_FragHandle = 0;
 | 
			
		||||
static int          g_AttribLocationTex = 0, g_AttribLocationProjMtx = 0;
 | 
			
		||||
static int          g_AttribLocationPosition = 0, g_AttribLocationUV = 0, g_AttribLocationColor = 0;
 | 
			
		||||
static unsigned int g_VboHandle = 0, g_ElementsHandle = 0;
 | 
			
		||||
@@ -56,10 +81,10 @@ bool    ImGui_ImplOpenGL3_Init(const char* glsl_version)
 | 
			
		||||
{
 | 
			
		||||
    // Store GLSL version string so we can refer to it later in case we recreate shaders. Note: GLSL version is NOT the same as GL version. Leave this to NULL if unsure.
 | 
			
		||||
    if (glsl_version == NULL)
 | 
			
		||||
        glsl_version = "#version 150";
 | 
			
		||||
    IM_ASSERT((int)strlen(glsl_version) + 2 < IM_ARRAYSIZE(g_GlslVersion));
 | 
			
		||||
    strcpy(g_GlslVersion, glsl_version);
 | 
			
		||||
    strcat(g_GlslVersion, "\n");
 | 
			
		||||
        glsl_version = "#version 130";
 | 
			
		||||
    IM_ASSERT((int)strlen(glsl_version) + 2 < IM_ARRAYSIZE(g_GlslVersionString));
 | 
			
		||||
    strcpy(g_GlslVersionString, glsl_version);
 | 
			
		||||
    strcat(g_GlslVersionString, "\n");
 | 
			
		||||
 | 
			
		||||
    // Setup back-end capabilities flags
 | 
			
		||||
    ImGuiIO& io = ImGui::GetIO();
 | 
			
		||||
@@ -253,6 +278,42 @@ void ImGui_ImplOpenGL3_DestroyFontsTexture()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// If you get an error please report on github. You may try different GL context version or GLSL version.
 | 
			
		||||
static bool CheckShader(GLuint handle, const char* desc)
 | 
			
		||||
{
 | 
			
		||||
    GLint status = 0, log_length = 0;
 | 
			
		||||
    glGetShaderiv(handle, GL_COMPILE_STATUS, &status);
 | 
			
		||||
    glGetShaderiv(handle, GL_INFO_LOG_LENGTH, &log_length);
 | 
			
		||||
    if (status == GL_FALSE)
 | 
			
		||||
        fprintf(stderr, "ERROR: ImGui_ImplOpenGL3_CreateDeviceObjects: failed to compile %s!\n", desc);
 | 
			
		||||
    if (log_length > 0)
 | 
			
		||||
    {
 | 
			
		||||
        ImVector<char> buf;
 | 
			
		||||
        buf.resize((int)(log_length + 1));
 | 
			
		||||
        glGetShaderInfoLog(handle, log_length, NULL, (GLchar*)buf.begin());
 | 
			
		||||
        fprintf(stderr, "%s\n", buf.begin());
 | 
			
		||||
    }
 | 
			
		||||
    return status == GL_TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// If you get an error please report on github. You may try different GL context version or GLSL version.
 | 
			
		||||
static bool CheckProgram(GLuint handle, const char* desc)
 | 
			
		||||
{
 | 
			
		||||
    GLint status = 0, log_length = 0;
 | 
			
		||||
    glGetProgramiv(handle, GL_LINK_STATUS, &status);
 | 
			
		||||
    glGetProgramiv(handle, GL_INFO_LOG_LENGTH, &log_length);
 | 
			
		||||
    if (status == GL_FALSE)
 | 
			
		||||
        fprintf(stderr, "ERROR: ImGui_ImplOpenGL3_CreateDeviceObjects: failed to link %s!\n", desc);
 | 
			
		||||
    if (log_length > 0)
 | 
			
		||||
    {
 | 
			
		||||
        ImVector<char> buf;
 | 
			
		||||
        buf.resize((int)(log_length + 1));
 | 
			
		||||
        glGetProgramInfoLog(handle, log_length, NULL, (GLchar*)buf.begin());
 | 
			
		||||
        fprintf(stderr, "%s\n", buf.begin());
 | 
			
		||||
    }
 | 
			
		||||
    return status == GL_TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool    ImGui_ImplOpenGL3_CreateDeviceObjects()
 | 
			
		||||
{
 | 
			
		||||
    // Backup GL state
 | 
			
		||||
@@ -261,8 +322,25 @@ bool    ImGui_ImplOpenGL3_CreateDeviceObjects()
 | 
			
		||||
    glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &last_array_buffer);
 | 
			
		||||
    glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &last_vertex_array);
 | 
			
		||||
 | 
			
		||||
    // Create shaders
 | 
			
		||||
    const GLchar *vertex_shader =
 | 
			
		||||
    // Parse GLSL version string
 | 
			
		||||
    int glsl_version = 130;
 | 
			
		||||
    sscanf(g_GlslVersionString, "#version %d", &glsl_version);
 | 
			
		||||
 | 
			
		||||
    const GLchar* vertex_shader_glsl_120 =
 | 
			
		||||
        "uniform mat4 ProjMtx;\n"
 | 
			
		||||
        "attribute vec2 Position;\n"
 | 
			
		||||
        "attribute vec2 UV;\n"
 | 
			
		||||
        "attribute vec4 Color;\n"
 | 
			
		||||
        "varying vec2 Frag_UV;\n"
 | 
			
		||||
        "varying vec4 Frag_Color;\n"
 | 
			
		||||
        "void main()\n"
 | 
			
		||||
        "{\n"
 | 
			
		||||
        "    Frag_UV = UV;\n"
 | 
			
		||||
        "    Frag_Color = Color;\n"
 | 
			
		||||
        "    gl_Position = ProjMtx * vec4(Position.xy,0,1);\n"
 | 
			
		||||
        "}\n";
 | 
			
		||||
 | 
			
		||||
    const GLchar* vertex_shader_glsl_130 =
 | 
			
		||||
        "uniform mat4 ProjMtx;\n"
 | 
			
		||||
        "in vec2 Position;\n"
 | 
			
		||||
        "in vec2 UV;\n"
 | 
			
		||||
@@ -276,7 +354,19 @@ bool    ImGui_ImplOpenGL3_CreateDeviceObjects()
 | 
			
		||||
        "    gl_Position = ProjMtx * vec4(Position.xy,0,1);\n"
 | 
			
		||||
        "}\n";
 | 
			
		||||
 | 
			
		||||
    const GLchar* fragment_shader =
 | 
			
		||||
    const GLchar* fragment_shader_glsl_120 =
 | 
			
		||||
        "#ifdef GL_ES\n"
 | 
			
		||||
        "    precision mediump float;\n"
 | 
			
		||||
        "#endif\n"
 | 
			
		||||
        "uniform sampler2D Texture;\n"
 | 
			
		||||
        "varying vec2 Frag_UV;\n"
 | 
			
		||||
        "varying vec4 Frag_Color;\n"
 | 
			
		||||
        "void main()\n"
 | 
			
		||||
        "{\n"
 | 
			
		||||
        "    gl_FragColor = Frag_Color * texture2D(Texture, Frag_UV.st);\n"
 | 
			
		||||
        "}\n";
 | 
			
		||||
 | 
			
		||||
    const GLchar* fragment_shader_glsl_130 =
 | 
			
		||||
        "uniform sampler2D Texture;\n"
 | 
			
		||||
        "in vec2 Frag_UV;\n"
 | 
			
		||||
        "in vec4 Frag_Color;\n"
 | 
			
		||||
@@ -286,19 +376,38 @@ bool    ImGui_ImplOpenGL3_CreateDeviceObjects()
 | 
			
		||||
        "    Out_Color = Frag_Color * texture(Texture, Frag_UV.st);\n"
 | 
			
		||||
        "}\n";
 | 
			
		||||
 | 
			
		||||
    const GLchar* vertex_shader_with_version[2] = { g_GlslVersion, vertex_shader };
 | 
			
		||||
    const GLchar* fragment_shader_with_version[2] = { g_GlslVersion, fragment_shader };
 | 
			
		||||
    // Select shaders matching our GLSL versions
 | 
			
		||||
    const GLchar* vertex_shader = NULL;
 | 
			
		||||
    const GLchar* fragment_shader = NULL;
 | 
			
		||||
    if (glsl_version < 130)
 | 
			
		||||
    {
 | 
			
		||||
        vertex_shader = vertex_shader_glsl_120;
 | 
			
		||||
        fragment_shader = fragment_shader_glsl_120;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        vertex_shader = vertex_shader_glsl_130;
 | 
			
		||||
        fragment_shader = fragment_shader_glsl_130;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Create shaders
 | 
			
		||||
    const GLchar* vertex_shader_with_version[2] = { g_GlslVersionString, vertex_shader };
 | 
			
		||||
    g_VertHandle = glCreateShader(GL_VERTEX_SHADER);
 | 
			
		||||
    glShaderSource(g_VertHandle, 2, vertex_shader_with_version, NULL);
 | 
			
		||||
    glCompileShader(g_VertHandle);
 | 
			
		||||
    CheckShader(g_VertHandle, "vertex shader");
 | 
			
		||||
 | 
			
		||||
    const GLchar* fragment_shader_with_version[2] = { g_GlslVersionString, fragment_shader };
 | 
			
		||||
    g_FragHandle = glCreateShader(GL_FRAGMENT_SHADER);
 | 
			
		||||
    glShaderSource(g_FragHandle, 2, fragment_shader_with_version, NULL);
 | 
			
		||||
    glCompileShader(g_FragHandle);
 | 
			
		||||
    CheckShader(g_FragHandle, "fragment shader");
 | 
			
		||||
 | 
			
		||||
    g_ShaderHandle = glCreateProgram();
 | 
			
		||||
    g_VertHandle = glCreateShader(GL_VERTEX_SHADER);
 | 
			
		||||
    g_FragHandle = glCreateShader(GL_FRAGMENT_SHADER);
 | 
			
		||||
    glShaderSource(g_VertHandle, 2, vertex_shader_with_version, NULL);
 | 
			
		||||
    glShaderSource(g_FragHandle, 2, fragment_shader_with_version, NULL);
 | 
			
		||||
    glCompileShader(g_VertHandle);
 | 
			
		||||
    glCompileShader(g_FragHandle);
 | 
			
		||||
    glAttachShader(g_ShaderHandle, g_VertHandle);
 | 
			
		||||
    glAttachShader(g_ShaderHandle, g_FragHandle);
 | 
			
		||||
    glLinkProgram(g_ShaderHandle);
 | 
			
		||||
    CheckProgram(g_ShaderHandle, "shader program");
 | 
			
		||||
 | 
			
		||||
    g_AttribLocationTex = glGetUniformLocation(g_ShaderHandle, "Texture");
 | 
			
		||||
    g_AttribLocationProjMtx = glGetUniformLocation(g_ShaderHandle, "ProjMtx");
 | 
			
		||||
@@ -306,6 +415,7 @@ bool    ImGui_ImplOpenGL3_CreateDeviceObjects()
 | 
			
		||||
    g_AttribLocationUV = glGetAttribLocation(g_ShaderHandle, "UV");
 | 
			
		||||
    g_AttribLocationColor = glGetAttribLocation(g_ShaderHandle, "Color");
 | 
			
		||||
 | 
			
		||||
    // Create buffers
 | 
			
		||||
    glGenBuffers(1, &g_VboHandle);
 | 
			
		||||
    glGenBuffers(1, &g_ElementsHandle);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,8 @@
 | 
			
		||||
// https://github.com/ocornut/imgui
 | 
			
		||||
 | 
			
		||||
// About GLSL version:
 | 
			
		||||
// The 'glsl_version' initialization parameter defaults to "#version 150" if NULL.
 | 
			
		||||
// Only override if your GL version doesn't handle this GLSL version. Keep NULL if unsure!
 | 
			
		||||
// The 'glsl_version' initialization parameter defaults to "#version 130" if NULL.
 | 
			
		||||
// Only override if your GL version doesn't handle this GLSL version (see table at the top of imgui_impl_opengl3.cpp). Keep NULL if unsure!
 | 
			
		||||
 | 
			
		||||
IMGUI_IMPL_API bool     ImGui_ImplOpenGL3_Init(const char* glsl_version = NULL);
 | 
			
		||||
IMGUI_IMPL_API void     ImGui_ImplOpenGL3_Shutdown();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -2721,7 +2721,7 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags)
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    // Test if the item is disabled
 | 
			
		||||
    if (window->DC.ItemFlags & ImGuiItemFlags_Disabled)
 | 
			
		||||
    if ((window->DC.ItemFlags & ImGuiItemFlags_Disabled) && !(flags & ImGuiHoveredFlags_AllowWhenDisabled))
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
    // Special handling for the 1st item after Begin() which represent the title bar. When the window is collapsed (SkipItems==true) that last item will never be overwritten so we need to detect tht case.
 | 
			
		||||
@@ -3251,12 +3251,12 @@ void ImGui::NavUpdateWindowingList()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (g.NavWindowingList == NULL)
 | 
			
		||||
        g.NavWindowingList = FindWindowByName("###NavWindowList");
 | 
			
		||||
        g.NavWindowingList = FindWindowByName("###NavWindowingList");
 | 
			
		||||
    ImGuiViewportP* viewport = /*g.NavWindow ? g.NavWindow->Viewport :*/ (ImGuiViewportP*)GetMainViewport();
 | 
			
		||||
    SetNextWindowSizeConstraints(ImVec2(viewport->Size.x * 0.20f, viewport->Size.y * 0.20f), ImVec2(FLT_MAX, FLT_MAX));
 | 
			
		||||
    SetNextWindowPos(viewport->Pos + viewport->Size * 0.5f, ImGuiCond_Always, ImVec2(0.5f, 0.5f));
 | 
			
		||||
    PushStyleVar(ImGuiStyleVar_WindowPadding, g.Style.WindowPadding * 2.0f);
 | 
			
		||||
    Begin("###NavWindowList", NULL, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoInputs | ImGuiWindowFlags_AlwaysAutoResize);
 | 
			
		||||
    Begin("###NavWindowingList", NULL, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoInputs | ImGuiWindowFlags_AlwaysAutoResize);
 | 
			
		||||
    for (int n = g.Windows.Size - 1; n >= 0; n--)
 | 
			
		||||
    {
 | 
			
		||||
        ImGuiWindow* window = g.Windows[n];
 | 
			
		||||
@@ -3684,7 +3684,21 @@ static void ImGui::UpdateTryMergeWindowIntoHostViewport(ImGuiWindow* window, ImG
 | 
			
		||||
    SetWindowViewport(window, viewport);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ImGui::UpdateMovingWindow()
 | 
			
		||||
void ImGui::StartMouseMovingWindow(ImGuiWindow* window)
 | 
			
		||||
{
 | 
			
		||||
    // Set ActiveId even if the _NoMove flag is set. Without it, dragging away from a window with _NoMove would activate hover on other windows.
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    FocusWindow(window);
 | 
			
		||||
    SetActiveID(window->MoveId, window);
 | 
			
		||||
    g.NavDisableHighlight = true;
 | 
			
		||||
    g.ActiveIdClickOffset = g.IO.MousePos - window->RootWindow->Pos;
 | 
			
		||||
    if (!(window->Flags & ImGuiWindowFlags_NoMove) && !(window->RootWindow->Flags & ImGuiWindowFlags_NoMove))
 | 
			
		||||
        g.MovingWindow = window;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Handle mouse moving window
 | 
			
		||||
// Note: moving window with the navigation keys (Square + d-pad / CTRL+TAB + Arrows) are processed in NavUpdateWindowing()
 | 
			
		||||
void ImGui::UpdateMouseMovingWindow()
 | 
			
		||||
{
 | 
			
		||||
    ImGuiContext& g = *GImGui;
 | 
			
		||||
    if (g.MovingWindow != NULL)
 | 
			
		||||
@@ -4342,7 +4356,7 @@ void ImGui::NewFrame()
 | 
			
		||||
    UpdateHoveredWindowAndCaptureFlags();
 | 
			
		||||
 | 
			
		||||
    // Handle user moving window with mouse (at the beginning of the frame to avoid input lag or sheering)
 | 
			
		||||
    UpdateMovingWindow();
 | 
			
		||||
    UpdateMouseMovingWindow();
 | 
			
		||||
 | 
			
		||||
    // Background darkening/whitening
 | 
			
		||||
    if (GetFrontMostPopupModal() != NULL || g.NavWindowingTarget != NULL)
 | 
			
		||||
@@ -4915,7 +4929,7 @@ void ImGui::EndFrame()
 | 
			
		||||
            if (g.NavWindowingTarget && viewport == g.NavWindowingTarget->Viewport)
 | 
			
		||||
                continue;
 | 
			
		||||
            ImDrawList* draw_list = GetOverlayDrawList(viewport);
 | 
			
		||||
            const ImU32 dim_bg_col = GetColorU32(dim_bg_for_modal ? ImGuiCol_ModalWindowDimBg : ImGuiCol_NavWindowListDimBg, g.DimBgRatio);
 | 
			
		||||
            const ImU32 dim_bg_col = GetColorU32(dim_bg_for_modal ? ImGuiCol_ModalWindowDimBg : ImGuiCol_NavWindowingDimBg, g.DimBgRatio);
 | 
			
		||||
            draw_list->AddRectFilled(viewport->Pos, viewport->Pos + viewport->Size, dim_bg_col);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -4937,20 +4951,9 @@ void ImGui::EndFrame()
 | 
			
		||||
            if (g.IO.MouseClicked[0])
 | 
			
		||||
            {
 | 
			
		||||
                if (g.HoveredRootWindow != NULL)
 | 
			
		||||
                {
 | 
			
		||||
                    // Set ActiveId even if the _NoMove flag is set, without it dragging away from a window with _NoMove would activate hover on other windows.
 | 
			
		||||
                    FocusWindow(g.HoveredWindow);
 | 
			
		||||
                    SetActiveID(g.HoveredWindow->MoveId, g.HoveredWindow);
 | 
			
		||||
                    g.NavDisableHighlight = true;
 | 
			
		||||
                    g.ActiveIdClickOffset = g.IO.MousePos - g.HoveredRootWindow->Pos;
 | 
			
		||||
                    if (!(g.HoveredWindow->Flags & ImGuiWindowFlags_NoMove) && !(g.HoveredRootWindow->Flags & ImGuiWindowFlags_NoMove))
 | 
			
		||||
                        g.MovingWindow = g.HoveredWindow;
 | 
			
		||||
                }
 | 
			
		||||
                    StartMouseMovingWindow(g.HoveredWindow);
 | 
			
		||||
                else if (g.NavWindow != NULL && GetFrontMostPopupModal() == NULL)
 | 
			
		||||
                {
 | 
			
		||||
                    // Clicking on void disable focus
 | 
			
		||||
                    FocusWindow(NULL);
 | 
			
		||||
                }
 | 
			
		||||
                    FocusWindow(NULL);  // Clicking on void disable focus
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // With right mouse button we close popups without changing focus
 | 
			
		||||
@@ -7410,7 +7413,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
			
		||||
            {
 | 
			
		||||
                ImGuiViewportP* viewport = g.Viewports[viewport_n];
 | 
			
		||||
                ImDrawList* draw_list = (viewport == window->Viewport) ? window->DrawList : GetOverlayDrawList(viewport);
 | 
			
		||||
                const ImU32 dim_bg_col = GetColorU32(dim_bg_for_modal ? ImGuiCol_ModalWindowDimBg : ImGuiCol_NavWindowListDimBg, g.DimBgRatio);
 | 
			
		||||
                const ImU32 dim_bg_col = GetColorU32(dim_bg_for_modal ? ImGuiCol_ModalWindowDimBg : ImGuiCol_NavWindowingDimBg, g.DimBgRatio);
 | 
			
		||||
                draw_list->AddRectFilled(viewport->Pos, viewport->Pos + viewport->Size, dim_bg_col);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -7420,7 +7423,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
			
		||||
            ImRect bb = window->Rect();
 | 
			
		||||
            bb.Expand(g.FontSize);
 | 
			
		||||
            if (!bb.Contains(viewport_rect)) // Avoid drawing if the window covers all the viewport anyway
 | 
			
		||||
                window->DrawList->AddRectFilled(bb.Min, bb.Max, GetColorU32(ImGuiCol_NavWindowListHighlight, g.NavWindowingHighlightAlpha * 0.25f), g.Style.WindowRounding);
 | 
			
		||||
                window->DrawList->AddRectFilled(bb.Min, bb.Max, GetColorU32(ImGuiCol_NavWindowingHighlight, g.NavWindowingHighlightAlpha * 0.25f), g.Style.WindowRounding);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Draw window + handle manual resize
 | 
			
		||||
@@ -7509,7 +7512,7 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
 | 
			
		||||
                bb.Expand(-g.FontSize - 1.0f);
 | 
			
		||||
                rounding = window->WindowRounding;
 | 
			
		||||
            }
 | 
			
		||||
            window->DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImGuiCol_NavWindowListHighlight, g.NavWindowingHighlightAlpha), rounding, ~0, 3.0f);
 | 
			
		||||
            window->DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImGuiCol_NavWindowingHighlight, g.NavWindowingHighlightAlpha), rounding, ~0, 3.0f);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Store a backup of SizeFull which we will use next frame to decide if we need scrollbars.
 | 
			
		||||
@@ -8223,7 +8226,8 @@ const char* ImGui::GetStyleColorName(ImGuiCol idx)
 | 
			
		||||
    case ImGuiCol_TextSelectedBg: return "TextSelectedBg";
 | 
			
		||||
    case ImGuiCol_DragDropTarget: return "DragDropTarget";
 | 
			
		||||
    case ImGuiCol_NavHighlight: return "NavHighlight";
 | 
			
		||||
    case ImGuiCol_NavWindowListDimBg: return "NavWindowListDimBg";
 | 
			
		||||
    case ImGuiCol_NavWindowingHighlight: return "NavWindowingHighlight";
 | 
			
		||||
    case ImGuiCol_NavWindowingDimBg: return "NavWindowingDimBg";
 | 
			
		||||
    case ImGuiCol_ModalWindowDimBg: return "ModalWindowDimBg";
 | 
			
		||||
    }
 | 
			
		||||
    IM_ASSERT(0);
 | 
			
		||||
@@ -14956,12 +14960,12 @@ void ImGui::ShowMetricsWindow(bool* p_open)
 | 
			
		||||
{
 | 
			
		||||
    if (ImGui::Begin("ImGui Metrics", p_open))
 | 
			
		||||
    {
 | 
			
		||||
        static bool show_draw_cmd_clip_rects = true;
 | 
			
		||||
        static bool show_window_begin_order = false;
 | 
			
		||||
        ImGui::Text("Dear ImGui %s", ImGui::GetVersion());
 | 
			
		||||
        ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
 | 
			
		||||
        ImGui::Text("%d vertices, %d indices (%d triangles)", ImGui::GetIO().MetricsRenderVertices, ImGui::GetIO().MetricsRenderIndices, ImGui::GetIO().MetricsRenderIndices / 3);
 | 
			
		||||
        ImGui::Text("%d allocations", (int)GImAllocatorActiveAllocationsCount);
 | 
			
		||||
        static bool show_draw_cmd_clip_rects = true;
 | 
			
		||||
        static bool show_window_begin_order = false;
 | 
			
		||||
        ImGui::Checkbox("Show clipping rectangles when hovering draw commands", &show_draw_cmd_clip_rects);
 | 
			
		||||
        ImGui::Checkbox("Ctrl shows window begin order", &show_window_begin_order);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								imgui.h
									
									
									
									
									
								
							@@ -554,9 +554,9 @@ namespace ImGui
 | 
			
		||||
    IMGUI_API bool          IsKeyPressed(int user_key_index, bool repeat = true);               // was key pressed (went from !Down to Down). if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate
 | 
			
		||||
    IMGUI_API bool          IsKeyReleased(int user_key_index);                                  // was key released (went from Down to !Down)..
 | 
			
		||||
    IMGUI_API int           GetKeyPressedAmount(int key_index, float repeat_delay, float rate); // uses provided repeat rate/delay. return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate
 | 
			
		||||
    IMGUI_API bool          IsMouseDown(int button);                                            // is mouse button held
 | 
			
		||||
    IMGUI_API bool          IsMouseDown(int button);                                            // is mouse button held (0=left, 1=right, 2=middle)
 | 
			
		||||
    IMGUI_API bool          IsAnyMouseDown();                                                   // is any mouse button held
 | 
			
		||||
    IMGUI_API bool          IsMouseClicked(int button, bool repeat = false);                    // did mouse button clicked (went from !Down to Down)
 | 
			
		||||
    IMGUI_API bool          IsMouseClicked(int button, bool repeat = false);                    // did mouse button clicked (went from !Down to Down) (0=left, 1=right, 2=middle)
 | 
			
		||||
    IMGUI_API bool          IsMouseDoubleClicked(int button);                                   // did mouse button double-clicked. a double-click returns false in IsMouseClicked(). uses io.MouseDoubleClickTime.
 | 
			
		||||
    IMGUI_API bool          IsMouseReleased(int button);                                        // did mouse button released (went from Down to !Down)
 | 
			
		||||
    IMGUI_API bool          IsMouseDragging(int button = 0, float lock_threshold = -1.0f);      // is mouse dragging. if lock_threshold < -1.0f uses io.MouseDraggingThreshold
 | 
			
		||||
@@ -736,6 +736,7 @@ enum ImGuiHoveredFlags_
 | 
			
		||||
    //ImGuiHoveredFlags_AllowWhenBlockedByModal     = 1 << 4,   // Return true even if a modal popup window is normally blocking access to this item/window. FIXME-TODO: Unavailable yet.
 | 
			
		||||
    ImGuiHoveredFlags_AllowWhenBlockedByActiveItem  = 1 << 5,   // Return true even if an active item is blocking access to this item/window. Useful for Drag and Drop patterns.
 | 
			
		||||
    ImGuiHoveredFlags_AllowWhenOverlapped           = 1 << 6,   // Return true even if the position is overlapped by another window
 | 
			
		||||
    ImGuiHoveredFlags_AllowWhenDisabled             = 1 << 7,   // Return true even if the item is disabled
 | 
			
		||||
    ImGuiHoveredFlags_RectOnly                      = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped,
 | 
			
		||||
    ImGuiHoveredFlags_RootAndChildWindows           = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows
 | 
			
		||||
};
 | 
			
		||||
@@ -924,8 +925,8 @@ enum ImGuiCol_
 | 
			
		||||
    ImGuiCol_TextSelectedBg,
 | 
			
		||||
    ImGuiCol_DragDropTarget,
 | 
			
		||||
    ImGuiCol_NavHighlight,          // Gamepad/keyboard: current highlighted item
 | 
			
		||||
    ImGuiCol_NavWindowListHighlight,// Highlight window when using CTRL+TAB
 | 
			
		||||
    ImGuiCol_NavWindowListDimBg,    // Darken/colorize entire screen behind the CTRL+TAB window list, when active
 | 
			
		||||
    ImGuiCol_NavWindowingHighlight, // Highlight window when using CTRL+TAB
 | 
			
		||||
    ImGuiCol_NavWindowingDimBg,     // Darken/colorize entire screen behind the CTRL+TAB window list, when active
 | 
			
		||||
    ImGuiCol_ModalWindowDimBg,      // Darken/colorize entire screen behind a modal window, when one is active
 | 
			
		||||
    ImGuiCol_COUNT
 | 
			
		||||
 | 
			
		||||
@@ -1140,7 +1141,7 @@ struct ImGuiIO
 | 
			
		||||
    //------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    ImVec2      MousePos;                       // Mouse position, in pixels. Set to ImVec2(-FLT_MAX,-FLT_MAX) if mouse is unavailable (on another screen, etc.)
 | 
			
		||||
    bool        MouseDown[5];                   // Mouse buttons: left, right, middle + extras. ImGui itself mostly only uses left button (BeginPopupContext** are using right button). Others buttons allows us to track if the mouse is being used by your application + available to user as a convenience via IsMouse** API.
 | 
			
		||||
    bool        MouseDown[5];                   // Mouse buttons: 0=left, 1=right, 2=middle + extras. ImGui itself mostly only uses left button (BeginPopupContext** are using right button). Others buttons allows us to track if the mouse is being used by your application + available to user as a convenience via IsMouse** API.
 | 
			
		||||
    float       MouseWheel;                     // Mouse wheel Vertical: 1 unit scrolls about 5 lines text.
 | 
			
		||||
    float       MouseWheelH;                    // Mouse wheel Horizontal. Most users don't have a mouse with an horizontal wheel, may not be filled by all back-ends.
 | 
			
		||||
    ImGuiID     MousePosViewport;               // (Optional) When using multiple viewports: viewport from which io.MousePos is based from (when dragging this is generally the captured/focused viewport, even though we can drag outside of it and then it's not hovered anymore). (0 == default viewport)
 | 
			
		||||
 
 | 
			
		||||
@@ -196,8 +196,8 @@ void ImGui::StyleColorsDark(ImGuiStyle* dst)
 | 
			
		||||
    colors[ImGuiCol_TextSelectedBg]         = ImVec4(0.26f, 0.59f, 0.98f, 0.35f);
 | 
			
		||||
    colors[ImGuiCol_DragDropTarget]         = ImVec4(1.00f, 1.00f, 0.00f, 0.90f);
 | 
			
		||||
    colors[ImGuiCol_NavHighlight]           = ImVec4(0.26f, 0.59f, 0.98f, 1.00f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowListHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowListDimBg]     = ImVec4(0.80f, 0.80f, 0.80f, 0.20f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowingHighlight]  = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowingDimBg]      = ImVec4(0.80f, 0.80f, 0.80f, 0.20f);
 | 
			
		||||
    colors[ImGuiCol_ModalWindowDimBg]       = ImVec4(0.80f, 0.80f, 0.80f, 0.35f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -246,8 +246,8 @@ void ImGui::StyleColorsClassic(ImGuiStyle* dst)
 | 
			
		||||
    colors[ImGuiCol_TextSelectedBg]         = ImVec4(0.00f, 0.00f, 1.00f, 0.35f);
 | 
			
		||||
    colors[ImGuiCol_DragDropTarget]         = ImVec4(1.00f, 1.00f, 0.00f, 0.90f);
 | 
			
		||||
    colors[ImGuiCol_NavHighlight]           = colors[ImGuiCol_HeaderHovered];
 | 
			
		||||
    colors[ImGuiCol_NavWindowListHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowListDimBg]     = ImVec4(0.80f, 0.80f, 0.80f, 0.20f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowingHighlight]  = ImVec4(1.00f, 1.00f, 1.00f, 0.70f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowingDimBg]      = ImVec4(0.80f, 0.80f, 0.80f, 0.20f);
 | 
			
		||||
    colors[ImGuiCol_ModalWindowDimBg]       = ImVec4(0.20f, 0.20f, 0.20f, 0.35f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -297,8 +297,8 @@ void ImGui::StyleColorsLight(ImGuiStyle* dst)
 | 
			
		||||
    colors[ImGuiCol_TextSelectedBg]         = ImVec4(0.26f, 0.59f, 0.98f, 0.35f);
 | 
			
		||||
    colors[ImGuiCol_DragDropTarget]         = ImVec4(0.26f, 0.59f, 0.98f, 0.95f);
 | 
			
		||||
    colors[ImGuiCol_NavHighlight]           = colors[ImGuiCol_HeaderHovered];
 | 
			
		||||
    colors[ImGuiCol_NavWindowListHighlight] = ImVec4(0.70f, 0.70f, 0.70f, 0.70f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowListDimBg]     = ImVec4(0.20f, 0.20f, 0.20f, 0.20f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowingHighlight]  = ImVec4(0.70f, 0.70f, 0.70f, 0.70f);
 | 
			
		||||
    colors[ImGuiCol_NavWindowingDimBg]      = ImVec4(0.20f, 0.20f, 0.20f, 0.20f);
 | 
			
		||||
    colors[ImGuiCol_ModalWindowDimBg]       = ImVec4(0.20f, 0.20f, 0.20f, 0.35f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -210,6 +210,7 @@ static inline ImVec2 ImMul(const ImVec2& lhs, const ImVec2& rhs)
 | 
			
		||||
 | 
			
		||||
enum ImGuiButtonFlags_
 | 
			
		||||
{
 | 
			
		||||
    ImGuiButtonFlags_None                   = 0,
 | 
			
		||||
    ImGuiButtonFlags_Repeat                 = 1 << 0,   // hold to repeat
 | 
			
		||||
    ImGuiButtonFlags_PressedOnClickRelease  = 1 << 1,   // return true on click + release on same item [DEFAULT if no PressedOn* flag is set]
 | 
			
		||||
    ImGuiButtonFlags_PressedOnClick         = 1 << 2,   // return true on click (default requires click+release)
 | 
			
		||||
@@ -228,12 +229,14 @@ enum ImGuiButtonFlags_
 | 
			
		||||
 | 
			
		||||
enum ImGuiSliderFlags_
 | 
			
		||||
{
 | 
			
		||||
    ImGuiSliderFlags_None                   = 0,
 | 
			
		||||
    ImGuiSliderFlags_Vertical               = 1 << 0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum ImGuiColumnsFlags_
 | 
			
		||||
{
 | 
			
		||||
    // Default: 0
 | 
			
		||||
    ImGuiColumnsFlags_None                  = 0,
 | 
			
		||||
    ImGuiColumnsFlags_NoBorder              = 1 << 0,   // Disable column dividers
 | 
			
		||||
    ImGuiColumnsFlags_NoResize              = 1 << 1,   // Disable resizing columns when clicking on the dividers
 | 
			
		||||
    ImGuiColumnsFlags_NoPreserveWidths      = 1 << 2,   // Disable column width preservation when adjusting columns
 | 
			
		||||
@@ -253,6 +256,7 @@ enum ImGuiSelectableFlagsPrivate_
 | 
			
		||||
 | 
			
		||||
enum ImGuiSeparatorFlags_
 | 
			
		||||
{
 | 
			
		||||
    ImGuiSeparatorFlags_None                = 0,
 | 
			
		||||
    ImGuiSeparatorFlags_Horizontal          = 1 << 0,   // Axis default to current layout type, so generally Horizontal unless e.g. in a menu bar
 | 
			
		||||
    ImGuiSeparatorFlags_Vertical            = 1 << 1
 | 
			
		||||
};
 | 
			
		||||
@@ -260,6 +264,7 @@ enum ImGuiSeparatorFlags_
 | 
			
		||||
// Storage for LastItem data
 | 
			
		||||
enum ImGuiItemStatusFlags_
 | 
			
		||||
{
 | 
			
		||||
    ImGuiItemStatusFlags_None               = 0,
 | 
			
		||||
    ImGuiItemStatusFlags_HoveredRect        = 1 << 0,
 | 
			
		||||
    ImGuiItemStatusFlags_HasDisplayRect     = 1 << 1
 | 
			
		||||
};
 | 
			
		||||
@@ -910,7 +915,7 @@ enum ImGuiItemFlags_
 | 
			
		||||
{
 | 
			
		||||
    ImGuiItemFlags_AllowKeyboardFocus           = 1 << 0,  // true
 | 
			
		||||
    ImGuiItemFlags_ButtonRepeat                 = 1 << 1,  // false    // Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings.
 | 
			
		||||
    ImGuiItemFlags_Disabled                     = 1 << 2,  // false    // FIXME-WIP: Disable interactions but doesn't affect visuals. Should be: grey out and disable interactions with widgets that affect data + view widgets (WIP)
 | 
			
		||||
    ImGuiItemFlags_Disabled                     = 1 << 2,  // false    // [BETA] Disable interactions but doesn't affect visuals yet. See github.com/ocornut/imgui/issues/211
 | 
			
		||||
    ImGuiItemFlags_NoNav                        = 1 << 3,  // false
 | 
			
		||||
    ImGuiItemFlags_NoNavDefaultFocus            = 1 << 4,  // false
 | 
			
		||||
    ImGuiItemFlags_SelectableDontClosePopup     = 1 << 5,  // false    // MenuItem/Selectable() automatically closes current Popup window
 | 
			
		||||
@@ -1138,7 +1143,8 @@ namespace ImGui
 | 
			
		||||
    IMGUI_API void          Shutdown(ImGuiContext* context);    // Since 1.60 this is a _private_ function. You can call DestroyContext() to destroy the context created by CreateContext().
 | 
			
		||||
 | 
			
		||||
    IMGUI_API void          UpdateHoveredWindowAndCaptureFlags();
 | 
			
		||||
    IMGUI_API void          UpdateMovingWindow();
 | 
			
		||||
    IMGUI_API void          StartMouseMovingWindow(ImGuiWindow* window);
 | 
			
		||||
    IMGUI_API void          UpdateMouseMovingWindow();
 | 
			
		||||
 | 
			
		||||
    // Viewports
 | 
			
		||||
    IMGUI_API ImGuiViewportP*       FindViewportByID(ImGuiID id);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user