mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Tab to spaces
This commit is contained in:
		
							
								
								
									
										108
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										108
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -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])) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user