mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Merge branch 'master' into docking
# Conflicts: # backends/imgui_impl_win32.cpp # docs/CHANGELOG.txt # imgui.cpp
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
			
		||||
// dear imgui, v1.80
 | 
			
		||||
// dear imgui, v1.81 WIP
 | 
			
		||||
// (internal structures/api)
 | 
			
		||||
 | 
			
		||||
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
 | 
			
		||||
@@ -29,7 +29,8 @@ Index of this file:
 | 
			
		||||
// [SECTION] ImGuiWindowTempData, ImGuiWindow
 | 
			
		||||
// [SECTION] Tab bar, Tab item support
 | 
			
		||||
// [SECTION] Table support
 | 
			
		||||
// [SECTION] Internal API
 | 
			
		||||
// [SECTION] ImGui internal API
 | 
			
		||||
// [SECTION] ImFontAtlas internal API
 | 
			
		||||
// [SECTION] Test Engine specific hooks (imgui_test_engine)
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
@@ -83,6 +84,12 @@ Index of this file:
 | 
			
		||||
#error Use IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Enable stb_truetype by default unless FreeType is enabled.
 | 
			
		||||
// You can compile with both by defining both IMGUI_ENABLE_FREETYPE and IMGUI_ENABLE_STB_TRUETYPE together.
 | 
			
		||||
#ifndef IMGUI_ENABLE_FREETYPE
 | 
			
		||||
#define IMGUI_ENABLE_STB_TRUETYPE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] Forward declarations
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
@@ -622,6 +629,7 @@ struct IMGUI_API ImChunkStream
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
// ImDrawList: Helper function to calculate a circle's segment count given its radius and a "maximum error" value.
 | 
			
		||||
// FIXME: the minimum number of auto-segment may be undesirably high for very small radiuses (e.g. 1.0f)
 | 
			
		||||
#define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN                     12
 | 
			
		||||
#define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX                     512
 | 
			
		||||
#define IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_CALC(_RAD,_MAXERROR)    ImClamp((int)((IM_PI * 2.0f) / ImAcos(((_RAD) - (_MAXERROR)) / (_RAD))), IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MIN, IM_DRAWLIST_CIRCLE_AUTO_SEGMENT_MAX)
 | 
			
		||||
@@ -645,7 +653,7 @@ struct IMGUI_API ImDrawListSharedData
 | 
			
		||||
 | 
			
		||||
    // [Internal] Lookup tables
 | 
			
		||||
    ImVec2          ArcFastVtx[12 * IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER];  // FIXME: Bake rounded corners fill/borders in atlas
 | 
			
		||||
    ImU8            CircleSegmentCounts[64];    // Precomputed segment count for given radius (array index + 1) before we calculate it dynamically (to avoid calculation overhead)
 | 
			
		||||
    ImU8            CircleSegmentCounts[64];    // Precomputed segment count for given radius before we calculate it dynamically (to avoid calculation overhead)
 | 
			
		||||
    const ImVec4*   TexUvLines;                 // UV of anti-aliased lines in the atlas
 | 
			
		||||
 | 
			
		||||
    ImDrawListSharedData();
 | 
			
		||||
@@ -1406,10 +1414,11 @@ struct IMGUI_API ImGuiStackSizes
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
typedef void (*ImGuiContextHookCallback)(ImGuiContext* ctx, ImGuiContextHook* hook);
 | 
			
		||||
enum ImGuiContextHookType { ImGuiContextHookType_NewFramePre, ImGuiContextHookType_NewFramePost, ImGuiContextHookType_EndFramePre, ImGuiContextHookType_EndFramePost, ImGuiContextHookType_RenderPre, ImGuiContextHookType_RenderPost, ImGuiContextHookType_Shutdown };
 | 
			
		||||
enum ImGuiContextHookType { ImGuiContextHookType_NewFramePre, ImGuiContextHookType_NewFramePost, ImGuiContextHookType_EndFramePre, ImGuiContextHookType_EndFramePost, ImGuiContextHookType_RenderPre, ImGuiContextHookType_RenderPost, ImGuiContextHookType_Shutdown, ImGuiContextHookType_PendingRemoval_ };
 | 
			
		||||
 | 
			
		||||
struct ImGuiContextHook
 | 
			
		||||
{
 | 
			
		||||
    ImGuiID                     HookId;     // A unique ID assigned by AddContextHook()
 | 
			
		||||
    ImGuiContextHookType        Type;
 | 
			
		||||
    ImGuiID                     Owner;
 | 
			
		||||
    ImGuiContextHookCallback    Callback;
 | 
			
		||||
@@ -1651,6 +1660,7 @@ struct ImGuiContext
 | 
			
		||||
    ImChunkStream<ImGuiWindowSettings>  SettingsWindows;        // ImGuiWindow .ini settings entries
 | 
			
		||||
    ImChunkStream<ImGuiTableSettings>   SettingsTables;         // ImGuiTable .ini settings entries
 | 
			
		||||
    ImVector<ImGuiContextHook>          Hooks;                  // Hooks for extensions (e.g. test engine)
 | 
			
		||||
    ImGuiID                             HookIdNext;             // Next available HookId
 | 
			
		||||
 | 
			
		||||
    // Capture/Logging
 | 
			
		||||
    bool                    LogEnabled;                         // Currently capturing
 | 
			
		||||
@@ -1810,6 +1820,7 @@ struct ImGuiContext
 | 
			
		||||
 | 
			
		||||
        SettingsLoaded = false;
 | 
			
		||||
        SettingsDirtyTimer = 0.0f;
 | 
			
		||||
        HookIdNext = 0;
 | 
			
		||||
 | 
			
		||||
        LogEnabled = false;
 | 
			
		||||
        LogType = ImGuiLogType_None;
 | 
			
		||||
@@ -1885,10 +1896,10 @@ struct IMGUI_API ImGuiWindowTempData
 | 
			
		||||
    // Local parameters stacks
 | 
			
		||||
    // We store the current settings outside of the vectors to increase memory locality (reduce cache misses). The vectors are rarely modified. Also it allows us to not heap allocate for short-lived windows which are not using those settings.
 | 
			
		||||
    ImGuiItemFlags          ItemFlags;              // == g.ItemFlagsStack.back()
 | 
			
		||||
    float                   ItemWidth;              // == ItemWidthStack.back(). 0.0: default, >0.0: width in pixels, <0.0: align xx pixels to the right of window
 | 
			
		||||
    float                   TextWrapPos;            // == TextWrapPosStack.back() [empty == -1.0f]
 | 
			
		||||
    ImVector<float>         ItemWidthStack;
 | 
			
		||||
    ImVector<float>         TextWrapPosStack;
 | 
			
		||||
    float                   ItemWidth;              // Current item width (>0.0: width in pixels, <0.0: align xx pixels to the right of window).
 | 
			
		||||
    float                   TextWrapPos;            // Current text wrap pos.
 | 
			
		||||
    ImVector<float>         ItemWidthStack;         // Store item widths to restore (attention: .back() is not == ItemWidth)
 | 
			
		||||
    ImVector<float>         TextWrapPosStack;       // Store text wrap pos to restore (attention: .back() is not == TextWrapPos)
 | 
			
		||||
    ImGuiStackSizes         StackSizesOnBegin;      // Store size of various stacks for asserting
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -2366,7 +2377,7 @@ struct ImGuiTableSettings
 | 
			
		||||
#endif // #ifdef IMGUI_HAS_TABLE
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] Internal API
 | 
			
		||||
// [SECTION] ImGui internal API
 | 
			
		||||
// No guarantee of forward compatibility here!
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
@@ -2416,7 +2427,8 @@ namespace ImGui
 | 
			
		||||
    IMGUI_API void          UpdateMouseMovingWindowEndFrame();
 | 
			
		||||
 | 
			
		||||
    // Generic context hooks
 | 
			
		||||
    IMGUI_API void          AddContextHook(ImGuiContext* context, const ImGuiContextHook* hook);
 | 
			
		||||
    IMGUI_API ImGuiID       AddContextHook(ImGuiContext* context, const ImGuiContextHook* hook);
 | 
			
		||||
    IMGUI_API void          RemoveContextHook(ImGuiContext* context, ImGuiID hook_to_remove);
 | 
			
		||||
    IMGUI_API void          CallContextHooks(ImGuiContext* context, ImGuiContextHookType type);
 | 
			
		||||
 | 
			
		||||
    // Viewports
 | 
			
		||||
@@ -2770,15 +2782,26 @@ namespace ImGui
 | 
			
		||||
 | 
			
		||||
} // namespace ImGui
 | 
			
		||||
 | 
			
		||||
// ImFontAtlas internals
 | 
			
		||||
IMGUI_API bool              ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildInit(ImFontAtlas* atlas);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildSetupFont(ImFontAtlas* atlas, ImFont* font, ImFontConfig* font_config, float ascent, float descent);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas, void* stbrp_context_opaque);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildFinish(ImFontAtlas* atlas);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildRender1bppRectFromString(ImFontAtlas* atlas, int atlas_x, int atlas_y, int w, int h, const char* in_str, char in_marker_char, unsigned char in_marker_pixel_value);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildMultiplyCalcLookupTable(unsigned char out_table[256], float in_multiply_factor);
 | 
			
		||||
IMGUI_API void              ImFontAtlasBuildMultiplyRectAlpha8(const unsigned char table[256], unsigned char* pixels, int x, int y, int w, int h, int stride);
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] ImFontAtlas internal API
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
// This structure is likely to evolve as we add support for incremental atlas updates
 | 
			
		||||
struct ImFontBuilderIO
 | 
			
		||||
{
 | 
			
		||||
    bool    (*FontBuilder_Build)(ImFontAtlas* atlas);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Helper for font builder
 | 
			
		||||
IMGUI_API const ImFontBuilderIO* ImFontAtlasGetBuilderForStbTruetype();
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildInit(ImFontAtlas* atlas);
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildSetupFont(ImFontAtlas* atlas, ImFont* font, ImFontConfig* font_config, float ascent, float descent);
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas, void* stbrp_context_opaque);
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildFinish(ImFontAtlas* atlas);
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildRender8bppRectFromString(ImFontAtlas* atlas, int atlas_x, int atlas_y, int w, int h, const char* in_str, char in_marker_char, unsigned char in_marker_pixel_value);
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildMultiplyCalcLookupTable(unsigned char out_table[256], float in_multiply_factor);
 | 
			
		||||
IMGUI_API void      ImFontAtlasBuildMultiplyRectAlpha8(const unsigned char table[256], unsigned char* pixels, int x, int y, int w, int h, int stride);
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] Test Engine specific hooks (imgui_test_engine)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user