1
0
Fork 0
mirror of https://github.com/ocornut/imgui.git synced 2026-01-14 00:34:18 +00:00
imgui/misc/cpp/imgui_raii.h
2018-10-23 18:46:48 -07:00

98 lines
3.7 KiB
C

#include "imgui.h"
#pragma once
struct ImWindow
{
bool IsExpanded;
ImWindow(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0) { IsExpanded = ImGui::Begin(name, p_open, flags); }
~ImWindow() { ImGui::End(); }
operator bool() { return IsExpanded; }
ImWindow(ImWindow &&) = delete;
ImWindow &operator=(ImWindow &&) = delete;
ImWindow(const ImWindow &) = delete;
ImWindow &operator=(ImWindow &) = delete;
};
struct ImPushID
{
ImPushID(const char* str_id) { ImGui::PushID(str_id); }
ImPushID(const char* str_id_begin, const char* str_id_end) { ImGui::PushID(str_id_begin, str_id_end); }
ImPushID(const void* ptr_id) { ImGui::PushID(ptr_id); }
ImPushID(int int_id) { ImGui::PushID(int_id); }
~ImPushID() { ImGui::PopID(); }
ImPushID(ImPushID &&) = delete;
ImPushID &operator=(ImPushID &&) = delete;
ImPushID(const ImPushID &) = delete;
ImPushID &operator=(ImPushID &) = delete;
};
struct ImTreeNode
{
bool IsOpen;
ImTreeNode(const char* label) { IsOpen = ImGui::TreeNode(label); }
ImTreeNode(const char* str_id, const char* fmt, ...) IM_FMTARGS(3) { va_list ap; va_start(ap, fmt); IsOpen = ImGui::TreeNodeV(str_id, fmt, ap); va_end(ap); }
ImTreeNode(const void* ptr_id, const char* fmt, ...) IM_FMTARGS(3) { va_list ap; va_start(ap, fmt); IsOpen = ImGui::TreeNodeV(ptr_id, fmt, ap); va_end(ap); }
~ImTreeNode() { if (IsOpen) ImGui::TreePop(); }
operator bool() { return IsOpen; }
ImTreeNode(ImTreeNode &&) = delete;
ImTreeNode &operator=(ImTreeNode &&) = delete;
ImTreeNode(const ImTreeNode &) = delete;
ImTreeNode &operator=(ImTreeNode &) = delete;
};
struct ImTreeNodeV
{
bool IsOpen;
ImTreeNodeV(const char* str_id, const char* fmt, va_list args) IM_FMTLIST(3) { IsOpen = ImGui::TreeNodeV(str_id, fmt, args); }
ImTreeNodeV(const void* ptr_id, const char* fmt, va_list args) IM_FMTLIST(3) { IsOpen = ImGui::TreeNodeV(ptr_id, fmt, args); }
~ImTreeNodeV() { if (IsOpen) ImGui::TreePop(); }
operator bool() { return IsOpen; }
ImTreeNodeV(ImTreeNodeV &&) = delete;
ImTreeNodeV &operator=(ImTreeNodeV &&) = delete;
ImTreeNodeV(const ImTreeNodeV &) = delete;
ImTreeNodeV &operator=(ImTreeNodeV &) = delete;
};
struct ImTreeNodeEx
{
bool IsOpen;
ImTreeNodeEx(const char* label, ImGuiTreeNodeFlags flags = 0) { IsOpen = ImGui::TreeNodeEx(label, flags); }
ImTreeNodeEx(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, ...) IM_FMTARGS(4) { va_list ap; va_start(ap, fmt); IsOpen = ImGui::TreeNodeExV(str_id, flags, fmt, ap); va_end(ap); }
ImTreeNodeEx(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, ...) IM_FMTARGS(4) { va_list ap; va_start(ap, fmt); IsOpen = ImGui::TreeNodeExV(ptr_id, flags, fmt, ap); va_end(ap); }
~ImTreeNodeEx() { if (IsOpen) ImGui::TreePop(); }
operator bool() { return IsOpen; }
ImTreeNodeEx(ImTreeNodeEx &&) = delete;
ImTreeNodeEx &operator=(ImTreeNodeEx &&) = delete;
ImTreeNodeEx(const ImTreeNodeEx &) = delete;
ImTreeNodeEx &operator=(ImTreeNodeEx &) = delete;
};
struct ImTreeNodeExV
{
bool IsOpen;
ImTreeNodeExV(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args) IM_FMTLIST(4) { IsOpen = ImGui::TreeNodeExV(str_id, flags, fmt, args); }
ImTreeNodeExV(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args) IM_FMTLIST(4) { IsOpen = ImGui::TreeNodeExV(ptr_id, flags, fmt, args); }
~ImTreeNodeExV() { if (IsOpen) ImGui::TreePop(); }
operator bool() { return IsOpen; }
ImTreeNodeExV(ImTreeNodeExV &&) = delete;
ImTreeNodeExV &operator=(ImTreeNodeExV &&) = delete;
ImTreeNodeExV(const ImTreeNodeExV &) = delete;
ImTreeNodeExV &operator=(ImTreeNodeExV &) = delete;
};