Files
Mujoco_WASM/python/mujoco/experimental/dear_imgui/dear_imgui.cc
T
Matija Kecman d068c96d00 Expose ImGuiInputTextFlags_WordWrap to Python.
PiperOrigin-RevId: 930466666
Change-Id: Ic0d5bb39125c3a3986fe28f09d5ba8776c7fc2c7
2026-06-11 05:33:23 -07:00

1235 lines
62 KiB
C++

// Copyright 2026 DeepMind Technologies Limited
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <cfloat>
#include <cstdint>
#include <tuple>
#define NAMESPACE ImGui
#include "dear_imgui_macros.h"
#include <imgui.h>
#include <misc/cpp/imgui_stdlib.h>
#include <pybind11/eval.h>
#include <pybind11/pybind11.h>
#include <pybind11/pytypes.h>
#include <pybind11/stl.h>
// NOLINTBEGIN(whitespace/line_length)
namespace py = pybind11;
using ImString = const char*;
static constexpr const ImVec2 ImVec2_Zero = ImVec2(0.0f, 0.0f);
static constexpr const ImVec2 ImVec2_One = ImVec2(1.0f, 1.0f);
static constexpr const ImVec2 ImVec2_Min_Zero = ImVec2(-FLT_MIN, 0.0f);
static constexpr const ImVec4 ImVec4_Zero = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
static constexpr const ImVec4 ImVec4_One = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
PYBIND11_MODULE(dear_imgui, m) {
// Types.
py::class_<ImVec2>(m, "Vec2")
.def(py::init<>())
.def(py::init<float, float>(), py::arg("_x"), py::arg("_y"))
.def_readwrite("x", &ImVec2::x)
.def_readwrite("y", &ImVec2::y);
py::class_<ImVec4>(m, "Vec4")
.def(py::init<>())
.def(py::init<float, float, float, float>(), py::arg("_x"), py::arg("_y"), py::arg("_z"), py::arg("_w"))
.def_readwrite("x", &ImVec4::x)
.def_readwrite("y", &ImVec4::y)
.def_readwrite("z", &ImVec4::z)
.def_readwrite("w", &ImVec4::w);
py::class_<ImGuiStyle>(m, "Style")
.def_readwrite("FramePadding", &ImGuiStyle::FramePadding)
.def_readwrite("ItemSpacing", &ImGuiStyle::ItemSpacing)
.def_readwrite("WindowPadding", &ImGuiStyle::WindowPadding);
m.def("GetStyle", &ImGui::GetStyle, py::return_value_policy::reference);
py::class_<ImGuiIO>(m, "IO")
.def_readonly("DisplaySize", &ImGuiIO::DisplaySize)
.def_readonly("DeltaTime", &ImGuiIO::DeltaTime)
.def_readonly("Framerate", &ImGuiIO::Framerate)
.def_readonly("WantCaptureMouse", &ImGuiIO::WantCaptureMouse)
.def_readonly("WantCaptureKeyboard", &ImGuiIO::WantCaptureKeyboard)
.def_readonly("KeyShift", &ImGuiIO::KeyShift)
.def_readonly("KeyCtrl", &ImGuiIO::KeyCtrl)
.def_readonly("KeyAlt", &ImGuiIO::KeyAlt)
.def_readonly("KeySuper", &ImGuiIO::KeySuper)
.def_readonly("MousePos", &ImGuiIO::MousePos)
.def_readonly("MouseWheel", &ImGuiIO::MouseWheel)
.def_readonly("MouseDelta", &ImGuiIO::MouseDelta);
m.def("GetIO", &ImGui::GetIO, py::return_value_policy::reference);
m.def("GetCurrentContext", []() {
return reinterpret_cast<uintptr_t>(ImGui::GetCurrentContext());
});
m.def("SetCurrentContext", [](uintptr_t ptr) {
ImGui::SetCurrentContext(reinterpret_cast<ImGuiContext*>(ptr));
});
py::class_<ImGuiListClipper>(m, "ListClipper")
.def(py::init<>())
.def("Begin", &ImGuiListClipper::Begin, py::arg("items_count"), py::arg("items_height") = -1.0f)
.def("End", &ImGuiListClipper::End)
.def("Step", &ImGuiListClipper::Step)
.def("IncludeItemsByIndex", &ImGuiListClipper::IncludeItemsByIndex, py::arg("item_begin"), py::arg("item_end"))
.def("IncludeItemByIndex", &ImGuiListClipper::IncludeItemByIndex, py::arg("item_index"))
.def("SeekCursorForItem", &ImGuiListClipper::SeekCursorForItem, py::arg("item_index"))
.def_readonly("DisplayStart", &ImGuiListClipper::DisplayStart)
.def_readonly("DisplayEnd", &ImGuiListClipper::DisplayEnd);
// Enumerations.
py::enum_<ImGuiWindowFlags_>(m, "WindowFlags")
.value("None", ImGuiWindowFlags_None)
.value("NoTitleBar", ImGuiWindowFlags_NoTitleBar)
.value("NoResize", ImGuiWindowFlags_NoResize)
.value("NoMove", ImGuiWindowFlags_NoMove)
.value("NoScrollbar", ImGuiWindowFlags_NoScrollbar)
.value("NoScrollWithMouse", ImGuiWindowFlags_NoScrollWithMouse)
.value("NoCollapse", ImGuiWindowFlags_NoCollapse)
.value("AlwaysAutoResize", ImGuiWindowFlags_AlwaysAutoResize)
.value("NoBackground", ImGuiWindowFlags_NoBackground)
.value("NoSavedSettings", ImGuiWindowFlags_NoSavedSettings)
.value("NoMouseInputs", ImGuiWindowFlags_NoMouseInputs)
.value("MenuBar", ImGuiWindowFlags_MenuBar)
.value("HorizontalScrollbar", ImGuiWindowFlags_HorizontalScrollbar)
.value("NoFocusOnAppearing", ImGuiWindowFlags_NoFocusOnAppearing)
.value("NoBringToFrontOnFocus", ImGuiWindowFlags_NoBringToFrontOnFocus)
.value("AlwaysVerticalScrollbar", ImGuiWindowFlags_AlwaysVerticalScrollbar)
.value("AlwaysHorizontalScrollbar", ImGuiWindowFlags_AlwaysHorizontalScrollbar)
.value("NoNavInputs", ImGuiWindowFlags_NoNavInputs)
.value("NoNavFocus", ImGuiWindowFlags_NoNavFocus)
.value("UnsavedDocument", ImGuiWindowFlags_UnsavedDocument)
.value("NoDocking", ImGuiWindowFlags_NoDocking)
.value("NoNav", ImGuiWindowFlags_NoNav)
.value("NoDecoration", ImGuiWindowFlags_NoDecoration)
.value("NoInputs", ImGuiWindowFlags_NoInputs)
.value("ChildWindow", ImGuiWindowFlags_ChildWindow)
.value("Tooltip", ImGuiWindowFlags_Tooltip)
.value("Popup", ImGuiWindowFlags_Popup)
.value("Modal", ImGuiWindowFlags_Modal)
.value("ChildMenu", ImGuiWindowFlags_ChildMenu)
.value("DockNodeHost", ImGuiWindowFlags_DockNodeHost);
py::enum_<ImGuiChildFlags_>(m, "ChildFlags")
.value("None", ImGuiChildFlags_None)
.value("Borders", ImGuiChildFlags_Borders)
.value("AlwaysUseWindowPadding", ImGuiChildFlags_AlwaysUseWindowPadding)
.value("ResizeX", ImGuiChildFlags_ResizeX)
.value("ResizeY", ImGuiChildFlags_ResizeY)
.value("AutoResizeX", ImGuiChildFlags_AutoResizeX)
.value("AutoResizeY", ImGuiChildFlags_AutoResizeY)
.value("AlwaysAutoResize", ImGuiChildFlags_AlwaysAutoResize)
.value("FrameStyle", ImGuiChildFlags_FrameStyle)
.value("NavFlattened", ImGuiChildFlags_NavFlattened);
py::enum_<ImGuiInputTextFlags_>(m, "InputTextFlags")
.value("None", ImGuiInputTextFlags_None)
.value("CharsDecimal", ImGuiInputTextFlags_CharsDecimal)
.value("CharsHexadecimal", ImGuiInputTextFlags_CharsHexadecimal)
.value("CharsScientific", ImGuiInputTextFlags_CharsScientific)
.value("CharsUppercase", ImGuiInputTextFlags_CharsUppercase)
.value("CharsNoBlank", ImGuiInputTextFlags_CharsNoBlank)
.value("AllowTabInput", ImGuiInputTextFlags_AllowTabInput)
.value("EnterReturnsTrue", ImGuiInputTextFlags_EnterReturnsTrue)
.value("EscapeClearsAll", ImGuiInputTextFlags_EscapeClearsAll)
.value("CtrlEnterForNewLine", ImGuiInputTextFlags_CtrlEnterForNewLine)
.value("ReadOnly", ImGuiInputTextFlags_ReadOnly)
.value("Password", ImGuiInputTextFlags_Password)
.value("AlwaysOverwrite", ImGuiInputTextFlags_AlwaysOverwrite)
.value("AutoSelectAll", ImGuiInputTextFlags_AutoSelectAll)
.value("ParseEmptyRefVal", ImGuiInputTextFlags_ParseEmptyRefVal)
.value("DisplayEmptyRefVal", ImGuiInputTextFlags_DisplayEmptyRefVal)
.value("NoHorizontalScroll", ImGuiInputTextFlags_NoHorizontalScroll)
.value("NoUndoRedo", ImGuiInputTextFlags_NoUndoRedo)
.value("CallbackCompletion", ImGuiInputTextFlags_CallbackCompletion)
.value("CallbackHistory", ImGuiInputTextFlags_CallbackHistory)
.value("CallbackAlways", ImGuiInputTextFlags_CallbackAlways)
.value("CallbackCharFilter", ImGuiInputTextFlags_CallbackCharFilter)
.value("CallbackResize", ImGuiInputTextFlags_CallbackResize)
.value("CallbackEdit", ImGuiInputTextFlags_CallbackEdit)
.value("WordWrap", ImGuiInputTextFlags_WordWrap);
py::enum_<ImGuiTreeNodeFlags_>(m, "TreeNodeFlags")
.value("None", ImGuiTreeNodeFlags_None)
.value("Selected", ImGuiTreeNodeFlags_Selected)
.value("Framed", ImGuiTreeNodeFlags_Framed)
.value("AllowOverlap", ImGuiTreeNodeFlags_AllowOverlap)
.value("NoTreePushOnOpen", ImGuiTreeNodeFlags_NoTreePushOnOpen)
.value("NoAutoOpenOnLog", ImGuiTreeNodeFlags_NoAutoOpenOnLog)
.value("DefaultOpen", ImGuiTreeNodeFlags_DefaultOpen)
.value("OpenOnDoubleClick", ImGuiTreeNodeFlags_OpenOnDoubleClick)
.value("OpenOnArrow", ImGuiTreeNodeFlags_OpenOnArrow)
.value("Leaf", ImGuiTreeNodeFlags_Leaf)
.value("Bullet", ImGuiTreeNodeFlags_Bullet)
.value("FramePadding", ImGuiTreeNodeFlags_FramePadding)
.value("SpanAvailWidth", ImGuiTreeNodeFlags_SpanAvailWidth)
.value("SpanFullWidth", ImGuiTreeNodeFlags_SpanFullWidth)
.value("SpanTextWidth", ImGuiTreeNodeFlags_SpanTextWidth)
.value("SpanAllColumns", ImGuiTreeNodeFlags_SpanAllColumns)
.value("NavLeftJumpsBackHere", ImGuiTreeNodeFlags_NavLeftJumpsBackHere)
.value("CollapsingHeader", ImGuiTreeNodeFlags_CollapsingHeader);
py::enum_<ImGuiPopupFlags_>(m, "PopupFlags")
.value("None", ImGuiPopupFlags_None)
.value("MouseButtonLeft", ImGuiPopupFlags_MouseButtonLeft)
.value("MouseButtonRight", ImGuiPopupFlags_MouseButtonRight)
.value("MouseButtonMiddle", ImGuiPopupFlags_MouseButtonMiddle)
.value("MouseButtonMask", ImGuiPopupFlags_MouseButtonMask_)
.value("NoReopen", ImGuiPopupFlags_NoReopen)
.value("NoOpenOverExistingPopup", ImGuiPopupFlags_NoOpenOverExistingPopup)
.value("NoOpenOverItems", ImGuiPopupFlags_NoOpenOverItems)
.value("AnyPopupId", ImGuiPopupFlags_AnyPopupId)
.value("AnyPopupLevel", ImGuiPopupFlags_AnyPopupLevel)
.value("AnyPopup", ImGuiPopupFlags_AnyPopup);
py::enum_<ImGuiSelectableFlags_>(m, "SelectableFlags")
.value("None", ImGuiSelectableFlags_None)
.value("DontClosePopups", ImGuiSelectableFlags_DontClosePopups)
.value("SpanAllColumns", ImGuiSelectableFlags_SpanAllColumns)
.value("AllowDoubleClick", ImGuiSelectableFlags_AllowDoubleClick)
.value("Disabled", ImGuiSelectableFlags_Disabled)
.value("AllowOverlap", ImGuiSelectableFlags_AllowOverlap);
py::enum_<ImGuiComboFlags_>(m, "ComboFlags")
.value("None", ImGuiComboFlags_None)
.value("PopupAlignLeft", ImGuiComboFlags_PopupAlignLeft)
.value("HeightSmall", ImGuiComboFlags_HeightSmall)
.value("HeightRegular", ImGuiComboFlags_HeightRegular)
.value("HeightLarge", ImGuiComboFlags_HeightLarge)
.value("HeightLargest", ImGuiComboFlags_HeightLargest)
.value("NoArrowButton", ImGuiComboFlags_NoArrowButton)
.value("NoPreview", ImGuiComboFlags_NoPreview)
.value("WidthFitPreview", ImGuiComboFlags_WidthFitPreview)
.value("HeightMask", ImGuiComboFlags_HeightMask_);
py::enum_<ImGuiTabBarFlags_>(m, "TabBarFlags")
.value("None", ImGuiTabBarFlags_None)
.value("Reorderable", ImGuiTabBarFlags_Reorderable)
.value("AutoSelectNewTabs", ImGuiTabBarFlags_AutoSelectNewTabs)
.value("TabListPopupButton", ImGuiTabBarFlags_TabListPopupButton)
.value("NoCloseWithMiddleMouseButton", ImGuiTabBarFlags_NoCloseWithMiddleMouseButton)
.value("NoTabListScrollingButtons", ImGuiTabBarFlags_NoTabListScrollingButtons)
.value("NoTooltip", ImGuiTabBarFlags_NoTooltip)
.value("DrawSelectedOverline", ImGuiTabBarFlags_DrawSelectedOverline)
.value("FittingPolicyResizeDown", ImGuiTabBarFlags_FittingPolicyResizeDown)
.value("FittingPolicyScroll", ImGuiTabBarFlags_FittingPolicyScroll)
.value("FittingPolicyMask", ImGuiTabBarFlags_FittingPolicyMask_)
.value("FittingPolicyDefault", ImGuiTabBarFlags_FittingPolicyDefault_);
py::enum_<ImGuiTabItemFlags_>(m, "TabItemFlags")
.value("None", ImGuiTabItemFlags_None)
.value("UnsavedDocument", ImGuiTabItemFlags_UnsavedDocument)
.value("SetSelected", ImGuiTabItemFlags_SetSelected)
.value("NoCloseWithMiddleMouseButton", ImGuiTabItemFlags_NoCloseWithMiddleMouseButton)
.value("NoPushId", ImGuiTabItemFlags_NoPushId)
.value("NoTooltip", ImGuiTabItemFlags_NoTooltip)
.value("NoReorder", ImGuiTabItemFlags_NoReorder)
.value("Leading", ImGuiTabItemFlags_Leading)
.value("Trailing", ImGuiTabItemFlags_Trailing)
.value("NoAssumedClosure", ImGuiTabItemFlags_NoAssumedClosure);
py::enum_<ImGuiFocusedFlags_>(m, "FocusedFlags")
.value("None", ImGuiFocusedFlags_None)
.value("ChildWindows", ImGuiFocusedFlags_ChildWindows)
.value("RootWindow", ImGuiFocusedFlags_RootWindow)
.value("AnyWindow", ImGuiFocusedFlags_AnyWindow)
.value("NoPopupHierarchy", ImGuiFocusedFlags_NoPopupHierarchy)
.value("DockHierarchy", ImGuiFocusedFlags_DockHierarchy)
.value("RootAndChildWindows", ImGuiFocusedFlags_RootAndChildWindows);
py::enum_<ImGuiHoveredFlags_>(m, "HoveredFlags")
.value("None", ImGuiHoveredFlags_None)
.value("ChildWindows", ImGuiHoveredFlags_ChildWindows)
.value("RootWindow", ImGuiHoveredFlags_RootWindow)
.value("AnyWindow", ImGuiHoveredFlags_AnyWindow)
.value("NoPopupHierarchy", ImGuiHoveredFlags_NoPopupHierarchy)
.value("DockHierarchy", ImGuiHoveredFlags_DockHierarchy)
.value("AllowWhenBlockedByPopup", ImGuiHoveredFlags_AllowWhenBlockedByPopup)
.value("AllowWhenBlockedByActiveItem", ImGuiHoveredFlags_AllowWhenBlockedByActiveItem)
.value("AllowWhenOverlappedByItem", ImGuiHoveredFlags_AllowWhenOverlappedByItem)
.value("AllowWhenOverlappedByWindow", ImGuiHoveredFlags_AllowWhenOverlappedByWindow)
.value("AllowWhenDisabled", ImGuiHoveredFlags_AllowWhenDisabled)
.value("NoNavOverride", ImGuiHoveredFlags_NoNavOverride)
.value("AllowWhenOverlapped", ImGuiHoveredFlags_AllowWhenOverlapped)
.value("RectOnly", ImGuiHoveredFlags_RectOnly)
.value("RootAndChildWindows", ImGuiHoveredFlags_RootAndChildWindows)
.value("ForTooltip", ImGuiHoveredFlags_ForTooltip)
.value("Stationary", ImGuiHoveredFlags_Stationary)
.value("DelayNone", ImGuiHoveredFlags_DelayNone)
.value("DelayShort", ImGuiHoveredFlags_DelayShort)
.value("DelayNormal", ImGuiHoveredFlags_DelayNormal)
.value("NoSharedDelay", ImGuiHoveredFlags_NoSharedDelay);
py::enum_<ImGuiDockNodeFlags_>(m, "DockNodeFlags")
.value("None", ImGuiDockNodeFlags_None)
.value("KeepAliveOnly", ImGuiDockNodeFlags_KeepAliveOnly)
.value("NoDockingOverCentralNode", ImGuiDockNodeFlags_NoDockingOverCentralNode)
.value("PassthruCentralNode", ImGuiDockNodeFlags_PassthruCentralNode)
.value("NoDockingSplit", ImGuiDockNodeFlags_NoDockingSplit)
.value("NoResize", ImGuiDockNodeFlags_NoResize)
.value("AutoHideTabBar", ImGuiDockNodeFlags_AutoHideTabBar)
.value("NoUndocking", ImGuiDockNodeFlags_NoUndocking);
py::enum_<ImGuiDragDropFlags_>(m, "DragDropFlags")
.value("None", ImGuiDragDropFlags_None)
.value("SourceNoPreviewTooltip", ImGuiDragDropFlags_SourceNoPreviewTooltip)
.value("SourceNoDisableHover", ImGuiDragDropFlags_SourceNoDisableHover)
.value("SourceNoHoldToOpenOthers", ImGuiDragDropFlags_SourceNoHoldToOpenOthers)
.value("SourceAllowNullID", ImGuiDragDropFlags_SourceAllowNullID)
.value("SourceExtern", ImGuiDragDropFlags_SourceExtern)
.value("PayloadAutoExpire", ImGuiDragDropFlags_PayloadAutoExpire)
.value("PayloadNoCrossContext", ImGuiDragDropFlags_PayloadNoCrossContext)
.value("PayloadNoCrossProcess", ImGuiDragDropFlags_PayloadNoCrossProcess)
.value("AcceptBeforeDelivery", ImGuiDragDropFlags_AcceptBeforeDelivery)
.value("AcceptNoDrawDefaultRect", ImGuiDragDropFlags_AcceptNoDrawDefaultRect)
.value("AcceptNoPreviewTooltip", ImGuiDragDropFlags_AcceptNoPreviewTooltip)
.value("AcceptPeekOnly", ImGuiDragDropFlags_AcceptPeekOnly);
py::enum_<ImGuiDataType_>(m, "DataType")
.value("S8", ImGuiDataType_S8)
.value("U8", ImGuiDataType_U8)
.value("S16", ImGuiDataType_S16)
.value("U16", ImGuiDataType_U16)
.value("S32", ImGuiDataType_S32)
.value("U32", ImGuiDataType_U32)
.value("S64", ImGuiDataType_S64)
.value("U64", ImGuiDataType_U64)
.value("Float", ImGuiDataType_Float)
.value("Double", ImGuiDataType_Double);
py::enum_<ImGuiDir>(m, "Dir")
.value("None", ImGuiDir_None)
.value("Left", ImGuiDir_Left)
.value("Right", ImGuiDir_Right)
.value("Up", ImGuiDir_Up)
.value("Down", ImGuiDir_Down);
py::enum_<ImGuiSortDirection>(m, "SortDirection")
.value("None", ImGuiSortDirection_None)
.value("Ascending", ImGuiSortDirection_Ascending)
.value("Descending", ImGuiSortDirection_Descending);
py::enum_<ImGuiInputFlags_>(m, "InputFlags")
.value("None", ImGuiInputFlags_None)
.value("Repeat", ImGuiInputFlags_Repeat)
.value("RouteActive", ImGuiInputFlags_RouteActive)
.value("RouteFocused", ImGuiInputFlags_RouteFocused)
.value("RouteGlobal", ImGuiInputFlags_RouteGlobal)
.value("RouteAlways", ImGuiInputFlags_RouteAlways)
.value("RouteOverFocused", ImGuiInputFlags_RouteOverFocused)
.value("RouteOverActive", ImGuiInputFlags_RouteOverActive)
.value("RouteUnlessBgFocused", ImGuiInputFlags_RouteUnlessBgFocused)
.value("RouteFromRootWindow", ImGuiInputFlags_RouteFromRootWindow)
.value("Tooltip", ImGuiInputFlags_Tooltip);
py::enum_<ImGuiConfigFlags_>(m, "ConfigFlags")
.value("None", ImGuiConfigFlags_None)
.value("NavEnableKeyboard", ImGuiConfigFlags_NavEnableKeyboard)
.value("NavEnableGamepad", ImGuiConfigFlags_NavEnableGamepad)
.value("NavEnableSetMousePos", ImGuiConfigFlags_NavEnableSetMousePos)
.value("NavNoCaptureKeyboard", ImGuiConfigFlags_NavNoCaptureKeyboard)
.value("NoMouse", ImGuiConfigFlags_NoMouse)
.value("NoMouseCursorChange", ImGuiConfigFlags_NoMouseCursorChange)
.value("NoKeyboard", ImGuiConfigFlags_NoKeyboard)
.value("DockingEnable", ImGuiConfigFlags_DockingEnable)
.value("ViewportsEnable", ImGuiConfigFlags_ViewportsEnable)
.value("DpiEnableScaleViewports", ImGuiConfigFlags_DpiEnableScaleViewports)
.value("DpiEnableScaleFonts", ImGuiConfigFlags_DpiEnableScaleFonts)
.value("IsSRGB", ImGuiConfigFlags_IsSRGB)
.value("IsTouchScreen", ImGuiConfigFlags_IsTouchScreen);
py::enum_<ImGuiBackendFlags_>(m, "BackendFlags")
.value("None", ImGuiBackendFlags_None)
.value("HasGamepad", ImGuiBackendFlags_HasGamepad)
.value("HasMouseCursors", ImGuiBackendFlags_HasMouseCursors)
.value("HasSetMousePos", ImGuiBackendFlags_HasSetMousePos)
.value("RendererHasVtxOffset", ImGuiBackendFlags_RendererHasVtxOffset)
.value("PlatformHasViewports", ImGuiBackendFlags_PlatformHasViewports)
.value("HasMouseHoveredViewport", ImGuiBackendFlags_HasMouseHoveredViewport)
.value("RendererHasViewports", ImGuiBackendFlags_RendererHasViewports);
py::enum_<ImGuiCol_>(m, "Col")
.value("Text", ImGuiCol_Text)
.value("TextDisabled", ImGuiCol_TextDisabled)
.value("WindowBg", ImGuiCol_WindowBg)
.value("ChildBg", ImGuiCol_ChildBg)
.value("PopupBg", ImGuiCol_PopupBg)
.value("Border", ImGuiCol_Border)
.value("BorderShadow", ImGuiCol_BorderShadow)
.value("FrameBg", ImGuiCol_FrameBg)
.value("FrameBgHovered", ImGuiCol_FrameBgHovered)
.value("FrameBgActive", ImGuiCol_FrameBgActive)
.value("TitleBg", ImGuiCol_TitleBg)
.value("TitleBgActive", ImGuiCol_TitleBgActive)
.value("TitleBgCollapsed", ImGuiCol_TitleBgCollapsed)
.value("MenuBarBg", ImGuiCol_MenuBarBg)
.value("ScrollbarBg", ImGuiCol_ScrollbarBg)
.value("ScrollbarGrab", ImGuiCol_ScrollbarGrab)
.value("ScrollbarGrabHovered", ImGuiCol_ScrollbarGrabHovered)
.value("ScrollbarGrabActive", ImGuiCol_ScrollbarGrabActive)
.value("CheckMark", ImGuiCol_CheckMark)
.value("SliderGrab", ImGuiCol_SliderGrab)
.value("SliderGrabActive", ImGuiCol_SliderGrabActive)
.value("Button", ImGuiCol_Button)
.value("ButtonHovered", ImGuiCol_ButtonHovered)
.value("ButtonActive", ImGuiCol_ButtonActive)
.value("Header", ImGuiCol_Header)
.value("HeaderHovered", ImGuiCol_HeaderHovered)
.value("HeaderActive", ImGuiCol_HeaderActive)
.value("Separator", ImGuiCol_Separator)
.value("SeparatorHovered", ImGuiCol_SeparatorHovered)
.value("SeparatorActive", ImGuiCol_SeparatorActive)
.value("ResizeGrip", ImGuiCol_ResizeGrip)
.value("ResizeGripHovered", ImGuiCol_ResizeGripHovered)
.value("ResizeGripActive", ImGuiCol_ResizeGripActive)
.value("TabHovered", ImGuiCol_TabHovered)
.value("Tab", ImGuiCol_Tab)
.value("TabSelected", ImGuiCol_TabSelected)
.value("TabSelectedOverline", ImGuiCol_TabSelectedOverline)
.value("TabDimmed", ImGuiCol_TabDimmed)
.value("TabDimmedSelected", ImGuiCol_TabDimmedSelected)
.value("TabDimmedSelectedOverline", ImGuiCol_TabDimmedSelectedOverline)
.value("DockingPreview", ImGuiCol_DockingPreview)
.value("DockingEmptyBg", ImGuiCol_DockingEmptyBg)
.value("PlotLines", ImGuiCol_PlotLines)
.value("PlotLinesHovered", ImGuiCol_PlotLinesHovered)
.value("PlotHistogram", ImGuiCol_PlotHistogram)
.value("PlotHistogramHovered", ImGuiCol_PlotHistogramHovered)
.value("TableHeaderBg", ImGuiCol_TableHeaderBg)
.value("TableBorderStrong", ImGuiCol_TableBorderStrong)
.value("TableBorderLight", ImGuiCol_TableBorderLight)
.value("TableRowBg", ImGuiCol_TableRowBg)
.value("TableRowBgAlt", ImGuiCol_TableRowBgAlt)
.value("TextLink", ImGuiCol_TextLink)
.value("TextSelectedBg", ImGuiCol_TextSelectedBg)
.value("DragDropTarget", ImGuiCol_DragDropTarget)
.value("NavHighlight", ImGuiCol_NavHighlight)
.value("NavWindowingHighlight", ImGuiCol_NavWindowingHighlight)
.value("NavWindowingDimBg", ImGuiCol_NavWindowingDimBg)
.value("ModalWindowDimBg", ImGuiCol_ModalWindowDimBg);
py::enum_<ImGuiStyleVar_>(m, "StyleVar")
.value("Alpha", ImGuiStyleVar_Alpha)
.value("DisabledAlpha", ImGuiStyleVar_DisabledAlpha)
.value("WindowPadding", ImGuiStyleVar_WindowPadding)
.value("WindowRounding", ImGuiStyleVar_WindowRounding)
.value("WindowBorderSize", ImGuiStyleVar_WindowBorderSize)
.value("WindowMinSize", ImGuiStyleVar_WindowMinSize)
.value("WindowTitleAlign", ImGuiStyleVar_WindowTitleAlign)
.value("ChildRounding", ImGuiStyleVar_ChildRounding)
.value("ChildBorderSize", ImGuiStyleVar_ChildBorderSize)
.value("PopupRounding", ImGuiStyleVar_PopupRounding)
.value("PopupBorderSize", ImGuiStyleVar_PopupBorderSize)
.value("FramePadding", ImGuiStyleVar_FramePadding)
.value("FrameRounding", ImGuiStyleVar_FrameRounding)
.value("FrameBorderSize", ImGuiStyleVar_FrameBorderSize)
.value("ItemSpacing", ImGuiStyleVar_ItemSpacing)
.value("ItemInnerSpacing", ImGuiStyleVar_ItemInnerSpacing)
.value("IndentSpacing", ImGuiStyleVar_IndentSpacing)
.value("CellPadding", ImGuiStyleVar_CellPadding)
.value("ScrollbarSize", ImGuiStyleVar_ScrollbarSize)
.value("ScrollbarRounding", ImGuiStyleVar_ScrollbarRounding)
.value("GrabMinSize", ImGuiStyleVar_GrabMinSize)
.value("GrabRounding", ImGuiStyleVar_GrabRounding)
.value("TabRounding", ImGuiStyleVar_TabRounding)
.value("TabBorderSize", ImGuiStyleVar_TabBorderSize)
.value("TabBarBorderSize", ImGuiStyleVar_TabBarBorderSize)
.value("TableAngledHeadersAngle", ImGuiStyleVar_TableAngledHeadersAngle)
.value("TableAngledHeadersTextAlign", ImGuiStyleVar_TableAngledHeadersTextAlign)
.value("ButtonTextAlign", ImGuiStyleVar_ButtonTextAlign)
.value("SelectableTextAlign", ImGuiStyleVar_SelectableTextAlign)
.value("SeparatorTextBorderSize", ImGuiStyleVar_SeparatorTextBorderSize)
.value("SeparatorTextAlign", ImGuiStyleVar_SeparatorTextAlign)
.value("SeparatorTextPadding", ImGuiStyleVar_SeparatorTextPadding)
.value("DockingSeparatorSize", ImGuiStyleVar_DockingSeparatorSize);
py::enum_<ImGuiButtonFlags_>(m, "ButtonFlags")
.value("None", ImGuiButtonFlags_None)
.value("MouseButtonLeft", ImGuiButtonFlags_MouseButtonLeft)
.value("MouseButtonRight", ImGuiButtonFlags_MouseButtonRight)
.value("MouseButtonMiddle", ImGuiButtonFlags_MouseButtonMiddle)
.value("MouseButtonMask", ImGuiButtonFlags_MouseButtonMask_);
py::enum_<ImGuiColorEditFlags_>(m, "ColorEditFlags")
.value("None", ImGuiColorEditFlags_None)
.value("NoAlpha", ImGuiColorEditFlags_NoAlpha)
.value("NoPicker", ImGuiColorEditFlags_NoPicker)
.value("NoOptions", ImGuiColorEditFlags_NoOptions)
.value("NoSmallPreview", ImGuiColorEditFlags_NoSmallPreview)
.value("NoInputs", ImGuiColorEditFlags_NoInputs)
.value("NoTooltip", ImGuiColorEditFlags_NoTooltip)
.value("NoLabel", ImGuiColorEditFlags_NoLabel)
.value("NoSidePreview", ImGuiColorEditFlags_NoSidePreview)
.value("NoDragDrop", ImGuiColorEditFlags_NoDragDrop)
.value("NoBorder", ImGuiColorEditFlags_NoBorder)
.value("AlphaBar", ImGuiColorEditFlags_AlphaBar)
.value("AlphaPreview", ImGuiColorEditFlags_AlphaPreview)
.value("AlphaPreviewHalf", ImGuiColorEditFlags_AlphaPreviewHalf)
.value("HDR", ImGuiColorEditFlags_HDR)
.value("DisplayRGB", ImGuiColorEditFlags_DisplayRGB)
.value("DisplayHSV", ImGuiColorEditFlags_DisplayHSV)
.value("DisplayHex", ImGuiColorEditFlags_DisplayHex)
.value("Uint8", ImGuiColorEditFlags_Uint8)
.value("Float", ImGuiColorEditFlags_Float)
.value("PickerHueBar", ImGuiColorEditFlags_PickerHueBar)
.value("PickerHueWheel", ImGuiColorEditFlags_PickerHueWheel)
.value("InputRGB", ImGuiColorEditFlags_InputRGB)
.value("InputHSV", ImGuiColorEditFlags_InputHSV)
.value("DefaultOptions", ImGuiColorEditFlags_DefaultOptions_)
.value("DisplayMask", ImGuiColorEditFlags_DisplayMask_)
.value("DataTypeMask", ImGuiColorEditFlags_DataTypeMask_)
.value("PickerMask", ImGuiColorEditFlags_PickerMask_)
.value("InputMask", ImGuiColorEditFlags_InputMask_);
py::enum_<ImGuiSliderFlags_>(m, "SliderFlags")
.value("None", ImGuiSliderFlags_None)
.value("AlwaysClamp", ImGuiSliderFlags_AlwaysClamp)
.value("Logarithmic", ImGuiSliderFlags_Logarithmic)
.value("NoRoundToFormat", ImGuiSliderFlags_NoRoundToFormat)
.value("NoInput", ImGuiSliderFlags_NoInput)
.value("WrapAround", ImGuiSliderFlags_WrapAround)
.value("InvalidMask", ImGuiSliderFlags_InvalidMask_);
py::enum_<ImGuiMouseButton_>(m, "MouseButton")
.value("Left", ImGuiMouseButton_Left)
.value("Right", ImGuiMouseButton_Right)
.value("Middle", ImGuiMouseButton_Middle);
py::enum_<ImGuiMouseCursor_>(m, "MouseCursor")
.value("None", ImGuiMouseCursor_None)
.value("Arrow", ImGuiMouseCursor_Arrow)
.value("TextInput", ImGuiMouseCursor_TextInput)
.value("ResizeAll", ImGuiMouseCursor_ResizeAll)
.value("ResizeNS", ImGuiMouseCursor_ResizeNS)
.value("ResizeEW", ImGuiMouseCursor_ResizeEW)
.value("ResizeNESW", ImGuiMouseCursor_ResizeNESW)
.value("ResizeNWSE", ImGuiMouseCursor_ResizeNWSE)
.value("Hand", ImGuiMouseCursor_Hand)
.value("NotAllowed", ImGuiMouseCursor_NotAllowed);
py::enum_<ImGuiMouseSource>(m, "MouseSource")
.value("Mouse", ImGuiMouseSource_Mouse)
.value("TouchScreen", ImGuiMouseSource_TouchScreen)
.value("Pen", ImGuiMouseSource_Pen);
py::enum_<ImGuiCond_>(m, "Cond")
.value("None", ImGuiCond_None)
.value("Always", ImGuiCond_Always)
.value("Once", ImGuiCond_Once)
.value("FirstUseEver", ImGuiCond_FirstUseEver)
.value("Appearing", ImGuiCond_Appearing);
py::enum_<ImGuiTableFlags_>(m, "TableFlags")
.value("None", ImGuiTableFlags_None)
.value("Resizable", ImGuiTableFlags_Resizable)
.value("Reorderable", ImGuiTableFlags_Reorderable)
.value("Hideable", ImGuiTableFlags_Hideable)
.value("Sortable", ImGuiTableFlags_Sortable)
.value("NoSavedSettings", ImGuiTableFlags_NoSavedSettings)
.value("ContextMenuInBody", ImGuiTableFlags_ContextMenuInBody)
.value("RowBg", ImGuiTableFlags_RowBg)
.value("BordersInnerH", ImGuiTableFlags_BordersInnerH)
.value("BordersOuterH", ImGuiTableFlags_BordersOuterH)
.value("BordersInnerV", ImGuiTableFlags_BordersInnerV)
.value("BordersOuterV", ImGuiTableFlags_BordersOuterV)
.value("BordersH", ImGuiTableFlags_BordersH)
.value("BordersV", ImGuiTableFlags_BordersV)
.value("BordersInner", ImGuiTableFlags_BordersInner)
.value("BordersOuter", ImGuiTableFlags_BordersOuter)
.value("Borders", ImGuiTableFlags_Borders)
.value("NoBordersInBody", ImGuiTableFlags_NoBordersInBody)
.value("NoBordersInBodyUntilResize", ImGuiTableFlags_NoBordersInBodyUntilResize)
.value("SizingFixedFit", ImGuiTableFlags_SizingFixedFit)
.value("SizingFixedSame", ImGuiTableFlags_SizingFixedSame)
.value("SizingStretchProp", ImGuiTableFlags_SizingStretchProp)
.value("SizingStretchSame", ImGuiTableFlags_SizingStretchSame)
.value("NoHostExtendX", ImGuiTableFlags_NoHostExtendX)
.value("NoHostExtendY", ImGuiTableFlags_NoHostExtendY)
.value("NoKeepColumnsVisible", ImGuiTableFlags_NoKeepColumnsVisible)
.value("PreciseWidths", ImGuiTableFlags_PreciseWidths)
.value("NoClip", ImGuiTableFlags_NoClip)
.value("PadOuterX", ImGuiTableFlags_PadOuterX)
.value("NoPadOuterX", ImGuiTableFlags_NoPadOuterX)
.value("NoPadInnerX", ImGuiTableFlags_NoPadInnerX)
.value("ScrollX", ImGuiTableFlags_ScrollX)
.value("ScrollY", ImGuiTableFlags_ScrollY)
.value("SortMulti", ImGuiTableFlags_SortMulti)
.value("SortTristate", ImGuiTableFlags_SortTristate)
.value("HighlightHoveredColumn", ImGuiTableFlags_HighlightHoveredColumn)
.value("SizingMask", ImGuiTableFlags_SizingMask_);
py::enum_<ImGuiTableColumnFlags_>(m, "TableColumnFlags")
.value("None", ImGuiTableColumnFlags_None)
.value("Disabled", ImGuiTableColumnFlags_Disabled)
.value("DefaultHide", ImGuiTableColumnFlags_DefaultHide)
.value("DefaultSort", ImGuiTableColumnFlags_DefaultSort)
.value("WidthStretch", ImGuiTableColumnFlags_WidthStretch)
.value("WidthFixed", ImGuiTableColumnFlags_WidthFixed)
.value("NoResize", ImGuiTableColumnFlags_NoResize)
.value("NoReorder", ImGuiTableColumnFlags_NoReorder)
.value("NoHide", ImGuiTableColumnFlags_NoHide)
.value("NoClip", ImGuiTableColumnFlags_NoClip)
.value("NoSort", ImGuiTableColumnFlags_NoSort)
.value("NoSortAscending", ImGuiTableColumnFlags_NoSortAscending)
.value("NoSortDescending", ImGuiTableColumnFlags_NoSortDescending)
.value("NoHeaderLabel", ImGuiTableColumnFlags_NoHeaderLabel)
.value("NoHeaderWidth", ImGuiTableColumnFlags_NoHeaderWidth)
.value("PreferSortAscending", ImGuiTableColumnFlags_PreferSortAscending)
.value("PreferSortDescending", ImGuiTableColumnFlags_PreferSortDescending)
.value("IndentEnable", ImGuiTableColumnFlags_IndentEnable)
.value("IndentDisable", ImGuiTableColumnFlags_IndentDisable)
.value("AngledHeader", ImGuiTableColumnFlags_AngledHeader)
.value("IsEnabled", ImGuiTableColumnFlags_IsEnabled)
.value("IsVisible", ImGuiTableColumnFlags_IsVisible)
.value("IsSorted", ImGuiTableColumnFlags_IsSorted)
.value("IsHovered", ImGuiTableColumnFlags_IsHovered)
.value("WidthMask", ImGuiTableColumnFlags_WidthMask_)
.value("IndentMask", ImGuiTableColumnFlags_IndentMask_)
.value("StatusMask", ImGuiTableColumnFlags_StatusMask_)
.value("NoDirectResize", ImGuiTableColumnFlags_NoDirectResize_);
py::enum_<ImGuiTableRowFlags_>(m, "TableRowFlags")
.value("None", ImGuiTableRowFlags_None)
.value("Headers", ImGuiTableRowFlags_Headers);
py::enum_<ImGuiTableBgTarget_>(m, "TableBgTarget")
.value("None", ImGuiTableBgTarget_None)
.value("RowBg0", ImGuiTableBgTarget_RowBg0)
.value("RowBg1", ImGuiTableBgTarget_RowBg1)
.value("CellBg", ImGuiTableBgTarget_CellBg);
py::enum_<ImGuiKey>(m, "Key")
.value("None", ImGuiKey_None)
.value("Tab", ImGuiKey_Tab)
.value("LeftArrow", ImGuiKey_LeftArrow)
.value("RightArrow", ImGuiKey_RightArrow)
.value("UpArrow", ImGuiKey_UpArrow)
.value("DownArrow", ImGuiKey_DownArrow)
.value("PageUp", ImGuiKey_PageUp)
.value("PageDown", ImGuiKey_PageDown)
.value("Home", ImGuiKey_Home)
.value("End", ImGuiKey_End)
.value("Insert", ImGuiKey_Insert)
.value("Delete", ImGuiKey_Delete)
.value("Backspace", ImGuiKey_Backspace)
.value("Space", ImGuiKey_Space)
.value("Enter", ImGuiKey_Enter)
.value("Escape", ImGuiKey_Escape)
.value("LeftCtrl", ImGuiKey_LeftCtrl)
.value("LeftShift", ImGuiKey_LeftShift)
.value("LeftAlt", ImGuiKey_LeftAlt)
.value("LeftSuper", ImGuiKey_LeftSuper)
.value("RightCtrl", ImGuiKey_RightCtrl)
.value("RightShift", ImGuiKey_RightShift)
.value("RightAlt", ImGuiKey_RightAlt)
.value("RightSuper", ImGuiKey_RightSuper)
.value("Menu", ImGuiKey_Menu)
// "N" prefix ensures "imgui.Key.N0" parses correctly in Python
// (numbers are not valid identifier prefixes).
.value("N0", ImGuiKey_0)
.value("N1", ImGuiKey_1)
.value("N2", ImGuiKey_2)
.value("N3", ImGuiKey_3)
.value("N4", ImGuiKey_4)
.value("N5", ImGuiKey_5)
.value("N6", ImGuiKey_6)
.value("N7", ImGuiKey_7)
.value("N8", ImGuiKey_8)
.value("N9", ImGuiKey_9)
.value("A", ImGuiKey_A)
.value("B", ImGuiKey_B)
.value("C", ImGuiKey_C)
.value("D", ImGuiKey_D)
.value("E", ImGuiKey_E)
.value("F", ImGuiKey_F)
.value("G", ImGuiKey_G)
.value("H", ImGuiKey_H)
.value("I", ImGuiKey_I)
.value("J", ImGuiKey_J)
.value("K", ImGuiKey_K)
.value("L", ImGuiKey_L)
.value("M", ImGuiKey_M)
.value("N", ImGuiKey_N)
.value("O", ImGuiKey_O)
.value("P", ImGuiKey_P)
.value("Q", ImGuiKey_Q)
.value("R", ImGuiKey_R)
.value("S", ImGuiKey_S)
.value("T", ImGuiKey_T)
.value("U", ImGuiKey_U)
.value("V", ImGuiKey_V)
.value("W", ImGuiKey_W)
.value("X", ImGuiKey_X)
.value("Y", ImGuiKey_Y)
.value("Z", ImGuiKey_Z)
.value("F1", ImGuiKey_F1)
.value("F2", ImGuiKey_F2)
.value("F3", ImGuiKey_F3)
.value("F4", ImGuiKey_F4)
.value("F5", ImGuiKey_F5)
.value("F6", ImGuiKey_F6)
.value("F7", ImGuiKey_F7)
.value("F8", ImGuiKey_F8)
.value("F9", ImGuiKey_F9)
.value("F10", ImGuiKey_F10)
.value("F11", ImGuiKey_F11)
.value("F12", ImGuiKey_F12)
.value("F13", ImGuiKey_F13)
.value("F14", ImGuiKey_F14)
.value("F15", ImGuiKey_F15)
.value("F16", ImGuiKey_F16)
.value("F17", ImGuiKey_F17)
.value("F18", ImGuiKey_F18)
.value("F19", ImGuiKey_F19)
.value("F20", ImGuiKey_F20)
.value("F21", ImGuiKey_F21)
.value("F22", ImGuiKey_F22)
.value("F23", ImGuiKey_F23)
.value("F24", ImGuiKey_F24)
.value("Apostrophe", ImGuiKey_Apostrophe)
.value("Comma", ImGuiKey_Comma)
.value("Minus", ImGuiKey_Minus)
.value("Period", ImGuiKey_Period)
.value("Slash", ImGuiKey_Slash)
.value("Semicolon", ImGuiKey_Semicolon)
.value("Equal", ImGuiKey_Equal)
.value("LeftBracket", ImGuiKey_LeftBracket)
.value("Backslash", ImGuiKey_Backslash)
.value("RightBracket", ImGuiKey_RightBracket)
.value("GraveAccent", ImGuiKey_GraveAccent)
.value("CapsLock", ImGuiKey_CapsLock)
.value("ScrollLock", ImGuiKey_ScrollLock)
.value("NumLock", ImGuiKey_NumLock)
.value("PrintScreen", ImGuiKey_PrintScreen)
.value("Pause", ImGuiKey_Pause)
.value("Keypad0", ImGuiKey_Keypad0)
.value("Keypad1", ImGuiKey_Keypad1)
.value("Keypad2", ImGuiKey_Keypad2)
.value("Keypad3", ImGuiKey_Keypad3)
.value("Keypad4", ImGuiKey_Keypad4)
.value("Keypad5", ImGuiKey_Keypad5)
.value("Keypad6", ImGuiKey_Keypad6)
.value("Keypad7", ImGuiKey_Keypad7)
.value("Keypad8", ImGuiKey_Keypad8)
.value("Keypad9", ImGuiKey_Keypad9)
.value("KeypadDecimal", ImGuiKey_KeypadDecimal)
.value("KeypadDivide", ImGuiKey_KeypadDivide)
.value("KeypadMultiply", ImGuiKey_KeypadMultiply)
.value("KeypadSubtract", ImGuiKey_KeypadSubtract)
.value("KeypadAdd", ImGuiKey_KeypadAdd)
.value("KeypadEnter", ImGuiKey_KeypadEnter)
.value("KeypadEqual", ImGuiKey_KeypadEqual)
.value("AppBack", ImGuiKey_AppBack)
.value("AppForward", ImGuiKey_AppForward)
.value("GamepadStart", ImGuiKey_GamepadStart)
.value("GamepadBack", ImGuiKey_GamepadBack)
.value("GamepadFaceLeft", ImGuiKey_GamepadFaceLeft)
.value("GamepadFaceRight", ImGuiKey_GamepadFaceRight)
.value("GamepadFaceUp", ImGuiKey_GamepadFaceUp)
.value("GamepadFaceDown", ImGuiKey_GamepadFaceDown)
.value("GamepadDpadLeft", ImGuiKey_GamepadDpadLeft)
.value("GamepadDpadRight", ImGuiKey_GamepadDpadRight)
.value("GamepadDpadUp", ImGuiKey_GamepadDpadUp)
.value("GamepadDpadDown", ImGuiKey_GamepadDpadDown)
.value("GamepadL1", ImGuiKey_GamepadL1)
.value("GamepadR1", ImGuiKey_GamepadR1)
.value("GamepadL2", ImGuiKey_GamepadL2)
.value("GamepadR2", ImGuiKey_GamepadR2)
.value("GamepadL3", ImGuiKey_GamepadL3)
.value("GamepadR3", ImGuiKey_GamepadR3)
.value("GamepadLStickLeft", ImGuiKey_GamepadLStickLeft)
.value("GamepadLStickRight", ImGuiKey_GamepadLStickRight)
.value("GamepadLStickUp", ImGuiKey_GamepadLStickUp)
.value("GamepadLStickDown", ImGuiKey_GamepadLStickDown)
.value("GamepadRStickLeft", ImGuiKey_GamepadRStickLeft)
.value("GamepadRStickRight", ImGuiKey_GamepadRStickRight)
.value("GamepadRStickUp", ImGuiKey_GamepadRStickUp)
.value("GamepadRStickDown", ImGuiKey_GamepadRStickDown)
.value("MouseLeft", ImGuiKey_MouseLeft)
.value("MouseRight", ImGuiKey_MouseRight)
.value("MouseMiddle", ImGuiKey_MouseMiddle)
.value("MouseX1", ImGuiKey_MouseX1)
.value("MouseX2", ImGuiKey_MouseX2)
.value("MouseWheelX", ImGuiKey_MouseWheelX)
.value("MouseWheelY", ImGuiKey_MouseWheelY)
.value("ReservedForModCtrl", ImGuiKey_ReservedForModCtrl)
.value("ReservedForModShift", ImGuiKey_ReservedForModShift)
.value("ReservedForModAlt", ImGuiKey_ReservedForModAlt)
.value("ReservedForModSuper", ImGuiKey_ReservedForModSuper)
.value("Ctrl", ImGuiMod_Ctrl)
.value("Shift", ImGuiMod_Shift)
.value("Alt", ImGuiMod_Alt)
.value("Super", ImGuiMod_Super)
.value("Mask", ImGuiMod_Mask_);
// Functions.
//
// Most functions can be bound directly with no custom implementation. A few
// overloaded functions are bound with unique names to prevent ambiguities
// on the python side. Which function is given an alternative name is more
// or less arbitrary.
//
// Functions that take pointers require custom implementations. Pointers are
// usually used as either in/out parameters or lists. For in/out parameters,
// we return a tuple containing the return value of the function and the
// updated value stored in the pointer. For lists, we accept a std::vector
// of the corresponding type and pass the raw array into the ImGui functions.
//
// Any printf-like function (that took a format + va_list) instead simply
// takes a string argument, on the assumption that the formatting will be done
// in python.
//
// Note: this list of functions isn't guaranteed to be complete. We ignore all
// rendering specific functions as well as debug functions and anything else
// that we feel isn't worth the effort to support.
DEF0_F(ShowDemoWindow, {
bool open = true;
ImGui::ShowDemoWindow(&open);
return open;
});
DEF3_F(Begin, (ImString, name, ), (bool*, p_open, = nullptr), (ImGuiWindowFlags, flags, = 0), {
const auto result = ImGui::Begin(name, p_open, flags);
return std::make_tuple(result, *p_open);
});
DEF0(End);
DEF4(BeginChild, (ImString, str_id, ), (const ImVec2&, size, = ImVec2_Zero), (ImGuiChildFlags, child_flags, = 0), (ImGuiWindowFlags, window_flags, = 0));
DEF4_AS(BeginChild, BeginChildId, (ImGuiID, id, ), (const ImVec2&, size, = ImVec2_Zero), (ImGuiChildFlags, child_flags, = 0), (ImGuiWindowFlags, window_flags, = 0));
DEF0(EndChild);
DEF0(IsWindowAppearing);
DEF0(IsWindowCollapsed);
DEF1(IsWindowFocused, (ImGuiFocusedFlags, flags, = 0));
DEF1(IsWindowHovered, (ImGuiHoveredFlags, flags, = 0));
DEF0(GetWindowDpiScale);
DEF0(GetWindowPos);
DEF0(GetWindowSize);
DEF0(GetWindowWidth);
DEF0(GetWindowHeight);
DEF3(SetNextWindowPos, (const ImVec2&, pos, ), (ImGuiCond, cond, = 0), (const ImVec2&, pivot, = ImVec2_Zero));
DEF2(SetNextWindowSize, (const ImVec2&, size, ), (ImGuiCond, cond, = 0));
DEF1(SetNextWindowContentSize, (const ImVec2&, size, ));
DEF2(SetNextWindowCollapsed, (bool, collapsed, ), (ImGuiCond, cond, = 0));
DEF0(SetNextWindowFocus);
DEF1(SetNextWindowScroll, (const ImVec2&, scroll, ));
DEF1(SetNextWindowBgAlpha, (float, alpha, ));
DEF1(SetNextWindowViewport, (ImGuiID, viewport_id, ));
DEF2(SetWindowPos, (const ImVec2&, pos, ), (ImGuiCond, cond, = 0));
DEF2(SetWindowSize, (const ImVec2&, size, ), (ImGuiCond, cond, = 0));
DEF2(SetWindowCollapsed, (bool, collapsed, ), (ImGuiCond, cond, = 0));
DEF0(SetWindowFocus);
DEF1(SetWindowFontScale, (float, scale, ));
DEF3(SetWindowPos, (ImString, name, ), (const ImVec2&, pos, ), (ImGuiCond, cond, = 0));
DEF3(SetWindowSize, (ImString, name, ), (const ImVec2&, size, ), (ImGuiCond, cond, = 0));
DEF3(SetWindowCollapsed, (ImString, name, ), (bool, collapsed, ), (ImGuiCond, cond, = 0));
DEF1(SetWindowFocus, (ImString, name, ));
DEF0(GetContentRegionAvail);
DEF0(GetContentRegionMax);
DEF0(GetWindowContentRegionMin);
DEF0(GetWindowContentRegionMax);
DEF0(GetScrollX);
DEF0(GetScrollY);
DEF1(SetScrollX, (float, scroll_x, ));
DEF1(SetScrollY, (float, scroll_y, ));
DEF0(GetScrollMaxX);
DEF0(GetScrollMaxY);
DEF1(SetScrollHereX, (float, center_x_ratio, = 0.5f));
DEF1(SetScrollHereY, (float, center_y_ratio, = 0.5f));
DEF2(SetScrollFromPosX, (float, local_x, ), (float, center_x_ratio, = 0.5f));
DEF2(SetScrollFromPosY, (float, local_y, ), (float, center_y_ratio, = 0.5f));
DEF0(PopFont);
DEF2(PushStyleColor, (ImGuiCol, idx, ), (ImU32, col, ));
DEF2(PushStyleColor, (ImGuiCol, idx, ), (const ImVec4&, col, ));
DEF1(PopStyleColor, (int, count, = 1));
DEF2(PushStyleVar, (ImGuiStyleVar, idx, ), (float, val, ));
DEF2(PushStyleVar, (ImGuiStyleVar, idx, ), (const ImVec2&, val, ));
DEF1(PopStyleVar, (int, count, = 1));
DEF1(PushTabStop, (bool, tab_stop, ));
DEF0(PopTabStop);
DEF1(PushButtonRepeat, (bool, repeat, ));
DEF0(PopButtonRepeat);
DEF1(PushItemWidth, (float, item_width, ));
DEF0(PopItemWidth);
DEF1(SetNextItemWidth, (float, item_width, ));
DEF0(CalcItemWidth);
DEF1(PushTextWrapPos, (float, wrap_local_pos_x, = 0.0f));
DEF0(PopTextWrapPos);
DEF0(GetFontSize);
DEF0(GetFontTexUvWhitePixel);
DEF2(GetColorU32, (ImGuiCol, idx, ), (float, alpha_mul, = 1.0f));
DEF1(GetColorU32, (const ImVec4&, col, ));
DEF2(GetColorU32, (ImU32, col, ), (float, alpha_mul, = 1.0f));
DEF1(GetStyleColorVec4, (ImGuiCol, idx, ));
DEF0(GetCursorScreenPos);
DEF1(SetCursorScreenPos, (const ImVec2&, pos, ));
DEF0(GetCursorPos);
DEF0(GetCursorPosX);
DEF0(GetCursorPosY);
DEF1(SetCursorPos, (const ImVec2&, local_pos, ));
DEF1(SetCursorPosX, (float, local_x, ));
DEF1(SetCursorPosY, (float, local_y, ));
DEF0(GetCursorStartPos);
DEF0(Separator);
DEF2(SameLine, (float, offset_from_start_x, = 0.0f), (float, spacing, = -1.0f));
DEF0(NewLine);
DEF0(Spacing);
DEF1(Dummy, (const ImVec2&, size, ));
DEF1(Indent, (float, indent_w, = 0.0f));
DEF1(Unindent, (float, indent_w, = 0.0f));
DEF0(BeginGroup);
DEF0(EndGroup);
DEF0(AlignTextToFramePadding);
DEF0(GetTextLineHeight);
DEF0(GetTextLineHeightWithSpacing);
DEF0(GetFrameHeight);
DEF0(GetFrameHeightWithSpacing);
DEF1(PushID, (ImString, str_id, ));
DEF2(PushID, (ImString, str_id_begin, ), (ImString, str_id_end, ));
DEF1(PushID, (int, int_id, ));
DEF0(PopID);
DEF1(GetID, (ImString, str_id, ));
DEF2(GetID, (ImString, str_id_begin, ), (ImString, str_id_end, ));
DEF1_F(TextUnformatted, (ImString, txt, ), {
ImGui::TextUnformatted(txt);
});
DEF1_F(Text, (ImString, txt, ), {
return ImGui::Text("%s", txt);
});
DEF2_F(TextColored, (const ImVec4&, col, ), (ImString, txt, ), {
return ImGui::TextColored(col, "%s", txt);
});
DEF1_F(TextDisabled, (ImString, txt, ), {
return ImGui::TextDisabled("%s", txt);
});
DEF1_F(TextWrapped, (ImString, txt, ), {
return ImGui::TextWrapped("%s", txt);
});
DEF2_F(LabelText, (ImString, label, ), (ImString, txt, ), {
return ImGui::LabelText(label, "%s", txt);
});
DEF1_F(BulletText, (ImString, txt, ), {
return ImGui::BulletText("%s", txt);
});
DEF1(SeparatorText, (ImString, label, ));
DEF2(Button, (ImString, label, ), (const ImVec2&, size, = ImVec2_Zero));
DEF1(SmallButton, (ImString, label, ));
DEF3(InvisibleButton, (ImString, str_id, ), (const ImVec2&, size, ), (ImGuiButtonFlags, flags, = 0));
DEF2(ArrowButton, (ImString, str_id, ), (ImGuiDir, dir, ));
DEF2_F(Checkbox, (ImString, label, ), (bool*, v, ), {
auto result = ImGui::Checkbox(label, v);
return std::make_tuple(result, *v);
});
DEF2(RadioButton, (ImString, label, ), (bool, active, ));
DEF3(ProgressBar, (float, fraction, ), (const ImVec2&, size_arg, = ImVec2_Min_Zero), (ImString, overlay, = nullptr));
DEF0(Bullet);
DEF1(TextLink, (ImString, label, ));
DEF2(TextLinkOpenURL, (ImString, label, ), (ImString, url, = nullptr));
DEF6_F(Image, (long, user_texture_id, ), (const ImVec2&, image_size, ), (const ImVec2&, uv0, = ImVec2_Zero), (const ImVec2&, uv1, = ImVec2_One), (const ImVec4&, tint_col, = ImVec4_One), (const ImVec4&, border_col, = ImVec4_Zero), {
return ImGui::Image(reinterpret_cast<void*>(user_texture_id), image_size, uv0, uv1, tint_col, border_col);
});
DEF7_F(ImageButton, (ImString, str_id, ), (long, user_texture_id, ), (const ImVec2&, image_size, ), (const ImVec2&, uv0, = ImVec2_Zero), (const ImVec2&, uv1, = ImVec2_One), (const ImVec4&, bg_col, = ImVec4_Zero), (const ImVec4&, tint_col, = ImVec4_One), {
return ImGui::ImageButton(str_id, reinterpret_cast<void*>(user_texture_id), image_size, uv0, uv1, bg_col, tint_col);
});
DEF3(BeginCombo, (ImString, label, ), (ImString, preview_value, ), (ImGuiComboFlags, flags, = 0));
DEF0(EndCombo);
m.def(
"Combo",
[](const char* label, int current_item, std::vector<std::string> items,
int popup_max_height_in_items) {
std::vector<const char*> items_ptr;
items_ptr.reserve(items.size());
for (const auto& item : items) {
items_ptr.push_back(item.c_str());
}
const auto result =
ImGui::Combo(label, &current_item, items_ptr.data(),
items_ptr.size(), popup_max_height_in_items);
return std::make_tuple(result, current_item);
},
py::arg("label"), py::arg("current_item"), py::arg("items"),
py::arg("popup_max_height_in_items") = -1);
m.def(
"ComboStr",
[](const char* label, int current_item,
const char* items_separated_by_zeros, int popup_max_height_in_items) {
const auto result =
ImGui::Combo(label, &current_item, items_separated_by_zeros,
popup_max_height_in_items);
return std::make_tuple(result, current_item);
},
py::arg("label"), py::arg("current_item"),
py::arg("items_separated_by_zeros"),
py::arg("popup_max_height_in_items") = -1);
DEF7_F(DragFloat, (ImString, label, ), (float*, v, ), (float, v_speed, = 1.0f), (float, v_min, = 0.0f), (float, v_max, = 0.0f), (ImString, format, = "%.3f"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::DragFloat(label, v, v_speed, v_min, v_max, format, flags);
return std::make_tuple(result, *v);
});
DEF7_F(DragFloatN, (ImString, label, ), (std::vector<float>, v, ), (float, v_speed, = 1.0f), (float, v_min, = 0.0f), (float, v_max, = 0.0f), (ImString, format, = "%.3f"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::DragScalarN(label, ImGuiDataType_Float, v.data(), v.size(), v_speed, &v_min, &v_max, format, flags);
return std::make_tuple(result, v);
});
DEF7_F(DragInt, (ImString, label, ), (int*, v, ), (float, v_speed, = 1.0f), (int, v_min, = 0), (int, v_max, = 0), (ImString, format, = "%d"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::DragInt(label, v, v_speed, v_min, v_max, format, flags);
return std::make_tuple(result, *v);
});
DEF7_F(DragIntN, (ImString, label, ), (std::vector<int>, v, ), (float, v_speed, = 1.0f), (int, v_min, = 0), (int, v_max, = 0), (ImString, format, = "%d"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::DragScalarN(label, ImGuiDataType_S32, v.data(), v.size(), v_speed, &v_min, &v_max, format, flags);
return std::make_tuple(result, v);
});
DEF6_F(SliderFloat, (ImString, label, ), (float*, v, ), (float, v_min, ), (float, v_max, ), (ImString, format, = "%.3f"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::SliderFloat(label, v, v_min, v_max, format, flags);
return std::make_tuple(result, *v);
});
DEF6_F(SliderFloatN, (ImString, label, ), (std::vector<float>, v, ), (float, v_min, ), (float, v_max, ), (ImString, format, = "%.3f"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::SliderScalarN(label, ImGuiDataType_Float, v.data(), v.size(), &v_min, &v_max, format, flags);
return std::make_tuple(result, v);
});
DEF6_F(SliderAngle, (ImString, label, ), (float*, v_rad, ), (float, v_degrees_min, = -360.0f), (float, v_degrees_max, = +360.0f), (ImString, format, = "%.0f deg"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::SliderAngle(label, v_rad, v_degrees_min, v_degrees_max, format, flags);
return std::make_tuple(result, *v_rad);
});
DEF6_F(SliderInt, (ImString, label, ), (int*, v, ), (int, v_min, ), (int, v_max, ), (ImString, format, = "%d"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::SliderInt(label, v, v_min, v_max, format, flags);
return std::make_tuple(result, *v);
});
DEF6_F(SliderIntN, (ImString, label, ), (std::vector<int>, v, ), (int, v_min, ), (int, v_max, ), (ImString, format, = "%d"), (ImGuiSliderFlags, flags, = 0), {
const auto result = ImGui::SliderScalarN(label, ImGuiDataType_S32, v.data(), v.size(), &v_min, &v_max, format, flags);
return std::make_tuple(result, v);
});
DEF6_F(InputFloat, (ImString, label, ), (float*, v, ), (float, step, = 0.0f), (float, step_fast, = 0.0f), (ImString, format, = "%.3f"), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputFloat(label, v, step, step_fast, format, flags);
return std::make_tuple(result, *v);
});
DEF4_F(InputFloatN, (ImString, label, ), (std::vector<float>, v, ), (ImString, format, = "%.3f"), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputScalarN(label, ImGuiDataType_Float, v.data(), v.size(), NULL, NULL, format, flags);
return std::make_tuple(result, v);
});
DEF5_F(InputInt, (ImString, label, ), (int*, v, ), (int, step, = 1), (int, step_fast, = 100), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputInt(label, v, step, step_fast, flags);
return std::make_tuple(result, *v);
});
DEF3_F(InputIntN, (ImString, label, ), (std::vector<int>, v, ), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputScalarN(label, ImGuiDataType_S32, v.data(), v.size(), NULL, NULL, "%d", flags);
return std::make_tuple(result, v);
});
DEF6_F(InputDouble, (ImString, label, ), (double*, v, ), (double, step, = 0.0), (double, step_fast, = 0.0), (ImString, format, = "%.6f"), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputDouble(label, v, step, step_fast, format, flags);
return std::make_tuple(result, *v);
});
DEF3_F(InputText, (ImString, label, ), (std::string, text, ), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputText(label, &text, flags);
return std::make_tuple(result, text);
});
DEF4_F(InputTextMultiline, (ImString, label, ), (std::string, text, ), (const ImVec2&, size, = ImVec2_Zero), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputTextMultiline(label, &text, size, flags);
return std::make_tuple(result, text);
});
DEF4_F(InputTextWithHint, (ImString, label, ), (ImString, hint, ), (std::string, text, ), (ImGuiInputTextFlags, flags, = 0), {
const auto result = ImGui::InputTextWithHint(label, hint, &text, flags);
return std::make_tuple(result, text);
});
DEF3_F(ColorEdit3, (ImString, label, ), (std::vector<float>, col, ), (ImGuiColorEditFlags, flags, = 0), {
const auto result = ImGui::ColorEdit3(label, col.data(), flags);
return std::make_tuple(result, col);
});
DEF3_F(ColorEdit4, (ImString, label, ), (std::vector<float>, col, ), (ImGuiColorEditFlags, flags, = 0), {
const auto result = ImGui::ColorEdit4(label, col.data(), flags);
return std::make_tuple(result, col);
});
DEF3_F(ColorPicker3, (ImString, label, ), (std::vector<float>, col, ), (ImGuiColorEditFlags, flags, = 0), {
const auto result = ImGui::ColorPicker3(label, col.data(), flags);
return std::make_tuple(result, col);
});
DEF4_F(ColorPicker4, (ImString, label, ), (std::vector<float>, col, ), (ImGuiColorEditFlags, flags, = 0), (const float*, ref_col, = nullptr), {
const auto result = ImGui::ColorPicker4(label, col.data(), flags, ref_col);
return std::make_tuple(result, col);
});
DEF4(ColorButton, (ImString, desc_id, ), (const ImVec4&, col, ), (ImGuiColorEditFlags, flags, = 0), (const ImVec2&, size, = ImVec2_Zero));
DEF1(SetColorEditOptions, (ImGuiColorEditFlags, flags, ));
DEF1(TreeNode, (ImString, label, ));
DEF2_F(TreeNode, (ImString, str_id, ), (ImString, txt, ), {
return ImGui::TreeNode(str_id, "%s", txt);
});
DEF2(TreeNodeEx, (ImString, label, ), (ImGuiTreeNodeFlags, flags, = 0));
DEF3_F(TreeNodeEx, (ImString, str_id, ), (ImGuiTreeNodeFlags, flags, ), (ImString, txt, ), {
return ImGui::TreeNodeEx(str_id, flags, "%s", txt);
});
DEF1(TreePush, (ImString, str_id, ));
DEF0(TreePop);
DEF0(GetTreeNodeToLabelSpacing);
DEF2(CollapsingHeader, (ImString, label, ), (ImGuiTreeNodeFlags, flags, = 0));
DEF3_F(CollapsingHeader2, (ImString, label, ), (bool*, p_visible, ), (ImGuiTreeNodeFlags, flags, = 0), {
const auto result = ImGui::CollapsingHeader(label, p_visible, flags);
return std::make_tuple(result, *p_visible);
});
DEF2(SetNextItemOpen, (bool, is_open, ), (ImGuiCond, cond, = 0));
DEF4(Selectable, (ImString, label, ), (bool, selected, = false), (ImGuiSelectableFlags, flags, = 0), (const ImVec2&, size, = ImVec2_Zero));
DEF4_F(Selectable2, (ImString, label, ), (bool*, p_selected, ), (ImGuiSelectableFlags, flags, = 0), (const ImVec2&, size, = ImVec2_Zero), {
const auto result = ImGui::Selectable(label, p_selected, flags, size);
return std::make_tuple(result, *p_selected);
});
DEF2(BeginListBox, (ImString, label, ), (const ImVec2&, size, = ImVec2_Zero));
DEF0(EndListBox);
DEF2(Value, (ImString, prefix, ), (bool, b, ));
DEF2(Value, (ImString, prefix, ), (int, v, ));
DEF2(Value, (ImString, prefix, ), (unsigned int, v, ));
DEF3(Value, (ImString, prefix, ), (float, v, ), (ImString, float_format, = nullptr));
DEF0(BeginMenuBar);
DEF0(EndMenuBar);
DEF0(BeginMainMenuBar);
DEF0(EndMainMenuBar);
DEF2(BeginMenu, (ImString, label, ), (bool, enabled, = true));
DEF0(EndMenu);
DEF4(MenuItem, (ImString, label, ), (ImString, shortcut, = nullptr), (bool, selected, = false), (bool, enabled, = true));
DEF4_F(MenuItem, (ImString, label, ), (ImString, shortcut, ), (bool*, p_selected, ), (bool, enabled, = true), {
const auto result = ImGui::MenuItem(label, shortcut, p_selected, enabled);
return std::make_tuple(result, *p_selected);
});
DEF0(BeginTooltip);
DEF0(EndTooltip);
DEF1_F(SetTooltip, (ImString, txt, ), {
return ImGui::SetTooltip("%s", txt);
});
DEF0(BeginItemTooltip);
DEF1_F(SetItemTooltip, (ImString, txt, ), {
return ImGui::SetItemTooltip("%s", txt);
});
DEF2(BeginPopup, (ImString, str_id, ), (ImGuiWindowFlags, flags, = 0));
DEF3_F(BeginPopupModal, (ImString, name, ), (bool*, p_open, = nullptr), (ImGuiWindowFlags, flags, = 0), {
const auto result = ImGui::BeginPopupModal(name, p_open, flags);
return std::make_tuple(result, *p_open);
});
DEF0(EndPopup);
DEF2(OpenPopup, (ImString, str_id, ), (ImGuiPopupFlags, popup_flags, = 0));
DEF2(OpenPopup, (ImGuiID, id, ), (ImGuiPopupFlags, popup_flags, = 0));
DEF2(OpenPopupOnItemClick, (ImString, str_id, = nullptr), (ImGuiPopupFlags, popup_flags, = 0));
DEF0(CloseCurrentPopup);
DEF2(BeginPopupContextItem, (ImString, str_id, = nullptr), (ImGuiPopupFlags, popup_flags, = 0));
DEF2(BeginPopupContextWindow, (ImString, str_id, = nullptr), (ImGuiPopupFlags, popup_flags, = 0));
DEF2(BeginPopupContextVoid, (ImString, str_id, = nullptr), (ImGuiPopupFlags, popup_flags, = 0));
DEF2(IsPopupOpen, (ImString, str_id, ), (ImGuiPopupFlags, flags, = 0));
DEF5(BeginTable, (ImString, str_id, ), (int, columns, ), (ImGuiTableFlags, flags, = 0), (const ImVec2&, outer_size, = ImVec2_Zero), (float, inner_width, = 0.0f));
DEF0(EndTable);
DEF2(TableNextRow, (ImGuiTableRowFlags, row_flags, = 0), (float, min_row_height, = 0.0f));
DEF0(TableNextColumn);
DEF1(TableSetColumnIndex, (int, column_n, ));
DEF4(TableSetupColumn, (ImString, label, ), (ImGuiTableColumnFlags, flags, = 0), (float, init_width_or_weight, = 0.0f), (ImGuiID, user_id, = 0));
DEF2(TableSetupScrollFreeze, (int, cols, ), (int, rows, ));
DEF1(TableHeader, (ImString, label, ));
DEF0(TableHeadersRow);
DEF0(TableAngledHeadersRow);
DEF0(TableGetColumnCount);
DEF0(TableGetColumnIndex);
DEF0(TableGetRowIndex);
DEF1(TableGetColumnName, (int, column_n, = -1));
DEF1(TableGetColumnFlags, (int, column_n, = -1));
DEF2(TableSetColumnEnabled, (int, column_n, ), (bool, v, ));
DEF0(TableGetHoveredColumn);
DEF3(TableSetBgColor, (ImGuiTableBgTarget, target, ), (ImU32, color, ), (int, column_n, = -1));
DEF3(Columns, (int, count, = 1), (ImString, id, = nullptr), (bool, border, = true));
DEF0(NextColumn);
DEF0(GetColumnIndex);
DEF1(GetColumnWidth, (int, column_index, = -1));
DEF2(SetColumnWidth, (int, column_index, ), (float, width, ));
DEF1(GetColumnOffset, (int, column_index, = -1));
DEF2(SetColumnOffset, (int, column_index, ), (float, offset_x, ));
DEF0(GetColumnsCount);
DEF2(BeginTabBar, (ImString, str_id, ), (ImGuiTabBarFlags, flags, = 0));
DEF0(EndTabBar);
DEF3_F(BeginTabItem, (ImString, label, ), (bool*, p_open, ), (ImGuiTabItemFlags, flags, = 0), {
const auto result = ImGui::BeginTabItem(label, p_open, flags);
return std::make_tuple(result, p_open ? *p_open : true);
});
// Convenience overload for non-closable tab items.
// This function returns a boolean so you can call it directly in an if condition.
DEF2_F(BeginTabItem, (ImString, label, ), (ImGuiTabItemFlags, flags, = 0), {
return ImGui::BeginTabItem(label, nullptr, flags);
});
DEF0(EndTabItem);
DEF2(TabItemButton, (ImString, label, ), (ImGuiTabItemFlags, flags, = 0));
DEF1(SetTabItemClosed, (ImString, tab_or_docked_window_label, ));
DEF2(SetNextWindowDockID, (ImGuiID, dock_id, ), (ImGuiCond, cond, = 0));
DEF0(GetWindowDockID);
DEF0(IsWindowDocked);
DEF1(BeginDisabled, (bool, disabled, = true));
DEF0(EndDisabled);
DEF3(PushClipRect, (const ImVec2&, clip_rect_min, ), (const ImVec2&, clip_rect_max, ), (bool, intersect_with_current_clip_rect, ));
DEF0(PopClipRect);
DEF0(SetItemDefaultFocus);
DEF1(SetKeyboardFocusHere, (int, offset, = 0));
DEF0(SetNextItemAllowOverlap);
DEF1(IsItemHovered, (ImGuiHoveredFlags, flags, = 0));
DEF0(IsItemActive);
DEF0(IsItemFocused);
DEF1(IsItemClicked, (ImGuiMouseButton, mouse_button, = 0));
DEF0(IsItemVisible);
DEF0(IsItemEdited);
DEF0(IsItemActivated);
DEF0(IsItemDeactivated);
DEF0(IsItemDeactivatedAfterEdit);
DEF0(IsItemToggledOpen);
DEF0(IsAnyItemHovered);
DEF0(IsAnyItemActive);
DEF0(IsAnyItemFocused);
DEF0(GetItemID);
DEF0(GetItemRectMin);
DEF0(GetItemRectMax);
DEF0(GetItemRectSize);
DEF1(IsRectVisible, (const ImVec2&, size, ));
DEF2(IsRectVisible, (const ImVec2&, rect_min, ), (const ImVec2&, rect_max, ));
DEF0(GetTime);
DEF0(GetFrameCount);
DEF4(CalcTextSize, (ImString, text, ), (ImString, text_end, = nullptr), (bool, hide_text_after_double_hash, = false), (float, wrap_width, = -1.0f));
DEF1(ColorConvertU32ToFloat4, (ImU32, in, ));
DEF1(ColorConvertFloat4ToU32, (const ImVec4&, in, ));
DEF6(ColorConvertRGBtoHSV, (float, r, ), (float, g, ), (float, b, ), (float&, out_h, ), (float&, out_s, ), (float&, out_v, ));
DEF6(ColorConvertHSVtoRGB, (float, h, ), (float, s, ), (float, v, ), (float&, out_r, ), (float&, out_g, ), (float&, out_b, ));
DEF1(IsKeyDown, (ImGuiKey, key, ));
DEF2(IsKeyPressed, (ImGuiKey, key, ), (bool, repeat, = true));
DEF1(IsKeyReleased, (ImGuiKey, key, ));
DEF1(IsKeyChordPressed, (ImGuiKeyChord, key_chord, ));
DEF3(GetKeyPressedAmount, (ImGuiKey, key, ), (float, repeat_delay, ), (float, rate, ));
DEF1(GetKeyName, (ImGuiKey, key, ));
DEF1(SetNextFrameWantCaptureKeyboard, (bool, want_capture_keyboard, ));
DEF2(Shortcut, (ImGuiKeyChord, key_chord, ), (ImGuiInputFlags, flags, = 0));
DEF2(SetNextItemShortcut, (ImGuiKeyChord, key_chord, ), (ImGuiInputFlags, flags, = 0));
DEF1(IsMouseDown, (ImGuiMouseButton, button, ));
DEF2(IsMouseClicked, (ImGuiMouseButton, button, ), (bool, repeat, = false));
DEF1(IsMouseReleased, (ImGuiMouseButton, button, ));
DEF1(IsMouseDoubleClicked, (ImGuiMouseButton, button, ));
DEF1(GetMouseClickedCount, (ImGuiMouseButton, button, ));
DEF3(IsMouseHoveringRect, (const ImVec2&, r_min, ), (const ImVec2&, r_max, ), (bool, clip, = true));
DEF1(IsMousePosValid, (const ImVec2*, mouse_pos, = nullptr));
DEF0(IsAnyMouseDown);
DEF0(GetMousePos);
DEF0(GetMousePosOnOpeningCurrentPopup);
DEF2(IsMouseDragging, (ImGuiMouseButton, button, ), (float, lock_threshold, = -1.0f));
DEF2(GetMouseDragDelta, (ImGuiMouseButton, button, = 0), (float, lock_threshold, = -1.0f));
DEF1(ResetMouseDragDelta, (ImGuiMouseButton, button, = 0));
DEF0(GetMouseCursor);
DEF1(SetMouseCursor, (ImGuiMouseCursor, cursor_type, ));
DEF1(SetNextFrameWantCaptureMouse, (bool, want_capture_mouse, ));
DEF0(GetClipboardText);
DEF1(SetClipboardText, (ImString, text, ));
}
// NOLINTEND(whitespace/line_length)