//This file is automatically generated by generator.lua from https://github.com/cimgui/cimgui
//based on imgui.h file version "1.73" from Dear ImGui https://github.com/ocornut/imgui
module cimgui.cimgui;

import core.stdc.stdarg;
//import core.stdc.stdio;

extern (C):

//alias ImU64 = ulong;

//typedef unsigned long long ImU64;

//UDT stuff
struct ImVec2_Simple
{
    float x;
    float y;
}

struct ImVec4_Simple
{
    float x;
    float y;
    float z;
    float w;
}

struct ImColor_Simple
{
    ImVec4_Simple Value;
}

struct ImGuiContext;
struct ImDrawListSharedData;

alias ImTextureID = void*;
alias ImGuiID = uint;
alias ImWchar = ushort;
alias ImGuiCol = int;
alias ImGuiCond = int;
alias ImGuiDataType = int;
alias ImGuiDir = int;
alias ImGuiKey = int;
alias ImGuiNavInput = int;
alias ImGuiMouseCursor = int;
alias ImGuiStyleVar = int;
alias ImDrawCornerFlags = int;
alias ImDrawListFlags = int;
alias ImFontAtlasFlags = int;
alias ImGuiBackendFlags = int;
alias ImGuiColorEditFlags = int;
alias ImGuiConfigFlags = int;
alias ImGuiComboFlags = int;
alias ImGuiDragDropFlags = int;
alias ImGuiFocusedFlags = int;
alias ImGuiHoveredFlags = int;
alias ImGuiInputTextFlags = int;
alias ImGuiSelectableFlags = int;
alias ImGuiTabBarFlags = int;
alias ImGuiTabItemFlags = int;
alias ImGuiTreeNodeFlags = int;
alias ImGuiWindowFlags = int;
alias ImGuiInputTextCallback = int function (ImGuiInputTextCallbackData* data);
alias ImGuiSizeCallback = void function (ImGuiSizeCallbackData* data);
alias ImS8 = byte;
alias ImU8 = ubyte;
alias ImS16 = short;
alias ImU16 = ushort;
alias ImS32 = int;
alias ImU32 = uint;
alias ImS64 = long;
alias ImU64 = ulong;
alias ImDrawCallback = void function (const(ImDrawList)* parent_list, const(ImDrawCmd)* cmd);
alias ImDrawIdx = ushort;

struct ImVector
{
    int Size;
    int Capacity;
    void* Data;
}

struct ImVector_float
{
    int Size;
    int Capacity;
    float* Data;
}

struct ImVector_ImWchar
{
    int Size;
    int Capacity;
    ImWchar* Data;
}

struct ImVector_ImDrawVert
{
    int Size;
    int Capacity;
    ImDrawVert* Data;
}

struct ImVector_ImFontGlyph
{
    int Size;
    int Capacity;
    ImFontGlyph* Data;
}

struct ImVector_ImGuiTextRange
{
    int Size;
    int Capacity;
    ImGuiTextRange* Data;
}

struct ImVector_ImGuiStoragePair
{
    int Size;
    int Capacity;
    ImGuiStoragePair* Data;
}

struct ImVector_ImDrawChannel
{
    int Size;
    int Capacity;
    ImDrawChannel* Data;
}

struct ImVector_char
{
    int Size;
    int Capacity;
    char* Data;
}

struct ImVector_ImU32
{
    int Size;
    int Capacity;
    ImU32* Data;
}

struct ImVector_ImFontAtlasCustomRect
{
    int Size;
    int Capacity;
    ImFontAtlasCustomRect* Data;
}

struct ImVector_ImTextureID
{
    int Size;
    int Capacity;
    ImTextureID* Data;
}

struct ImVector_ImFontConfig
{
    int Size;
    int Capacity;
    ImFontConfig* Data;
}

struct ImVector_ImFontPtr
{
    int Size;
    int Capacity;
    ImFont** Data;
}

struct ImVector_ImDrawCmd
{
    int Size;
    int Capacity;
    ImDrawCmd* Data;
}

struct ImVector_ImVec4
{
    int Size;
    int Capacity;
    ImVec4* Data;
}

struct ImVector_ImDrawIdx
{
    int Size;
    int Capacity;
    ImDrawIdx* Data;
}

struct ImVector_ImVec2
{
    int Size;
    int Capacity;
    ImVec2* Data;
}

struct ImVec2
{
    float x;
    float y;
}

struct ImVec4
{
    float x;
    float y;
    float z;
    float w;
}

enum ImGuiWindowFlags_
{
    ImGuiWindowFlags_None = 0,
    ImGuiWindowFlags_NoTitleBar = 1 << 0,
    ImGuiWindowFlags_NoResize = 1 << 1,
    ImGuiWindowFlags_NoMove = 1 << 2,
    ImGuiWindowFlags_NoScrollbar = 1 << 3,
    ImGuiWindowFlags_NoScrollWithMouse = 1 << 4,
    ImGuiWindowFlags_NoCollapse = 1 << 5,
    ImGuiWindowFlags_AlwaysAutoResize = 1 << 6,
    ImGuiWindowFlags_NoBackground = 1 << 7,
    ImGuiWindowFlags_NoSavedSettings = 1 << 8,
    ImGuiWindowFlags_NoMouseInputs = 1 << 9,
    ImGuiWindowFlags_MenuBar = 1 << 10,
    ImGuiWindowFlags_HorizontalScrollbar = 1 << 11,
    ImGuiWindowFlags_NoFocusOnAppearing = 1 << 12,
    ImGuiWindowFlags_NoBringToFrontOnFocus = 1 << 13,
    ImGuiWindowFlags_AlwaysVerticalScrollbar = 1 << 14,
    ImGuiWindowFlags_AlwaysHorizontalScrollbar = 1 << 15,
    ImGuiWindowFlags_AlwaysUseWindowPadding = 1 << 16,
    ImGuiWindowFlags_NoNavInputs = 1 << 18,
    ImGuiWindowFlags_NoNavFocus = 1 << 19,
    ImGuiWindowFlags_UnsavedDocument = 1 << 20,
    ImGuiWindowFlags_NoNav = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
    ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse,
    ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
    ImGuiWindowFlags_NavFlattened = 1 << 23,
    ImGuiWindowFlags_ChildWindow = 1 << 24,
    ImGuiWindowFlags_Tooltip = 1 << 25,
    ImGuiWindowFlags_Popup = 1 << 26,
    ImGuiWindowFlags_Modal = 1 << 27,
    ImGuiWindowFlags_ChildMenu = 1 << 28
}

alias ImGuiWindowFlags_None = ImGuiWindowFlags_.ImGuiWindowFlags_None;
alias ImGuiWindowFlags_NoTitleBar = ImGuiWindowFlags_.ImGuiWindowFlags_NoTitleBar;
alias ImGuiWindowFlags_NoResize = ImGuiWindowFlags_.ImGuiWindowFlags_NoResize;
alias ImGuiWindowFlags_NoMove = ImGuiWindowFlags_.ImGuiWindowFlags_NoMove;
alias ImGuiWindowFlags_NoScrollbar = ImGuiWindowFlags_.ImGuiWindowFlags_NoScrollbar;
alias ImGuiWindowFlags_NoScrollWithMouse = ImGuiWindowFlags_.ImGuiWindowFlags_NoScrollWithMouse;
alias ImGuiWindowFlags_NoCollapse = ImGuiWindowFlags_.ImGuiWindowFlags_NoCollapse;
alias ImGuiWindowFlags_AlwaysAutoResize = ImGuiWindowFlags_.ImGuiWindowFlags_AlwaysAutoResize;
alias ImGuiWindowFlags_NoBackground = ImGuiWindowFlags_.ImGuiWindowFlags_NoBackground;
alias ImGuiWindowFlags_NoSavedSettings = ImGuiWindowFlags_.ImGuiWindowFlags_NoSavedSettings;
alias ImGuiWindowFlags_NoMouseInputs = ImGuiWindowFlags_.ImGuiWindowFlags_NoMouseInputs;
alias ImGuiWindowFlags_MenuBar = ImGuiWindowFlags_.ImGuiWindowFlags_MenuBar;
alias ImGuiWindowFlags_HorizontalScrollbar = ImGuiWindowFlags_.ImGuiWindowFlags_HorizontalScrollbar;
alias ImGuiWindowFlags_NoFocusOnAppearing = ImGuiWindowFlags_.ImGuiWindowFlags_NoFocusOnAppearing;
alias ImGuiWindowFlags_NoBringToFrontOnFocus = ImGuiWindowFlags_.ImGuiWindowFlags_NoBringToFrontOnFocus;
alias ImGuiWindowFlags_AlwaysVerticalScrollbar = ImGuiWindowFlags_.ImGuiWindowFlags_AlwaysVerticalScrollbar;
alias ImGuiWindowFlags_AlwaysHorizontalScrollbar = ImGuiWindowFlags_.ImGuiWindowFlags_AlwaysHorizontalScrollbar;
alias ImGuiWindowFlags_AlwaysUseWindowPadding = ImGuiWindowFlags_.ImGuiWindowFlags_AlwaysUseWindowPadding;
alias ImGuiWindowFlags_NoNavInputs = ImGuiWindowFlags_.ImGuiWindowFlags_NoNavInputs;
alias ImGuiWindowFlags_NoNavFocus = ImGuiWindowFlags_.ImGuiWindowFlags_NoNavFocus;
alias ImGuiWindowFlags_UnsavedDocument = ImGuiWindowFlags_.ImGuiWindowFlags_UnsavedDocument;
alias ImGuiWindowFlags_NoNav = ImGuiWindowFlags_.ImGuiWindowFlags_NoNav;
alias ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_.ImGuiWindowFlags_NoDecoration;
alias ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_.ImGuiWindowFlags_NoInputs;
alias ImGuiWindowFlags_NavFlattened = ImGuiWindowFlags_.ImGuiWindowFlags_NavFlattened;
alias ImGuiWindowFlags_ChildWindow = ImGuiWindowFlags_.ImGuiWindowFlags_ChildWindow;
alias ImGuiWindowFlags_Tooltip = ImGuiWindowFlags_.ImGuiWindowFlags_Tooltip;
alias ImGuiWindowFlags_Popup = ImGuiWindowFlags_.ImGuiWindowFlags_Popup;
alias ImGuiWindowFlags_Modal = ImGuiWindowFlags_.ImGuiWindowFlags_Modal;
alias ImGuiWindowFlags_ChildMenu = ImGuiWindowFlags_.ImGuiWindowFlags_ChildMenu;

enum ImGuiInputTextFlags_
{
    ImGuiInputTextFlags_None = 0,
    ImGuiInputTextFlags_CharsDecimal = 1 << 0,
    ImGuiInputTextFlags_CharsHexadecimal = 1 << 1,
    ImGuiInputTextFlags_CharsUppercase = 1 << 2,
    ImGuiInputTextFlags_CharsNoBlank = 1 << 3,
    ImGuiInputTextFlags_AutoSelectAll = 1 << 4,
    ImGuiInputTextFlags_EnterReturnsTrue = 1 << 5,
    ImGuiInputTextFlags_CallbackCompletion = 1 << 6,
    ImGuiInputTextFlags_CallbackHistory = 1 << 7,
    ImGuiInputTextFlags_CallbackAlways = 1 << 8,
    ImGuiInputTextFlags_CallbackCharFilter = 1 << 9,
    ImGuiInputTextFlags_AllowTabInput = 1 << 10,
    ImGuiInputTextFlags_CtrlEnterForNewLine = 1 << 11,
    ImGuiInputTextFlags_NoHorizontalScroll = 1 << 12,
    ImGuiInputTextFlags_AlwaysInsertMode = 1 << 13,
    ImGuiInputTextFlags_ReadOnly = 1 << 14,
    ImGuiInputTextFlags_Password = 1 << 15,
    ImGuiInputTextFlags_NoUndoRedo = 1 << 16,
    ImGuiInputTextFlags_CharsScientific = 1 << 17,
    ImGuiInputTextFlags_CallbackResize = 1 << 18,
    ImGuiInputTextFlags_Multiline = 1 << 20,
    ImGuiInputTextFlags_NoMarkEdited = 1 << 21
}

alias ImGuiInputTextFlags_None = ImGuiInputTextFlags_.ImGuiInputTextFlags_None;
alias ImGuiInputTextFlags_CharsDecimal = ImGuiInputTextFlags_.ImGuiInputTextFlags_CharsDecimal;
alias ImGuiInputTextFlags_CharsHexadecimal = ImGuiInputTextFlags_.ImGuiInputTextFlags_CharsHexadecimal;
alias ImGuiInputTextFlags_CharsUppercase = ImGuiInputTextFlags_.ImGuiInputTextFlags_CharsUppercase;
alias ImGuiInputTextFlags_CharsNoBlank = ImGuiInputTextFlags_.ImGuiInputTextFlags_CharsNoBlank;
alias ImGuiInputTextFlags_AutoSelectAll = ImGuiInputTextFlags_.ImGuiInputTextFlags_AutoSelectAll;
alias ImGuiInputTextFlags_EnterReturnsTrue = ImGuiInputTextFlags_.ImGuiInputTextFlags_EnterReturnsTrue;
alias ImGuiInputTextFlags_CallbackCompletion = ImGuiInputTextFlags_.ImGuiInputTextFlags_CallbackCompletion;
alias ImGuiInputTextFlags_CallbackHistory = ImGuiInputTextFlags_.ImGuiInputTextFlags_CallbackHistory;
alias ImGuiInputTextFlags_CallbackAlways = ImGuiInputTextFlags_.ImGuiInputTextFlags_CallbackAlways;
alias ImGuiInputTextFlags_CallbackCharFilter = ImGuiInputTextFlags_.ImGuiInputTextFlags_CallbackCharFilter;
alias ImGuiInputTextFlags_AllowTabInput = ImGuiInputTextFlags_.ImGuiInputTextFlags_AllowTabInput;
alias ImGuiInputTextFlags_CtrlEnterForNewLine = ImGuiInputTextFlags_.ImGuiInputTextFlags_CtrlEnterForNewLine;
alias ImGuiInputTextFlags_NoHorizontalScroll = ImGuiInputTextFlags_.ImGuiInputTextFlags_NoHorizontalScroll;
alias ImGuiInputTextFlags_AlwaysInsertMode = ImGuiInputTextFlags_.ImGuiInputTextFlags_AlwaysInsertMode;
alias ImGuiInputTextFlags_ReadOnly = ImGuiInputTextFlags_.ImGuiInputTextFlags_ReadOnly;
alias ImGuiInputTextFlags_Password = ImGuiInputTextFlags_.ImGuiInputTextFlags_Password;
alias ImGuiInputTextFlags_NoUndoRedo = ImGuiInputTextFlags_.ImGuiInputTextFlags_NoUndoRedo;
alias ImGuiInputTextFlags_CharsScientific = ImGuiInputTextFlags_.ImGuiInputTextFlags_CharsScientific;
alias ImGuiInputTextFlags_CallbackResize = ImGuiInputTextFlags_.ImGuiInputTextFlags_CallbackResize;
alias ImGuiInputTextFlags_Multiline = ImGuiInputTextFlags_.ImGuiInputTextFlags_Multiline;
alias ImGuiInputTextFlags_NoMarkEdited = ImGuiInputTextFlags_.ImGuiInputTextFlags_NoMarkEdited;

enum ImGuiTreeNodeFlags_
{
    ImGuiTreeNodeFlags_None = 0,
    ImGuiTreeNodeFlags_Selected = 1 << 0,
    ImGuiTreeNodeFlags_Framed = 1 << 1,
    ImGuiTreeNodeFlags_AllowItemOverlap = 1 << 2,
    ImGuiTreeNodeFlags_NoTreePushOnOpen = 1 << 3,
    ImGuiTreeNodeFlags_NoAutoOpenOnLog = 1 << 4,
    ImGuiTreeNodeFlags_DefaultOpen = 1 << 5,
    ImGuiTreeNodeFlags_OpenOnDoubleClick = 1 << 6,
    ImGuiTreeNodeFlags_OpenOnArrow = 1 << 7,
    ImGuiTreeNodeFlags_Leaf = 1 << 8,
    ImGuiTreeNodeFlags_Bullet = 1 << 9,
    ImGuiTreeNodeFlags_FramePadding = 1 << 10,
    ImGuiTreeNodeFlags_SpanAvailWidth = 1 << 11,
    ImGuiTreeNodeFlags_SpanFullWidth = 1 << 12,
    ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 1 << 13,
    ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog
}

alias ImGuiTreeNodeFlags_None = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_None;
alias ImGuiTreeNodeFlags_Selected = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_Selected;
alias ImGuiTreeNodeFlags_Framed = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_Framed;
alias ImGuiTreeNodeFlags_AllowItemOverlap = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_AllowItemOverlap;
alias ImGuiTreeNodeFlags_NoTreePushOnOpen = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_NoTreePushOnOpen;
alias ImGuiTreeNodeFlags_NoAutoOpenOnLog = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_NoAutoOpenOnLog;
alias ImGuiTreeNodeFlags_DefaultOpen = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_DefaultOpen;
alias ImGuiTreeNodeFlags_OpenOnDoubleClick = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_OpenOnDoubleClick;
alias ImGuiTreeNodeFlags_OpenOnArrow = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_OpenOnArrow;
alias ImGuiTreeNodeFlags_Leaf = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_Leaf;
alias ImGuiTreeNodeFlags_Bullet = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_Bullet;
alias ImGuiTreeNodeFlags_FramePadding = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_FramePadding;
alias ImGuiTreeNodeFlags_SpanAvailWidth = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_SpanAvailWidth;
alias ImGuiTreeNodeFlags_SpanFullWidth = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_SpanFullWidth;
alias ImGuiTreeNodeFlags_NavLeftJumpsBackHere = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_NavLeftJumpsBackHere;
alias ImGuiTreeNodeFlags_CollapsingHeader = ImGuiTreeNodeFlags_.ImGuiTreeNodeFlags_CollapsingHeader;

enum ImGuiSelectableFlags_
{
    ImGuiSelectableFlags_None = 0,
    ImGuiSelectableFlags_DontClosePopups = 1 << 0,
    ImGuiSelectableFlags_SpanAllColumns = 1 << 1,
    ImGuiSelectableFlags_AllowDoubleClick = 1 << 2,
    ImGuiSelectableFlags_Disabled = 1 << 3,
    ImGuiSelectableFlags_AllowItemOverlap = 1 << 4
}

alias ImGuiSelectableFlags_None = ImGuiSelectableFlags_.ImGuiSelectableFlags_None;
alias ImGuiSelectableFlags_DontClosePopups = ImGuiSelectableFlags_.ImGuiSelectableFlags_DontClosePopups;
alias ImGuiSelectableFlags_SpanAllColumns = ImGuiSelectableFlags_.ImGuiSelectableFlags_SpanAllColumns;
alias ImGuiSelectableFlags_AllowDoubleClick = ImGuiSelectableFlags_.ImGuiSelectableFlags_AllowDoubleClick;
alias ImGuiSelectableFlags_Disabled = ImGuiSelectableFlags_.ImGuiSelectableFlags_Disabled;
alias ImGuiSelectableFlags_AllowItemOverlap = ImGuiSelectableFlags_.ImGuiSelectableFlags_AllowItemOverlap;

enum ImGuiComboFlags_
{
    ImGuiComboFlags_None = 0,
    ImGuiComboFlags_PopupAlignLeft = 1 << 0,
    ImGuiComboFlags_HeightSmall = 1 << 1,
    ImGuiComboFlags_HeightRegular = 1 << 2,
    ImGuiComboFlags_HeightLarge = 1 << 3,
    ImGuiComboFlags_HeightLargest = 1 << 4,
    ImGuiComboFlags_NoArrowButton = 1 << 5,
    ImGuiComboFlags_NoPreview = 1 << 6,
    ImGuiComboFlags_HeightMask_ = ImGuiComboFlags_HeightSmall | ImGuiComboFlags_HeightRegular | ImGuiComboFlags_HeightLarge | ImGuiComboFlags_HeightLargest
}

alias ImGuiComboFlags_None = ImGuiComboFlags_.ImGuiComboFlags_None;
alias ImGuiComboFlags_PopupAlignLeft = ImGuiComboFlags_.ImGuiComboFlags_PopupAlignLeft;
alias ImGuiComboFlags_HeightSmall = ImGuiComboFlags_.ImGuiComboFlags_HeightSmall;
alias ImGuiComboFlags_HeightRegular = ImGuiComboFlags_.ImGuiComboFlags_HeightRegular;
alias ImGuiComboFlags_HeightLarge = ImGuiComboFlags_.ImGuiComboFlags_HeightLarge;
alias ImGuiComboFlags_HeightLargest = ImGuiComboFlags_.ImGuiComboFlags_HeightLargest;
alias ImGuiComboFlags_NoArrowButton = ImGuiComboFlags_.ImGuiComboFlags_NoArrowButton;
alias ImGuiComboFlags_NoPreview = ImGuiComboFlags_.ImGuiComboFlags_NoPreview;
alias ImGuiComboFlags_HeightMask_ = ImGuiComboFlags_.ImGuiComboFlags_HeightMask_;

enum ImGuiTabBarFlags_
{
    ImGuiTabBarFlags_None = 0,
    ImGuiTabBarFlags_Reorderable = 1 << 0,
    ImGuiTabBarFlags_AutoSelectNewTabs = 1 << 1,
    ImGuiTabBarFlags_TabListPopupButton = 1 << 2,
    ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 1 << 3,
    ImGuiTabBarFlags_NoTabListScrollingButtons = 1 << 4,
    ImGuiTabBarFlags_NoTooltip = 1 << 5,
    ImGuiTabBarFlags_FittingPolicyResizeDown = 1 << 6,
    ImGuiTabBarFlags_FittingPolicyScroll = 1 << 7,
    ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll,
    ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_FittingPolicyResizeDown
}

alias ImGuiTabBarFlags_None = ImGuiTabBarFlags_.ImGuiTabBarFlags_None;
alias ImGuiTabBarFlags_Reorderable = ImGuiTabBarFlags_.ImGuiTabBarFlags_Reorderable;
alias ImGuiTabBarFlags_AutoSelectNewTabs = ImGuiTabBarFlags_.ImGuiTabBarFlags_AutoSelectNewTabs;
alias ImGuiTabBarFlags_TabListPopupButton = ImGuiTabBarFlags_.ImGuiTabBarFlags_TabListPopupButton;
alias ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = ImGuiTabBarFlags_.ImGuiTabBarFlags_NoCloseWithMiddleMouseButton;
alias ImGuiTabBarFlags_NoTabListScrollingButtons = ImGuiTabBarFlags_.ImGuiTabBarFlags_NoTabListScrollingButtons;
alias ImGuiTabBarFlags_NoTooltip = ImGuiTabBarFlags_.ImGuiTabBarFlags_NoTooltip;
alias ImGuiTabBarFlags_FittingPolicyResizeDown = ImGuiTabBarFlags_.ImGuiTabBarFlags_FittingPolicyResizeDown;
alias ImGuiTabBarFlags_FittingPolicyScroll = ImGuiTabBarFlags_.ImGuiTabBarFlags_FittingPolicyScroll;
alias ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_.ImGuiTabBarFlags_FittingPolicyMask_;
alias ImGuiTabBarFlags_FittingPolicyDefault_ = ImGuiTabBarFlags_.ImGuiTabBarFlags_FittingPolicyDefault_;

enum ImGuiTabItemFlags_
{
    ImGuiTabItemFlags_None = 0,
    ImGuiTabItemFlags_UnsavedDocument = 1 << 0,
    ImGuiTabItemFlags_SetSelected = 1 << 1,
    ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = 1 << 2,
    ImGuiTabItemFlags_NoPushId = 1 << 3
}

alias ImGuiTabItemFlags_None = ImGuiTabItemFlags_.ImGuiTabItemFlags_None;
alias ImGuiTabItemFlags_UnsavedDocument = ImGuiTabItemFlags_.ImGuiTabItemFlags_UnsavedDocument;
alias ImGuiTabItemFlags_SetSelected = ImGuiTabItemFlags_.ImGuiTabItemFlags_SetSelected;
alias ImGuiTabItemFlags_NoCloseWithMiddleMouseButton = ImGuiTabItemFlags_.ImGuiTabItemFlags_NoCloseWithMiddleMouseButton;
alias ImGuiTabItemFlags_NoPushId = ImGuiTabItemFlags_.ImGuiTabItemFlags_NoPushId;

enum ImGuiFocusedFlags_
{
    ImGuiFocusedFlags_None = 0,
    ImGuiFocusedFlags_ChildWindows = 1 << 0,
    ImGuiFocusedFlags_RootWindow = 1 << 1,
    ImGuiFocusedFlags_AnyWindow = 1 << 2,
    ImGuiFocusedFlags_RootAndChildWindows = ImGuiFocusedFlags_RootWindow | ImGuiFocusedFlags_ChildWindows
}

alias ImGuiFocusedFlags_None = ImGuiFocusedFlags_.ImGuiFocusedFlags_None;
alias ImGuiFocusedFlags_ChildWindows = ImGuiFocusedFlags_.ImGuiFocusedFlags_ChildWindows;
alias ImGuiFocusedFlags_RootWindow = ImGuiFocusedFlags_.ImGuiFocusedFlags_RootWindow;
alias ImGuiFocusedFlags_AnyWindow = ImGuiFocusedFlags_.ImGuiFocusedFlags_AnyWindow;
alias ImGuiFocusedFlags_RootAndChildWindows = ImGuiFocusedFlags_.ImGuiFocusedFlags_RootAndChildWindows;

enum ImGuiHoveredFlags_
{
    ImGuiHoveredFlags_None = 0,
    ImGuiHoveredFlags_ChildWindows = 1 << 0,
    ImGuiHoveredFlags_RootWindow = 1 << 1,
    ImGuiHoveredFlags_AnyWindow = 1 << 2,
    ImGuiHoveredFlags_AllowWhenBlockedByPopup = 1 << 3,
    ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = 1 << 5,
    ImGuiHoveredFlags_AllowWhenOverlapped = 1 << 6,
    ImGuiHoveredFlags_AllowWhenDisabled = 1 << 7,
    ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_AllowWhenOverlapped,
    ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_RootWindow | ImGuiHoveredFlags_ChildWindows
}

alias ImGuiHoveredFlags_None = ImGuiHoveredFlags_.ImGuiHoveredFlags_None;
alias ImGuiHoveredFlags_ChildWindows = ImGuiHoveredFlags_.ImGuiHoveredFlags_ChildWindows;
alias ImGuiHoveredFlags_RootWindow = ImGuiHoveredFlags_.ImGuiHoveredFlags_RootWindow;
alias ImGuiHoveredFlags_AnyWindow = ImGuiHoveredFlags_.ImGuiHoveredFlags_AnyWindow;
alias ImGuiHoveredFlags_AllowWhenBlockedByPopup = ImGuiHoveredFlags_.ImGuiHoveredFlags_AllowWhenBlockedByPopup;
alias ImGuiHoveredFlags_AllowWhenBlockedByActiveItem = ImGuiHoveredFlags_.ImGuiHoveredFlags_AllowWhenBlockedByActiveItem;
alias ImGuiHoveredFlags_AllowWhenOverlapped = ImGuiHoveredFlags_.ImGuiHoveredFlags_AllowWhenOverlapped;
alias ImGuiHoveredFlags_AllowWhenDisabled = ImGuiHoveredFlags_.ImGuiHoveredFlags_AllowWhenDisabled;
alias ImGuiHoveredFlags_RectOnly = ImGuiHoveredFlags_.ImGuiHoveredFlags_RectOnly;
alias ImGuiHoveredFlags_RootAndChildWindows = ImGuiHoveredFlags_.ImGuiHoveredFlags_RootAndChildWindows;

enum ImGuiDragDropFlags_
{
    ImGuiDragDropFlags_None = 0,
    ImGuiDragDropFlags_SourceNoPreviewTooltip = 1 << 0,
    ImGuiDragDropFlags_SourceNoDisableHover = 1 << 1,
    ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 1 << 2,
    ImGuiDragDropFlags_SourceAllowNullID = 1 << 3,
    ImGuiDragDropFlags_SourceExtern = 1 << 4,
    ImGuiDragDropFlags_SourceAutoExpirePayload = 1 << 5,
    ImGuiDragDropFlags_AcceptBeforeDelivery = 1 << 10,
    ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 1 << 11,
    ImGuiDragDropFlags_AcceptNoPreviewTooltip = 1 << 12,
    ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect
}

alias ImGuiDragDropFlags_None = ImGuiDragDropFlags_.ImGuiDragDropFlags_None;
alias ImGuiDragDropFlags_SourceNoPreviewTooltip = ImGuiDragDropFlags_.ImGuiDragDropFlags_SourceNoPreviewTooltip;
alias ImGuiDragDropFlags_SourceNoDisableHover = ImGuiDragDropFlags_.ImGuiDragDropFlags_SourceNoDisableHover;
alias ImGuiDragDropFlags_SourceNoHoldToOpenOthers = ImGuiDragDropFlags_.ImGuiDragDropFlags_SourceNoHoldToOpenOthers;
alias ImGuiDragDropFlags_SourceAllowNullID = ImGuiDragDropFlags_.ImGuiDragDropFlags_SourceAllowNullID;
alias ImGuiDragDropFlags_SourceExtern = ImGuiDragDropFlags_.ImGuiDragDropFlags_SourceExtern;
alias ImGuiDragDropFlags_SourceAutoExpirePayload = ImGuiDragDropFlags_.ImGuiDragDropFlags_SourceAutoExpirePayload;
alias ImGuiDragDropFlags_AcceptBeforeDelivery = ImGuiDragDropFlags_.ImGuiDragDropFlags_AcceptBeforeDelivery;
alias ImGuiDragDropFlags_AcceptNoDrawDefaultRect = ImGuiDragDropFlags_.ImGuiDragDropFlags_AcceptNoDrawDefaultRect;
alias ImGuiDragDropFlags_AcceptNoPreviewTooltip = ImGuiDragDropFlags_.ImGuiDragDropFlags_AcceptNoPreviewTooltip;
alias ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_.ImGuiDragDropFlags_AcceptPeekOnly;

enum ImGuiDataType_
{
    ImGuiDataType_S8 = 0,
    ImGuiDataType_U8 = 1,
    ImGuiDataType_S16 = 2,
    ImGuiDataType_U16 = 3,
    ImGuiDataType_S32 = 4,
    ImGuiDataType_U32 = 5,
    ImGuiDataType_S64 = 6,
    ImGuiDataType_U64 = 7,
    ImGuiDataType_Float = 8,
    ImGuiDataType_Double = 9,
    ImGuiDataType_COUNT = 10
}

alias ImGuiDataType_S8 = ImGuiDataType_.ImGuiDataType_S8;
alias ImGuiDataType_U8 = ImGuiDataType_.ImGuiDataType_U8;
alias ImGuiDataType_S16 = ImGuiDataType_.ImGuiDataType_S16;
alias ImGuiDataType_U16 = ImGuiDataType_.ImGuiDataType_U16;
alias ImGuiDataType_S32 = ImGuiDataType_.ImGuiDataType_S32;
alias ImGuiDataType_U32 = ImGuiDataType_.ImGuiDataType_U32;
alias ImGuiDataType_S64 = ImGuiDataType_.ImGuiDataType_S64;
alias ImGuiDataType_U64 = ImGuiDataType_.ImGuiDataType_U64;
alias ImGuiDataType_Float = ImGuiDataType_.ImGuiDataType_Float;
alias ImGuiDataType_Double = ImGuiDataType_.ImGuiDataType_Double;
alias ImGuiDataType_COUNT = ImGuiDataType_.ImGuiDataType_COUNT;

enum ImGuiDir_
{
    ImGuiDir_None = -1,
    ImGuiDir_Left = 0,
    ImGuiDir_Right = 1,
    ImGuiDir_Up = 2,
    ImGuiDir_Down = 3,
    ImGuiDir_COUNT = 4
}

alias ImGuiDir_None = ImGuiDir_.ImGuiDir_None;
alias ImGuiDir_Left = ImGuiDir_.ImGuiDir_Left;
alias ImGuiDir_Right = ImGuiDir_.ImGuiDir_Right;
alias ImGuiDir_Up = ImGuiDir_.ImGuiDir_Up;
alias ImGuiDir_Down = ImGuiDir_.ImGuiDir_Down;
alias ImGuiDir_COUNT = ImGuiDir_.ImGuiDir_COUNT;

enum ImGuiKey_
{
    ImGuiKey_Tab = 0,
    ImGuiKey_LeftArrow = 1,
    ImGuiKey_RightArrow = 2,
    ImGuiKey_UpArrow = 3,
    ImGuiKey_DownArrow = 4,
    ImGuiKey_PageUp = 5,
    ImGuiKey_PageDown = 6,
    ImGuiKey_Home = 7,
    ImGuiKey_End = 8,
    ImGuiKey_Insert = 9,
    ImGuiKey_Delete = 10,
    ImGuiKey_Backspace = 11,
    ImGuiKey_Space = 12,
    ImGuiKey_Enter = 13,
    ImGuiKey_Escape = 14,
    ImGuiKey_KeyPadEnter = 15,
    ImGuiKey_A = 16,
    ImGuiKey_C = 17,
    ImGuiKey_V = 18,
    ImGuiKey_X = 19,
    ImGuiKey_Y = 20,
    ImGuiKey_Z = 21,
    ImGuiKey_COUNT = 22
}

alias ImGuiKey_Tab = ImGuiKey_.ImGuiKey_Tab;
alias ImGuiKey_LeftArrow = ImGuiKey_.ImGuiKey_LeftArrow;
alias ImGuiKey_RightArrow = ImGuiKey_.ImGuiKey_RightArrow;
alias ImGuiKey_UpArrow = ImGuiKey_.ImGuiKey_UpArrow;
alias ImGuiKey_DownArrow = ImGuiKey_.ImGuiKey_DownArrow;
alias ImGuiKey_PageUp = ImGuiKey_.ImGuiKey_PageUp;
alias ImGuiKey_PageDown = ImGuiKey_.ImGuiKey_PageDown;
alias ImGuiKey_Home = ImGuiKey_.ImGuiKey_Home;
alias ImGuiKey_End = ImGuiKey_.ImGuiKey_End;
alias ImGuiKey_Insert = ImGuiKey_.ImGuiKey_Insert;
alias ImGuiKey_Delete = ImGuiKey_.ImGuiKey_Delete;
alias ImGuiKey_Backspace = ImGuiKey_.ImGuiKey_Backspace;
alias ImGuiKey_Space = ImGuiKey_.ImGuiKey_Space;
alias ImGuiKey_Enter = ImGuiKey_.ImGuiKey_Enter;
alias ImGuiKey_Escape = ImGuiKey_.ImGuiKey_Escape;
alias ImGuiKey_KeyPadEnter = ImGuiKey_.ImGuiKey_KeyPadEnter;
alias ImGuiKey_A = ImGuiKey_.ImGuiKey_A;
alias ImGuiKey_C = ImGuiKey_.ImGuiKey_C;
alias ImGuiKey_V = ImGuiKey_.ImGuiKey_V;
alias ImGuiKey_X = ImGuiKey_.ImGuiKey_X;
alias ImGuiKey_Y = ImGuiKey_.ImGuiKey_Y;
alias ImGuiKey_Z = ImGuiKey_.ImGuiKey_Z;
alias ImGuiKey_COUNT = ImGuiKey_.ImGuiKey_COUNT;

enum ImGuiNavInput_
{
    ImGuiNavInput_Activate = 0,
    ImGuiNavInput_Cancel = 1,
    ImGuiNavInput_Input = 2,
    ImGuiNavInput_Menu = 3,
    ImGuiNavInput_DpadLeft = 4,
    ImGuiNavInput_DpadRight = 5,
    ImGuiNavInput_DpadUp = 6,
    ImGuiNavInput_DpadDown = 7,
    ImGuiNavInput_LStickLeft = 8,
    ImGuiNavInput_LStickRight = 9,
    ImGuiNavInput_LStickUp = 10,
    ImGuiNavInput_LStickDown = 11,
    ImGuiNavInput_FocusPrev = 12,
    ImGuiNavInput_FocusNext = 13,
    ImGuiNavInput_TweakSlow = 14,
    ImGuiNavInput_TweakFast = 15,
    ImGuiNavInput_KeyMenu_ = 16,
    ImGuiNavInput_KeyTab_ = 17,
    ImGuiNavInput_KeyLeft_ = 18,
    ImGuiNavInput_KeyRight_ = 19,
    ImGuiNavInput_KeyUp_ = 20,
    ImGuiNavInput_KeyDown_ = 21,
    ImGuiNavInput_COUNT = 22,
    ImGuiNavInput_InternalStart_ = ImGuiNavInput_KeyMenu_
}

alias ImGuiNavInput_Activate = ImGuiNavInput_.ImGuiNavInput_Activate;
alias ImGuiNavInput_Cancel = ImGuiNavInput_.ImGuiNavInput_Cancel;
alias ImGuiNavInput_Input = ImGuiNavInput_.ImGuiNavInput_Input;
alias ImGuiNavInput_Menu = ImGuiNavInput_.ImGuiNavInput_Menu;
alias ImGuiNavInput_DpadLeft = ImGuiNavInput_.ImGuiNavInput_DpadLeft;
alias ImGuiNavInput_DpadRight = ImGuiNavInput_.ImGuiNavInput_DpadRight;
alias ImGuiNavInput_DpadUp = ImGuiNavInput_.ImGuiNavInput_DpadUp;
alias ImGuiNavInput_DpadDown = ImGuiNavInput_.ImGuiNavInput_DpadDown;
alias ImGuiNavInput_LStickLeft = ImGuiNavInput_.ImGuiNavInput_LStickLeft;
alias ImGuiNavInput_LStickRight = ImGuiNavInput_.ImGuiNavInput_LStickRight;
alias ImGuiNavInput_LStickUp = ImGuiNavInput_.ImGuiNavInput_LStickUp;
alias ImGuiNavInput_LStickDown = ImGuiNavInput_.ImGuiNavInput_LStickDown;
alias ImGuiNavInput_FocusPrev = ImGuiNavInput_.ImGuiNavInput_FocusPrev;
alias ImGuiNavInput_FocusNext = ImGuiNavInput_.ImGuiNavInput_FocusNext;
alias ImGuiNavInput_TweakSlow = ImGuiNavInput_.ImGuiNavInput_TweakSlow;
alias ImGuiNavInput_TweakFast = ImGuiNavInput_.ImGuiNavInput_TweakFast;
alias ImGuiNavInput_KeyMenu_ = ImGuiNavInput_.ImGuiNavInput_KeyMenu_;
alias ImGuiNavInput_KeyTab_ = ImGuiNavInput_.ImGuiNavInput_KeyTab_;
alias ImGuiNavInput_KeyLeft_ = ImGuiNavInput_.ImGuiNavInput_KeyLeft_;
alias ImGuiNavInput_KeyRight_ = ImGuiNavInput_.ImGuiNavInput_KeyRight_;
alias ImGuiNavInput_KeyUp_ = ImGuiNavInput_.ImGuiNavInput_KeyUp_;
alias ImGuiNavInput_KeyDown_ = ImGuiNavInput_.ImGuiNavInput_KeyDown_;
alias ImGuiNavInput_COUNT = ImGuiNavInput_.ImGuiNavInput_COUNT;
alias ImGuiNavInput_InternalStart_ = ImGuiNavInput_.ImGuiNavInput_InternalStart_;

enum ImGuiConfigFlags_
{
    ImGuiConfigFlags_None = 0,
    ImGuiConfigFlags_NavEnableKeyboard = 1 << 0,
    ImGuiConfigFlags_NavEnableGamepad = 1 << 1,
    ImGuiConfigFlags_NavEnableSetMousePos = 1 << 2,
    ImGuiConfigFlags_NavNoCaptureKeyboard = 1 << 3,
    ImGuiConfigFlags_NoMouse = 1 << 4,
    ImGuiConfigFlags_NoMouseCursorChange = 1 << 5,
    ImGuiConfigFlags_IsSRGB = 1 << 20,
    ImGuiConfigFlags_IsTouchScreen = 1 << 21
}

alias ImGuiConfigFlags_None = ImGuiConfigFlags_.ImGuiConfigFlags_None;
alias ImGuiConfigFlags_NavEnableKeyboard = ImGuiConfigFlags_.ImGuiConfigFlags_NavEnableKeyboard;
alias ImGuiConfigFlags_NavEnableGamepad = ImGuiConfigFlags_.ImGuiConfigFlags_NavEnableGamepad;
alias ImGuiConfigFlags_NavEnableSetMousePos = ImGuiConfigFlags_.ImGuiConfigFlags_NavEnableSetMousePos;
alias ImGuiConfigFlags_NavNoCaptureKeyboard = ImGuiConfigFlags_.ImGuiConfigFlags_NavNoCaptureKeyboard;
alias ImGuiConfigFlags_NoMouse = ImGuiConfigFlags_.ImGuiConfigFlags_NoMouse;
alias ImGuiConfigFlags_NoMouseCursorChange = ImGuiConfigFlags_.ImGuiConfigFlags_NoMouseCursorChange;
alias ImGuiConfigFlags_IsSRGB = ImGuiConfigFlags_.ImGuiConfigFlags_IsSRGB;
alias ImGuiConfigFlags_IsTouchScreen = ImGuiConfigFlags_.ImGuiConfigFlags_IsTouchScreen;

enum ImGuiBackendFlags_
{
    ImGuiBackendFlags_None = 0,
    ImGuiBackendFlags_HasGamepad = 1 << 0,
    ImGuiBackendFlags_HasMouseCursors = 1 << 1,
    ImGuiBackendFlags_HasSetMousePos = 1 << 2,
    ImGuiBackendFlags_RendererHasVtxOffset = 1 << 3
}

alias ImGuiBackendFlags_None = ImGuiBackendFlags_.ImGuiBackendFlags_None;
alias ImGuiBackendFlags_HasGamepad = ImGuiBackendFlags_.ImGuiBackendFlags_HasGamepad;
alias ImGuiBackendFlags_HasMouseCursors = ImGuiBackendFlags_.ImGuiBackendFlags_HasMouseCursors;
alias ImGuiBackendFlags_HasSetMousePos = ImGuiBackendFlags_.ImGuiBackendFlags_HasSetMousePos;
alias ImGuiBackendFlags_RendererHasVtxOffset = ImGuiBackendFlags_.ImGuiBackendFlags_RendererHasVtxOffset;

enum ImGuiCol_
{
    ImGuiCol_Text = 0,
    ImGuiCol_TextDisabled = 1,
    ImGuiCol_WindowBg = 2,
    ImGuiCol_ChildBg = 3,
    ImGuiCol_PopupBg = 4,
    ImGuiCol_Border = 5,
    ImGuiCol_BorderShadow = 6,
    ImGuiCol_FrameBg = 7,
    ImGuiCol_FrameBgHovered = 8,
    ImGuiCol_FrameBgActive = 9,
    ImGuiCol_TitleBg = 10,
    ImGuiCol_TitleBgActive = 11,
    ImGuiCol_TitleBgCollapsed = 12,
    ImGuiCol_MenuBarBg = 13,
    ImGuiCol_ScrollbarBg = 14,
    ImGuiCol_ScrollbarGrab = 15,
    ImGuiCol_ScrollbarGrabHovered = 16,
    ImGuiCol_ScrollbarGrabActive = 17,
    ImGuiCol_CheckMark = 18,
    ImGuiCol_SliderGrab = 19,
    ImGuiCol_SliderGrabActive = 20,
    ImGuiCol_Button = 21,
    ImGuiCol_ButtonHovered = 22,
    ImGuiCol_ButtonActive = 23,
    ImGuiCol_Header = 24,
    ImGuiCol_HeaderHovered = 25,
    ImGuiCol_HeaderActive = 26,
    ImGuiCol_Separator = 27,
    ImGuiCol_SeparatorHovered = 28,
    ImGuiCol_SeparatorActive = 29,
    ImGuiCol_ResizeGrip = 30,
    ImGuiCol_ResizeGripHovered = 31,
    ImGuiCol_ResizeGripActive = 32,
    ImGuiCol_Tab = 33,
    ImGuiCol_TabHovered = 34,
    ImGuiCol_TabActive = 35,
    ImGuiCol_TabUnfocused = 36,
    ImGuiCol_TabUnfocusedActive = 37,
    ImGuiCol_PlotLines = 38,
    ImGuiCol_PlotLinesHovered = 39,
    ImGuiCol_PlotHistogram = 40,
    ImGuiCol_PlotHistogramHovered = 41,
    ImGuiCol_TextSelectedBg = 42,
    ImGuiCol_DragDropTarget = 43,
    ImGuiCol_NavHighlight = 44,
    ImGuiCol_NavWindowingHighlight = 45,
    ImGuiCol_NavWindowingDimBg = 46,
    ImGuiCol_ModalWindowDimBg = 47,
    ImGuiCol_COUNT = 48
}

alias ImGuiCol_Text = ImGuiCol_.ImGuiCol_Text;
alias ImGuiCol_TextDisabled = ImGuiCol_.ImGuiCol_TextDisabled;
alias ImGuiCol_WindowBg = ImGuiCol_.ImGuiCol_WindowBg;
alias ImGuiCol_ChildBg = ImGuiCol_.ImGuiCol_ChildBg;
alias ImGuiCol_PopupBg = ImGuiCol_.ImGuiCol_PopupBg;
alias ImGuiCol_Border = ImGuiCol_.ImGuiCol_Border;
alias ImGuiCol_BorderShadow = ImGuiCol_.ImGuiCol_BorderShadow;
alias ImGuiCol_FrameBg = ImGuiCol_.ImGuiCol_FrameBg;
alias ImGuiCol_FrameBgHovered = ImGuiCol_.ImGuiCol_FrameBgHovered;
alias ImGuiCol_FrameBgActive = ImGuiCol_.ImGuiCol_FrameBgActive;
alias ImGuiCol_TitleBg = ImGuiCol_.ImGuiCol_TitleBg;
alias ImGuiCol_TitleBgActive = ImGuiCol_.ImGuiCol_TitleBgActive;
alias ImGuiCol_TitleBgCollapsed = ImGuiCol_.ImGuiCol_TitleBgCollapsed;
alias ImGuiCol_MenuBarBg = ImGuiCol_.ImGuiCol_MenuBarBg;
alias ImGuiCol_ScrollbarBg = ImGuiCol_.ImGuiCol_ScrollbarBg;
alias ImGuiCol_ScrollbarGrab = ImGuiCol_.ImGuiCol_ScrollbarGrab;
alias ImGuiCol_ScrollbarGrabHovered = ImGuiCol_.ImGuiCol_ScrollbarGrabHovered;
alias ImGuiCol_ScrollbarGrabActive = ImGuiCol_.ImGuiCol_ScrollbarGrabActive;
alias ImGuiCol_CheckMark = ImGuiCol_.ImGuiCol_CheckMark;
alias ImGuiCol_SliderGrab = ImGuiCol_.ImGuiCol_SliderGrab;
alias ImGuiCol_SliderGrabActive = ImGuiCol_.ImGuiCol_SliderGrabActive;
alias ImGuiCol_Button = ImGuiCol_.ImGuiCol_Button;
alias ImGuiCol_ButtonHovered = ImGuiCol_.ImGuiCol_ButtonHovered;
alias ImGuiCol_ButtonActive = ImGuiCol_.ImGuiCol_ButtonActive;
alias ImGuiCol_Header = ImGuiCol_.ImGuiCol_Header;
alias ImGuiCol_HeaderHovered = ImGuiCol_.ImGuiCol_HeaderHovered;
alias ImGuiCol_HeaderActive = ImGuiCol_.ImGuiCol_HeaderActive;
alias ImGuiCol_Separator = ImGuiCol_.ImGuiCol_Separator;
alias ImGuiCol_SeparatorHovered = ImGuiCol_.ImGuiCol_SeparatorHovered;
alias ImGuiCol_SeparatorActive = ImGuiCol_.ImGuiCol_SeparatorActive;
alias ImGuiCol_ResizeGrip = ImGuiCol_.ImGuiCol_ResizeGrip;
alias ImGuiCol_ResizeGripHovered = ImGuiCol_.ImGuiCol_ResizeGripHovered;
alias ImGuiCol_ResizeGripActive = ImGuiCol_.ImGuiCol_ResizeGripActive;
alias ImGuiCol_Tab = ImGuiCol_.ImGuiCol_Tab;
alias ImGuiCol_TabHovered = ImGuiCol_.ImGuiCol_TabHovered;
alias ImGuiCol_TabActive = ImGuiCol_.ImGuiCol_TabActive;
alias ImGuiCol_TabUnfocused = ImGuiCol_.ImGuiCol_TabUnfocused;
alias ImGuiCol_TabUnfocusedActive = ImGuiCol_.ImGuiCol_TabUnfocusedActive;
alias ImGuiCol_PlotLines = ImGuiCol_.ImGuiCol_PlotLines;
alias ImGuiCol_PlotLinesHovered = ImGuiCol_.ImGuiCol_PlotLinesHovered;
alias ImGuiCol_PlotHistogram = ImGuiCol_.ImGuiCol_PlotHistogram;
alias ImGuiCol_PlotHistogramHovered = ImGuiCol_.ImGuiCol_PlotHistogramHovered;
alias ImGuiCol_TextSelectedBg = ImGuiCol_.ImGuiCol_TextSelectedBg;
alias ImGuiCol_DragDropTarget = ImGuiCol_.ImGuiCol_DragDropTarget;
alias ImGuiCol_NavHighlight = ImGuiCol_.ImGuiCol_NavHighlight;
alias ImGuiCol_NavWindowingHighlight = ImGuiCol_.ImGuiCol_NavWindowingHighlight;
alias ImGuiCol_NavWindowingDimBg = ImGuiCol_.ImGuiCol_NavWindowingDimBg;
alias ImGuiCol_ModalWindowDimBg = ImGuiCol_.ImGuiCol_ModalWindowDimBg;
alias ImGuiCol_COUNT = ImGuiCol_.ImGuiCol_COUNT;

enum ImGuiStyleVar_
{
    ImGuiStyleVar_Alpha = 0,
    ImGuiStyleVar_WindowPadding = 1,
    ImGuiStyleVar_WindowRounding = 2,
    ImGuiStyleVar_WindowBorderSize = 3,
    ImGuiStyleVar_WindowMinSize = 4,
    ImGuiStyleVar_WindowTitleAlign = 5,
    ImGuiStyleVar_ChildRounding = 6,
    ImGuiStyleVar_ChildBorderSize = 7,
    ImGuiStyleVar_PopupRounding = 8,
    ImGuiStyleVar_PopupBorderSize = 9,
    ImGuiStyleVar_FramePadding = 10,
    ImGuiStyleVar_FrameRounding = 11,
    ImGuiStyleVar_FrameBorderSize = 12,
    ImGuiStyleVar_ItemSpacing = 13,
    ImGuiStyleVar_ItemInnerSpacing = 14,
    ImGuiStyleVar_IndentSpacing = 15,
    ImGuiStyleVar_ScrollbarSize = 16,
    ImGuiStyleVar_ScrollbarRounding = 17,
    ImGuiStyleVar_GrabMinSize = 18,
    ImGuiStyleVar_GrabRounding = 19,
    ImGuiStyleVar_TabRounding = 20,
    ImGuiStyleVar_ButtonTextAlign = 21,
    ImGuiStyleVar_SelectableTextAlign = 22,
    ImGuiStyleVar_COUNT = 23
}

alias ImGuiStyleVar_Alpha = ImGuiStyleVar_.ImGuiStyleVar_Alpha;
alias ImGuiStyleVar_WindowPadding = ImGuiStyleVar_.ImGuiStyleVar_WindowPadding;
alias ImGuiStyleVar_WindowRounding = ImGuiStyleVar_.ImGuiStyleVar_WindowRounding;
alias ImGuiStyleVar_WindowBorderSize = ImGuiStyleVar_.ImGuiStyleVar_WindowBorderSize;
alias ImGuiStyleVar_WindowMinSize = ImGuiStyleVar_.ImGuiStyleVar_WindowMinSize;
alias ImGuiStyleVar_WindowTitleAlign = ImGuiStyleVar_.ImGuiStyleVar_WindowTitleAlign;
alias ImGuiStyleVar_ChildRounding = ImGuiStyleVar_.ImGuiStyleVar_ChildRounding;
alias ImGuiStyleVar_ChildBorderSize = ImGuiStyleVar_.ImGuiStyleVar_ChildBorderSize;
alias ImGuiStyleVar_PopupRounding = ImGuiStyleVar_.ImGuiStyleVar_PopupRounding;
alias ImGuiStyleVar_PopupBorderSize = ImGuiStyleVar_.ImGuiStyleVar_PopupBorderSize;
alias ImGuiStyleVar_FramePadding = ImGuiStyleVar_.ImGuiStyleVar_FramePadding;
alias ImGuiStyleVar_FrameRounding = ImGuiStyleVar_.ImGuiStyleVar_FrameRounding;
alias ImGuiStyleVar_FrameBorderSize = ImGuiStyleVar_.ImGuiStyleVar_FrameBorderSize;
alias ImGuiStyleVar_ItemSpacing = ImGuiStyleVar_.ImGuiStyleVar_ItemSpacing;
alias ImGuiStyleVar_ItemInnerSpacing = ImGuiStyleVar_.ImGuiStyleVar_ItemInnerSpacing;
alias ImGuiStyleVar_IndentSpacing = ImGuiStyleVar_.ImGuiStyleVar_IndentSpacing;
alias ImGuiStyleVar_ScrollbarSize = ImGuiStyleVar_.ImGuiStyleVar_ScrollbarSize;
alias ImGuiStyleVar_ScrollbarRounding = ImGuiStyleVar_.ImGuiStyleVar_ScrollbarRounding;
alias ImGuiStyleVar_GrabMinSize = ImGuiStyleVar_.ImGuiStyleVar_GrabMinSize;
alias ImGuiStyleVar_GrabRounding = ImGuiStyleVar_.ImGuiStyleVar_GrabRounding;
alias ImGuiStyleVar_TabRounding = ImGuiStyleVar_.ImGuiStyleVar_TabRounding;
alias ImGuiStyleVar_ButtonTextAlign = ImGuiStyleVar_.ImGuiStyleVar_ButtonTextAlign;
alias ImGuiStyleVar_SelectableTextAlign = ImGuiStyleVar_.ImGuiStyleVar_SelectableTextAlign;
alias ImGuiStyleVar_COUNT = ImGuiStyleVar_.ImGuiStyleVar_COUNT;

enum ImGuiColorEditFlags_
{
    ImGuiColorEditFlags_None = 0,
    ImGuiColorEditFlags_NoAlpha = 1 << 1,
    ImGuiColorEditFlags_NoPicker = 1 << 2,
    ImGuiColorEditFlags_NoOptions = 1 << 3,
    ImGuiColorEditFlags_NoSmallPreview = 1 << 4,
    ImGuiColorEditFlags_NoInputs = 1 << 5,
    ImGuiColorEditFlags_NoTooltip = 1 << 6,
    ImGuiColorEditFlags_NoLabel = 1 << 7,
    ImGuiColorEditFlags_NoSidePreview = 1 << 8,
    ImGuiColorEditFlags_NoDragDrop = 1 << 9,
    ImGuiColorEditFlags_AlphaBar = 1 << 16,
    ImGuiColorEditFlags_AlphaPreview = 1 << 17,
    ImGuiColorEditFlags_AlphaPreviewHalf = 1 << 18,
    ImGuiColorEditFlags_HDR = 1 << 19,
    ImGuiColorEditFlags_DisplayRGB = 1 << 20,
    ImGuiColorEditFlags_DisplayHSV = 1 << 21,
    ImGuiColorEditFlags_DisplayHex = 1 << 22,
    ImGuiColorEditFlags_Uint8 = 1 << 23,
    ImGuiColorEditFlags_Float = 1 << 24,
    ImGuiColorEditFlags_PickerHueBar = 1 << 25,
    ImGuiColorEditFlags_PickerHueWheel = 1 << 26,
    ImGuiColorEditFlags_InputRGB = 1 << 27,
    ImGuiColorEditFlags_InputHSV = 1 << 28,
    ImGuiColorEditFlags__OptionsDefault = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_PickerHueBar,
    ImGuiColorEditFlags__DisplayMask = ImGuiColorEditFlags_DisplayRGB | ImGuiColorEditFlags_DisplayHSV | ImGuiColorEditFlags_DisplayHex,
    ImGuiColorEditFlags__DataTypeMask = ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_Float,
    ImGuiColorEditFlags__PickerMask = ImGuiColorEditFlags_PickerHueWheel | ImGuiColorEditFlags_PickerHueBar,
    ImGuiColorEditFlags__InputMask = ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_InputHSV
}

alias ImGuiColorEditFlags_None = ImGuiColorEditFlags_.ImGuiColorEditFlags_None;
alias ImGuiColorEditFlags_NoAlpha = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoAlpha;
alias ImGuiColorEditFlags_NoPicker = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoPicker;
alias ImGuiColorEditFlags_NoOptions = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoOptions;
alias ImGuiColorEditFlags_NoSmallPreview = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoSmallPreview;
alias ImGuiColorEditFlags_NoInputs = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoInputs;
alias ImGuiColorEditFlags_NoTooltip = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoTooltip;
alias ImGuiColorEditFlags_NoLabel = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoLabel;
alias ImGuiColorEditFlags_NoSidePreview = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoSidePreview;
alias ImGuiColorEditFlags_NoDragDrop = ImGuiColorEditFlags_.ImGuiColorEditFlags_NoDragDrop;
alias ImGuiColorEditFlags_AlphaBar = ImGuiColorEditFlags_.ImGuiColorEditFlags_AlphaBar;
alias ImGuiColorEditFlags_AlphaPreview = ImGuiColorEditFlags_.ImGuiColorEditFlags_AlphaPreview;
alias ImGuiColorEditFlags_AlphaPreviewHalf = ImGuiColorEditFlags_.ImGuiColorEditFlags_AlphaPreviewHalf;
alias ImGuiColorEditFlags_HDR = ImGuiColorEditFlags_.ImGuiColorEditFlags_HDR;
alias ImGuiColorEditFlags_DisplayRGB = ImGuiColorEditFlags_.ImGuiColorEditFlags_DisplayRGB;
alias ImGuiColorEditFlags_DisplayHSV = ImGuiColorEditFlags_.ImGuiColorEditFlags_DisplayHSV;
alias ImGuiColorEditFlags_DisplayHex = ImGuiColorEditFlags_.ImGuiColorEditFlags_DisplayHex;
alias ImGuiColorEditFlags_Uint8 = ImGuiColorEditFlags_.ImGuiColorEditFlags_Uint8;
alias ImGuiColorEditFlags_Float = ImGuiColorEditFlags_.ImGuiColorEditFlags_Float;
alias ImGuiColorEditFlags_PickerHueBar = ImGuiColorEditFlags_.ImGuiColorEditFlags_PickerHueBar;
alias ImGuiColorEditFlags_PickerHueWheel = ImGuiColorEditFlags_.ImGuiColorEditFlags_PickerHueWheel;
alias ImGuiColorEditFlags_InputRGB = ImGuiColorEditFlags_.ImGuiColorEditFlags_InputRGB;
alias ImGuiColorEditFlags_InputHSV = ImGuiColorEditFlags_.ImGuiColorEditFlags_InputHSV;
alias ImGuiColorEditFlags__OptionsDefault = ImGuiColorEditFlags_.ImGuiColorEditFlags__OptionsDefault;
alias ImGuiColorEditFlags__DisplayMask = ImGuiColorEditFlags_.ImGuiColorEditFlags__DisplayMask;
alias ImGuiColorEditFlags__DataTypeMask = ImGuiColorEditFlags_.ImGuiColorEditFlags__DataTypeMask;
alias ImGuiColorEditFlags__PickerMask = ImGuiColorEditFlags_.ImGuiColorEditFlags__PickerMask;
alias ImGuiColorEditFlags__InputMask = ImGuiColorEditFlags_.ImGuiColorEditFlags__InputMask;

enum ImGuiMouseCursor_
{
    ImGuiMouseCursor_None = -1,
    ImGuiMouseCursor_Arrow = 0,
    ImGuiMouseCursor_TextInput = 1,
    ImGuiMouseCursor_ResizeAll = 2,
    ImGuiMouseCursor_ResizeNS = 3,
    ImGuiMouseCursor_ResizeEW = 4,
    ImGuiMouseCursor_ResizeNESW = 5,
    ImGuiMouseCursor_ResizeNWSE = 6,
    ImGuiMouseCursor_Hand = 7,
    ImGuiMouseCursor_COUNT = 8
}

alias ImGuiMouseCursor_None = ImGuiMouseCursor_.ImGuiMouseCursor_None;
alias ImGuiMouseCursor_Arrow = ImGuiMouseCursor_.ImGuiMouseCursor_Arrow;
alias ImGuiMouseCursor_TextInput = ImGuiMouseCursor_.ImGuiMouseCursor_TextInput;
alias ImGuiMouseCursor_ResizeAll = ImGuiMouseCursor_.ImGuiMouseCursor_ResizeAll;
alias ImGuiMouseCursor_ResizeNS = ImGuiMouseCursor_.ImGuiMouseCursor_ResizeNS;
alias ImGuiMouseCursor_ResizeEW = ImGuiMouseCursor_.ImGuiMouseCursor_ResizeEW;
alias ImGuiMouseCursor_ResizeNESW = ImGuiMouseCursor_.ImGuiMouseCursor_ResizeNESW;
alias ImGuiMouseCursor_ResizeNWSE = ImGuiMouseCursor_.ImGuiMouseCursor_ResizeNWSE;
alias ImGuiMouseCursor_Hand = ImGuiMouseCursor_.ImGuiMouseCursor_Hand;
alias ImGuiMouseCursor_COUNT = ImGuiMouseCursor_.ImGuiMouseCursor_COUNT;

enum ImGuiCond_
{
    ImGuiCond_Always = 1 << 0,
    ImGuiCond_Once = 1 << 1,
    ImGuiCond_FirstUseEver = 1 << 2,
    ImGuiCond_Appearing = 1 << 3
}

alias ImGuiCond_Always = ImGuiCond_.ImGuiCond_Always;
alias ImGuiCond_Once = ImGuiCond_.ImGuiCond_Once;
alias ImGuiCond_FirstUseEver = ImGuiCond_.ImGuiCond_FirstUseEver;
alias ImGuiCond_Appearing = ImGuiCond_.ImGuiCond_Appearing;

struct ImGuiStyle
{
    float Alpha;
    ImVec2 WindowPadding;
    float WindowRounding;
    float WindowBorderSize;
    ImVec2 WindowMinSize;
    ImVec2 WindowTitleAlign;
    ImGuiDir WindowMenuButtonPosition;
    float ChildRounding;
    float ChildBorderSize;
    float PopupRounding;
    float PopupBorderSize;
    ImVec2 FramePadding;
    float FrameRounding;
    float FrameBorderSize;
    ImVec2 ItemSpacing;
    ImVec2 ItemInnerSpacing;
    ImVec2 TouchExtraPadding;
    float IndentSpacing;
    float ColumnsMinSpacing;
    float ScrollbarSize;
    float ScrollbarRounding;
    float GrabMinSize;
    float GrabRounding;
    float TabRounding;
    float TabBorderSize;
    ImGuiDir ColorButtonPosition;
    ImVec2 ButtonTextAlign;
    ImVec2 SelectableTextAlign;
    ImVec2 DisplayWindowPadding;
    ImVec2 DisplaySafeAreaPadding;
    float MouseCursorScale;
    bool AntiAliasedLines;
    bool AntiAliasedFill;
    float CurveTessellationTol;
    ImVec4[ImGuiCol_COUNT] Colors;
}

struct ImGuiIO
{
    ImGuiConfigFlags ConfigFlags;
    ImGuiBackendFlags BackendFlags;
    ImVec2 DisplaySize;
    float DeltaTime;
    float IniSavingRate;
    const(char)* IniFilename;
    const(char)* LogFilename;
    float MouseDoubleClickTime;
    float MouseDoubleClickMaxDist;
    float MouseDragThreshold;
    int[ImGuiKey_COUNT] KeyMap;
    float KeyRepeatDelay;
    float KeyRepeatRate;
    void* UserData;
    ImFontAtlas* Fonts;
    float FontGlobalScale;
    bool FontAllowUserScaling;
    ImFont* FontDefault;
    ImVec2 DisplayFramebufferScale;
    bool MouseDrawCursor;
    bool ConfigMacOSXBehaviors;
    bool ConfigInputTextCursorBlink;
    bool ConfigWindowsResizeFromEdges;
    bool ConfigWindowsMoveFromTitleBarOnly;
    float ConfigWindowsMemoryCompactTimer;
    const(char)* BackendPlatformName;
    const(char)* BackendRendererName;
    void* BackendPlatformUserData;
    void* BackendRendererUserData;
    void* BackendLanguageUserData;
    const(char)* function (void* user_data) GetClipboardTextFn;
    void function (void* user_data, const(char)* text) SetClipboardTextFn;
    void* ClipboardUserData;
    void function (int x, int y) ImeSetInputScreenPosFn;
    void* ImeWindowHandle;
    void* RenderDrawListsFnUnused;
    ImVec2 MousePos;
    bool[5] MouseDown;
    float MouseWheel;
    float MouseWheelH;
    bool KeyCtrl;
    bool KeyShift;
    bool KeyAlt;
    bool KeySuper;
    bool[512] KeysDown;
    float[ImGuiNavInput_COUNT] NavInputs;
    bool WantCaptureMouse;
    bool WantCaptureKeyboard;
    bool WantTextInput;
    bool WantSetMousePos;
    bool WantSaveIniSettings;
    bool NavActive;
    bool NavVisible;
    float Framerate;
    int MetricsRenderVertices;
    int MetricsRenderIndices;
    int MetricsRenderWindows;
    int MetricsActiveWindows;
    int MetricsActiveAllocations;
    ImVec2 MouseDelta;
    ImVec2 MousePosPrev;
    ImVec2[5] MouseClickedPos;
    double[5] MouseClickedTime;
    bool[5] MouseClicked;
    bool[5] MouseDoubleClicked;
    bool[5] MouseReleased;
    bool[5] MouseDownOwned;
    bool[5] MouseDownWasDoubleClick;
    float[5] MouseDownDuration;
    float[5] MouseDownDurationPrev;
    ImVec2[5] MouseDragMaxDistanceAbs;
    float[5] MouseDragMaxDistanceSqr;
    float[512] KeysDownDuration;
    float[512] KeysDownDurationPrev;
    float[ImGuiNavInput_COUNT] NavInputsDownDuration;
    float[ImGuiNavInput_COUNT] NavInputsDownDurationPrev;
    ImVector_ImWchar InputQueueCharacters;
}

struct ImGuiInputTextCallbackData
{
    ImGuiInputTextFlags EventFlag;
    ImGuiInputTextFlags Flags;
    void* UserData;
    ImWchar EventChar;
    ImGuiKey EventKey;
    char* Buf;
    int BufTextLen;
    int BufSize;
    bool BufDirty;
    int CursorPos;
    int SelectionStart;
    int SelectionEnd;
}

struct ImGuiSizeCallbackData
{
    void* UserData;
    ImVec2 Pos;
    ImVec2 CurrentSize;
    ImVec2 DesiredSize;
}

struct ImGuiPayload
{
    void* Data;
    int DataSize;
    ImGuiID SourceId;
    ImGuiID SourceParentId;
    int DataFrameCount;
    char[33] DataType;
    bool Preview;
    bool Delivery;
}

struct ImGuiOnceUponAFrame
{
    int RefFrame;
}

struct ImGuiTextFilter
{
    char[256] InputBuf;
    ImVector_ImGuiTextRange Filters;
    int CountGrep;
}

struct ImGuiTextBuffer
{
    ImVector_char Buf;
}

struct ImGuiStorage
{
    ImVector_ImGuiStoragePair Data;
}

struct ImGuiListClipper
{
    float StartPosY;
    float ItemsHeight;
    int ItemsCount;
    int StepNo;
    int DisplayStart;
    int DisplayEnd;
}

struct ImColor
{
    ImVec4 Value;
}

struct ImDrawCmd
{
    uint ElemCount;
    ImVec4 ClipRect;
    ImTextureID TextureId;
    uint VtxOffset;
    uint IdxOffset;
    ImDrawCallback UserCallback;
    void* UserCallbackData;
}

struct ImDrawVert
{
    ImVec2 pos;
    ImVec2 uv;
    ImU32 col;
}

struct ImDrawChannel
{
    ImVector_ImDrawCmd _CmdBuffer;
    ImVector_ImDrawIdx _IdxBuffer;
}

struct ImDrawListSplitter
{
    int _Current;
    int _Count;
    ImVector_ImDrawChannel _Channels;
}

enum ImDrawCornerFlags_
{
    ImDrawCornerFlags_None = 0,
    ImDrawCornerFlags_TopLeft = 1 << 0,
    ImDrawCornerFlags_TopRight = 1 << 1,
    ImDrawCornerFlags_BotLeft = 1 << 2,
    ImDrawCornerFlags_BotRight = 1 << 3,
    ImDrawCornerFlags_Top = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_TopRight,
    ImDrawCornerFlags_Bot = ImDrawCornerFlags_BotLeft | ImDrawCornerFlags_BotRight,
    ImDrawCornerFlags_Left = ImDrawCornerFlags_TopLeft | ImDrawCornerFlags_BotLeft,
    ImDrawCornerFlags_Right = ImDrawCornerFlags_TopRight | ImDrawCornerFlags_BotRight,
    ImDrawCornerFlags_All = 0xF
}

alias ImDrawCornerFlags_None = ImDrawCornerFlags_.ImDrawCornerFlags_None;
alias ImDrawCornerFlags_TopLeft = ImDrawCornerFlags_.ImDrawCornerFlags_TopLeft;
alias ImDrawCornerFlags_TopRight = ImDrawCornerFlags_.ImDrawCornerFlags_TopRight;
alias ImDrawCornerFlags_BotLeft = ImDrawCornerFlags_.ImDrawCornerFlags_BotLeft;
alias ImDrawCornerFlags_BotRight = ImDrawCornerFlags_.ImDrawCornerFlags_BotRight;
alias ImDrawCornerFlags_Top = ImDrawCornerFlags_.ImDrawCornerFlags_Top;
alias ImDrawCornerFlags_Bot = ImDrawCornerFlags_.ImDrawCornerFlags_Bot;
alias ImDrawCornerFlags_Left = ImDrawCornerFlags_.ImDrawCornerFlags_Left;
alias ImDrawCornerFlags_Right = ImDrawCornerFlags_.ImDrawCornerFlags_Right;
alias ImDrawCornerFlags_All = ImDrawCornerFlags_.ImDrawCornerFlags_All;

enum ImDrawListFlags_
{
    ImDrawListFlags_None = 0,
    ImDrawListFlags_AntiAliasedLines = 1 << 0,
    ImDrawListFlags_AntiAliasedFill = 1 << 1,
    ImDrawListFlags_AllowVtxOffset = 1 << 2
}

alias ImDrawListFlags_None = ImDrawListFlags_.ImDrawListFlags_None;
alias ImDrawListFlags_AntiAliasedLines = ImDrawListFlags_.ImDrawListFlags_AntiAliasedLines;
alias ImDrawListFlags_AntiAliasedFill = ImDrawListFlags_.ImDrawListFlags_AntiAliasedFill;
alias ImDrawListFlags_AllowVtxOffset = ImDrawListFlags_.ImDrawListFlags_AllowVtxOffset;

struct ImDrawList
{
    ImVector_ImDrawCmd CmdBuffer;
    ImVector_ImDrawIdx IdxBuffer;
    ImVector_ImDrawVert VtxBuffer;
    ImDrawListFlags Flags;
    const(ImDrawListSharedData)* _Data;
    const(char)* _OwnerName;
    uint _VtxCurrentOffset;
    uint _VtxCurrentIdx;
    ImDrawVert* _VtxWritePtr;
    ImDrawIdx* _IdxWritePtr;
    ImVector_ImVec4 _ClipRectStack;
    ImVector_ImTextureID _TextureIdStack;
    ImVector_ImVec2 _Path;
    ImDrawListSplitter _Splitter;
}

struct ImDrawData
{
    bool Valid;
    ImDrawList** CmdLists;
    int CmdListsCount;
    int TotalIdxCount;
    int TotalVtxCount;
    ImVec2 DisplayPos;
    ImVec2 DisplaySize;
    ImVec2 FramebufferScale;
}

struct ImFontConfig
{
    void* FontData;
    int FontDataSize;
    bool FontDataOwnedByAtlas;
    int FontNo;
    float SizePixels;
    int OversampleH;
    int OversampleV;
    bool PixelSnapH;
    ImVec2 GlyphExtraSpacing;
    ImVec2 GlyphOffset;
    const(ImWchar)* GlyphRanges;
    float GlyphMinAdvanceX;
    float GlyphMaxAdvanceX;
    bool MergeMode;
    uint RasterizerFlags;
    float RasterizerMultiply;
    ImWchar EllipsisChar;
    char[40] Name;
    ImFont* DstFont;
}

struct ImFontGlyph
{
    ImWchar Codepoint;
    float AdvanceX;
    float X0;
    float Y0;
    float X1;
    float Y1;
    float U0;
    float V0;
    float U1;
    float V1;
}

struct ImFontGlyphRangesBuilder
{
    ImVector_ImU32 UsedChars;
}

struct ImFontAtlasCustomRect
{
    uint ID;
    ushort Width;
    ushort Height;
    ushort X;
    ushort Y;
    float GlyphAdvanceX;
    ImVec2 GlyphOffset;
    ImFont* Font;
}

enum ImFontAtlasFlags_
{
    ImFontAtlasFlags_None = 0,
    ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0,
    ImFontAtlasFlags_NoMouseCursors = 1 << 1
}

alias ImFontAtlasFlags_None = ImFontAtlasFlags_.ImFontAtlasFlags_None;
alias ImFontAtlasFlags_NoPowerOfTwoHeight = ImFontAtlasFlags_.ImFontAtlasFlags_NoPowerOfTwoHeight;
alias ImFontAtlasFlags_NoMouseCursors = ImFontAtlasFlags_.ImFontAtlasFlags_NoMouseCursors;

struct ImFontAtlas
{
    bool Locked;
    ImFontAtlasFlags Flags;
    ImTextureID TexID;
    int TexDesiredWidth;
    int TexGlyphPadding;
    ubyte* TexPixelsAlpha8;
    uint* TexPixelsRGBA32;
    int TexWidth;
    int TexHeight;
    ImVec2 TexUvScale;
    ImVec2 TexUvWhitePixel;
    ImVector_ImFontPtr Fonts;
    ImVector_ImFontAtlasCustomRect CustomRects;
    ImVector_ImFontConfig ConfigData;
    int[1] CustomRectIds;
}

struct ImFont
{
    ImVector_float IndexAdvanceX;
    float FallbackAdvanceX;
    float FontSize;
    ImVector_ImWchar IndexLookup;
    ImVector_ImFontGlyph Glyphs;
    const(ImFontGlyph)* FallbackGlyph;
    ImVec2 DisplayOffset;
    ImFontAtlas* ContainerAtlas;
    const(ImFontConfig)* ConfigData;
    short ConfigDataCount;
    ImWchar FallbackChar;
    ImWchar EllipsisChar;
    float Scale;
    float Ascent;
    float Descent;
    int MetricsTotalSurface;
    bool DirtyLookupTables;
}

struct ImGuiTextRange
{
    const(char)* b;
    const(char)* e;
}

struct ImGuiStoragePair
{
    ImGuiID key;

    union
    {
        int val_i;
        float val_f;
        void* val_p;
    }
}

// CIMGUI_DEFINE_ENUMS_AND_STRUCTS

//CIMGUI_DEFINE_ENUMS_AND_STRUCTS
ImVec2* ImVec2_ImVec2 ();
void ImVec2_destroy (ImVec2* self);
ImVec2* ImVec2_ImVec2Float (float _x, float _y);
ImVec4* ImVec4_ImVec4 ();
void ImVec4_destroy (ImVec4* self);
ImVec4* ImVec4_ImVec4Float (float _x, float _y, float _z, float _w);
ImGuiContext* igCreateContext (ImFontAtlas* shared_font_atlas);
void igDestroyContext (ImGuiContext* ctx);
ImGuiContext* igGetCurrentContext ();
void igSetCurrentContext (ImGuiContext* ctx);
bool igDebugCheckVersionAndDataLayout (const(char)* version_str, size_t sz_io, size_t sz_style, size_t sz_vec2, size_t sz_vec4, size_t sz_drawvert, size_t sz_drawidx);
ImGuiIO* igGetIO ();
ImGuiStyle* igGetStyle ();
void igNewFrame ();
void igEndFrame ();
void igRender ();
ImDrawData* igGetDrawData ();
void igShowDemoWindow (bool* p_open);
void igShowAboutWindow (bool* p_open);
void igShowMetricsWindow (bool* p_open);
void igShowStyleEditor (ImGuiStyle* ref_);
bool igShowStyleSelector (const(char)* label);
void igShowFontSelector (const(char)* label);
void igShowUserGuide ();
const(char)* igGetVersion ();
void igStyleColorsDark (ImGuiStyle* dst);
void igStyleColorsClassic (ImGuiStyle* dst);
void igStyleColorsLight (ImGuiStyle* dst);
bool igBegin (const(char)* name, bool* p_open, ImGuiWindowFlags flags);
void igEnd ();
bool igBeginChild (const(char)* str_id, const ImVec2 size, bool border, ImGuiWindowFlags flags);
bool igBeginChildID (ImGuiID id, const ImVec2 size, bool border, ImGuiWindowFlags flags);
void igEndChild ();
bool igIsWindowAppearing ();
bool igIsWindowCollapsed ();
bool igIsWindowFocused (ImGuiFocusedFlags flags);
bool igIsWindowHovered (ImGuiHoveredFlags flags);
ImDrawList* igGetWindowDrawList ();
ImVec2 igGetWindowPos ();
ImVec2 igGetWindowSize ();
float igGetWindowWidth ();
float igGetWindowHeight ();
void igSetNextWindowPos (const ImVec2 pos, ImGuiCond cond, const ImVec2 pivot);
void igSetNextWindowSize (const ImVec2 size, ImGuiCond cond);
void igSetNextWindowSizeConstraints (const ImVec2 size_min, const ImVec2 size_max, ImGuiSizeCallback custom_callback, void* custom_callback_data);
void igSetNextWindowContentSize (const ImVec2 size);
void igSetNextWindowCollapsed (bool collapsed, ImGuiCond cond);
void igSetNextWindowFocus ();
void igSetNextWindowBgAlpha (float alpha);
void igSetWindowPosVec2 (const ImVec2 pos, ImGuiCond cond);
void igSetWindowSizeVec2 (const ImVec2 size, ImGuiCond cond);
void igSetWindowCollapsedBool (bool collapsed, ImGuiCond cond);
void igSetWindowFocus ();
void igSetWindowFontScale (float scale);
void igSetWindowPosStr (const(char)* name, const ImVec2 pos, ImGuiCond cond);
void igSetWindowSizeStr (const(char)* name, const ImVec2 size, ImGuiCond cond);
void igSetWindowCollapsedStr (const(char)* name, bool collapsed, ImGuiCond cond);
void igSetWindowFocusStr (const(char)* name);
ImVec2 igGetContentRegionMax ();
ImVec2 igGetContentRegionAvail ();
ImVec2 igGetWindowContentRegionMin ();
ImVec2 igGetWindowContentRegionMax ();
float igGetWindowContentRegionWidth ();
float igGetScrollX ();
float igGetScrollY ();
float igGetScrollMaxX ();
float igGetScrollMaxY ();
void igSetScrollX (float scroll_x);
void igSetScrollY (float scroll_y);
void igSetScrollHereX (float center_x_ratio);
void igSetScrollHereY (float center_y_ratio);
void igSetScrollFromPosX (float local_x, float center_x_ratio);
void igSetScrollFromPosY (float local_y, float center_y_ratio);
void igPushFont (ImFont* font);
void igPopFont ();
void igPushStyleColorU32 (ImGuiCol idx, ImU32 col);
void igPushStyleColor (ImGuiCol idx, const ImVec4 col);
void igPopStyleColor (int count);
void igPushStyleVarFloat (ImGuiStyleVar idx, float val);
void igPushStyleVarVec2 (ImGuiStyleVar idx, const ImVec2 val);
void igPopStyleVar (int count);
const(ImVec4)* igGetStyleColorVec4 (ImGuiCol idx);
ImFont* igGetFont ();
float igGetFontSize ();
ImVec2 igGetFontTexUvWhitePixel ();
ImU32 igGetColorU32 (ImGuiCol idx, float alpha_mul);
ImU32 igGetColorU32Vec4 (const ImVec4 col);
ImU32 igGetColorU32U32 (ImU32 col);
void igPushItemWidth (float item_width);
void igPopItemWidth ();
void igSetNextItemWidth (float item_width);
float igCalcItemWidth ();
void igPushTextWrapPos (float wrap_local_pos_x);
void igPopTextWrapPos ();
void igPushAllowKeyboardFocus (bool allow_keyboard_focus);
void igPopAllowKeyboardFocus ();
void igPushButtonRepeat (bool repeat);
void igPopButtonRepeat ();
void igSeparator ();
void igSameLine (float offset_from_start_x, float spacing);
void igNewLine ();
void igSpacing ();
void igDummy (const ImVec2 size);
void igIndent (float indent_w);
void igUnindent (float indent_w);
void igBeginGroup ();
void igEndGroup ();
ImVec2 igGetCursorPos ();
float igGetCursorPosX ();
float igGetCursorPosY ();
void igSetCursorPos (const ImVec2 local_pos);
void igSetCursorPosX (float local_x);
void igSetCursorPosY (float local_y);
ImVec2 igGetCursorStartPos ();
ImVec2 igGetCursorScreenPos ();
void igSetCursorScreenPos (const ImVec2 pos);
void igAlignTextToFramePadding ();
float igGetTextLineHeight ();
float igGetTextLineHeightWithSpacing ();
float igGetFrameHeight ();
float igGetFrameHeightWithSpacing ();
void igPushIDStr (const(char)* str_id);
void igPushIDRange (const(char)* str_id_begin, const(char)* str_id_end);
void igPushIDPtr (const(void)* ptr_id);
void igPushIDInt (int int_id);
void igPopID ();
ImGuiID igGetIDStr (const(char)* str_id);
ImGuiID igGetIDRange (const(char)* str_id_begin, const(char)* str_id_end);
ImGuiID igGetIDPtr (const(void)* ptr_id);
void igTextUnformatted (const(char)* text, const(char)* text_end);
void igText (const(char)* fmt, ...);
void igTextV (const(char)* fmt, va_list args);
void igTextColored (const ImVec4 col, const(char)* fmt, ...);
void igTextColoredV (const ImVec4 col, const(char)* fmt, va_list args);
void igTextDisabled (const(char)* fmt, ...);
void igTextDisabledV (const(char)* fmt, va_list args);
void igTextWrapped (const(char)* fmt, ...);
void igTextWrappedV (const(char)* fmt, va_list args);
void igLabelText (const(char)* label, const(char)* fmt, ...);
void igLabelTextV (const(char)* label, const(char)* fmt, va_list args);
void igBulletText (const(char)* fmt, ...);
void igBulletTextV (const(char)* fmt, va_list args);
bool igButton (const(char)* label, const ImVec2 size);
bool igSmallButton (const(char)* label);
bool igInvisibleButton (const(char)* str_id, const ImVec2 size);
bool igArrowButton (const(char)* str_id, ImGuiDir dir);
void igImage (ImTextureID user_texture_id, const ImVec2 size, const ImVec2 uv0, const ImVec2 uv1, const ImVec4 tint_col, const ImVec4 border_col);
bool igImageButton (ImTextureID user_texture_id, const ImVec2 size, const ImVec2 uv0, const ImVec2 uv1, int frame_padding, const ImVec4 bg_col, const ImVec4 tint_col);
bool igCheckbox (const(char)* label, bool* v);
bool igCheckboxFlags (const(char)* label, uint* flags, uint flags_value);
bool igRadioButtonBool (const(char)* label, bool active);
bool igRadioButtonIntPtr (const(char)* label, int* v, int v_button);
void igProgressBar (float fraction, const ImVec2 size_arg, const(char)* overlay);
void igBullet ();
bool igBeginCombo (const(char)* label, const(char)* preview_value, ImGuiComboFlags flags);
void igEndCombo ();
bool igCombo (const(char)* label, int* current_item, const(char*)* items, int items_count, int popup_max_height_in_items);
bool igComboStr (const(char)* label, int* current_item, const(char)* items_separated_by_zeros, int popup_max_height_in_items);
bool igComboFnPtr (const(char)* label, int* current_item, bool function (void* data, int idx, const(char*)* out_text) items_getter, void* data, int items_count, int popup_max_height_in_items);
bool igDragFloat (const(char)* label, float* v, float v_speed, float v_min, float v_max, const(char)* format, float power);
bool igDragFloat2 (const(char)* label, ref float[2] v, float v_speed, float v_min, float v_max, const(char)* format, float power);
bool igDragFloat3 (const(char)* label, ref float[3] v, float v_speed, float v_min, float v_max, const(char)* format, float power);
bool igDragFloat4 (const(char)* label, ref float[4] v, float v_speed, float v_min, float v_max, const(char)* format, float power);
bool igDragFloatRange2 (const(char)* label, float* v_current_min, float* v_current_max, float v_speed, float v_min, float v_max, const(char)* format, const(char)* format_max, float power);
bool igDragInt (const(char)* label, int* v, float v_speed, int v_min, int v_max, const(char)* format);
bool igDragInt2 (const(char)* label, ref int[2] v, float v_speed, int v_min, int v_max, const(char)* format);
bool igDragInt3 (const(char)* label, ref int[3] v, float v_speed, int v_min, int v_max, const(char)* format);
bool igDragInt4 (const(char)* label, ref int[4] v, float v_speed, int v_min, int v_max, const(char)* format);
bool igDragIntRange2 (const(char)* label, int* v_current_min, int* v_current_max, float v_speed, int v_min, int v_max, const(char)* format, const(char)* format_max);
bool igDragScalar (const(char)* label, ImGuiDataType data_type, void* v, float v_speed, const(void)* v_min, const(void)* v_max, const(char)* format, float power);
bool igDragScalarN (const(char)* label, ImGuiDataType data_type, void* v, int components, float v_speed, const(void)* v_min, const(void)* v_max, const(char)* format, float power);
bool igSliderFloat (const(char)* label, float* v, float v_min, float v_max, const(char)* format, float power);
bool igSliderFloat2 (const(char)* label, ref float[2] v, float v_min, float v_max, const(char)* format, float power);
bool igSliderFloat3 (const(char)* label, ref float[3] v, float v_min, float v_max, const(char)* format, float power);
bool igSliderFloat4 (const(char)* label, ref float[4] v, float v_min, float v_max, const(char)* format, float power);
bool igSliderAngle (const(char)* label, float* v_rad, float v_degrees_min, float v_degrees_max, const(char)* format);
bool igSliderInt (const(char)* label, int* v, int v_min, int v_max, const(char)* format);
bool igSliderInt2 (const(char)* label, ref int[2] v, int v_min, int v_max, const(char)* format);
bool igSliderInt3 (const(char)* label, ref int[3] v, int v_min, int v_max, const(char)* format);
bool igSliderInt4 (const(char)* label, ref int[4] v, int v_min, int v_max, const(char)* format);
bool igSliderScalar (const(char)* label, ImGuiDataType data_type, void* v, const(void)* v_min, const(void)* v_max, const(char)* format, float power);
bool igSliderScalarN (const(char)* label, ImGuiDataType data_type, void* v, int components, const(void)* v_min, const(void)* v_max, const(char)* format, float power);
bool igVSliderFloat (const(char)* label, const ImVec2 size, float* v, float v_min, float v_max, const(char)* format, float power);
bool igVSliderInt (const(char)* label, const ImVec2 size, int* v, int v_min, int v_max, const(char)* format);
bool igVSliderScalar (const(char)* label, const ImVec2 size, ImGuiDataType data_type, void* v, const(void)* v_min, const(void)* v_max, const(char)* format, float power);
bool igInputText (const(char)* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback, void* user_data);
bool igInputTextMultiline (const(char)* label, char* buf, size_t buf_size, const ImVec2 size, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback, void* user_data);
bool igInputTextWithHint (const(char)* label, const(char)* hint, char* buf, size_t buf_size, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback, void* user_data);
bool igInputFloat (const(char)* label, float* v, float step, float step_fast, const(char)* format, ImGuiInputTextFlags flags);
bool igInputFloat2 (const(char)* label, ref float[2] v, const(char)* format, ImGuiInputTextFlags flags);
bool igInputFloat3 (const(char)* label, ref float[3] v, const(char)* format, ImGuiInputTextFlags flags);
bool igInputFloat4 (const(char)* label, ref float[4] v, const(char)* format, ImGuiInputTextFlags flags);
bool igInputInt (const(char)* label, int* v, int step, int step_fast, ImGuiInputTextFlags flags);
bool igInputInt2 (const(char)* label, ref int[2] v, ImGuiInputTextFlags flags);
bool igInputInt3 (const(char)* label, ref int[3] v, ImGuiInputTextFlags flags);
bool igInputInt4 (const(char)* label, ref int[4] v, ImGuiInputTextFlags flags);
bool igInputDouble (const(char)* label, double* v, double step, double step_fast, const(char)* format, ImGuiInputTextFlags flags);
bool igInputScalar (const(char)* label, ImGuiDataType data_type, void* v, const(void)* step, const(void)* step_fast, const(char)* format, ImGuiInputTextFlags flags);
bool igInputScalarN (const(char)* label, ImGuiDataType data_type, void* v, int components, const(void)* step, const(void)* step_fast, const(char)* format, ImGuiInputTextFlags flags);
bool igColorEdit3 (const(char)* label, ref float[3] col, ImGuiColorEditFlags flags);
bool igColorEdit4 (const(char)* label, ref float[4] col, ImGuiColorEditFlags flags);
bool igColorPicker3 (const(char)* label, ref float[3] col, ImGuiColorEditFlags flags);
bool igColorPicker4 (const(char)* label, ref float[4] col, ImGuiColorEditFlags flags, const(float)* ref_col);
bool igColorButton (const(char)* desc_id, const ImVec4 col, ImGuiColorEditFlags flags, ImVec2 size);
void igSetColorEditOptions (ImGuiColorEditFlags flags);
bool igTreeNodeStr (const(char)* label);
bool igTreeNodeStrStr (const(char)* str_id, const(char)* fmt, ...);
bool igTreeNodePtr (const(void)* ptr_id, const(char)* fmt, ...);
bool igTreeNodeVStr (const(char)* str_id, const(char)* fmt, va_list args);
bool igTreeNodeVPtr (const(void)* ptr_id, const(char)* fmt, va_list args);
bool igTreeNodeExStr (const(char)* label, ImGuiTreeNodeFlags flags);
bool igTreeNodeExStrStr (const(char)* str_id, ImGuiTreeNodeFlags flags, const(char)* fmt, ...);
bool igTreeNodeExPtr (const(void)* ptr_id, ImGuiTreeNodeFlags flags, const(char)* fmt, ...);
bool igTreeNodeExVStr (const(char)* str_id, ImGuiTreeNodeFlags flags, const(char)* fmt, va_list args);
bool igTreeNodeExVPtr (const(void)* ptr_id, ImGuiTreeNodeFlags flags, const(char)* fmt, va_list args);
void igTreePushStr (const(char)* str_id);
void igTreePushPtr (const(void)* ptr_id);
void igTreePop ();
float igGetTreeNodeToLabelSpacing ();
bool igCollapsingHeader (const(char)* label, ImGuiTreeNodeFlags flags);
bool igCollapsingHeaderBoolPtr (const(char)* label, bool* p_open, ImGuiTreeNodeFlags flags);
void igSetNextItemOpen (bool is_open, ImGuiCond cond);
bool igSelectable (const(char)* label, bool selected, ImGuiSelectableFlags flags, const ImVec2 size);
bool igSelectableBoolPtr (const(char)* label, bool* p_selected, ImGuiSelectableFlags flags, const ImVec2 size);
bool igListBoxStr_arr (const(char)* label, int* current_item, const(char*)* items, int items_count, int height_in_items);
bool igListBoxFnPtr (const(char)* label, int* current_item, bool function (void* data, int idx, const(char*)* out_text) items_getter, void* data, int items_count, int height_in_items);
bool igListBoxHeaderVec2 (const(char)* label, const ImVec2 size);
bool igListBoxHeaderInt (const(char)* label, int items_count, int height_in_items);
void igListBoxFooter ();
void igPlotLines (const(char)* label, const(float)* values, int values_count, int values_offset, const(char)* overlay_text, float scale_min, float scale_max, ImVec2 graph_size, int stride);
void igPlotLinesFnPtr (const(char)* label, float function (void* data, int idx) values_getter, void* data, int values_count, int values_offset, const(char)* overlay_text, float scale_min, float scale_max, ImVec2 graph_size);
void igPlotHistogramFloatPtr (const(char)* label, const(float)* values, int values_count, int values_offset, const(char)* overlay_text, float scale_min, float scale_max, ImVec2 graph_size, int stride);
void igPlotHistogramFnPtr (const(char)* label, float function (void* data, int idx) values_getter, void* data, int values_count, int values_offset, const(char)* overlay_text, float scale_min, float scale_max, ImVec2 graph_size);
void igValueBool (const(char)* prefix, bool b);
void igValueInt (const(char)* prefix, int v);
void igValueUint (const(char)* prefix, uint v);
void igValueFloat (const(char)* prefix, float v, const(char)* float_format);
bool igBeginMainMenuBar ();
void igEndMainMenuBar ();
bool igBeginMenuBar ();
void igEndMenuBar ();
bool igBeginMenu (const(char)* label, bool enabled);
void igEndMenu ();
bool igMenuItemBool (const(char)* label, const(char)* shortcut, bool selected, bool enabled);
bool igMenuItemBoolPtr (const(char)* label, const(char)* shortcut, bool* p_selected, bool enabled);
void igBeginTooltip ();
void igEndTooltip ();
void igSetTooltip (const(char)* fmt, ...);
void igSetTooltipV (const(char)* fmt, va_list args);
void igOpenPopup (const(char)* str_id);
bool igBeginPopup (const(char)* str_id, ImGuiWindowFlags flags);
bool igBeginPopupContextItem (const(char)* str_id, int mouse_button);
bool igBeginPopupContextWindow (const(char)* str_id, int mouse_button, bool also_over_items);
bool igBeginPopupContextVoid (const(char)* str_id, int mouse_button);
bool igBeginPopupModal (const(char)* name, bool* p_open, ImGuiWindowFlags flags);
void igEndPopup ();
bool igOpenPopupOnItemClick (const(char)* str_id, int mouse_button);
bool igIsPopupOpen (const(char)* str_id);
void igCloseCurrentPopup ();
void igColumns (int count, const(char)* id, bool border);
void igNextColumn ();
int igGetColumnIndex ();
float igGetColumnWidth (int column_index);
void igSetColumnWidth (int column_index, float width);
float igGetColumnOffset (int column_index);
void igSetColumnOffset (int column_index, float offset_x);
int igGetColumnsCount ();
bool igBeginTabBar (const(char)* str_id, ImGuiTabBarFlags flags);
void igEndTabBar ();
bool igBeginTabItem (const(char)* label, bool* p_open, ImGuiTabItemFlags flags);
void igEndTabItem ();
void igSetTabItemClosed (const(char)* tab_or_docked_window_label);
void igLogToTTY (int auto_open_depth);
void igLogToFile (int auto_open_depth, const(char)* filename);
void igLogToClipboard (int auto_open_depth);
void igLogFinish ();
void igLogButtons ();
bool igBeginDragDropSource (ImGuiDragDropFlags flags);
bool igSetDragDropPayload (const(char)* type, const(void)* data, size_t sz, ImGuiCond cond);
void igEndDragDropSource ();
bool igBeginDragDropTarget ();
const(ImGuiPayload)* igAcceptDragDropPayload (const(char)* type, ImGuiDragDropFlags flags);
void igEndDragDropTarget ();
const(ImGuiPayload)* igGetDragDropPayload ();
void igPushClipRect (const ImVec2 clip_rect_min, const ImVec2 clip_rect_max, bool intersect_with_current_clip_rect);
void igPopClipRect ();
void igSetItemDefaultFocus ();
void igSetKeyboardFocusHere (int offset);
bool igIsItemHovered (ImGuiHoveredFlags flags);
bool igIsItemActive ();
bool igIsItemFocused ();
bool igIsItemClicked (int mouse_button);
bool igIsItemVisible ();
bool igIsItemEdited ();
bool igIsItemActivated ();
bool igIsItemDeactivated ();
bool igIsItemDeactivatedAfterEdit ();
bool igIsAnyItemHovered ();
bool igIsAnyItemActive ();
bool igIsAnyItemFocused ();
ImVec2 igGetItemRectMin ();
ImVec2 igGetItemRectMax ();
ImVec2 igGetItemRectSize ();
void igSetItemAllowOverlap ();
bool igIsRectVisible (const ImVec2 size);
bool igIsRectVisibleVec2 (const ImVec2 rect_min, const ImVec2 rect_max);
double igGetTime ();
int igGetFrameCount ();
ImDrawList* igGetBackgroundDrawList ();
ImDrawList* igGetForegroundDrawList ();
ImDrawListSharedData* igGetDrawListSharedData ();
const(char)* igGetStyleColorName (ImGuiCol idx);
void igSetStateStorage (ImGuiStorage* storage);
ImGuiStorage* igGetStateStorage ();
ImVec2 igCalcTextSize (const(char)* text, const(char)* text_end, bool hide_text_after_double_hash, float wrap_width);
void igCalcListClipping (int items_count, float items_height, int* out_items_display_start, int* out_items_display_end);
bool igBeginChildFrame (ImGuiID id, const ImVec2 size, ImGuiWindowFlags flags);
void igEndChildFrame ();
ImVec4 igColorConvertU32ToFloat4 (ImU32 in_);
ImU32 igColorConvertFloat4ToU32 (const ImVec4 in_);
int igGetKeyIndex (ImGuiKey imgui_key);
bool igIsKeyDown (int user_key_index);
bool igIsKeyPressed (int user_key_index, bool repeat);
bool igIsKeyReleased (int user_key_index);
int igGetKeyPressedAmount (int key_index, float repeat_delay, float rate);
bool igIsMouseDown (int button);
bool igIsAnyMouseDown ();
bool igIsMouseClicked (int button, bool repeat);
bool igIsMouseDoubleClicked (int button);
bool igIsMouseReleased (int button);
bool igIsMouseDragging (int button, float lock_threshold);
bool igIsMouseHoveringRect (const ImVec2 r_min, const ImVec2 r_max, bool clip);
bool igIsMousePosValid (const(ImVec2)* mouse_pos);
ImVec2 igGetMousePos ();
ImVec2 igGetMousePosOnOpeningCurrentPopup ();
ImVec2 igGetMouseDragDelta (int button, float lock_threshold);
void igResetMouseDragDelta (int button);
ImGuiMouseCursor igGetMouseCursor ();
void igSetMouseCursor (ImGuiMouseCursor type);
void igCaptureKeyboardFromApp (bool want_capture_keyboard_value);
void igCaptureMouseFromApp (bool want_capture_mouse_value);
const(char)* igGetClipboardText ();
void igSetClipboardText (const(char)* text);
void igLoadIniSettingsFromDisk (const(char)* ini_filename);
void igLoadIniSettingsFromMemory (const(char)* ini_data, size_t ini_size);
void igSaveIniSettingsToDisk (const(char)* ini_filename);
const(char)* igSaveIniSettingsToMemory (size_t* out_ini_size);
void igSetAllocatorFunctions (void* function (size_t sz, void* user_data) alloc_func, void function (void* ptr, void* user_data) free_func, void* user_data);
void* igMemAlloc (size_t size);
void igMemFree (void* ptr);
ImGuiStyle* ImGuiStyle_ImGuiStyle ();
void ImGuiStyle_destroy (ImGuiStyle* self);
void ImGuiStyle_ScaleAllSizes (ImGuiStyle* self, float scale_factor);
void ImGuiIO_AddInputCharacter (ImGuiIO* self, uint c);
void ImGuiIO_AddInputCharactersUTF8 (ImGuiIO* self, const(char)* str);
void ImGuiIO_ClearInputCharacters (ImGuiIO* self);
ImGuiIO* ImGuiIO_ImGuiIO ();
void ImGuiIO_destroy (ImGuiIO* self);
ImGuiInputTextCallbackData* ImGuiInputTextCallbackData_ImGuiInputTextCallbackData ();
void ImGuiInputTextCallbackData_destroy (ImGuiInputTextCallbackData* self);
void ImGuiInputTextCallbackData_DeleteChars (ImGuiInputTextCallbackData* self, int pos, int bytes_count);
void ImGuiInputTextCallbackData_InsertChars (ImGuiInputTextCallbackData* self, int pos, const(char)* text, const(char)* text_end);
bool ImGuiInputTextCallbackData_HasSelection (ImGuiInputTextCallbackData* self);
ImGuiPayload* ImGuiPayload_ImGuiPayload ();
void ImGuiPayload_destroy (ImGuiPayload* self);
void ImGuiPayload_Clear (ImGuiPayload* self);
bool ImGuiPayload_IsDataType (ImGuiPayload* self, const(char)* type);
bool ImGuiPayload_IsPreview (ImGuiPayload* self);
bool ImGuiPayload_IsDelivery (ImGuiPayload* self);
ImGuiOnceUponAFrame* ImGuiOnceUponAFrame_ImGuiOnceUponAFrame ();
void ImGuiOnceUponAFrame_destroy (ImGuiOnceUponAFrame* self);
ImGuiTextFilter* ImGuiTextFilter_ImGuiTextFilter (const(char)* default_filter);
void ImGuiTextFilter_destroy (ImGuiTextFilter* self);
bool ImGuiTextFilter_Draw (ImGuiTextFilter* self, const(char)* label, float width);
bool ImGuiTextFilter_PassFilter (ImGuiTextFilter* self, const(char)* text, const(char)* text_end);
void ImGuiTextFilter_Build (ImGuiTextFilter* self);
void ImGuiTextFilter_Clear (ImGuiTextFilter* self);
bool ImGuiTextFilter_IsActive (ImGuiTextFilter* self);
ImGuiTextRange* ImGuiTextRange_ImGuiTextRange ();
void ImGuiTextRange_destroy (ImGuiTextRange* self);
ImGuiTextRange* ImGuiTextRange_ImGuiTextRangeStr (const(char)* _b, const(char)* _e);
bool ImGuiTextRange_empty (ImGuiTextRange* self);
void ImGuiTextRange_split (ImGuiTextRange* self, char separator, ImVector_ImGuiTextRange* out_);
ImGuiTextBuffer* ImGuiTextBuffer_ImGuiTextBuffer ();
void ImGuiTextBuffer_destroy (ImGuiTextBuffer* self);
const(char)* ImGuiTextBuffer_begin (ImGuiTextBuffer* self);
const(char)* ImGuiTextBuffer_end (ImGuiTextBuffer* self);
int ImGuiTextBuffer_size (ImGuiTextBuffer* self);
bool ImGuiTextBuffer_empty (ImGuiTextBuffer* self);
void ImGuiTextBuffer_clear (ImGuiTextBuffer* self);
void ImGuiTextBuffer_reserve (ImGuiTextBuffer* self, int capacity);
const(char)* ImGuiTextBuffer_c_str (ImGuiTextBuffer* self);
void ImGuiTextBuffer_append (ImGuiTextBuffer* self, const(char)* str, const(char)* str_end);
void ImGuiTextBuffer_appendfv (ImGuiTextBuffer* self, const(char)* fmt, va_list args);
ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairInt (ImGuiID _key, int _val_i);
void ImGuiStoragePair_destroy (ImGuiStoragePair* self);
ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairFloat (ImGuiID _key, float _val_f);
ImGuiStoragePair* ImGuiStoragePair_ImGuiStoragePairPtr (ImGuiID _key, void* _val_p);
void ImGuiStorage_Clear (ImGuiStorage* self);
int ImGuiStorage_GetInt (ImGuiStorage* self, ImGuiID key, int default_val);
void ImGuiStorage_SetInt (ImGuiStorage* self, ImGuiID key, int val);
bool ImGuiStorage_GetBool (ImGuiStorage* self, ImGuiID key, bool default_val);
void ImGuiStorage_SetBool (ImGuiStorage* self, ImGuiID key, bool val);
float ImGuiStorage_GetFloat (ImGuiStorage* self, ImGuiID key, float default_val);
void ImGuiStorage_SetFloat (ImGuiStorage* self, ImGuiID key, float val);
void* ImGuiStorage_GetVoidPtr (ImGuiStorage* self, ImGuiID key);
void ImGuiStorage_SetVoidPtr (ImGuiStorage* self, ImGuiID key, void* val);
int* ImGuiStorage_GetIntRef (ImGuiStorage* self, ImGuiID key, int default_val);
bool* ImGuiStorage_GetBoolRef (ImGuiStorage* self, ImGuiID key, bool default_val);
float* ImGuiStorage_GetFloatRef (ImGuiStorage* self, ImGuiID key, float default_val);
void** ImGuiStorage_GetVoidPtrRef (ImGuiStorage* self, ImGuiID key, void* default_val);
void ImGuiStorage_SetAllInt (ImGuiStorage* self, int val);
void ImGuiStorage_BuildSortByKey (ImGuiStorage* self);
ImGuiListClipper* ImGuiListClipper_ImGuiListClipper (int items_count, float items_height);
void ImGuiListClipper_destroy (ImGuiListClipper* self);
bool ImGuiListClipper_Step (ImGuiListClipper* self);
void ImGuiListClipper_Begin (ImGuiListClipper* self, int items_count, float items_height);
void ImGuiListClipper_End (ImGuiListClipper* self);
ImColor* ImColor_ImColor ();
void ImColor_destroy (ImColor* self);
ImColor* ImColor_ImColorInt (int r, int g, int b, int a);
ImColor* ImColor_ImColorU32 (ImU32 rgba);
ImColor* ImColor_ImColorFloat (float r, float g, float b, float a);
ImColor* ImColor_ImColorVec4 (const ImVec4 col);
void ImColor_SetHSV (ImColor* self, float h, float s, float v, float a);
ImColor ImColor_HSV (ImColor* self, float h, float s, float v, float a);
ImDrawCmd* ImDrawCmd_ImDrawCmd ();
void ImDrawCmd_destroy (ImDrawCmd* self);
ImDrawListSplitter* ImDrawListSplitter_ImDrawListSplitter ();
void ImDrawListSplitter_destroy (ImDrawListSplitter* self);
void ImDrawListSplitter_Clear (ImDrawListSplitter* self);
void ImDrawListSplitter_ClearFreeMemory (ImDrawListSplitter* self);
void ImDrawListSplitter_Split (ImDrawListSplitter* self, ImDrawList* draw_list, int count);
void ImDrawListSplitter_Merge (ImDrawListSplitter* self, ImDrawList* draw_list);
void ImDrawListSplitter_SetCurrentChannel (ImDrawListSplitter* self, ImDrawList* draw_list, int channel_idx);
ImDrawList* ImDrawList_ImDrawList (const(ImDrawListSharedData)* shared_data);
void ImDrawList_destroy (ImDrawList* self);
void ImDrawList_PushClipRect (ImDrawList* self, ImVec2 clip_rect_min, ImVec2 clip_rect_max, bool intersect_with_current_clip_rect);
void ImDrawList_PushClipRectFullScreen (ImDrawList* self);
void ImDrawList_PopClipRect (ImDrawList* self);
void ImDrawList_PushTextureID (ImDrawList* self, ImTextureID texture_id);
void ImDrawList_PopTextureID (ImDrawList* self);
ImVec2 ImDrawList_GetClipRectMin (ImDrawList* self);
ImVec2 ImDrawList_GetClipRectMax (ImDrawList* self);
void ImDrawList_AddLine (ImDrawList* self, const ImVec2 p1, const ImVec2 p2, ImU32 col, float thickness);
void ImDrawList_AddRect (ImDrawList* self, const ImVec2 p_min, const ImVec2 p_max, ImU32 col, float rounding, ImDrawCornerFlags rounding_corners, float thickness);
void ImDrawList_AddRectFilled (ImDrawList* self, const ImVec2 p_min, const ImVec2 p_max, ImU32 col, float rounding, ImDrawCornerFlags rounding_corners);
void ImDrawList_AddRectFilledMultiColor (ImDrawList* self, const ImVec2 p_min, const ImVec2 p_max, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left);
void ImDrawList_AddQuad (ImDrawList* self, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, const ImVec2 p4, ImU32 col, float thickness);
void ImDrawList_AddQuadFilled (ImDrawList* self, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, const ImVec2 p4, ImU32 col);
void ImDrawList_AddTriangle (ImDrawList* self, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, ImU32 col, float thickness);
void ImDrawList_AddTriangleFilled (ImDrawList* self, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, ImU32 col);
void ImDrawList_AddCircle (ImDrawList* self, const ImVec2 center, float radius, ImU32 col, int num_segments, float thickness);
void ImDrawList_AddCircleFilled (ImDrawList* self, const ImVec2 center, float radius, ImU32 col, int num_segments);
void ImDrawList_AddText (ImDrawList* self, const ImVec2 pos, ImU32 col, const(char)* text_begin, const(char)* text_end);
void ImDrawList_AddTextFontPtr (ImDrawList* self, const(ImFont)* font, float font_size, const ImVec2 pos, ImU32 col, const(char)* text_begin, const(char)* text_end, float wrap_width, const(ImVec4)* cpu_fine_clip_rect);
void ImDrawList_AddPolyline (ImDrawList* self, const(ImVec2)* points, int num_points, ImU32 col, bool closed, float thickness);
void ImDrawList_AddConvexPolyFilled (ImDrawList* self, const(ImVec2)* points, int num_points, ImU32 col);
void ImDrawList_AddBezierCurve (ImDrawList* self, const ImVec2 pos0, const ImVec2 cp0, const ImVec2 cp1, const ImVec2 pos1, ImU32 col, float thickness, int num_segments);
void ImDrawList_AddImage (ImDrawList* self, ImTextureID user_texture_id, const ImVec2 p_min, const ImVec2 p_max, const ImVec2 uv_min, const ImVec2 uv_max, ImU32 col);
void ImDrawList_AddImageQuad (ImDrawList* self, ImTextureID user_texture_id, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, const ImVec2 p4, const ImVec2 uv1, const ImVec2 uv2, const ImVec2 uv3, const ImVec2 uv4, ImU32 col);
void ImDrawList_AddImageRounded (ImDrawList* self, ImTextureID user_texture_id, const ImVec2 p_min, const ImVec2 p_max, const ImVec2 uv_min, const ImVec2 uv_max, ImU32 col, float rounding, ImDrawCornerFlags rounding_corners);
void ImDrawList_PathClear (ImDrawList* self);
void ImDrawList_PathLineTo (ImDrawList* self, const ImVec2 pos);
void ImDrawList_PathLineToMergeDuplicate (ImDrawList* self, const ImVec2 pos);
void ImDrawList_PathFillConvex (ImDrawList* self, ImU32 col);
void ImDrawList_PathStroke (ImDrawList* self, ImU32 col, bool closed, float thickness);
void ImDrawList_PathArcTo (ImDrawList* self, const ImVec2 center, float radius, float a_min, float a_max, int num_segments);
void ImDrawList_PathArcToFast (ImDrawList* self, const ImVec2 center, float radius, int a_min_of_12, int a_max_of_12);
void ImDrawList_PathBezierCurveTo (ImDrawList* self, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, int num_segments);
void ImDrawList_PathRect (ImDrawList* self, const ImVec2 rect_min, const ImVec2 rect_max, float rounding, ImDrawCornerFlags rounding_corners);
void ImDrawList_AddCallback (ImDrawList* self, ImDrawCallback callback, void* callback_data);
void ImDrawList_AddDrawCmd (ImDrawList* self);
ImDrawList* ImDrawList_CloneOutput (ImDrawList* self);
void ImDrawList_ChannelsSplit (ImDrawList* self, int count);
void ImDrawList_ChannelsMerge (ImDrawList* self);
void ImDrawList_ChannelsSetCurrent (ImDrawList* self, int n);
void ImDrawList_Clear (ImDrawList* self);
void ImDrawList_ClearFreeMemory (ImDrawList* self);
void ImDrawList_PrimReserve (ImDrawList* self, int idx_count, int vtx_count);
void ImDrawList_PrimRect (ImDrawList* self, const ImVec2 a, const ImVec2 b, ImU32 col);
void ImDrawList_PrimRectUV (ImDrawList* self, const ImVec2 a, const ImVec2 b, const ImVec2 uv_a, const ImVec2 uv_b, ImU32 col);
void ImDrawList_PrimQuadUV (ImDrawList* self, const ImVec2 a, const ImVec2 b, const ImVec2 c, const ImVec2 d, const ImVec2 uv_a, const ImVec2 uv_b, const ImVec2 uv_c, const ImVec2 uv_d, ImU32 col);
void ImDrawList_PrimWriteVtx (ImDrawList* self, const ImVec2 pos, const ImVec2 uv, ImU32 col);
void ImDrawList_PrimWriteIdx (ImDrawList* self, ImDrawIdx idx);
void ImDrawList_PrimVtx (ImDrawList* self, const ImVec2 pos, const ImVec2 uv, ImU32 col);
void ImDrawList_UpdateClipRect (ImDrawList* self);
void ImDrawList_UpdateTextureID (ImDrawList* self);
ImDrawData* ImDrawData_ImDrawData ();
void ImDrawData_destroy (ImDrawData* self);
void ImDrawData_Clear (ImDrawData* self);
void ImDrawData_DeIndexAllBuffers (ImDrawData* self);
void ImDrawData_ScaleClipRects (ImDrawData* self, const ImVec2 fb_scale);
ImFontConfig* ImFontConfig_ImFontConfig ();
void ImFontConfig_destroy (ImFontConfig* self);
ImFontGlyphRangesBuilder* ImFontGlyphRangesBuilder_ImFontGlyphRangesBuilder ();
void ImFontGlyphRangesBuilder_destroy (ImFontGlyphRangesBuilder* self);
void ImFontGlyphRangesBuilder_Clear (ImFontGlyphRangesBuilder* self);
bool ImFontGlyphRangesBuilder_GetBit (ImFontGlyphRangesBuilder* self, int n);
void ImFontGlyphRangesBuilder_SetBit (ImFontGlyphRangesBuilder* self, int n);
void ImFontGlyphRangesBuilder_AddChar (ImFontGlyphRangesBuilder* self, ImWchar c);
void ImFontGlyphRangesBuilder_AddText (ImFontGlyphRangesBuilder* self, const(char)* text, const(char)* text_end);
void ImFontGlyphRangesBuilder_AddRanges (ImFontGlyphRangesBuilder* self, const(ImWchar)* ranges);
void ImFontGlyphRangesBuilder_BuildRanges (ImFontGlyphRangesBuilder* self, ImVector_ImWchar* out_ranges);
ImFontAtlasCustomRect* ImFontAtlasCustomRect_ImFontAtlasCustomRect ();
void ImFontAtlasCustomRect_destroy (ImFontAtlasCustomRect* self);
bool ImFontAtlasCustomRect_IsPacked (ImFontAtlasCustomRect* self);
ImFontAtlas* ImFontAtlas_ImFontAtlas ();
void ImFontAtlas_destroy (ImFontAtlas* self);
ImFont* ImFontAtlas_AddFont (ImFontAtlas* self, const(ImFontConfig)* font_cfg);
ImFont* ImFontAtlas_AddFontDefault (ImFontAtlas* self, const(ImFontConfig)* font_cfg);
ImFont* ImFontAtlas_AddFontFromFileTTF (ImFontAtlas* self, const(char)* filename, float size_pixels, const(ImFontConfig)* font_cfg, const(ImWchar)* glyph_ranges);
ImFont* ImFontAtlas_AddFontFromMemoryTTF (ImFontAtlas* self, void* font_data, int font_size, float size_pixels, const(ImFontConfig)* font_cfg, const(ImWchar)* glyph_ranges);
ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF (ImFontAtlas* self, const(void)* compressed_font_data, int compressed_font_size, float size_pixels, const(ImFontConfig)* font_cfg, const(ImWchar)* glyph_ranges);
ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF (ImFontAtlas* self, const(char)* compressed_font_data_base85, float size_pixels, const(ImFontConfig)* font_cfg, const(ImWchar)* glyph_ranges);
void ImFontAtlas_ClearInputData (ImFontAtlas* self);
void ImFontAtlas_ClearTexData (ImFontAtlas* self);
void ImFontAtlas_ClearFonts (ImFontAtlas* self);
void ImFontAtlas_Clear (ImFontAtlas* self);
bool ImFontAtlas_Build (ImFontAtlas* self);
void ImFontAtlas_GetTexDataAsAlpha8 (ImFontAtlas* self, ubyte** out_pixels, int* out_width, int* out_height, int* out_bytes_per_pixel);
void ImFontAtlas_GetTexDataAsRGBA32 (ImFontAtlas* self, ubyte** out_pixels, int* out_width, int* out_height, int* out_bytes_per_pixel);
bool ImFontAtlas_IsBuilt (ImFontAtlas* self);
void ImFontAtlas_SetTexID (ImFontAtlas* self, ImTextureID id);
const(ImWchar)* ImFontAtlas_GetGlyphRangesDefault (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesKorean (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesJapanese (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesChineseFull (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesCyrillic (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesThai (ImFontAtlas* self);
const(ImWchar)* ImFontAtlas_GetGlyphRangesVietnamese (ImFontAtlas* self);
int ImFontAtlas_AddCustomRectRegular (ImFontAtlas* self, uint id, int width, int height);
int ImFontAtlas_AddCustomRectFontGlyph (ImFontAtlas* self, ImFont* font, ImWchar id, int width, int height, float advance_x, const ImVec2 offset);
const(ImFontAtlasCustomRect)* ImFontAtlas_GetCustomRectByIndex (ImFontAtlas* self, int index);
void ImFontAtlas_CalcCustomRectUV (ImFontAtlas* self, const(ImFontAtlasCustomRect)* rect, ImVec2* out_uv_min, ImVec2* out_uv_max);
bool ImFontAtlas_GetMouseCursorTexData (ImFontAtlas* self, ImGuiMouseCursor cursor, ImVec2* out_offset, ImVec2* out_size, ref ImVec2[2] out_uv_border, ref ImVec2[2] out_uv_fill);
ImFont* ImFont_ImFont ();
void ImFont_destroy (ImFont* self);
const(ImFontGlyph)* ImFont_FindGlyph (ImFont* self, ImWchar c);
const(ImFontGlyph)* ImFont_FindGlyphNoFallback (ImFont* self, ImWchar c);
float ImFont_GetCharAdvance (ImFont* self, ImWchar c);
bool ImFont_IsLoaded (ImFont* self);
const(char)* ImFont_GetDebugName (ImFont* self);
ImVec2 ImFont_CalcTextSizeA (ImFont* self, float size, float max_width, float wrap_width, const(char)* text_begin, const(char)* text_end, const(char*)* remaining);
const(char)* ImFont_CalcWordWrapPositionA (ImFont* self, float scale, const(char)* text, const(char)* text_end, float wrap_width);
void ImFont_RenderChar (ImFont* self, ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, ImWchar c);
void ImFont_RenderText (ImFont* self, ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, const ImVec4 clip_rect, const(char)* text_begin, const(char)* text_end, float wrap_width, bool cpu_fine_clip);
void ImFont_BuildLookupTable (ImFont* self);
void ImFont_ClearOutputData (ImFont* self);
void ImFont_GrowIndex (ImFont* self, int new_size);
void ImFont_AddGlyph (ImFont* self, ImWchar c, float x0, float y0, float x1, float y1, float u0, float v0, float u1, float v1, float advance_x);
void ImFont_AddRemapChar (ImFont* self, ImWchar dst, ImWchar src, bool overwrite_dst);
void ImFont_SetFallbackChar (ImFont* self, ImWchar c);
void igGetWindowPos_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetWindowPos_nonUDT2 ();
void igGetWindowSize_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetWindowSize_nonUDT2 ();
void igGetContentRegionMax_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetContentRegionMax_nonUDT2 ();
void igGetContentRegionAvail_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetContentRegionAvail_nonUDT2 ();
void igGetWindowContentRegionMin_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetWindowContentRegionMin_nonUDT2 ();
void igGetWindowContentRegionMax_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetWindowContentRegionMax_nonUDT2 ();
void igGetFontTexUvWhitePixel_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetFontTexUvWhitePixel_nonUDT2 ();
void igGetCursorPos_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetCursorPos_nonUDT2 ();
void igGetCursorStartPos_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetCursorStartPos_nonUDT2 ();
void igGetCursorScreenPos_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetCursorScreenPos_nonUDT2 ();
void igGetItemRectMin_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetItemRectMin_nonUDT2 ();
void igGetItemRectMax_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetItemRectMax_nonUDT2 ();
void igGetItemRectSize_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetItemRectSize_nonUDT2 ();
void igCalcTextSize_nonUDT (ImVec2* pOut, const(char)* text, const(char)* text_end, bool hide_text_after_double_hash, float wrap_width);
ImVec2_Simple igCalcTextSize_nonUDT2 (const(char)* text, const(char)* text_end, bool hide_text_after_double_hash, float wrap_width);
void igColorConvertU32ToFloat4_nonUDT (ImVec4* pOut, ImU32 in_);
ImVec4_Simple igColorConvertU32ToFloat4_nonUDT2 (ImU32 in_);
void igGetMousePos_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetMousePos_nonUDT2 ();
void igGetMousePosOnOpeningCurrentPopup_nonUDT (ImVec2* pOut);
ImVec2_Simple igGetMousePosOnOpeningCurrentPopup_nonUDT2 ();
void igGetMouseDragDelta_nonUDT (ImVec2* pOut, int button, float lock_threshold);
ImVec2_Simple igGetMouseDragDelta_nonUDT2 (int button, float lock_threshold);
void ImColor_HSV_nonUDT (ImColor* pOut, ImColor* self, float h, float s, float v, float a);
ImColor_Simple ImColor_HSV_nonUDT2 (ImColor* self, float h, float s, float v, float a);
void ImDrawList_GetClipRectMin_nonUDT (ImVec2* pOut, ImDrawList* self);
ImVec2_Simple ImDrawList_GetClipRectMin_nonUDT2 (ImDrawList* self);
void ImDrawList_GetClipRectMax_nonUDT (ImVec2* pOut, ImDrawList* self);
ImVec2_Simple ImDrawList_GetClipRectMax_nonUDT2 (ImDrawList* self);
void ImFont_CalcTextSizeA_nonUDT (ImVec2* pOut, ImFont* self, float size, float max_width, float wrap_width, const(char)* text_begin, const(char)* text_end, const(char*)* remaining);
ImVec2_Simple ImFont_CalcTextSizeA_nonUDT2 (ImFont* self, float size, float max_width, float wrap_width, const(char)* text_begin, const(char)* text_end, const(char*)* remaining);

/////////////////////////hand written functions
//no LogTextV
void igLogText (const(char)* fmt, ...);
//no appendfV
void ImGuiTextBuffer_appendf (ImGuiTextBuffer* buffer, const(char)* fmt, ...);
//for getting FLT_MAX in bindings
float igGET_FLT_MAX ();
//not const args from & to *
void igColorConvertRGBtoHSV (float r, float g, float b, float* out_h, float* out_s, float* out_v);
void igColorConvertHSVtoRGB (float h, float s, float v, float* out_r, float* out_g, float* out_b);

ImVector_ImWchar* ImVector_ImWchar_create ();
void ImVector_ImWchar_destroy (ImVector_ImWchar* self);
void ImVector_ImWchar_Init (ImVector_ImWchar* p);
void ImVector_ImWchar_UnInit (ImVector_ImWchar* p);
//CIMGUI_INCLUDED
