mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
(Now expecting something to fail somewhere..)
This commit is contained in:
parent
3ee50af57e
commit
595684e08c
10
imgui.cpp
10
imgui.cpp
@ -529,13 +529,13 @@
|
|||||||
|
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
#define IMGUI_DEFINE_MATH_OPERATORS
|
#define IMGUI_DEFINE_MATH_OPERATORS
|
||||||
|
#define IMGUI_DEFINE_PLACEMENT_NEW
|
||||||
#include "imgui_internal.h"
|
#include "imgui_internal.h"
|
||||||
|
|
||||||
#include <ctype.h> // toupper, isprint
|
#include <ctype.h> // toupper, isprint
|
||||||
#include <math.h> // sqrtf, fabsf, fmodf, powf, cosf, sinf, floorf, ceilf
|
#include <math.h> // sqrtf, fabsf, fmodf, powf, cosf, sinf, floorf, ceilf
|
||||||
#include <stdlib.h> // NULL, malloc, free, qsort, atoi
|
#include <stdlib.h> // NULL, malloc, free, qsort, atoi
|
||||||
#include <stdio.h> // vsnprintf, sscanf, printf
|
#include <stdio.h> // vsnprintf, sscanf, printf
|
||||||
#include <new> // new (ptr)
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier
|
#if defined(_MSC_VER) && _MSC_VER <= 1500 // MSVC 2008 or earlier
|
||||||
#include <stddef.h> // intptr_t
|
#include <stddef.h> // intptr_t
|
||||||
#else
|
#else
|
||||||
@ -1555,7 +1555,7 @@ ImGuiWindow::ImGuiWindow(const char* name)
|
|||||||
FontWindowScale = 1.0f;
|
FontWindowScale = 1.0f;
|
||||||
|
|
||||||
DrawList = (ImDrawList*)ImGui::MemAlloc(sizeof(ImDrawList));
|
DrawList = (ImDrawList*)ImGui::MemAlloc(sizeof(ImDrawList));
|
||||||
new(DrawList) ImDrawList();
|
IM_PLACEMENT_NEW(DrawList) ImDrawList();
|
||||||
DrawList->_OwnerName = Name;
|
DrawList->_OwnerName = Name;
|
||||||
RootWindow = NULL;
|
RootWindow = NULL;
|
||||||
RootNonPopupWindow = NULL;
|
RootNonPopupWindow = NULL;
|
||||||
@ -1829,7 +1829,7 @@ size_t ImGui::GetInternalStateSize()
|
|||||||
void ImGui::SetInternalState(void* state, bool construct)
|
void ImGui::SetInternalState(void* state, bool construct)
|
||||||
{
|
{
|
||||||
if (construct)
|
if (construct)
|
||||||
new (state) ImGuiState();
|
IM_PLACEMENT_NEW(state) ImGuiState();
|
||||||
GImGui = (ImGuiState*)state;
|
GImGui = (ImGuiState*)state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1874,7 +1874,7 @@ void ImGui::NewFrame()
|
|||||||
{
|
{
|
||||||
// Initialize on first frame
|
// Initialize on first frame
|
||||||
g.LogClipboard = (ImGuiTextBuffer*)ImGui::MemAlloc(sizeof(ImGuiTextBuffer));
|
g.LogClipboard = (ImGuiTextBuffer*)ImGui::MemAlloc(sizeof(ImGuiTextBuffer));
|
||||||
new(g.LogClipboard) ImGuiTextBuffer();
|
IM_PLACEMENT_NEW(g.LogClipboard) ImGuiTextBuffer();
|
||||||
|
|
||||||
IM_ASSERT(g.Settings.empty());
|
IM_ASSERT(g.Settings.empty());
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
@ -3461,7 +3461,7 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFl
|
|||||||
|
|
||||||
// Create window the first time
|
// Create window the first time
|
||||||
ImGuiWindow* window = (ImGuiWindow*)ImGui::MemAlloc(sizeof(ImGuiWindow));
|
ImGuiWindow* window = (ImGuiWindow*)ImGui::MemAlloc(sizeof(ImGuiWindow));
|
||||||
new(window) ImGuiWindow(name);
|
IM_PLACEMENT_NEW(window) ImGuiWindow(name);
|
||||||
window->Flags = flags;
|
window->Flags = flags;
|
||||||
|
|
||||||
if (flags & ImGuiWindowFlags_NoSavedSettings)
|
if (flags & ImGuiWindowFlags_NoSavedSettings)
|
||||||
|
@ -14,10 +14,10 @@
|
|||||||
|
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
#define IMGUI_DEFINE_MATH_OPERATORS
|
#define IMGUI_DEFINE_MATH_OPERATORS
|
||||||
|
#define IMGUI_DEFINE_PLACEMENT_NEW
|
||||||
#include "imgui_internal.h"
|
#include "imgui_internal.h"
|
||||||
|
|
||||||
#include <stdio.h> // vsnprintf, sscanf, printf
|
#include <stdio.h> // vsnprintf, sscanf, printf
|
||||||
#include <new> // new (ptr)
|
|
||||||
#if !defined(alloca) && !defined(__FreeBSD__)
|
#if !defined(alloca) && !defined(__FreeBSD__)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <malloc.h> // alloca
|
#include <malloc.h> // alloca
|
||||||
@ -266,7 +266,7 @@ void ImDrawList::ChannelsSplit(int channels_count)
|
|||||||
{
|
{
|
||||||
if (i >= old_channels_count)
|
if (i >= old_channels_count)
|
||||||
{
|
{
|
||||||
new(&_Channels[i]) ImDrawChannel();
|
IM_PLACEMENT_NEW(&_Channels[i]) ImDrawChannel();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1097,7 +1097,7 @@ ImFont* ImFontAtlas::AddFont(const ImFontConfig* font_cfg)
|
|||||||
if (!font_cfg->MergeMode)
|
if (!font_cfg->MergeMode)
|
||||||
{
|
{
|
||||||
ImFont* font = (ImFont*)ImGui::MemAlloc(sizeof(ImFont));
|
ImFont* font = (ImFont*)ImGui::MemAlloc(sizeof(ImFont));
|
||||||
new (font) ImFont();
|
IM_PLACEMENT_NEW(font) ImFont();
|
||||||
Fonts.push_back(font);
|
Fonts.push_back(font);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,15 @@ static inline float ImLengthSqr(const ImVec4& lhs)
|
|||||||
static inline float ImInvLength(const ImVec2& lhs, float fail_value) { float d = lhs.x*lhs.x + lhs.y*lhs.y; if (d > 0.0f) return 1.0f / sqrtf(d); return fail_value; }
|
static inline float ImInvLength(const ImVec2& lhs, float fail_value) { float d = lhs.x*lhs.x + lhs.y*lhs.y; if (d > 0.0f) return 1.0f / sqrtf(d); return fail_value; }
|
||||||
static inline ImVec2 ImRound(ImVec2 v) { return ImVec2((float)(int)v.x, (float)(int)v.y); }
|
static inline ImVec2 ImRound(ImVec2 v) { return ImVec2((float)(int)v.x, (float)(int)v.y); }
|
||||||
|
|
||||||
|
// We call C++ constructor on own allocated memory via the placement "new(ptr) Type()" syntax.
|
||||||
|
// Defining a custom placement new() with a dummy parameter allows us to bypass including <new> which on some platforms complains when user has disabled exceptions.
|
||||||
|
#ifdef IMGUI_DEFINE_PLACEMENT_NEW
|
||||||
|
struct ImPlacementNewDummy {};
|
||||||
|
static inline void* operator new(size_t, ImPlacementNewDummy, void* ptr) { return ptr; }
|
||||||
|
static inline void operator delete(void*, ImPlacementNewDummy, void*) {}
|
||||||
|
#define IM_PLACEMENT_NEW(_PTR) new(ImPlacementNewDummy() ,_PTR)
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Types
|
// Types
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user