mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Tab to spaces
This commit is contained in:
parent
618a42acf8
commit
a1162ac001
106
imgui.cpp
106
imgui.cpp
@ -109,7 +109,7 @@
|
|||||||
- if you want to use a different font than the default:
|
- if you want to use a different font than the default:
|
||||||
- create bitmap font data using BMFont, make sure that BMFont is exporting the .fnt file in Binary mode.
|
- create bitmap font data using BMFont, make sure that BMFont is exporting the .fnt file in Binary mode.
|
||||||
io.Font = new ImBitmapFont();
|
io.Font = new ImBitmapFont();
|
||||||
io.Font->LoadFromFile("path_to_your_fnt_file.fnt");
|
io.Font->LoadFromFile("path_to_your_fnt_file.fnt");
|
||||||
- load your texture yourself. texture *MUST* have white pixel at UV coordinate io.FontTexUvForWhite. This is used to draw all solid shapes.
|
- load your texture yourself. texture *MUST* have white pixel at UV coordinate io.FontTexUvForWhite. This is used to draw all solid shapes.
|
||||||
- the extra_fonts/ folder provides examples of using external fonts.
|
- the extra_fonts/ folder provides examples of using external fonts.
|
||||||
|
|
||||||
@ -119,8 +119,8 @@
|
|||||||
when you call Button("OK") the button shows "OK" and also use "OK" as an ID.
|
when you call Button("OK") the button shows "OK" and also use "OK" as an ID.
|
||||||
- ID are uniquely scoped within Windows so no conflict can happen if you have two buttons called "OK" in two different Windows.
|
- ID are uniquely scoped within Windows so no conflict can happen if you have two buttons called "OK" in two different Windows.
|
||||||
within a same Window, use PushID() / PopID() to easily create scopes and avoid ID conflicts.
|
within a same Window, use PushID() / PopID() to easily create scopes and avoid ID conflicts.
|
||||||
so if you have a loop creating "multiple" items, you can use PushID() / PopID() with the index of each item, or their pointer, etc.
|
so if you have a loop creating "multiple" items, you can use PushID() / PopID() with the index of each item, or their pointer, etc.
|
||||||
some functions like TreeNode() implicitly creates a scope for you by calling PushID()
|
some functions like TreeNode() implicitly creates a scope for you by calling PushID()
|
||||||
- when dealing with trees, ID are important because you want to preserve the opened/closed state of tree nodes.
|
- when dealing with trees, ID are important because you want to preserve the opened/closed state of tree nodes.
|
||||||
depending on your use cases you may want to use strings, indices or pointers as ID. experiment and see what makes more sense!
|
depending on your use cases you may want to use strings, indices or pointers as ID. experiment and see what makes more sense!
|
||||||
e.g. When displaying a single object, using a static string as ID will preserve your node open/closed state when the targetted object change
|
e.g. When displaying a single object, using a static string as ID will preserve your node open/closed state when the targetted object change
|
||||||
@ -315,9 +315,9 @@ ImGuiIO::ImGuiIO()
|
|||||||
IniFilename = "imgui.ini";
|
IniFilename = "imgui.ini";
|
||||||
LogFilename = "imgui_log.txt";
|
LogFilename = "imgui_log.txt";
|
||||||
Font = NULL;
|
Font = NULL;
|
||||||
FontYOffset = 0.0f;
|
FontYOffset = 0.0f;
|
||||||
FontTexUvForWhite = ImVec2(0.0f,0.0f);
|
FontTexUvForWhite = ImVec2(0.0f,0.0f);
|
||||||
FontBaseScale = 1.0f;
|
FontBaseScale = 1.0f;
|
||||||
FontAllowUserScaling = false;
|
FontAllowUserScaling = false;
|
||||||
PixelCenterOffset = 0.0f;
|
PixelCenterOffset = 0.0f;
|
||||||
MousePos = ImVec2(-1,-1);
|
MousePos = ImVec2(-1,-1);
|
||||||
@ -325,12 +325,12 @@ ImGuiIO::ImGuiIO()
|
|||||||
MouseDoubleClickTime = 0.30f;
|
MouseDoubleClickTime = 0.30f;
|
||||||
MouseDoubleClickMaxDist = 6.0f;
|
MouseDoubleClickMaxDist = 6.0f;
|
||||||
|
|
||||||
// Memory management functions, default to posix
|
// Memory management functions, default to posix
|
||||||
MemAllocFn = malloc;
|
MemAllocFn = malloc;
|
||||||
MemReallocFn = realloc;
|
MemReallocFn = realloc;
|
||||||
MemFreeFn = free;
|
MemFreeFn = free;
|
||||||
|
|
||||||
// Platform dependant default implementations
|
// Platform dependant default implementations
|
||||||
GetClipboardTextFn = GetClipboardTextFn_DefaultImpl;
|
GetClipboardTextFn = GetClipboardTextFn_DefaultImpl;
|
||||||
SetClipboardTextFn = SetClipboardTextFn_DefaultImpl;
|
SetClipboardTextFn = SetClipboardTextFn_DefaultImpl;
|
||||||
}
|
}
|
||||||
@ -655,7 +655,7 @@ struct ImGuiState
|
|||||||
bool Initialized;
|
bool Initialized;
|
||||||
ImGuiIO IO;
|
ImGuiIO IO;
|
||||||
ImGuiStyle Style;
|
ImGuiStyle Style;
|
||||||
float FontSize; // == IO.FontBaseScale * IO.Font->GetFontSize(). Vertical distance between two lines of text, aka == CalcTextSize(" ").y
|
float FontSize; // == IO.FontBaseScale * IO.Font->GetFontSize(). Vertical distance between two lines of text, aka == CalcTextSize(" ").y
|
||||||
|
|
||||||
float Time;
|
float Time;
|
||||||
int FrameCount;
|
int FrameCount;
|
||||||
@ -688,7 +688,7 @@ struct ImGuiState
|
|||||||
// Logging
|
// Logging
|
||||||
bool LogEnabled;
|
bool LogEnabled;
|
||||||
FILE* LogFile;
|
FILE* LogFile;
|
||||||
ImGuiTextBuffer* LogClipboard; // pointer so our GImGui static constructor doesn't call heap allocators.
|
ImGuiTextBuffer* LogClipboard; // pointer so our GImGui static constructor doesn't call heap allocators.
|
||||||
int LogAutoExpandMaxDepth;
|
int LogAutoExpandMaxDepth;
|
||||||
|
|
||||||
ImGuiState()
|
ImGuiState()
|
||||||
@ -1085,17 +1085,17 @@ namespace ImGui
|
|||||||
|
|
||||||
void* MemAlloc(size_t sz)
|
void* MemAlloc(size_t sz)
|
||||||
{
|
{
|
||||||
return GImGui.IO.MemAllocFn(sz);
|
return GImGui.IO.MemAllocFn(sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemFree(void* ptr)
|
void MemFree(void* ptr)
|
||||||
{
|
{
|
||||||
return GImGui.IO.MemFreeFn(ptr);
|
return GImGui.IO.MemFreeFn(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* MemRealloc(void* ptr, size_t sz)
|
void* MemRealloc(void* ptr, size_t sz)
|
||||||
{
|
{
|
||||||
return GImGui.IO.MemReallocFn(ptr, sz);
|
return GImGui.IO.MemReallocFn(ptr, sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ImGuiIniData* FindWindowSettings(const char* name)
|
static ImGuiIniData* FindWindowSettings(const char* name)
|
||||||
@ -1255,7 +1255,7 @@ void NewFrame()
|
|||||||
IM_ASSERT(g.IO.DeltaTime > 0.0f);
|
IM_ASSERT(g.IO.DeltaTime > 0.0f);
|
||||||
IM_ASSERT(g.IO.DisplaySize.x > 0.0f && g.IO.DisplaySize.y > 0.0f);
|
IM_ASSERT(g.IO.DisplaySize.x > 0.0f && g.IO.DisplaySize.y > 0.0f);
|
||||||
IM_ASSERT(g.IO.RenderDrawListsFn != NULL); // Must be implemented
|
IM_ASSERT(g.IO.RenderDrawListsFn != NULL); // Must be implemented
|
||||||
IM_ASSERT(g.IO.FontBaseScale > 0.0f);
|
IM_ASSERT(g.IO.FontBaseScale > 0.0f);
|
||||||
|
|
||||||
if (!g.Initialized)
|
if (!g.Initialized)
|
||||||
{
|
{
|
||||||
@ -1274,16 +1274,16 @@ void NewFrame()
|
|||||||
g.IO.Font = (ImBitmapFont*)ImGui::MemAlloc(sizeof(ImBitmapFont));
|
g.IO.Font = (ImBitmapFont*)ImGui::MemAlloc(sizeof(ImBitmapFont));
|
||||||
new(g.IO.Font) ImBitmapFont();
|
new(g.IO.Font) ImBitmapFont();
|
||||||
g.IO.Font->LoadFromMemory(fnt_data, fnt_size);
|
g.IO.Font->LoadFromMemory(fnt_data, fnt_size);
|
||||||
g.IO.FontYOffset = +1;
|
g.IO.FontYOffset = +1;
|
||||||
}
|
}
|
||||||
g.Initialized = true;
|
g.Initialized = true;
|
||||||
}
|
}
|
||||||
IM_ASSERT(g.IO.Font && g.IO.Font->IsLoaded()); // Font not loaded
|
IM_ASSERT(g.IO.Font && g.IO.Font->IsLoaded()); // Font not loaded
|
||||||
|
|
||||||
g.Time += g.IO.DeltaTime;
|
g.Time += g.IO.DeltaTime;
|
||||||
g.FrameCount += 1;
|
g.FrameCount += 1;
|
||||||
g.Tooltip[0] = '\0';
|
g.Tooltip[0] = '\0';
|
||||||
g.FontSize = g.IO.FontBaseScale * g.IO.Font->GetFontSize();
|
g.FontSize = g.IO.FontBaseScale * g.IO.Font->GetFontSize();
|
||||||
|
|
||||||
// Update inputs state
|
// Update inputs state
|
||||||
if (g.IO.MousePos.x < 0 && g.IO.MousePos.y < 0)
|
if (g.IO.MousePos.x < 0 && g.IO.MousePos.y < 0)
|
||||||
@ -1757,18 +1757,18 @@ bool IsMouseHoveringWindow()
|
|||||||
{
|
{
|
||||||
ImGuiState& g = GImGui;
|
ImGuiState& g = GImGui;
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
ImGuiWindow* window = GetCurrentWindow();
|
||||||
return g.HoveredWindow == window;
|
return g.HoveredWindow == window;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsMouseHoveringAnyWindow()
|
bool IsMouseHoveringAnyWindow()
|
||||||
{
|
{
|
||||||
ImGuiState& g = GImGui;
|
ImGuiState& g = GImGui;
|
||||||
return g.HoveredWindow != NULL;
|
return g.HoveredWindow != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsPosHoveringAnyWindow(const ImVec2& pos)
|
bool IsPosHoveringAnyWindow(const ImVec2& pos)
|
||||||
{
|
{
|
||||||
return ImGui::FindHoveredWindow(pos, false) != NULL;
|
return ImGui::FindHoveredWindow(pos, false) != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool IsKeyPressedMap(ImGuiKey key, bool repeat)
|
static bool IsKeyPressedMap(ImGuiKey key, bool repeat)
|
||||||
@ -1963,7 +1963,7 @@ bool Begin(const char* name, bool* open, ImVec2 size, float fill_alpha, ImGuiWin
|
|||||||
// Create window the first time, and load settings
|
// Create window the first time, and load settings
|
||||||
if (flags & (ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_Tooltip))
|
if (flags & (ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_Tooltip))
|
||||||
{
|
{
|
||||||
// Tooltip and child windows don't store settings
|
// Tooltip and child windows don't store settings
|
||||||
window = (ImGuiWindow*)ImGui::MemAlloc(sizeof(ImGuiWindow));
|
window = (ImGuiWindow*)ImGui::MemAlloc(sizeof(ImGuiWindow));
|
||||||
new(window) ImGuiWindow(name, ImVec2(0,0), size);
|
new(window) ImGuiWindow(name, ImVec2(0,0), size);
|
||||||
}
|
}
|
||||||
@ -2141,7 +2141,7 @@ bool Begin(const char* name, bool* open, ImVec2 size, float fill_alpha, ImGuiWin
|
|||||||
}
|
}
|
||||||
else if (!(window->Flags & ImGuiWindowFlags_NoResize))
|
else if (!(window->Flags & ImGuiWindowFlags_NoResize))
|
||||||
{
|
{
|
||||||
// Draw resize grip
|
// Draw resize grip
|
||||||
const ImGuiAabb resize_aabb(window->Aabb().GetBR()-ImVec2(18,18), window->Aabb().GetBR());
|
const ImGuiAabb resize_aabb(window->Aabb().GetBR()-ImVec2(18,18), window->Aabb().GetBR());
|
||||||
const ImGuiID resize_id = window->GetID("#RESIZE");
|
const ImGuiID resize_id = window->GetID("#RESIZE");
|
||||||
bool hovered, held;
|
bool hovered, held;
|
||||||
@ -2186,7 +2186,7 @@ bool Begin(const char* name, bool* open, ImVec2 size, float fill_alpha, ImGuiWin
|
|||||||
if (!(window->Flags & ImGuiWindowFlags_NoTitleBar))
|
if (!(window->Flags & ImGuiWindowFlags_NoTitleBar))
|
||||||
window->DrawList->AddRectFilled(title_bar_aabb.GetTL(), title_bar_aabb.GetBR(), window->Color(ImGuiCol_TitleBg), g.Style.WindowRounding, 1|2);
|
window->DrawList->AddRectFilled(title_bar_aabb.GetTL(), title_bar_aabb.GetBR(), window->Color(ImGuiCol_TitleBg), g.Style.WindowRounding, 1|2);
|
||||||
|
|
||||||
// Borders
|
// Borders
|
||||||
if (window->Flags & ImGuiWindowFlags_ShowBorders)
|
if (window->Flags & ImGuiWindowFlags_ShowBorders)
|
||||||
{
|
{
|
||||||
const float rounding = (window->Flags & ImGuiWindowFlags_ComboBox) ? 0.0f : g.Style.WindowRounding;
|
const float rounding = (window->Flags & ImGuiWindowFlags_ComboBox) ? 0.0f : g.Style.WindowRounding;
|
||||||
@ -2663,7 +2663,7 @@ void TextUnformatted(const char* text, const char* text_end)
|
|||||||
if (window->SkipItems)
|
if (window->SkipItems)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
IM_ASSERT(text != NULL);
|
IM_ASSERT(text != NULL);
|
||||||
const char* text_begin = text;
|
const char* text_begin = text;
|
||||||
if (text_end == NULL)
|
if (text_end == NULL)
|
||||||
text_end = text + strlen(text);
|
text_end = text + strlen(text);
|
||||||
@ -3026,7 +3026,7 @@ bool CollapsingHeader(const char* label, const char* str_id, const bool display_
|
|||||||
label = str_id;
|
label = str_id;
|
||||||
const ImGuiID id = window->GetID(str_id);
|
const ImGuiID id = window->GetID(str_id);
|
||||||
|
|
||||||
// We only write to the tree storage if the user clicks
|
// We only write to the tree storage if the user clicks
|
||||||
ImGuiStorage* tree = window->DC.StateStorage;
|
ImGuiStorage* tree = window->DC.StateStorage;
|
||||||
bool opened;
|
bool opened;
|
||||||
if (window->DC.OpenNextNode != -1)
|
if (window->DC.OpenNextNode != -1)
|
||||||
@ -3040,7 +3040,7 @@ bool CollapsingHeader(const char* label, const char* str_id, const bool display_
|
|||||||
opened = tree->GetInt(id, default_open) != 0;
|
opened = tree->GetInt(id, default_open) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Framed header expand a little outside the default padding
|
// Framed header expand a little outside the default padding
|
||||||
const ImVec2 window_padding = window->WindowPadding();
|
const ImVec2 window_padding = window->WindowPadding();
|
||||||
const ImVec2 text_size = CalcTextSize(label);
|
const ImVec2 text_size = CalcTextSize(label);
|
||||||
const ImVec2 pos_min = window->DC.CursorPos;
|
const ImVec2 pos_min = window->DC.CursorPos;
|
||||||
@ -3077,14 +3077,14 @@ bool CollapsingHeader(const char* label, const char* str_id, const bool display_
|
|||||||
const ImU32 col = window->Color((held && hovered) ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header);
|
const ImU32 col = window->Color((held && hovered) ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header);
|
||||||
if (display_frame)
|
if (display_frame)
|
||||||
{
|
{
|
||||||
// Framed type
|
// Framed type
|
||||||
RenderFrame(bb.Min, bb.Max, col, true);
|
RenderFrame(bb.Min, bb.Max, col, true);
|
||||||
RenderCollapseTriangle(bb.Min + style.FramePadding, opened, 1.0f, true);
|
RenderCollapseTriangle(bb.Min + style.FramePadding, opened, 1.0f, true);
|
||||||
RenderText(bb.Min + style.FramePadding + ImVec2(window->FontSize() + style.FramePadding.x*2,0), label);
|
RenderText(bb.Min + style.FramePadding + ImVec2(window->FontSize() + style.FramePadding.x*2,0), label);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Unframed typed for tree nodes
|
// Unframed typed for tree nodes
|
||||||
if ((held && hovered) || hovered)
|
if ((held && hovered) || hovered)
|
||||||
RenderFrame(bb.Min, bb.Max, col, false);
|
RenderFrame(bb.Min, bb.Max, col, false);
|
||||||
RenderCollapseTriangle(bb.Min + ImVec2(style.FramePadding.x, window->FontSize()*0.15f), opened, 0.70f, false);
|
RenderCollapseTriangle(bb.Min + ImVec2(style.FramePadding.x, window->FontSize()*0.15f), opened, 0.70f, false);
|
||||||
@ -3477,7 +3477,7 @@ bool SliderFloat(const char* label, float* v, float v_min, float v_max, const ch
|
|||||||
window->DrawList->AddRectFilled(grab_bb.Min, grab_bb.Max, window->Color(g.ActiveId == id ? ImGuiCol_SliderGrabActive : ImGuiCol_SliderGrab));
|
window->DrawList->AddRectFilled(grab_bb.Min, grab_bb.Max, window->Color(g.ActiveId == id ? ImGuiCol_SliderGrabActive : ImGuiCol_SliderGrab));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw value using user-provided display format so user can add prefix/suffix/decorations to the value.
|
// Draw value using user-provided display format so user can add prefix/suffix/decorations to the value.
|
||||||
char value_buf[64];
|
char value_buf[64];
|
||||||
ImFormatString(value_buf, IM_ARRAYSIZE(value_buf), display_format, *v);
|
ImFormatString(value_buf, IM_ARRAYSIZE(value_buf), display_format, *v);
|
||||||
RenderText(ImVec2(slider_bb.GetCenter().x-CalcTextSize(value_buf).x*0.5f, frame_bb.Min.y + style.FramePadding.y), value_buf);
|
RenderText(ImVec2(slider_bb.GetCenter().x-CalcTextSize(value_buf).x*0.5f, frame_bb.Min.y + style.FramePadding.y), value_buf);
|
||||||
@ -3946,14 +3946,14 @@ bool InputFloat(const char* label, float *v, float step, float step_fast, int de
|
|||||||
else
|
else
|
||||||
ImFormatString(buf, IM_ARRAYSIZE(buf), "%.*f", decimal_precision, *v);
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "%.*f", decimal_precision, *v);
|
||||||
bool value_changed = false;
|
bool value_changed = false;
|
||||||
const ImGuiInputTextFlags flags = extra_flags | (ImGuiInputTextFlags_CharsDecimal|ImGuiInputTextFlags_AutoSelectAll);
|
const ImGuiInputTextFlags flags = extra_flags | (ImGuiInputTextFlags_CharsDecimal|ImGuiInputTextFlags_AutoSelectAll);
|
||||||
if (ImGui::InputText("", buf, IM_ARRAYSIZE(buf), flags))
|
if (ImGui::InputText("", buf, IM_ARRAYSIZE(buf), flags))
|
||||||
{
|
{
|
||||||
ApplyNumericalTextInput(buf, v);
|
ApplyNumericalTextInput(buf, v);
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step buttons
|
// Step buttons
|
||||||
if (step > 0.0f)
|
if (step > 0.0f)
|
||||||
{
|
{
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
@ -4054,7 +4054,7 @@ bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlag
|
|||||||
bool enter_pressed = false;
|
bool enter_pressed = false;
|
||||||
if (g.ActiveId == id)
|
if (g.ActiveId == id)
|
||||||
{
|
{
|
||||||
// Edit in progress
|
// Edit in progress
|
||||||
edit_state.BufSize = buf_size < IM_ARRAYSIZE(edit_state.Text) ? buf_size : IM_ARRAYSIZE(edit_state.Text);
|
edit_state.BufSize = buf_size < IM_ARRAYSIZE(edit_state.Text) ? buf_size : IM_ARRAYSIZE(edit_state.Text);
|
||||||
edit_state.Font = window->Font();
|
edit_state.Font = window->Font();
|
||||||
edit_state.FontSize = window->FontSize();
|
edit_state.FontSize = window->FontSize();
|
||||||
@ -5272,29 +5272,29 @@ void ImBitmapFont::Clear()
|
|||||||
|
|
||||||
bool ImBitmapFont::LoadFromFile(const char* filename)
|
bool ImBitmapFont::LoadFromFile(const char* filename)
|
||||||
{
|
{
|
||||||
IM_ASSERT(!IsLoaded()); // Call Clear()
|
IM_ASSERT(!IsLoaded()); // Call Clear()
|
||||||
|
|
||||||
// Load file
|
// Load file
|
||||||
FILE* f;
|
FILE* f;
|
||||||
if ((f = fopen(filename, "rb")) == NULL)
|
if ((f = fopen(filename, "rb")) == NULL)
|
||||||
return false;
|
return false;
|
||||||
if (fseek(f, 0, SEEK_END))
|
if (fseek(f, 0, SEEK_END))
|
||||||
{
|
{
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const long f_size = ftell(f);
|
const long f_size = ftell(f);
|
||||||
if (f_size == -1)
|
if (f_size == -1)
|
||||||
{
|
{
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
DataSize = (size_t)f_size;
|
DataSize = (size_t)f_size;
|
||||||
if (fseek(f, 0, SEEK_SET))
|
if (fseek(f, 0, SEEK_SET))
|
||||||
{
|
{
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((Data = (unsigned char*)ImGui::MemAlloc(DataSize)) == NULL)
|
if ((Data = (unsigned char*)ImGui::MemAlloc(DataSize)) == NULL)
|
||||||
{
|
{
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -5313,9 +5313,9 @@ bool ImBitmapFont::LoadFromFile(const char* filename)
|
|||||||
|
|
||||||
bool ImBitmapFont::LoadFromMemory(const void* data, size_t data_size)
|
bool ImBitmapFont::LoadFromMemory(const void* data, size_t data_size)
|
||||||
{
|
{
|
||||||
IM_ASSERT(!IsLoaded()); // Call Clear()
|
IM_ASSERT(!IsLoaded()); // Call Clear()
|
||||||
|
|
||||||
Data = (unsigned char*)data;
|
Data = (unsigned char*)data;
|
||||||
DataSize = data_size;
|
DataSize = data_size;
|
||||||
|
|
||||||
// Parse data
|
// Parse data
|
||||||
@ -5454,7 +5454,7 @@ void ImBitmapFont::RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& c
|
|||||||
|
|
||||||
// Align to be pixel perfect
|
// Align to be pixel perfect
|
||||||
pos.x = (float)(int)pos.x;
|
pos.x = (float)(int)pos.x;
|
||||||
pos.y = (float)(int)pos.y + GImGui.IO.FontYOffset;
|
pos.y = (float)(int)pos.y + GImGui.IO.FontYOffset;
|
||||||
|
|
||||||
const ImVec4 clip_rect = clip_rect_ref;
|
const ImVec4 clip_rect = clip_rect_ref;
|
||||||
|
|
||||||
@ -6088,12 +6088,12 @@ void ShowTestWindow(bool* open)
|
|||||||
if (ImGui::CollapsingHeader("Filtering"))
|
if (ImGui::CollapsingHeader("Filtering"))
|
||||||
{
|
{
|
||||||
static ImGuiTextFilter filter;
|
static ImGuiTextFilter filter;
|
||||||
ImGui::Text("Filter usage:\n"
|
ImGui::Text("Filter usage:\n"
|
||||||
" \"\" display all lines\n"
|
" \"\" display all lines\n"
|
||||||
" \"xxx\" display lines containing \"xxx\"\n"
|
" \"xxx\" display lines containing \"xxx\"\n"
|
||||||
" \"xxx,yyy\" display lines containing \"xxx\" or \"yyy\"\n"
|
" \"xxx,yyy\" display lines containing \"xxx\" or \"yyy\"\n"
|
||||||
" \"-xxx\" hide lines containing \"xxx\"");
|
" \"-xxx\" hide lines containing \"xxx\"");
|
||||||
filter.Draw();
|
filter.Draw();
|
||||||
const char* lines[] = { "aaa1.c", "bbb1.c", "ccc1.c", "aaa2.cpp", "bbb2.cpp", "ccc2.cpp", "abc.h", "hello, world" };
|
const char* lines[] = { "aaa1.c", "bbb1.c", "ccc1.c", "aaa2.cpp", "bbb2.cpp", "ccc2.cpp", "abc.h", "hello, world" };
|
||||||
for (size_t i = 0; i < IM_ARRAYSIZE(lines); i++)
|
for (size_t i = 0; i < IM_ARRAYSIZE(lines); i++)
|
||||||
if (filter.PassFilter(lines[i]))
|
if (filter.PassFilter(lines[i]))
|
||||||
|
30
imgui.h
30
imgui.h
@ -57,10 +57,10 @@ struct ImVec4
|
|||||||
|
|
||||||
namespace ImGui
|
namespace ImGui
|
||||||
{
|
{
|
||||||
// Proxy functions to access the MemAllocFn/MemFreeFn/MemReallocFn pointers in ImGui::GetIO(). The only reason they exist here is to allow ImVector<> to compile inline.
|
// Proxy functions to access the MemAllocFn/MemFreeFn/MemReallocFn pointers in ImGui::GetIO(). The only reason they exist here is to allow ImVector<> to compile inline.
|
||||||
void* MemAlloc(size_t sz);
|
void* MemAlloc(size_t sz);
|
||||||
void MemFree(void* ptr);
|
void MemFree(void* ptr);
|
||||||
void* MemRealloc(void* ptr, size_t sz);
|
void* MemRealloc(void* ptr, size_t sz);
|
||||||
};
|
};
|
||||||
|
|
||||||
// std::vector<> like class to avoid dragging dependencies (also: windows implementation of STL with debug enabled is absurdly slow, so let's bypass it so our code runs fast in debug).
|
// std::vector<> like class to avoid dragging dependencies (also: windows implementation of STL with debug enabled is absurdly slow, so let's bypass it so our code runs fast in debug).
|
||||||
@ -180,7 +180,7 @@ namespace ImGui
|
|||||||
void SetCursorPos(const ImVec2& pos); // "
|
void SetCursorPos(const ImVec2& pos); // "
|
||||||
void SetCursorPosX(float x); // "
|
void SetCursorPosX(float x); // "
|
||||||
void SetCursorPosY(float y); // "
|
void SetCursorPosY(float y); // "
|
||||||
ImVec2 GetCursorScreenPos(); // cursor position in screen space
|
ImVec2 GetCursorScreenPos(); // cursor position in screen space
|
||||||
void AlignFirstTextHeightToWidgets(); // call once if the first item on the line is a Text() item and you want to vertically lower it to match subsequent (bigger) widgets.
|
void AlignFirstTextHeightToWidgets(); // call once if the first item on the line is a Text() item and you want to vertically lower it to match subsequent (bigger) widgets.
|
||||||
float GetTextLineSpacing();
|
float GetTextLineSpacing();
|
||||||
float GetTextLineHeight();
|
float GetTextLineHeight();
|
||||||
@ -263,10 +263,10 @@ namespace ImGui
|
|||||||
bool IsKeyPressed(int key_index, bool repeat = true); // key_index into the keys_down[512] array, imgui doesn't know the semantic of each entry
|
bool IsKeyPressed(int key_index, bool repeat = true); // key_index into the keys_down[512] array, imgui doesn't know the semantic of each entry
|
||||||
bool IsMouseClicked(int button, bool repeat = false);
|
bool IsMouseClicked(int button, bool repeat = false);
|
||||||
bool IsMouseDoubleClicked(int button);
|
bool IsMouseDoubleClicked(int button);
|
||||||
bool IsMouseHoveringWindow(); // is mouse hovering current window ("window" in API names always refer to current window)
|
bool IsMouseHoveringWindow(); // is mouse hovering current window ("window" in API names always refer to current window)
|
||||||
bool IsMouseHoveringAnyWindow(); // is mouse hovering any active imgui window
|
bool IsMouseHoveringAnyWindow(); // is mouse hovering any active imgui window
|
||||||
bool IsMouseHoveringBox(const ImVec2& box_min, const ImVec2& box_max); // is mouse hovering given bounding box
|
bool IsMouseHoveringBox(const ImVec2& box_min, const ImVec2& box_max); // is mouse hovering given bounding box
|
||||||
bool IsPosHoveringAnyWindow(const ImVec2& pos); // is given position hovering any active imgui window
|
bool IsPosHoveringAnyWindow(const ImVec2& pos); // is given position hovering any active imgui window
|
||||||
ImVec2 GetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls
|
ImVec2 GetMousePos(); // shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls
|
||||||
float GetTime();
|
float GetTime();
|
||||||
int GetFrameCount();
|
int GetFrameCount();
|
||||||
@ -410,9 +410,9 @@ struct ImGuiIO
|
|||||||
float MouseDoubleClickMaxDist; // = 6.0f // Distance threshold to stay in to validate a double-click, in pixels.
|
float MouseDoubleClickMaxDist; // = 6.0f // Distance threshold to stay in to validate a double-click, in pixels.
|
||||||
int KeyMap[ImGuiKey_COUNT]; // <unset> // Map of indices into the KeysDown[512] entries array
|
int KeyMap[ImGuiKey_COUNT]; // <unset> // Map of indices into the KeysDown[512] entries array
|
||||||
ImFont Font; // <auto> // Gets passed to text functions. Typedef ImFont to the type you want (ImBitmapFont* or your own font).
|
ImFont Font; // <auto> // Gets passed to text functions. Typedef ImFont to the type you want (ImBitmapFont* or your own font).
|
||||||
float FontYOffset; // = 0.0f // Offset font rendering by xx pixels in Y axis.
|
float FontYOffset; // = 0.0f // Offset font rendering by xx pixels in Y axis.
|
||||||
ImVec2 FontTexUvForWhite; // = (0.0f,0.0f) // Font texture must have a white pixel at this UV coordinate. Adjust if you are using custom texture.
|
ImVec2 FontTexUvForWhite; // = (0.0f,0.0f) // Font texture must have a white pixel at this UV coordinate. Adjust if you are using custom texture.
|
||||||
float FontBaseScale; // = 1.0f // Base font scale, multiplied by the per-window font scale which you can adjust with SetFontScale()
|
float FontBaseScale; // = 1.0f // Base font scale, multiplied by the per-window font scale which you can adjust with SetFontScale()
|
||||||
bool FontAllowUserScaling; // = false // Set to allow scaling text with CTRL+Wheel.
|
bool FontAllowUserScaling; // = false // Set to allow scaling text with CTRL+Wheel.
|
||||||
float PixelCenterOffset; // = 0.0f // Try to set to 0.5f or 0.375f if rendering is blurry
|
float PixelCenterOffset; // = 0.0f // Try to set to 0.5f or 0.375f if rendering is blurry
|
||||||
|
|
||||||
@ -427,11 +427,11 @@ struct ImGuiIO
|
|||||||
const char* (*GetClipboardTextFn)();
|
const char* (*GetClipboardTextFn)();
|
||||||
void (*SetClipboardTextFn)(const char* text, const char* text_end);
|
void (*SetClipboardTextFn)(const char* text, const char* text_end);
|
||||||
|
|
||||||
// Settings - Memory allocation
|
// Settings - Memory allocation
|
||||||
// Default to posix malloc/realloc/free functions.
|
// Default to posix malloc/realloc/free functions.
|
||||||
void* (*MemAllocFn)(size_t sz);
|
void* (*MemAllocFn)(size_t sz);
|
||||||
void* (*MemReallocFn)(void* ptr, size_t sz);
|
void* (*MemReallocFn)(void* ptr, size_t sz);
|
||||||
void (*MemFreeFn)(void* ptr);
|
void (*MemFreeFn)(void* ptr);
|
||||||
|
|
||||||
// Input - Fill before calling NewFrame()
|
// Input - Fill before calling NewFrame()
|
||||||
ImVec2 MousePos; // Mouse position, in pixels (set to -1,-1 if no mouse / on another screen, etc.)
|
ImVec2 MousePos; // Mouse position, in pixels (set to -1,-1 if no mouse / on another screen, etc.)
|
||||||
@ -668,7 +668,7 @@ struct ImBitmapFont
|
|||||||
void BuildLookupTable();
|
void BuildLookupTable();
|
||||||
const FntGlyph * FindGlyph(unsigned short c) const;
|
const FntGlyph * FindGlyph(unsigned short c) const;
|
||||||
float GetFontSize() const { return (float)Info->FontSize; }
|
float GetFontSize() const { return (float)Info->FontSize; }
|
||||||
bool IsLoaded() const { return Info != NULL && Common != NULL && Glyphs != NULL; }
|
bool IsLoaded() const { return Info != NULL && Common != NULL && Glyphs != NULL; }
|
||||||
|
|
||||||
ImVec2 CalcTextSize(float size, float max_width, const char* text_begin, const char* text_end, const char** remaining = NULL) const;
|
ImVec2 CalcTextSize(float size, float max_width, const char* text_begin, const char* text_end, const char** remaining = NULL) const;
|
||||||
void RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& clip_rect, const char* text_begin, const char* text_end, ImDrawVert*& out_vertices) const;
|
void RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& clip_rect, const char* text_begin, const char* text_end, ImDrawVert*& out_vertices) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user