mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_glfw.cpp # backends/imgui_impl_sdl.cpp # backends/imgui_impl_win32.cpp # imgui_demo.cpp # imgui_internal.h
This commit is contained in:
		@@ -207,19 +207,17 @@ namespace ImStb
 | 
			
		||||
// Debug Logging for selected systems. Remove the '((void)0) //' to enable.
 | 
			
		||||
//#define IMGUI_DEBUG_LOG_POPUP         IMGUI_DEBUG_LOG // Enable log
 | 
			
		||||
//#define IMGUI_DEBUG_LOG_NAV           IMGUI_DEBUG_LOG // Enable log
 | 
			
		||||
//#define IMGUI_DEBUG_LOG_IO            IMGUI_DEBUG_LOG // Enable log
 | 
			
		||||
//#define IMGUI_DEBUG_LOG_VIEWPORT      IMGUI_DEBUG_LOG // Enable log
 | 
			
		||||
//#define IMGUI_DEBUG_LOG_DOCKING       IMGUI_DEBUG_LOG // Enable log
 | 
			
		||||
#define IMGUI_DEBUG_LOG_POPUP(...)      ((void)0)       // Disable log
 | 
			
		||||
#define IMGUI_DEBUG_LOG_NAV(...)        ((void)0)       // Disable log
 | 
			
		||||
#define IMGUI_DEBUG_LOG_IO(...)         ((void)0)       // Disable log
 | 
			
		||||
#define IMGUI_DEBUG_LOG_VIEWPORT(...)   ((void)0)       // Disable log
 | 
			
		||||
#define IMGUI_DEBUG_LOG_DOCKING(...)    ((void)0)       // Disable log
 | 
			
		||||
 | 
			
		||||
// Static Asserts
 | 
			
		||||
#if (__cplusplus >= 201100) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201100)
 | 
			
		||||
#define IM_STATIC_ASSERT(_COND)         static_assert(_COND, "")
 | 
			
		||||
#else
 | 
			
		||||
#define IM_STATIC_ASSERT(_COND)         typedef char static_assertion_##__line__[(_COND)?1:-1]
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// "Paranoid" Debug Asserts are meant to only be enabled during specific debugging/work, otherwise would slow down the code too much.
 | 
			
		||||
// We currently don't have many of those so the effect is currently negligible, but onward intent to add more aggressive ones in the code.
 | 
			
		||||
@@ -455,6 +453,7 @@ static inline float  ImInvLength(const ImVec2& lhs, float fail_value)
 | 
			
		||||
static inline float  ImFloor(float f)                                           { return (float)(int)(f); }
 | 
			
		||||
static inline float  ImFloorSigned(float f)                                     { return (float)((f >= 0 || (float)(int)f == f) ? (int)f : (int)f - 1); } // Decent replacement for floorf()
 | 
			
		||||
static inline ImVec2 ImFloor(const ImVec2& v)                                   { return ImVec2((float)(int)(v.x), (float)(int)(v.y)); }
 | 
			
		||||
static inline ImVec2 ImFloorSigned(const ImVec2& v)                             { return ImVec2(ImFloorSigned(v.x), ImFloorSigned(v.y)); }
 | 
			
		||||
static inline int    ImModPositive(int a, int b)                                { return (a + b) % b; }
 | 
			
		||||
static inline float  ImDot(const ImVec2& a, const ImVec2& b)                    { return a.x * b.x + a.y * b.y; }
 | 
			
		||||
static inline ImVec2 ImRotate(const ImVec2& v, float cos_a, float sin_a)        { return ImVec2(v.x * cos_a - v.y * sin_a, v.x * sin_a + v.y * cos_a); }
 | 
			
		||||
@@ -912,6 +911,19 @@ enum ImGuiPlotType
 | 
			
		||||
    ImGuiPlotType_Histogram
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum ImGuiInputEventType
 | 
			
		||||
{
 | 
			
		||||
    ImGuiInputEventType_None = 0,
 | 
			
		||||
    ImGuiInputEventType_MousePos,
 | 
			
		||||
    ImGuiInputEventType_MouseWheel,
 | 
			
		||||
    ImGuiInputEventType_MouseButton,
 | 
			
		||||
    ImGuiInputEventType_Key,
 | 
			
		||||
    ImGuiInputEventType_KeyMods,
 | 
			
		||||
    ImGuiInputEventType_Char,
 | 
			
		||||
    ImGuiInputEventType_Focus,
 | 
			
		||||
    ImGuiInputEventType_COUNT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum ImGuiInputSource
 | 
			
		||||
{
 | 
			
		||||
    ImGuiInputSource_None = 0,
 | 
			
		||||
@@ -923,6 +935,35 @@ enum ImGuiInputSource
 | 
			
		||||
    ImGuiInputSource_COUNT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// FIXME: Structures in the union below need to be declared as anonymous unions appears to be an extension?
 | 
			
		||||
// Using ImVec2() would fail on Clang 'union member 'MousePos' has a non-trivial default constructor'
 | 
			
		||||
struct ImGuiInputEventMousePos      { float PosX, PosY; };
 | 
			
		||||
struct ImGuiInputEventMouseWheel    { float WheelX, WheelY; };
 | 
			
		||||
struct ImGuiInputEventMouseButton   { int Button; bool Down; };
 | 
			
		||||
struct ImGuiInputEventKey           { ImGuiKey Key; bool Down; };
 | 
			
		||||
struct ImGuiInputEventKeyMods       { ImGuiKeyModFlags Mods; };
 | 
			
		||||
struct ImGuiInputEventText          { unsigned int Char; };
 | 
			
		||||
struct ImGuiInputEventAppFocused    { bool Focused; };
 | 
			
		||||
 | 
			
		||||
struct ImGuiInputEvent
 | 
			
		||||
{
 | 
			
		||||
    ImGuiInputEventType             Type;
 | 
			
		||||
    ImGuiInputSource                Source;
 | 
			
		||||
    bool                            SubmittedByTestEngine;
 | 
			
		||||
    union
 | 
			
		||||
    {
 | 
			
		||||
        ImGuiInputEventMousePos     MousePos;       // if Type == ImGuiInputEventType_MousePos
 | 
			
		||||
        ImGuiInputEventMouseWheel   MouseWheel;     // if Type == ImGuiInputEventType_MouseWheel
 | 
			
		||||
        ImGuiInputEventMouseButton  MouseButton;    // if Type == ImGuiInputEventType_MouseButton
 | 
			
		||||
        ImGuiInputEventKey          Key;            // if Type == ImGuiInputEventType_Key
 | 
			
		||||
        ImGuiInputEventKeyMods      KeyMods;        // if Type == ImGuiInputEventType_Modifiers
 | 
			
		||||
        ImGuiInputEventText         Text;           // if Type == ImGuiInputEventType_Text
 | 
			
		||||
        ImGuiInputEventAppFocused   AppFocused;     // if Type == ImGuiInputEventType_Focus
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    ImGuiInputEvent() { memset(this, 0, sizeof(*this)); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// FIXME-NAV: Clarify/expose various repeat delay/rate
 | 
			
		||||
enum ImGuiInputReadMode
 | 
			
		||||
{
 | 
			
		||||
@@ -1676,6 +1717,8 @@ struct ImGuiContext
 | 
			
		||||
    bool                    FontAtlasOwnedByContext;            // IO.Fonts-> is owned by the ImGuiContext and will be destructed along with it.
 | 
			
		||||
    ImGuiIO                 IO;
 | 
			
		||||
    ImGuiPlatformIO         PlatformIO;
 | 
			
		||||
    ImVector<ImGuiInputEvent> InputEventsQueue;                 // Input events which will be tricked/written into IO structure.
 | 
			
		||||
    ImVector<ImGuiInputEvent> InputEventsTrail;                 // Past input events processed in NewFrame(). This is to allow domain-specific application to access e.g mouse/pen trail.
 | 
			
		||||
    ImGuiStyle              Style;
 | 
			
		||||
    ImGuiConfigFlags        ConfigFlagsCurrFrame;               // = g.IO.ConfigFlags at the time of NewFrame()
 | 
			
		||||
    ImGuiConfigFlags        ConfigFlagsLastFrame;
 | 
			
		||||
@@ -2682,6 +2725,7 @@ 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().
 | 
			
		||||
 | 
			
		||||
    // NewFrame
 | 
			
		||||
    IMGUI_API void          UpdateInputEvents(bool trickle_fast_inputs);
 | 
			
		||||
    IMGUI_API void          UpdateHoveredWindowAndCaptureFlags();
 | 
			
		||||
    IMGUI_API void          StartMouseMovingWindow(ImGuiWindow* window);
 | 
			
		||||
    IMGUI_API void          StartMouseMovingWindowOrNode(ImGuiWindow* window, ImGuiDockNode* node, bool undock_floating_node);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user