mirror of https://github.com/ocornut/imgui
GetVoidPtr() functions like GetInt, GetFloat. Renamed GetIntPtr/GetFloatPtr to GetIntRef/GetFloatRef
This commit is contained in:
parent
5b180afc4e
commit
79042a3a3c
22
imgui.cpp
22
imgui.cpp
|
@ -128,6 +128,7 @@
|
||||||
Occasionally introducing changes that are breaking the API. The breakage are generally minor and easy to fix.
|
Occasionally introducing changes that are breaking the API. The breakage are generally minor and easy to fix.
|
||||||
Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code.
|
Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code.
|
||||||
|
|
||||||
|
- 2015/01/19 (1.30) - renamed ImGuiStorage::GetIntPtr()/GetFloatPtr() to GetIntRef()/GetIntRef() because Ptr was conflicting with actual pointer storage functions.
|
||||||
- 2015/01/11 (1.30) - big font/image API change! now loads TTF file. allow for multiple fonts. no need for a PNG loader.
|
- 2015/01/11 (1.30) - big font/image API change! now loads TTF file. allow for multiple fonts. no need for a PNG loader.
|
||||||
(1.30) - removed GetDefaultFontData(). uses io.Fonts->GetTextureData*() API to retrieve uncompressed pixels.
|
(1.30) - removed GetDefaultFontData(). uses io.Fonts->GetTextureData*() API to retrieve uncompressed pixels.
|
||||||
this sequence:
|
this sequence:
|
||||||
|
@ -1147,7 +1148,16 @@ float ImGuiStorage::GetFloat(ImU32 key, float default_val) const
|
||||||
return it->val_f;
|
return it->val_f;
|
||||||
}
|
}
|
||||||
|
|
||||||
int* ImGuiStorage::GetIntPtr(ImGuiID key, int default_val)
|
void* ImGuiStorage::GetVoidPtr(ImGuiID key) const
|
||||||
|
{
|
||||||
|
ImVector<Pair>::iterator it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key);
|
||||||
|
if (it == Data.end() || it->key != key)
|
||||||
|
return NULL;
|
||||||
|
return it->val_p;
|
||||||
|
}
|
||||||
|
|
||||||
|
// References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
|
||||||
|
int* ImGuiStorage::GetIntRef(ImGuiID key, int default_val)
|
||||||
{
|
{
|
||||||
ImVector<Pair>::iterator it = LowerBound(Data, key);
|
ImVector<Pair>::iterator it = LowerBound(Data, key);
|
||||||
if (it == Data.end() || it->key != key)
|
if (it == Data.end() || it->key != key)
|
||||||
|
@ -1155,7 +1165,7 @@ int* ImGuiStorage::GetIntPtr(ImGuiID key, int default_val)
|
||||||
return &it->val_i;
|
return &it->val_i;
|
||||||
}
|
}
|
||||||
|
|
||||||
float* ImGuiStorage::GetFloatPtr(ImGuiID key, float default_val)
|
float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val)
|
||||||
{
|
{
|
||||||
ImVector<Pair>::iterator it = LowerBound(Data, key);
|
ImVector<Pair>::iterator it = LowerBound(Data, key);
|
||||||
if (it == Data.end() || it->key != key)
|
if (it == Data.end() || it->key != key)
|
||||||
|
@ -1163,14 +1173,6 @@ float* ImGuiStorage::GetFloatPtr(ImGuiID key, float default_val)
|
||||||
return &it->val_f;
|
return &it->val_f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* ImGuiStorage::GetVoidPtr(ImGuiID key)
|
|
||||||
{
|
|
||||||
ImVector<Pair>::iterator it = LowerBound(Data, key);
|
|
||||||
if (it == Data.end() || it->key != key)
|
|
||||||
it = Data.insert(it, Pair(key, (void*)0));
|
|
||||||
return it->val_p;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME-OPT: Wasting CPU because all SetInt() are preceeded by GetInt() calls so we should have the result from lower_bound already in place.
|
// FIXME-OPT: Wasting CPU because all SetInt() are preceeded by GetInt() calls so we should have the result from lower_bound already in place.
|
||||||
// However we only use SetInt() on explicit user action (so that's maximum once a frame) so the optimisation isn't much needed.
|
// However we only use SetInt() on explicit user action (so that's maximum once a frame) so the optimisation isn't much needed.
|
||||||
void ImGuiStorage::SetInt(ImU32 key, int val)
|
void ImGuiStorage::SetInt(ImU32 key, int val)
|
||||||
|
|
19
imgui.h
19
imgui.h
|
@ -650,20 +650,25 @@ struct ImGuiStorage
|
||||||
|
|
||||||
// - Get***() functions find pair, never add/allocate. Pairs are sorted so a query is O(log N)
|
// - Get***() functions find pair, never add/allocate. Pairs are sorted so a query is O(log N)
|
||||||
// - Set***() functions find pair, insertion on demand if missing.
|
// - Set***() functions find pair, insertion on demand if missing.
|
||||||
// - Get***Ptr() functions find pair, insertion on demand if missing, return pointer. Useful if you intend to do Get+Set.
|
|
||||||
// A typical use case where this is very convenient:
|
|
||||||
// float* pvar = ImGui::GetIntPtr(key); ImGui::SliderInt("var", pvar, 0, 100); some_var += *pvar;
|
|
||||||
// - Sorted insertion is costly but should amortize. A typical frame shouldn't need to insert any new pair.
|
// - Sorted insertion is costly but should amortize. A typical frame shouldn't need to insert any new pair.
|
||||||
IMGUI_API void Clear();
|
IMGUI_API void Clear();
|
||||||
IMGUI_API int GetInt(ImGuiID key, int default_val = 0) const;
|
IMGUI_API int GetInt(ImGuiID key, int default_val = 0) const;
|
||||||
IMGUI_API void SetInt(ImGuiID key, int val);
|
IMGUI_API void SetInt(ImGuiID key, int val);
|
||||||
IMGUI_API int* GetIntPtr(ImGuiID key, int default_val = 0);
|
|
||||||
IMGUI_API float GetFloat(ImGuiID key, float default_val = 0.0f) const;
|
IMGUI_API float GetFloat(ImGuiID key, float default_val = 0.0f) const;
|
||||||
IMGUI_API void SetFloat(ImGuiID key, float val);
|
IMGUI_API void SetFloat(ImGuiID key, float val);
|
||||||
IMGUI_API float* GetFloatPtr(ImGuiID key, float default_val = 0);
|
IMGUI_API void* GetVoidPtr(ImGuiID key) const; // default_val is NULL
|
||||||
IMGUI_API void SetVoidPtr(ImGuiID key, void* val);
|
IMGUI_API void SetVoidPtr(ImGuiID key, void* val);
|
||||||
IMGUI_API void* GetVoidPtr(ImGuiID key);
|
|
||||||
IMGUI_API void SetAllInt(int val); // Use on your own storage if you know only integer are being stored.
|
// - Get***Ref() functions finds pair, insert on demand if missing, return pointer. Useful if you intend to do Get+Set.
|
||||||
|
// - References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
|
||||||
|
// - A typical use case where this is convenient:
|
||||||
|
// float* pvar = ImGui::GetFloatRef(key); ImGui::SliderFloat("var", pvar, 0, 100.0f); some_var += *pvar;
|
||||||
|
// - You can also use this to quickly create temporary editable values during a session of using Edit&Continue, without restarting your application.
|
||||||
|
IMGUI_API int* GetIntRef(ImGuiID key, int default_val = 0);
|
||||||
|
IMGUI_API float* GetFloatRef(ImGuiID key, float default_val = 0);
|
||||||
|
|
||||||
|
// Use on your own storage if you know only integer are being stored (open/close all tree nodes)
|
||||||
|
IMGUI_API void SetAllInt(int val);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Shared state of InputText(), passed to callback when a ImGuiInputTextFlags_Callback* flag is used.
|
// Shared state of InputText(), passed to callback when a ImGuiInputTextFlags_Callback* flag is used.
|
||||||
|
|
Loading…
Reference in New Issue