imgui_stdlib.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // dear imgui: wrappers for C++ standard library (STL) types (std::string, etc.)
  2. // This is also an example of how you may wrap your own similar types.
  3. // TL;DR; this is using the ImGuiInputTextFlags_CallbackResize facility,
  4. // which also demonstrated in 'Dear ImGui Demo->Widgets->Text Input->Resize Callback'.
  5. // Changelog:
  6. // - v0.10: Initial version. Added InputText() / InputTextMultiline() calls with std::string
  7. // Usage:
  8. // {
  9. // #include "misc/cpp/imgui_stdlib.h"
  10. // #include "misc/cpp/imgui_stdlib.cpp" // <-- If you want to include implementation without messing with your project/build.
  11. // [...]
  12. // std::string my_string;
  13. // ImGui::InputText("my string", &my_string);
  14. // }
  15. // See more C++ related extension (fmt, RAII, syntaxis sugar) on Wiki:
  16. // https://github.com/ocornut/imgui/wiki/Useful-Extensions#cness
  17. #pragma once
  18. #ifndef IMGUI_DISABLE
  19. #include <string>
  20. namespace ImGui
  21. {
  22. // ImGui::InputText() with std::string
  23. // Because text input needs dynamic resizing, we need to setup a callback to grow the capacity
  24. IMGUI_API bool InputText(const char* label, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = nullptr, void* user_data = nullptr);
  25. IMGUI_API bool InputTextMultiline(const char* label, std::string* str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = nullptr, void* user_data = nullptr);
  26. IMGUI_API bool InputTextWithHint(const char* label, const char* hint, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = nullptr, void* user_data = nullptr);
  27. }
  28. #endif // #ifndef IMGUI_DISABLE