mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Moved the optional "courtesy maths operators" (#define IMGUI_DEFINE_MATH_OPERATORS) implementation from imgui_internal.h in imgui.h. (#6164, #6137, #5966, #2832)
This commit is contained in:
		
							
								
								
									
										32
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								imgui.h
									
									
									
									
									
								
							@@ -23,7 +23,7 @@
 | 
			
		||||
// Library Version
 | 
			
		||||
// (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM > 12345')
 | 
			
		||||
#define IMGUI_VERSION               "1.89.4 WIP"
 | 
			
		||||
#define IMGUI_VERSION_NUM           18931
 | 
			
		||||
#define IMGUI_VERSION_NUM           18932
 | 
			
		||||
#define IMGUI_HAS_TABLE
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ -37,7 +37,7 @@ Index of this file:
 | 
			
		||||
// [SECTION] ImGuiStyle
 | 
			
		||||
// [SECTION] ImGuiIO
 | 
			
		||||
// [SECTION] Misc data structures (ImGuiInputTextCallbackData, ImGuiSizeCallbackData, ImGuiPayload, ImGuiTableSortSpecs, ImGuiTableColumnSortSpecs)
 | 
			
		||||
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, ImColor)
 | 
			
		||||
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, Math Operators, ImColor)
 | 
			
		||||
// [SECTION] Drawing API (ImDrawCallback, ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawFlags, ImDrawListFlags, ImDrawList, ImDrawData)
 | 
			
		||||
// [SECTION] Font API (ImFontConfig, ImFontGlyph, ImFontGlyphRangesBuilder, ImFontAtlasFlags, ImFontAtlas, ImFont)
 | 
			
		||||
// [SECTION] Viewports (ImGuiViewportFlags, ImGuiViewport)
 | 
			
		||||
@@ -2159,7 +2159,7 @@ struct ImGuiTableSortSpecs
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, ImColor)
 | 
			
		||||
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, Math Operators, ImColor)
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
// Helper: Unicode defines
 | 
			
		||||
@@ -2322,6 +2322,32 @@ struct ImGuiListClipper
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Helpers: ImVec2/ImVec4 operators
 | 
			
		||||
// - It is important that we are keeping those disabled by default so they don't leak in user space.
 | 
			
		||||
// - This is in order to allow user enabling implicit cast operators between ImVec2/ImVec4 and their own types (using IM_VEC2_CLASS_EXTRA in imconfig.h)
 | 
			
		||||
// - You can use '#define IMGUI_DEFINE_MATH_OPERATORS' to import our operators, provided as a courtesy.
 | 
			
		||||
// - We unfortunately don't have a unary- operator for ImVec2 because this would needs to be defined inside the class itself.
 | 
			
		||||
#ifdef IMGUI_DEFINE_MATH_OPERATORS
 | 
			
		||||
#define IMGUI_DEFINE_MATH_OPERATORS_IMPLEMENTED
 | 
			
		||||
IM_MSVC_RUNTIME_CHECKS_OFF
 | 
			
		||||
static inline ImVec2  operator*(const ImVec2& lhs, const float rhs)     { return ImVec2(lhs.x * rhs, lhs.y * rhs); }
 | 
			
		||||
static inline ImVec2  operator/(const ImVec2& lhs, const float rhs)     { return ImVec2(lhs.x / rhs, lhs.y / rhs); }
 | 
			
		||||
static inline ImVec2  operator+(const ImVec2& lhs, const ImVec2& rhs)   { return ImVec2(lhs.x + rhs.x, lhs.y + rhs.y); }
 | 
			
		||||
static inline ImVec2  operator-(const ImVec2& lhs, const ImVec2& rhs)   { return ImVec2(lhs.x - rhs.x, lhs.y - rhs.y); }
 | 
			
		||||
static inline ImVec2  operator*(const ImVec2& lhs, const ImVec2& rhs)   { return ImVec2(lhs.x * rhs.x, lhs.y * rhs.y); }
 | 
			
		||||
static inline ImVec2  operator/(const ImVec2& lhs, const ImVec2& rhs)   { return ImVec2(lhs.x / rhs.x, lhs.y / rhs.y); }
 | 
			
		||||
static inline ImVec2& operator*=(ImVec2& lhs, const float rhs)          { lhs.x *= rhs; lhs.y *= rhs; return lhs; }
 | 
			
		||||
static inline ImVec2& operator/=(ImVec2& lhs, const float rhs)          { lhs.x /= rhs; lhs.y /= rhs; return lhs; }
 | 
			
		||||
static inline ImVec2& operator+=(ImVec2& lhs, const ImVec2& rhs)        { lhs.x += rhs.x; lhs.y += rhs.y; return lhs; }
 | 
			
		||||
static inline ImVec2& operator-=(ImVec2& lhs, const ImVec2& rhs)        { lhs.x -= rhs.x; lhs.y -= rhs.y; return lhs; }
 | 
			
		||||
static inline ImVec2& operator*=(ImVec2& lhs, const ImVec2& rhs)        { lhs.x *= rhs.x; lhs.y *= rhs.y; return lhs; }
 | 
			
		||||
static inline ImVec2& operator/=(ImVec2& lhs, const ImVec2& rhs)        { lhs.x /= rhs.x; lhs.y /= rhs.y; return lhs; }
 | 
			
		||||
static inline ImVec4  operator+(const ImVec4& lhs, const ImVec4& rhs)   { return ImVec4(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z, lhs.w + rhs.w); }
 | 
			
		||||
static inline ImVec4  operator-(const ImVec4& lhs, const ImVec4& rhs)   { return ImVec4(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z, lhs.w - rhs.w); }
 | 
			
		||||
static inline ImVec4  operator*(const ImVec4& lhs, const ImVec4& rhs)   { return ImVec4(lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z, lhs.w * rhs.w); }
 | 
			
		||||
IM_MSVC_RUNTIME_CHECKS_RESTORE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Helpers macros to generate 32-bit encoded colors
 | 
			
		||||
// User can declare their own format by #defining the 5 _SHIFT/_MASK macros in their imconfig file.
 | 
			
		||||
#ifndef IM_COL32_R_SHIFT
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user