Tab to spaces

This commit is contained in:
ocornut
2014-09-24 20:39:39 +01:00
parent 618a42acf8
commit a1162ac001
2 changed files with 70 additions and 70 deletions

108
imgui.cpp
View File

@ -109,7 +109,7 @@
- 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.
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.
- 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.
- 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.
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()
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()
- 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!
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";
LogFilename = "imgui_log.txt";
Font = NULL;
FontYOffset = 0.0f;
FontYOffset = 0.0f;
FontTexUvForWhite = ImVec2(0.0f,0.0f);
FontBaseScale = 1.0f;
FontBaseScale = 1.0f;
FontAllowUserScaling = false;
PixelCenterOffset = 0.0f;
MousePos = ImVec2(-1,-1);
@ -325,12 +325,12 @@ ImGuiIO::ImGuiIO()
MouseDoubleClickTime = 0.30f;
MouseDoubleClickMaxDist = 6.0f;
// Memory management functions, default to posix
MemAllocFn = malloc;
MemReallocFn = realloc;
MemFreeFn = free;
// Memory management functions, default to posix
MemAllocFn = malloc;
MemReallocFn = realloc;
MemFreeFn = free;
// Platform dependant default implementations
// Platform dependant default implementations
GetClipboardTextFn = GetClipboardTextFn_DefaultImpl;
SetClipboardTextFn = SetClipboardTextFn_DefaultImpl;
}
@ -655,7 +655,7 @@ struct ImGuiState
bool Initialized;
ImGuiIO IO;
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;
int FrameCount;
@ -688,7 +688,7 @@ struct ImGuiState
// Logging
bool LogEnabled;
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;
ImGuiState()
@ -1085,19 +1085,19 @@ namespace ImGui
void* MemAlloc(size_t sz)
{
return GImGui.IO.MemAllocFn(sz);
return GImGui.IO.MemAllocFn(sz);
}
void MemFree(void* ptr)
{
return GImGui.IO.MemFreeFn(ptr);
return GImGui.IO.MemFreeFn(ptr);
}
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)
{
ImGuiState& g = GImGui;
@ -1255,7 +1255,7 @@ void NewFrame()
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.RenderDrawListsFn != NULL); // Must be implemented
IM_ASSERT(g.IO.FontBaseScale > 0.0f);
IM_ASSERT(g.IO.FontBaseScale > 0.0f);
if (!g.Initialized)
{
@ -1274,16 +1274,16 @@ void NewFrame()
g.IO.Font = (ImBitmapFont*)ImGui::MemAlloc(sizeof(ImBitmapFont));
new(g.IO.Font) ImBitmapFont();
g.IO.Font->LoadFromMemory(fnt_data, fnt_size);
g.IO.FontYOffset = +1;
g.IO.FontYOffset = +1;
}
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.FrameCount += 1;
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
if (g.IO.MousePos.x < 0 && g.IO.MousePos.y < 0)
@ -1757,18 +1757,18 @@ bool IsMouseHoveringWindow()
{
ImGuiState& g = GImGui;
ImGuiWindow* window = GetCurrentWindow();
return g.HoveredWindow == window;
return g.HoveredWindow == window;
}
bool IsMouseHoveringAnyWindow()
{
ImGuiState& g = GImGui;
return g.HoveredWindow != NULL;
return g.HoveredWindow != NULL;
}
bool IsPosHoveringAnyWindow(const ImVec2& pos)
{
return ImGui::FindHoveredWindow(pos, false) != NULL;
return ImGui::FindHoveredWindow(pos, false) != NULL;
}
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
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));
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))
{
// Draw resize grip
// Draw resize grip
const ImGuiAabb resize_aabb(window->Aabb().GetBR()-ImVec2(18,18), window->Aabb().GetBR());
const ImGuiID resize_id = window->GetID("#RESIZE");
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))
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)
{
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)
return;
IM_ASSERT(text != NULL);
IM_ASSERT(text != NULL);
const char* text_begin = text;
if (text_end == NULL)
text_end = text + strlen(text);
@ -3026,7 +3026,7 @@ bool CollapsingHeader(const char* label, const char* str_id, const bool display_
label = 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;
bool opened;
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;
}
// 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 text_size = CalcTextSize(label);
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);
if (display_frame)
{
// Framed type
// Framed type
RenderFrame(bb.Min, bb.Max, col, true);
RenderCollapseTriangle(bb.Min + style.FramePadding, opened, 1.0f, true);
RenderText(bb.Min + style.FramePadding + ImVec2(window->FontSize() + style.FramePadding.x*2,0), label);
}
else
{
// Unframed typed for tree nodes
// Unframed typed for tree nodes
if ((held && hovered) || hovered)
RenderFrame(bb.Min, bb.Max, col, 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));
}
// 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];
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);
@ -3946,14 +3946,14 @@ bool InputFloat(const char* label, float *v, float step, float step_fast, int de
else
ImFormatString(buf, IM_ARRAYSIZE(buf), "%.*f", decimal_precision, *v);
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))
{
ApplyNumericalTextInput(buf, v);
value_changed = true;
}
// Step buttons
// Step buttons
if (step > 0.0f)
{
ImGui::PopItemWidth();
@ -4054,7 +4054,7 @@ bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlag
bool enter_pressed = false;
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.Font = window->Font();
edit_state.FontSize = window->FontSize();
@ -5272,29 +5272,29 @@ void ImBitmapFont::Clear()
bool ImBitmapFont::LoadFromFile(const char* filename)
{
IM_ASSERT(!IsLoaded()); // Call Clear()
IM_ASSERT(!IsLoaded()); // Call Clear()
// Load file
FILE* f;
if ((f = fopen(filename, "rb")) == NULL)
return false;
if (fseek(f, 0, SEEK_END))
{
fclose(f);
{
fclose(f);
return false;
}
}
const long f_size = ftell(f);
if (f_size == -1)
{
fclose(f);
{
fclose(f);
return false;
}
}
DataSize = (size_t)f_size;
if (fseek(f, 0, SEEK_SET))
{
fclose(f);
{
fclose(f);
return false;
}
}
if ((Data = (unsigned char*)ImGui::MemAlloc(DataSize)) == NULL)
{
fclose(f);
@ -5313,9 +5313,9 @@ bool ImBitmapFont::LoadFromFile(const char* filename)
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;
// Parse data
@ -5454,7 +5454,7 @@ void ImBitmapFont::RenderText(float size, ImVec2 pos, ImU32 col, const ImVec4& c
// Align to be pixel perfect
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;
@ -6088,12 +6088,12 @@ void ShowTestWindow(bool* open)
if (ImGui::CollapsingHeader("Filtering"))
{
static ImGuiTextFilter filter;
ImGui::Text("Filter usage:\n"
" \"\" display all lines\n"
" \"xxx\" display lines containing \"xxx\"\n"
" \"xxx,yyy\" display lines containing \"xxx\" or \"yyy\"\n"
" \"-xxx\" hide lines containing \"xxx\"");
filter.Draw();
ImGui::Text("Filter usage:\n"
" \"\" display all lines\n"
" \"xxx\" display lines containing \"xxx\"\n"
" \"xxx,yyy\" display lines containing \"xxx\" or \"yyy\"\n"
" \"-xxx\" hide lines containing \"xxx\"");
filter.Draw();
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++)
if (filter.PassFilter(lines[i]))