mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Merge branch 'master' into navigation
# Conflicts: # imgui.h
This commit is contained in:
		| @@ -1,4 +1,4 @@ | |||||||
| // dear imgui, v1.53 WIP | // dear imgui, v1.53 | ||||||
| // (main code and documentation) | // (main code and documentation) | ||||||
|  |  | ||||||
| // ** EXPERIMENTAL GAMEPAD/KEYBOARD NAVIGATION BRANCH | // ** EXPERIMENTAL GAMEPAD/KEYBOARD NAVIGATION BRANCH | ||||||
| @@ -10619,7 +10619,7 @@ void ImGui::ListBoxFooter() | |||||||
|     EndGroup(); |     EndGroup(); | ||||||
| } | } | ||||||
|  |  | ||||||
| bool ImGui::ListBox(const char* label, int* current_item, const char* const* items, int items_count, int height_items) | bool ImGui::ListBox(const char* label, int* current_item, const char* const items[], int items_count, int height_items) | ||||||
| { | { | ||||||
|     const bool value_changed = ListBox(label, current_item, Items_ArrayGetter, (void*)items, items_count, height_items); |     const bool value_changed = ListBox(label, current_item, Items_ArrayGetter, (void*)items, items_count, height_items); | ||||||
|     return value_changed; |     return value_changed; | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| // dear imgui, v1.53 WIP | // dear imgui, v1.53 | ||||||
| // (headers) | // (headers) | ||||||
|  |  | ||||||
| // See imgui.cpp file for documentation. | // See imgui.cpp file for documentation. | ||||||
| @@ -16,7 +16,7 @@ | |||||||
| #include <stddef.h>         // ptrdiff_t, NULL | #include <stddef.h>         // ptrdiff_t, NULL | ||||||
| #include <string.h>         // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp | #include <string.h>         // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp | ||||||
|  |  | ||||||
| #define IMGUI_VERSION       "1.53 WIP" | #define IMGUI_VERSION       "1.53" | ||||||
| #define IMGUI_HAS_NAV       // navigation branch | #define IMGUI_HAS_NAV       // navigation branch | ||||||
|  |  | ||||||
| // Define attributes of all API symbols declarations, e.g. for DLL under Windows. | // Define attributes of all API symbols declarations, e.g. for DLL under Windows. | ||||||
| @@ -302,6 +302,7 @@ namespace ImGui | |||||||
|  |  | ||||||
|     // Widgets: Combo Box |     // Widgets: Combo Box | ||||||
|     // The new BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it.  |     // The new BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it.  | ||||||
|  |     // The old Combo() api are helpers over BeginCombo()/EndCombo() which are kept available for convenience purpose. | ||||||
|     IMGUI_API bool          BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags = 0); |     IMGUI_API bool          BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags = 0); | ||||||
|     IMGUI_API void          EndCombo(); |     IMGUI_API void          EndCombo(); | ||||||
|     IMGUI_API bool          Combo(const char* label, int* current_item, const char* const items[], int items_count, int popup_max_height_in_items = -1); |     IMGUI_API bool          Combo(const char* label, int* current_item, const char* const items[], int items_count, int popup_max_height_in_items = -1); | ||||||
| @@ -379,7 +380,7 @@ namespace ImGui | |||||||
|     // Widgets: Selectable / Lists |     // Widgets: Selectable / Lists | ||||||
|     IMGUI_API bool          Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0));  // size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height |     IMGUI_API bool          Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0));  // size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height | ||||||
|     IMGUI_API bool          Selectable(const char* label, bool* p_selected, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0)); |     IMGUI_API bool          Selectable(const char* label, bool* p_selected, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0,0)); | ||||||
|     IMGUI_API bool          ListBox(const char* label, int* current_item, const char* const* items, int items_count, int height_in_items = -1); |     IMGUI_API bool          ListBox(const char* label, int* current_item, const char* const items[], int items_count, int height_in_items = -1); | ||||||
|     IMGUI_API bool          ListBox(const char* label, int* current_item, bool (*items_getter)(void* data, int idx, const char** out_text), void* data, int items_count, int height_in_items = -1); |     IMGUI_API bool          ListBox(const char* label, int* current_item, bool (*items_getter)(void* data, int idx, const char** out_text), void* data, int items_count, int height_in_items = -1); | ||||||
|     IMGUI_API bool          ListBoxHeader(const char* label, const ImVec2& size = ImVec2(0,0));     // use if you want to reimplement ListBox() will custom data or interactions. make sure to call ListBoxFooter() afterwards. |     IMGUI_API bool          ListBoxHeader(const char* label, const ImVec2& size = ImVec2(0,0));     // use if you want to reimplement ListBox() will custom data or interactions. make sure to call ListBoxFooter() afterwards. | ||||||
|     IMGUI_API bool          ListBoxHeader(const char* label, int items_count, int height_in_items = -1); // " |     IMGUI_API bool          ListBoxHeader(const char* label, int items_count, int height_in_items = -1); // " | ||||||
| @@ -1083,7 +1084,7 @@ public: | |||||||
|     inline const value_type&    back() const                    { IM_ASSERT(Size > 0); return Data[Size - 1]; } |     inline const value_type&    back() const                    { IM_ASSERT(Size > 0); return Data[Size - 1]; } | ||||||
|     inline void                 swap(ImVector<T>& rhs)          { int rhs_size = rhs.Size; rhs.Size = Size; Size = rhs_size; int rhs_cap = rhs.Capacity; rhs.Capacity = Capacity; Capacity = rhs_cap; value_type* rhs_data = rhs.Data; rhs.Data = Data; Data = rhs_data; } |     inline void                 swap(ImVector<T>& rhs)          { int rhs_size = rhs.Size; rhs.Size = Size; Size = rhs_size; int rhs_cap = rhs.Capacity; rhs.Capacity = Capacity; Capacity = rhs_cap; value_type* rhs_data = rhs.Data; rhs.Data = Data; Data = rhs_data; } | ||||||
|  |  | ||||||
|     inline int                  _grow_capacity(int size) const  { int new_capacity = Capacity ? (Capacity + Capacity/2) : 8; return new_capacity > size ? new_capacity : size; } |     inline int                  _grow_capacity(int sz) const    { int new_capacity = Capacity ? (Capacity + Capacity/2) : 8; return new_capacity > sz ? new_capacity : sz; } | ||||||
|  |  | ||||||
|     inline void                 resize(int new_size)            { if (new_size > Capacity) reserve(_grow_capacity(new_size)); Size = new_size; } |     inline void                 resize(int new_size)            { if (new_size > Capacity) reserve(_grow_capacity(new_size)); Size = new_size; } | ||||||
|     inline void                 resize(int new_size, const T& v){ if (new_size > Capacity) reserve(_grow_capacity(new_size)); if (new_size > Size) for (int n = Size; n < new_size; n++) Data[n] = v; Size = new_size; } |     inline void                 resize(int new_size, const T& v){ if (new_size > Capacity) reserve(_grow_capacity(new_size)); if (new_size > Size) for (int n = Size; n < new_size; n++) Data[n] = v; Size = new_size; } | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| // dear imgui, v1.53 WIP | // dear imgui, v1.53 | ||||||
| // (demo code) | // (demo code) | ||||||
|  |  | ||||||
| // Message to the person tempted to delete this file when integrating ImGui into their code base: | // Message to the person tempted to delete this file when integrating ImGui into their code base: | ||||||
| @@ -325,12 +325,28 @@ void ImGui::ShowDemoWindow(bool* p_open) | |||||||
|  |  | ||||||
|             ImGui::LabelText("label", "Value"); |             ImGui::LabelText("label", "Value"); | ||||||
|  |  | ||||||
|             static int item = 1; |             { | ||||||
|             ImGui::Combo("combo", &item, "aaaa\0bbbb\0cccc\0dddd\0eeee\0\0");   // Combo using values packed in a single constant string (for really quick combo) |                 // Simplified one-liner Combo() API, using values packed in a single constant string | ||||||
|  |                 static int current_item_1 = 1; | ||||||
|  |                 ImGui::Combo("combo", ¤t_item_1, "aaaa\0bbbb\0cccc\0dddd\0eeee\0\0"); | ||||||
|  |                 //ImGui::Combo("combo w/ array of char*", ¤t_item_2_idx, items, IM_ARRAYSIZE(items));   // Combo using proper array. You can also pass a callback to retrieve array value, no need to create/copy an array just for that. | ||||||
|  |  | ||||||
|             const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLLLLL", "MMMM", "OOOOOOO", "PPPP", "QQQQQQQQQQ", "RRR", "SSSS" }; |                 // General BeginCombo() API, you have full control over your selection data and display type | ||||||
|             static int item2 = -1; |                 const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLLLLL", "MMMM", "OOOOOOO", "PPPP", "QQQQQQQQQQ", "RRR", "SSSS" }; | ||||||
|             ImGui::Combo("combo scroll", &item2, items, IM_ARRAYSIZE(items));   // Combo using proper array. You can also pass a callback to retrieve array value, no need to create/copy an array just for that. |                 static const char* current_item_2 = NULL; | ||||||
|  |                 if (ImGui::BeginCombo("combo 2", current_item_2)) // The second parameter is the label previewed before opening the combo. | ||||||
|  |                 { | ||||||
|  |                     for (int n = 0; n < IM_ARRAYSIZE(items); n++) | ||||||
|  |                     { | ||||||
|  |                         bool is_selected = (current_item_2 == items[n]); // You can store your selection however you want, outside or inside your objects | ||||||
|  |                         if (ImGui::Selectable(items[n], is_selected)) | ||||||
|  |                             current_item_2 = items[n]; | ||||||
|  |                         if (is_selected) | ||||||
|  |                             ImGui::SetItemDefaultFocus();   // Set the initial focus when opening the combo (scrolling + for keyboard navigation support in the upcoming navigation branch) | ||||||
|  |                     } | ||||||
|  |                     ImGui::EndCombo(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|             { |             { | ||||||
|                 static char str0[128] = "Hello, world!"; |                 static char str0[128] = "Hello, world!"; | ||||||
| @@ -2638,12 +2654,13 @@ struct ExampleAppConsole | |||||||
|         ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(4,1)); // Tighten spacing |         ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(4,1)); // Tighten spacing | ||||||
|         if (copy_to_clipboard) |         if (copy_to_clipboard) | ||||||
|             ImGui::LogToClipboard(); |             ImGui::LogToClipboard(); | ||||||
|  |         ImVec4 col_default_text = ImGui::GetStyleColorVec4(ImGuiCol_Text); | ||||||
|         for (int i = 0; i < Items.Size; i++) |         for (int i = 0; i < Items.Size; i++) | ||||||
|         { |         { | ||||||
|             const char* item = Items[i]; |             const char* item = Items[i]; | ||||||
|             if (!filter.PassFilter(item)) |             if (!filter.PassFilter(item)) | ||||||
|                 continue; |                 continue; | ||||||
|             ImVec4 col = ImVec4(1.0f,1.0f,1.0f,1.0f); // A better implementation may store a type per-item. For the sample let's just parse the text. |             ImVec4 col = col_default_text; | ||||||
|             if (strstr(item, "[error]")) col = ImColor(1.0f,0.4f,0.4f,1.0f); |             if (strstr(item, "[error]")) col = ImColor(1.0f,0.4f,0.4f,1.0f); | ||||||
|             else if (strncmp(item, "# ", 2) == 0) col = ImColor(1.0f,0.78f,0.58f,1.0f); |             else if (strncmp(item, "# ", 2) == 0) col = ImColor(1.0f,0.78f,0.58f,1.0f); | ||||||
|             ImGui::PushStyleColor(ImGuiCol_Text, col); |             ImGui::PushStyleColor(ImGuiCol_Text, col); | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| // dear imgui, v1.53 WIP | // dear imgui, v1.53 | ||||||
| // (drawing and font code) | // (drawing and font code) | ||||||
|  |  | ||||||
| // Contains implementation for | // Contains implementation for | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| // dear imgui, v1.53 WIP | // dear imgui, v1.53 | ||||||
| // (internals) | // (internals) | ||||||
|  |  | ||||||
| // You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility! | // You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility! | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user