@ -140,48 +140,47 @@ extern IMGUI_API ImGuiContext* GImGui; // Current implicit context pointer
# endif
# endif
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Generic helpers
// Macros
//-----------------------------------------------------------------------------
// - Macros
// - Helpers: Misc
// - Helpers: Bit manipulation
// - Helpers: Geometry
// - Helpers: String, Formatting
// - Helpers: UTF-8 <> wchar conversions
// - Helpers: ImVec2/ImVec4 operators
// - Helpers: Maths
// - Helper: ImBoolVector
// - Helper: ImPool<>
// - Helper: ImChunkStream<>
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Macros
// Debug Logging
# define IM_PI 3.14159265358979323846f
# ifndef IMGUI_DEBUG_LOG
# ifdef _WIN32
# define IMGUI_DEBUG_LOG(_FMT,...) printf("[%05d] " _FMT, GImGui->FrameCount, __VA_ARGS__)
# define IM_NEWLINE "\r\n" // Play it nice with Windows users (2018/05 news: Microsoft announced that Notepad will finally display Unix-style carriage returns!)
# else
# define IM_NEWLINE "\n"
# endif
# endif
# define IM_TABSIZE (4)
// Static Asserts
# if (__cplusplus >= 201100)
# if (__cplusplus >= 201100)
# define IM_STATIC_ASSERT(_COND) static_assert(_COND, "")
# define IM_STATIC_ASSERT(_COND) static_assert(_COND, "")
# else
# else
# define IM_STATIC_ASSERT(_COND) typedef char static_assertion_##__line__[(_COND)?1:-1]
# define IM_STATIC_ASSERT(_COND) typedef char static_assertion_##__line__[(_COND)?1:-1]
# endif
# endif
# define IM_F32_TO_INT8_UNBOUND(_VAL) ((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f))) // Unsaturated, for display purpose
# define IM_F32_TO_INT8_SAT(_VAL) ((int)(ImSaturate(_VAL) * 255.0f + 0.5f)) // Saturated, always output 0..255
// "Paranoid" Debug Asserts are meant to only be enabled during specific debugging/work, otherwise would slow down the code too much.
# define IM_FLOOR(_VAL) ((float)(int)(_VAL)) // ImFloor() is not inlined in MSVC debug builds
# define IMGUI_DEBUG_PARANOID 1
# define IM_ROUND(_VAL) ((float)(int)((_VAL) + 0.5f)) //
# if IMGUI_DEBUG_PARANOID
# define IM_ASSERT_PARANOID(_EXPR) IM_ASSERT(_EXPR)
# else
# define IM_ASSERT_PARANOID(_EXPR)
# endif
// Error handling
// Error handling
// Down the line in some frameworks/languages we would like to have a way to redirect those to the programmer and recover from more faults.
# ifndef IM_ASSERT_USER_ERROR
# ifndef IM_ASSERT_USER_ERROR
# define IM_ASSERT_USER_ERROR(_EXPR,_MSG) IM_ASSERT((_EXPR) && (_MSG)) // Recoverable User Error
# define IM_ASSERT_USER_ERROR(_EXP ,_MSG) IM_ASSERT((_EXP) && (_MSG)) // Recoverable User Error
# endif
# endif
// Debug Logging
// Misc Macros
# ifndef IMGUI_DEBUG_LOG
# define IM_PI 3.14159265358979323846f
# define IMGUI_DEBUG_LOG(_FMT,...) printf("[%05d] " _FMT, GImGui->FrameCount, __VA_ARGS__)
# ifdef _WIN32
# define IM_NEWLINE "\r\n" // Play it nice with Windows users (Update: since 2018-05, Notepad finally appears to support Unix-style carriage returns!)
# else
# define IM_NEWLINE "\n"
# endif
# endif
# define IM_TABSIZE (4)
# define IM_F32_TO_INT8_UNBOUND(_VAL) ((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f))) // Unsaturated, for display purpose
# define IM_F32_TO_INT8_SAT(_VAL) ((int)(ImSaturate(_VAL) * 255.0f + 0.5f)) // Saturated, always output 0..255
# define IM_FLOOR(_VAL) ((float)(int)(_VAL)) // ImFloor() is not inlined in MSVC debug builds
# define IM_ROUND(_VAL) ((float)(int)((_VAL) + 0.5f)) //
// Enforce cdecl calling convention for functions called by the standard library, in case compilation settings changed the default to e.g. __vectorcall
// Enforce cdecl calling convention for functions called by the standard library, in case compilation settings changed the default to e.g. __vectorcall
# ifdef _MSC_VER
# ifdef _MSC_VER
@ -190,6 +189,21 @@ extern IMGUI_API ImGuiContext* GImGui; // Current implicit context pointer
# define IMGUI_CDECL
# define IMGUI_CDECL
# endif
# endif
//-----------------------------------------------------------------------------
// Generic helpers
//-----------------------------------------------------------------------------
// - Helpers: Misc
// - Helpers: Bit manipulation
// - Helpers: Geometry
// - Helpers: String, Formatting
// - Helpers: UTF-8 <> wchar conversions
// - Helpers: ImVec2/ImVec4 operators
// - Helpers: Maths
// - Helper: ImBoolVector
// - Helper: ImPool<>
// - Helper: ImChunkStream<>
//-----------------------------------------------------------------------------
// Helpers: Misc
// Helpers: Misc
# define ImQsort qsort
# define ImQsort qsort
IMGUI_API ImU32 ImHashData ( const void * data , size_t data_size , ImU32 seed = 0 ) ;
IMGUI_API ImU32 ImHashData ( const void * data , size_t data_size , ImU32 seed = 0 ) ;