ImGuiStorage: Added BuildSortByKey() helper to rebuild storage from stratch.
This commit is contained in:
parent
ef5dd30625
commit
d9c5d72962
17
imgui.cpp
17
imgui.cpp
@ -1411,6 +1411,23 @@ static ImVector<ImGuiStorage::Pair>::iterator LowerBound(ImVector<ImGuiStorage::
|
|||||||
return first;
|
return first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For quicker full rebuild of a storage (instead of an incremental one), you may add all your contents and then sort once.
|
||||||
|
void ImGuiStorage::BuildSortByKey()
|
||||||
|
{
|
||||||
|
struct StaticFunc
|
||||||
|
{
|
||||||
|
static int PairCompareByID(const void* lhs, const void* rhs)
|
||||||
|
{
|
||||||
|
// We can't just do a subtraction because qsort uses signed integers and subtracting our ID doesn't play well with that.
|
||||||
|
if (((const Pair*)lhs)->key > ((const Pair*)rhs)->key) return +1;
|
||||||
|
if (((const Pair*)lhs)->key < ((const Pair*)rhs)->key) return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (Data.Size > 1)
|
||||||
|
qsort(Data.Data, (size_t)Data.Size, sizeof(Pair), StaticFunc::PairCompareByID);
|
||||||
|
}
|
||||||
|
|
||||||
int ImGuiStorage::GetInt(ImGuiID key, int default_val) const
|
int ImGuiStorage::GetInt(ImGuiID key, int default_val) const
|
||||||
{
|
{
|
||||||
ImVector<Pair>::iterator it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key);
|
ImVector<Pair>::iterator it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key);
|
||||||
|
3
imgui.h
3
imgui.h
@ -1097,6 +1097,9 @@ struct ImGuiStorage
|
|||||||
|
|
||||||
// Use on your own storage if you know only integer are being stored (open/close all tree nodes)
|
// Use on your own storage if you know only integer are being stored (open/close all tree nodes)
|
||||||
IMGUI_API void SetAllInt(int val);
|
IMGUI_API void SetAllInt(int val);
|
||||||
|
|
||||||
|
// For quicker full rebuild of a storage (instead of an incremental one), you may add all your contents and then sort once.
|
||||||
|
IMGUI_API void BuildSortByKey();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Shared state of InputText(), passed to callback when a ImGuiInputTextFlags_Callback* flag is used and the corresponding callback is triggered.
|
// Shared state of InputText(), passed to callback when a ImGuiInputTextFlags_Callback* flag is used and the corresponding callback is triggered.
|
||||||
|
Loading…
Reference in New Issue
Block a user