imgui-odin/dcimgui.odin
2025-01-12 18:33:36 -05:00

2090 lines
80 KiB
Odin

package imgui
when ODIN_OS == .Windows {
foreign import imgui "lib/dcimgui.lib"
}
else when ODIN_OS == .Linux {
foreign import imgui "lib/linux/libdcimgui.a"
}
else when ODIN_OS == .Darwin {
foreign import imgui "lib/darwin/libdcimgui_arm64.a"
}
va_list :: struct #align(16) {
_: [4096]u8,
}
WindowFlags :: enum i32 {
None = 0,
NoTitleBar = 1,
NoResize = 2,
NoMove = 4,
NoScrollbar = 8,
NoScrollWithMouse = 16,
NoCollapse = 32,
AlwaysAutoResize = 64,
NoBackground = 128,
NoSavedSettings = 256,
NoMouseInputs = 512,
MenuBar = 1024,
HorizontalScrollbar = 2048,
NoFocusOnAppearing = 4096,
NoBringToFrontOnFocus = 8192,
AlwaysVerticalScrollbar = 16384,
AlwaysHorizontalScrollbar = 32768,
NoNavInputs = 65536,
NoNavFocus = 131072,
UnsavedDocument = 262144,
NoNav = 196608,
NoDecoration = 43,
NoInputs = 197120,
ChildWindow = 16777216,
Tooltip = 33554432,
Popup = 67108864,
Modal = 134217728,
ChildMenu = 268435456,
}
ChildFlags :: enum i32 {
None = 0,
Borders = 1,
AlwaysUseWindowPadding = 2,
ResizeX = 4,
ResizeY = 8,
AutoResizeX = 16,
AutoResizeY = 32,
AlwaysAutoResize = 64,
FrameStyle = 128,
NavFlattened = 256,
Border = 1,
}
ItemFlags :: enum i32 {
None = 0,
NoTabStop = 1,
NoNav = 2,
NoNavDefaultFocus = 4,
ButtonRepeat = 8,
AutoClosePopups = 16,
AllowDuplicateId = 32,
}
InputTextFlags :: enum i32 {
None = 0,
CharsDecimal = 1,
CharsHexadecimal = 2,
CharsScientific = 4,
CharsUppercase = 8,
CharsNoBlank = 16,
AllowTabInput = 32,
EnterReturnsTrue = 64,
EscapeClearsAll = 128,
CtrlEnterForNewLine = 256,
ReadOnly = 512,
Password = 1024,
AlwaysOverwrite = 2048,
AutoSelectAll = 4096,
ParseEmptyRefVal = 8192,
DisplayEmptyRefVal = 16384,
NoHorizontalScroll = 32768,
NoUndoRedo = 65536,
ElideLeft = 131072,
CallbackCompletion = 262144,
CallbackHistory = 524288,
CallbackAlways = 1048576,
CallbackCharFilter = 2097152,
CallbackResize = 4194304,
CallbackEdit = 8388608,
}
TreeNodeFlags :: enum i32 {
None = 0,
Selected = 1,
Framed = 2,
AllowOverlap = 4,
NoTreePushOnOpen = 8,
NoAutoOpenOnLog = 16,
DefaultOpen = 32,
OpenOnDoubleClick = 64,
OpenOnArrow = 128,
Leaf = 256,
Bullet = 512,
FramePadding = 1024,
SpanAvailWidth = 2048,
SpanFullWidth = 4096,
SpanTextWidth = 8192,
SpanAllColumns = 16384,
NavLeftJumpsBackHere = 32768,
CollapsingHeader = 26,
AllowItemOverlap = 4,
}
PopupFlags :: enum i32 {
None = 0,
MouseButtonLeft = 0,
MouseButtonRight = 1,
MouseButtonMiddle = 2,
MouseButtonMask_ = 31,
MouseButtonDefault_ = 1,
NoReopen = 32,
NoOpenOverExistingPopup = 128,
NoOpenOverItems = 256,
AnyPopupId = 1024,
AnyPopupLevel = 2048,
AnyPopup = 3072,
}
SelectableFlags :: enum i32 {
None = 0,
NoAutoClosePopups = 1,
SpanAllColumns = 2,
AllowDoubleClick = 4,
Disabled = 8,
AllowOverlap = 16,
Highlight = 32,
DontClosePopups = 1,
AllowItemOverlap = 16,
}
ComboFlags :: enum i32 {
None = 0,
PopupAlignLeft = 1,
HeightSmall = 2,
HeightRegular = 4,
HeightLarge = 8,
HeightLargest = 16,
NoArrowButton = 32,
NoPreview = 64,
WidthFitPreview = 128,
HeightMask_ = 30,
}
TabBarFlags :: enum i32 {
None = 0,
Reorderable = 1,
AutoSelectNewTabs = 2,
TabListPopupButton = 4,
NoCloseWithMiddleMouseButton = 8,
NoTabListScrollingButtons = 16,
NoTooltip = 32,
DrawSelectedOverline = 64,
FittingPolicyResizeDown = 128,
FittingPolicyScroll = 256,
FittingPolicyMask_ = 384,
FittingPolicyDefault_ = 128,
}
TabItemFlags :: enum i32 {
None = 0,
UnsavedDocument = 1,
SetSelected = 2,
NoCloseWithMiddleMouseButton = 4,
NoPushId = 8,
NoTooltip = 16,
NoReorder = 32,
Leading = 64,
Trailing = 128,
NoAssumedClosure = 256,
}
FocusedFlags :: enum i32 {
None = 0,
ChildWindows = 1,
RootWindow = 2,
AnyWindow = 4,
NoPopupHierarchy = 8,
RootAndChildWindows = 3,
}
HoveredFlags :: enum i32 {
None = 0,
ChildWindows = 1,
RootWindow = 2,
AnyWindow = 4,
NoPopupHierarchy = 8,
AllowWhenBlockedByPopup = 32,
AllowWhenBlockedByActiveItem = 128,
AllowWhenOverlappedByItem = 256,
AllowWhenOverlappedByWindow = 512,
AllowWhenDisabled = 1024,
NoNavOverride = 2048,
AllowWhenOverlapped = 768,
RectOnly = 928,
RootAndChildWindows = 3,
ForTooltip = 4096,
Stationary = 8192,
DelayNone = 16384,
DelayShort = 32768,
DelayNormal = 65536,
NoSharedDelay = 131072,
}
DragDropFlags :: enum i32 {
None = 0,
SourceNoPreviewTooltip = 1,
SourceNoDisableHover = 2,
SourceNoHoldToOpenOthers = 4,
SourceAllowNullID = 8,
SourceExtern = 16,
PayloadAutoExpire = 32,
PayloadNoCrossContext = 64,
PayloadNoCrossProcess = 128,
AcceptBeforeDelivery = 1024,
AcceptNoDrawDefaultRect = 2048,
AcceptNoPreviewTooltip = 4096,
AcceptPeekOnly = 3072,
SourceAutoExpirePayload = 32,
}
DataType :: enum i32 {
S8 = 0,
U8 = 1,
S16 = 2,
U16 = 3,
S32 = 4,
U32 = 5,
S64 = 6,
U64 = 7,
Float = 8,
Double = 9,
Bool = 10,
COUNT = 11,
}
Dir :: enum i32 {
None = -1,
Left = 0,
Right = 1,
Up = 2,
Down = 3,
COUNT = 4,
}
SortDirection :: enum i32 {
None = 0,
Ascending = 1,
Descending = 2,
}
Key :: enum i32 {
None = 0,
NamedKey_BEGIN = 512,
Tab = 512,
LeftArrow = 513,
RightArrow = 514,
UpArrow = 515,
DownArrow = 516,
PageUp = 517,
PageDown = 518,
Home = 519,
End = 520,
Insert = 521,
Delete = 522,
Backspace = 523,
Space = 524,
Enter = 525,
Escape = 526,
LeftCtrl = 527,
LeftShift = 528,
LeftAlt = 529,
LeftSuper = 530,
RightCtrl = 531,
RightShift = 532,
RightAlt = 533,
RightSuper = 534,
Menu = 535,
Num0 = 536,
Num1 = 537,
Num2 = 538,
Num3 = 539,
Num4 = 540,
Num5 = 541,
Num6 = 542,
Num7 = 543,
Num8 = 544,
Num9 = 545,
A = 546,
B = 547,
C = 548,
D = 549,
E = 550,
F = 551,
G = 552,
H = 553,
I = 554,
J = 555,
K = 556,
L = 557,
M = 558,
N = 559,
O = 560,
P = 561,
Q = 562,
R = 563,
S = 564,
T = 565,
U = 566,
V = 567,
W = 568,
X = 569,
Y = 570,
Z = 571,
F1 = 572,
F2 = 573,
F3 = 574,
F4 = 575,
F5 = 576,
F6 = 577,
F7 = 578,
F8 = 579,
F9 = 580,
F10 = 581,
F11 = 582,
F12 = 583,
F13 = 584,
F14 = 585,
F15 = 586,
F16 = 587,
F17 = 588,
F18 = 589,
F19 = 590,
F20 = 591,
F21 = 592,
F22 = 593,
F23 = 594,
F24 = 595,
Apostrophe = 596,
Comma = 597,
Minus = 598,
Period = 599,
Slash = 600,
Semicolon = 601,
Equal = 602,
LeftBracket = 603,
Backslash = 604,
RightBracket = 605,
GraveAccent = 606,
CapsLock = 607,
ScrollLock = 608,
NumLock = 609,
PrintScreen = 610,
Pause = 611,
Keypad0 = 612,
Keypad1 = 613,
Keypad2 = 614,
Keypad3 = 615,
Keypad4 = 616,
Keypad5 = 617,
Keypad6 = 618,
Keypad7 = 619,
Keypad8 = 620,
Keypad9 = 621,
KeypadDecimal = 622,
KeypadDivide = 623,
KeypadMultiply = 624,
KeypadSubtract = 625,
KeypadAdd = 626,
KeypadEnter = 627,
KeypadEqual = 628,
AppBack = 629,
AppForward = 630,
GamepadStart = 631,
GamepadBack = 632,
GamepadFaceLeft = 633,
GamepadFaceRight = 634,
GamepadFaceUp = 635,
GamepadFaceDown = 636,
GamepadDpadLeft = 637,
GamepadDpadRight = 638,
GamepadDpadUp = 639,
GamepadDpadDown = 640,
GamepadL1 = 641,
GamepadR1 = 642,
GamepadL2 = 643,
GamepadR2 = 644,
GamepadL3 = 645,
GamepadR3 = 646,
GamepadLStickLeft = 647,
GamepadLStickRight = 648,
GamepadLStickUp = 649,
GamepadLStickDown = 650,
GamepadRStickLeft = 651,
GamepadRStickRight = 652,
GamepadRStickUp = 653,
GamepadRStickDown = 654,
MouseLeft = 655,
MouseRight = 656,
MouseMiddle = 657,
MouseX1 = 658,
MouseX2 = 659,
MouseWheelX = 660,
MouseWheelY = 661,
ReservedForModCtrl = 662,
ReservedForModShift = 663,
ReservedForModAlt = 664,
ReservedForModSuper = 665,
NamedKey_END = 666,
ImGuiMod_None = 0,
ImGuiMod_Ctrl = 4096,
ImGuiMod_Shift = 8192,
ImGuiMod_Alt = 16384,
ImGuiMod_Super = 32768,
ImGuiMod_Mask_ = 61440,
NamedKey_COUNT = 154,
COUNT = 666,
ImGuiMod_Shortcut = 4096,
ModCtrl = 4096,
ModShift = 8192,
ModAlt = 16384,
ModSuper = 32768,
}
InputFlags :: enum i32 {
None = 0,
Repeat = 1,
RouteActive = 1024,
RouteFocused = 2048,
RouteGlobal = 4096,
RouteAlways = 8192,
RouteOverFocused = 16384,
RouteOverActive = 32768,
RouteUnlessBgFocused = 65536,
RouteFromRootWindow = 131072,
Tooltip = 262144,
}
ConfigFlags :: enum i32 {
None = 0,
NavEnableKeyboard = 1,
NavEnableGamepad = 2,
NoMouse = 16,
NoMouseCursorChange = 32,
NoKeyboard = 64,
IsSRGB = 1048576,
IsTouchScreen = 2097152,
NavEnableSetMousePos = 4,
NavNoCaptureKeyboard = 8,
}
BackendFlags :: enum i32 {
None = 0,
HasGamepad = 1,
HasMouseCursors = 2,
HasSetMousePos = 4,
RendererHasVtxOffset = 8,
}
Col :: enum i32 {
Text = 0,
TextDisabled = 1,
WindowBg = 2,
ChildBg = 3,
PopupBg = 4,
Border = 5,
BorderShadow = 6,
FrameBg = 7,
FrameBgHovered = 8,
FrameBgActive = 9,
TitleBg = 10,
TitleBgActive = 11,
TitleBgCollapsed = 12,
MenuBarBg = 13,
ScrollbarBg = 14,
ScrollbarGrab = 15,
ScrollbarGrabHovered = 16,
ScrollbarGrabActive = 17,
CheckMark = 18,
SliderGrab = 19,
SliderGrabActive = 20,
Button = 21,
ButtonHovered = 22,
ButtonActive = 23,
Header = 24,
HeaderHovered = 25,
HeaderActive = 26,
Separator = 27,
SeparatorHovered = 28,
SeparatorActive = 29,
ResizeGrip = 30,
ResizeGripHovered = 31,
ResizeGripActive = 32,
TabHovered = 33,
Tab = 34,
TabSelected = 35,
TabSelectedOverline = 36,
TabDimmed = 37,
TabDimmedSelected = 38,
TabDimmedSelectedOverline = 39,
PlotLines = 40,
PlotLinesHovered = 41,
PlotHistogram = 42,
PlotHistogramHovered = 43,
TableHeaderBg = 44,
TableBorderStrong = 45,
TableBorderLight = 46,
TableRowBg = 47,
TableRowBgAlt = 48,
TextLink = 49,
TextSelectedBg = 50,
DragDropTarget = 51,
NavCursor = 52,
NavWindowingHighlight = 53,
NavWindowingDimBg = 54,
ModalWindowDimBg = 55,
COUNT = 56,
TabActive = 35,
TabUnfocused = 37,
TabUnfocusedActive = 38,
NavHighlight = 52,
}
StyleVar :: enum i32 {
Alpha = 0,
DisabledAlpha = 1,
WindowPadding = 2,
WindowRounding = 3,
WindowBorderSize = 4,
WindowMinSize = 5,
WindowTitleAlign = 6,
ChildRounding = 7,
ChildBorderSize = 8,
PopupRounding = 9,
PopupBorderSize = 10,
FramePadding = 11,
FrameRounding = 12,
FrameBorderSize = 13,
ItemSpacing = 14,
ItemInnerSpacing = 15,
IndentSpacing = 16,
CellPadding = 17,
ScrollbarSize = 18,
ScrollbarRounding = 19,
GrabMinSize = 20,
GrabRounding = 21,
TabRounding = 22,
TabBorderSize = 23,
TabBarBorderSize = 24,
TabBarOverlineSize = 25,
TableAngledHeadersAngle = 26,
TableAngledHeadersTextAlign = 27,
ButtonTextAlign = 28,
SelectableTextAlign = 29,
SeparatorTextBorderSize = 30,
SeparatorTextAlign = 31,
SeparatorTextPadding = 32,
COUNT = 33,
}
ButtonFlags :: enum i32 {
None = 0,
MouseButtonLeft = 1,
MouseButtonRight = 2,
MouseButtonMiddle = 4,
MouseButtonMask_ = 7,
EnableNav = 8,
}
ColorEditFlags :: enum i32 {
None = 0,
NoAlpha = 2,
NoPicker = 4,
NoOptions = 8,
NoSmallPreview = 16,
NoInputs = 32,
NoTooltip = 64,
NoLabel = 128,
NoSidePreview = 256,
NoDragDrop = 512,
NoBorder = 1024,
AlphaBar = 65536,
AlphaPreview = 131072,
AlphaPreviewHalf = 262144,
HDR = 524288,
DisplayRGB = 1048576,
DisplayHSV = 2097152,
DisplayHex = 4194304,
Uint8 = 8388608,
Float = 16777216,
PickerHueBar = 33554432,
PickerHueWheel = 67108864,
InputRGB = 134217728,
InputHSV = 268435456,
DefaultOptions_ = 177209344,
DisplayMask_ = 7340032,
DataTypeMask_ = 25165824,
PickerMask_ = 100663296,
InputMask_ = 402653184,
}
SliderFlags :: enum i32 {
None = 0,
Logarithmic = 32,
NoRoundToFormat = 64,
NoInput = 128,
WrapAround = 256,
ClampOnInput = 512,
ClampZeroRange = 1024,
NoSpeedTweaks = 2048,
AlwaysClamp = 1536,
InvalidMask_ = 1879048207,
}
MouseButton :: enum i32 {
Left = 0,
Right = 1,
Middle = 2,
COUNT = 5,
}
MouseCursor :: enum i32 {
None = -1,
Arrow = 0,
TextInput = 1,
ResizeAll = 2,
ResizeNS = 3,
ResizeEW = 4,
ResizeNESW = 5,
ResizeNWSE = 6,
Hand = 7,
NotAllowed = 8,
COUNT = 9,
}
MouseSource :: enum i32 {
Mouse = 0,
TouchScreen = 1,
Pen = 2,
COUNT = 3,
}
Cond :: enum i32 {
None = 0,
Always = 1,
Once = 2,
FirstUseEver = 4,
Appearing = 8,
}
TableFlags :: enum i32 {
None = 0,
Resizable = 1,
Reorderable = 2,
Hideable = 4,
Sortable = 8,
NoSavedSettings = 16,
ContextMenuInBody = 32,
RowBg = 64,
BordersInnerH = 128,
BordersOuterH = 256,
BordersInnerV = 512,
BordersOuterV = 1024,
BordersH = 384,
BordersV = 1536,
BordersInner = 640,
BordersOuter = 1280,
Borders = 1920,
NoBordersInBody = 2048,
NoBordersInBodyUntilResize = 4096,
SizingFixedFit = 8192,
SizingFixedSame = 16384,
SizingStretchProp = 24576,
SizingStretchSame = 32768,
NoHostExtendX = 65536,
NoHostExtendY = 131072,
NoKeepColumnsVisible = 262144,
PreciseWidths = 524288,
NoClip = 1048576,
PadOuterX = 2097152,
NoPadOuterX = 4194304,
NoPadInnerX = 8388608,
ScrollX = 16777216,
ScrollY = 33554432,
SortMulti = 67108864,
SortTristate = 134217728,
HighlightHoveredColumn = 268435456,
SizingMask_ = 57344,
}
TableColumnFlags :: enum i32 {
None = 0,
Disabled = 1,
DefaultHide = 2,
DefaultSort = 4,
WidthStretch = 8,
WidthFixed = 16,
NoResize = 32,
NoReorder = 64,
NoHide = 128,
NoClip = 256,
NoSort = 512,
NoSortAscending = 1024,
NoSortDescending = 2048,
NoHeaderLabel = 4096,
NoHeaderWidth = 8192,
PreferSortAscending = 16384,
PreferSortDescending = 32768,
IndentEnable = 65536,
IndentDisable = 131072,
AngledHeader = 262144,
IsEnabled = 16777216,
IsVisible = 33554432,
IsSorted = 67108864,
IsHovered = 134217728,
WidthMask_ = 24,
IndentMask_ = 196608,
StatusMask_ = 251658240,
NoDirectResize_ = 1073741824,
}
TableRowFlags :: enum i32 {
None = 0,
Headers = 1,
}
TableBgTarget :: enum i32 {
None = 0,
RowBg0 = 1,
RowBg1 = 2,
CellBg = 3,
}
MultiSelectFlags :: enum i32 {
None = 0,
SingleSelect = 1,
NoSelectAll = 2,
NoRangeSelect = 4,
NoAutoSelect = 8,
NoAutoClear = 16,
NoAutoClearOnReselect = 32,
BoxSelect1d = 64,
BoxSelect2d = 128,
BoxSelectNoScroll = 256,
ClearOnEscape = 512,
ClearOnClickVoid = 1024,
ScopeWindow = 2048,
ScopeRect = 4096,
SelectOnClick = 8192,
SelectOnClickRelease = 16384,
NavWrapX = 65536,
}
SelectionRequestType :: enum i32 {
None = 0,
SetAll = 1,
SetRange = 2,
}
ImDrawFlags :: enum i32 {
None = 0,
Closed = 1,
RoundCornersTopLeft = 16,
RoundCornersTopRight = 32,
RoundCornersBottomLeft = 64,
RoundCornersBottomRight = 128,
RoundCornersNone = 256,
RoundCornersTop = 48,
RoundCornersBottom = 192,
RoundCornersLeft = 80,
RoundCornersRight = 160,
RoundCornersAll = 240,
RoundCornersDefault_ = 240,
RoundCornersMask_ = 496,
}
ImDrawListFlags :: enum i32 {
None = 0,
AntiAliasedLines = 1,
AntiAliasedLinesUseTex = 2,
AntiAliasedFill = 4,
AllowVtxOffset = 8,
}
ImFontAtlasFlags :: enum i32 {
None = 0,
NoPowerOfTwoHeight = 1,
NoMouseCursors = 2,
NoBakedLines = 4,
}
ViewportFlags :: enum i32 {
None = 0,
IsPlatformWindow = 1,
IsPlatformMonitor = 2,
OwnedByApp = 4,
}
ID :: u32
ImS8 :: i8
ImU8 :: u8
ImS16 :: i16
ImU16 :: u16
ImS32 :: i32
ImU32 :: u32
ImS64 :: i64
ImU64 :: u64
KeyChord :: i32
ImTextureID :: ImU64
ImDrawIdx :: u16
ImWchar32 :: u32
ImWchar16 :: u16
ImWchar :: ImWchar32
SelectionUserData :: ImS64
InputTextCallback :: proc "c" (data: ^InputTextCallbackData) -> i32
SizeCallback :: proc "c" (data: ^SizeCallbackData)
MemAllocFunc :: proc "c" (sz: u32, user_data: rawptr) -> rawptr
MemFreeFunc :: proc "c" (ptr: rawptr, user_data: rawptr)
ImDrawCallback :: proc "c" (parent_list: ^ImDrawList, cmd: ^ImDrawCmd)
@(default_calling_convention = "cdecl", link_prefix = "ImGui_")
foreign imgui {
CreateContext :: proc(shared_font_atlas: ^ImFontAtlas = nil) -> ^Context ---
DestroyContext :: proc(ctx: ^Context = nil) ---
GetCurrentContext :: proc() -> ^Context ---
SetCurrentContext :: proc(ctx: ^Context) ---
GetIO :: proc() -> ^IO ---
GetPlatformIO :: proc() -> ^PlatformIO ---
GetStyle :: proc() -> ^Style ---
NewFrame :: proc() ---
EndFrame :: proc() ---
Render :: proc() ---
GetDrawData :: proc() -> ^ImDrawData ---
ShowDemoWindow :: proc(p_open: ^b8 = nil) ---
ShowMetricsWindow :: proc(p_open: ^b8) ---
ShowDebugLogWindow :: proc(p_open: ^b8) ---
ShowIDStackToolWindow :: proc() ---
ShowIDStackToolWindowEx :: proc(p_open: ^b8) ---
ShowAboutWindow :: proc(p_open: ^b8) ---
ShowStyleEditor :: proc(ref: ^Style) ---
ShowStyleSelector :: proc(label: cstring) -> b8 ---
ShowFontSelector :: proc(label: cstring) ---
ShowUserGuide :: proc() ---
GetVersion :: proc() -> cstring ---
StyleColorsDark :: proc(dst: ^Style) ---
StyleColorsLight :: proc(dst: ^Style) ---
StyleColorsClassic :: proc(dst: ^Style) ---
Begin :: proc(name: cstring, p_open: ^b8 = nil, flags: WindowFlags = .None) -> b8 ---
End :: proc() ---
BeginChild :: proc(str_id: cstring, size: ImVec2, child_flags: ChildFlags, window_flags: WindowFlags) -> b8 ---
BeginChildID :: proc(id: ID, size: ImVec2, child_flags: ChildFlags, window_flags: WindowFlags) -> b8 ---
EndChild :: proc() ---
IsWindowAppearing :: proc() -> b8 ---
IsWindowCollapsed :: proc() -> b8 ---
IsWindowFocused :: proc(flags: FocusedFlags) -> b8 ---
IsWindowHovered :: proc(flags: HoveredFlags) -> b8 ---
GetWindowDrawList :: proc() -> ^ImDrawList ---
GetWindowPos :: proc() -> ImVec2 ---
GetWindowSize :: proc() -> ImVec2 ---
GetWindowWidth :: proc() -> f32 ---
GetWindowHeight :: proc() -> f32 ---
SetNextWindowPos :: proc(pos: ImVec2, cond: Cond) ---
SetNextWindowPosEx :: proc(pos: ImVec2, cond: Cond, pivot: ImVec2) ---
SetNextWindowSize :: proc(size: ImVec2, cond: Cond) ---
SetNextWindowSizeConstraints :: proc(size_min: ImVec2, size_max: ImVec2, custom_callback: SizeCallback, custom_callback_data: rawptr) ---
SetNextWindowContentSize :: proc(size: ImVec2) ---
SetNextWindowCollapsed :: proc(collapsed: b8, cond: Cond) ---
SetNextWindowFocus :: proc() ---
SetNextWindowScroll :: proc(scroll: ImVec2) ---
SetNextWindowBgAlpha :: proc(alpha: f32) ---
SetWindowPos :: proc(pos: ImVec2, cond: Cond) ---
SetWindowSize :: proc(size: ImVec2, cond: Cond) ---
SetWindowCollapsed :: proc(collapsed: b8, cond: Cond) ---
SetWindowFocus :: proc() ---
SetWindowFontScale :: proc(scale: f32) ---
SetWindowPosStr :: proc(name: cstring, pos: ImVec2, cond: Cond) ---
SetWindowSizeStr :: proc(name: cstring, size: ImVec2, cond: Cond) ---
SetWindowCollapsedStr :: proc(name: cstring, collapsed: b8, cond: Cond) ---
SetWindowFocusStr :: proc(name: cstring) ---
GetScrollX :: proc() -> f32 ---
GetScrollY :: proc() -> f32 ---
SetScrollX :: proc(scroll_x: f32) ---
SetScrollY :: proc(scroll_y: f32) ---
GetScrollMaxX :: proc() -> f32 ---
GetScrollMaxY :: proc() -> f32 ---
SetScrollHereX :: proc(center_x_ratio: f32) ---
SetScrollHereY :: proc(center_y_ratio: f32) ---
SetScrollFromPosX :: proc(local_x: f32, center_x_ratio: f32) ---
SetScrollFromPosY :: proc(local_y: f32, center_y_ratio: f32) ---
PushFont :: proc(font: ^ImFont) ---
PopFont :: proc() ---
PushStyleColor :: proc(idx: Col, col: ImU32) ---
PushStyleColorImVec4 :: proc(idx: Col, col: ImVec4) ---
PopStyleColor :: proc() ---
PopStyleColorEx :: proc(count: i32) ---
PushStyleVar :: proc(idx: StyleVar, val: f32) ---
PushStyleVarImVec2 :: proc(idx: StyleVar, val: ImVec2) ---
PushStyleVarX :: proc(idx: StyleVar, val_x: f32) ---
PushStyleVarY :: proc(idx: StyleVar, val_y: f32) ---
PopStyleVar :: proc() ---
PopStyleVarEx :: proc(count: i32) ---
PushItemFlag :: proc(option: ItemFlags, enabled: b8) ---
PopItemFlag :: proc() ---
PushItemWidth :: proc(item_width: f32) ---
PopItemWidth :: proc() ---
SetNextItemWidth :: proc(item_width: f32) ---
CalcItemWidth :: proc() -> f32 ---
PushTextWrapPos :: proc(wrap_local_pos_x: f32) ---
PopTextWrapPos :: proc() ---
GetFont :: proc() -> ^ImFont ---
GetFontSize :: proc() -> f32 ---
GetFontTexUvWhitePixel :: proc() -> ImVec2 ---
GetColorU32 :: proc(idx: Col) -> ImU32 ---
GetColorU32Ex :: proc(idx: Col, alpha_mul: f32) -> ImU32 ---
GetColorU32ImVec4 :: proc(col: ImVec4) -> ImU32 ---
GetColorU32ImU32 :: proc(col: ImU32) -> ImU32 ---
GetColorU32ImU32Ex :: proc(col: ImU32, alpha_mul: f32) -> ImU32 ---
GetStyleColorVec4 :: proc(idx: Col) -> ^ImVec4 ---
GetCursorScreenPos :: proc() -> ImVec2 ---
SetCursorScreenPos :: proc(pos: ImVec2) ---
GetContentRegionAvail :: proc() -> ImVec2 ---
GetCursorPos :: proc() -> ImVec2 ---
GetCursorPosX :: proc() -> f32 ---
GetCursorPosY :: proc() -> f32 ---
SetCursorPos :: proc(local_pos: ImVec2) ---
SetCursorPosX :: proc(local_x: f32) ---
SetCursorPosY :: proc(local_y: f32) ---
GetCursorStartPos :: proc() -> ImVec2 ---
Separator :: proc() ---
SameLine :: proc() ---
SameLineEx :: proc(offset_from_start_x: f32, spacing: f32) ---
NewLine :: proc() ---
Spacing :: proc() ---
Dummy :: proc(size: ImVec2) ---
Indent :: proc() ---
IndentEx :: proc(indent_w: f32) ---
Unindent :: proc() ---
UnindentEx :: proc(indent_w: f32) ---
BeginGroup :: proc() ---
EndGroup :: proc() ---
AlignTextToFramePadding :: proc() ---
GetTextLineHeight :: proc() -> f32 ---
GetTextLineHeightWithSpacing :: proc() -> f32 ---
GetFrameHeight :: proc() -> f32 ---
GetFrameHeightWithSpacing :: proc() -> f32 ---
PushID :: proc(str_id: cstring) ---
PushIDStr :: proc(str_id_begin: cstring, str_id_end: cstring) ---
PushIDPtr :: proc(ptr_id: rawptr) ---
PushIDInt :: proc(int_id: i32) ---
PopID :: proc() ---
GetID :: proc(str_id: cstring) -> ID ---
GetIDStr :: proc(str_id_begin: cstring, str_id_end: cstring) -> ID ---
GetIDPtr :: proc(ptr_id: rawptr) -> ID ---
GetIDInt :: proc(int_id: i32) -> ID ---
TextUnformatted :: proc(text: cstring) ---
TextUnformattedEx :: proc(text: cstring, text_end: cstring) ---
Text :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
TextV :: proc(fmt: cstring, args: va_list) ---
TextColored :: proc(col: ImVec4, fmt: cstring, #c_vararg __unnamed_arg2__: ..any) ---
TextColoredV :: proc(col: ImVec4, fmt: cstring, args: va_list) ---
TextDisabled :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
TextDisabledV :: proc(fmt: cstring, args: va_list) ---
TextWrapped :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
TextWrappedV :: proc(fmt: cstring, args: va_list) ---
LabelText :: proc(label: cstring, fmt: cstring, #c_vararg __unnamed_arg2__: ..any) ---
LabelTextV :: proc(label: cstring, fmt: cstring, args: va_list) ---
BulletText :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
BulletTextV :: proc(fmt: cstring, args: va_list) ---
SeparatorText :: proc(label: cstring) ---
Button :: proc(label: cstring) -> b8 ---
ButtonEx :: proc(label: cstring, size: ImVec2) -> b8 ---
SmallButton :: proc(label: cstring) -> b8 ---
InvisibleButton :: proc(str_id: cstring, size: ImVec2, flags: ButtonFlags) -> b8 ---
ArrowButton :: proc(str_id: cstring, dir: Dir) -> b8 ---
Checkbox :: proc(label: cstring, v: ^b8) -> b8 ---
CheckboxFlagsIntPtr :: proc(label: cstring, flags: ^i32, flags_value: i32) -> b8 ---
CheckboxFlagsUintPtr :: proc(label: cstring, flags: ^u32, flags_value: u32) -> b8 ---
RadioButton :: proc(label: cstring, active: b8) -> b8 ---
RadioButtonIntPtr :: proc(label: cstring, v: ^i32, v_button: i32) -> b8 ---
ProgressBar :: proc(fraction: f32, size_arg: ImVec2, overlay: cstring) ---
Bullet :: proc() ---
TextLink :: proc(label: cstring) -> b8 ---
TextLinkOpenURL :: proc(label: cstring) ---
TextLinkOpenURLEx :: proc(label: cstring, url: cstring) ---
Image :: proc(user_texture_id: ImTextureID, image_size: ImVec2) ---
ImageEx :: proc(user_texture_id: ImTextureID, image_size: ImVec2, uv0: ImVec2, uv1: ImVec2, tint_col: ImVec4, border_col: ImVec4) ---
ImageButton :: proc(str_id: cstring, user_texture_id: ImTextureID, image_size: ImVec2) -> b8 ---
ImageButtonEx :: proc(str_id: cstring, user_texture_id: ImTextureID, image_size: ImVec2, uv0: ImVec2, uv1: ImVec2, bg_col: ImVec4, tint_col: ImVec4) -> b8 ---
BeginCombo :: proc(label: cstring, preview_value: cstring, flags: ComboFlags) -> b8 ---
EndCombo :: proc() ---
ComboChar :: proc(label: cstring, current_item: ^i32, items: ^[]cstring, items_count: i32) -> b8 ---
ComboCharEx :: proc(label: cstring, current_item: ^i32, items: ^[]cstring, items_count: i32, popup_max_height_in_items: i32) -> b8 ---
Combo :: proc(label: cstring, current_item: ^i32, items_separated_by_zeros: cstring) -> b8 ---
ComboEx :: proc(label: cstring, current_item: ^i32, items_separated_by_zeros: cstring, popup_max_height_in_items: i32) -> b8 ---
ComboCallback :: proc(label: cstring, current_item: ^i32, getter: proc "c" (user_data: rawptr, idx: i32) -> cstring, user_data: rawptr, items_count: i32) -> b8 ---
ComboCallbackEx :: proc(label: cstring, current_item: ^i32, getter: proc "c" (user_data: rawptr, idx: i32) -> cstring, user_data: rawptr, items_count: i32, popup_max_height_in_items: i32) -> b8 ---
DragFloat :: proc(label: cstring, v: ^f32) -> b8 ---
DragFloatEx :: proc(label: cstring, v: ^f32, v_speed: f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
DragFloat2 :: proc(label: cstring, v: ^[2]f32) -> b8 ---
DragFloat2Ex :: proc(label: cstring, v: ^[2]f32, v_speed: f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
DragFloat3 :: proc(label: cstring, v: ^[3]f32) -> b8 ---
DragFloat3Ex :: proc(label: cstring, v: ^[3]f32, v_speed: f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
DragFloat4 :: proc(label: cstring, v: ^[4]f32) -> b8 ---
DragFloat4Ex :: proc(label: cstring, v: ^[4]f32, v_speed: f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
DragFloatRange2 :: proc(label: cstring, v_current_min: ^f32, v_current_max: ^f32) -> b8 ---
DragFloatRange2Ex :: proc(label: cstring, v_current_min: ^f32, v_current_max: ^f32, v_speed: f32, v_min: f32, v_max: f32, format: cstring, format_max: cstring, flags: SliderFlags) -> b8 ---
DragInt :: proc(label: cstring, v: ^i32) -> b8 ---
DragIntEx :: proc(label: cstring, v: ^i32, v_speed: f32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
DragInt2 :: proc(label: cstring, v: ^[2]i32) -> b8 ---
DragInt2Ex :: proc(label: cstring, v: ^[2]i32, v_speed: f32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
DragInt3 :: proc(label: cstring, v: ^[3]i32) -> b8 ---
DragInt3Ex :: proc(label: cstring, v: ^[3]i32, v_speed: f32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
DragInt4 :: proc(label: cstring, v: ^[4]i32) -> b8 ---
DragInt4Ex :: proc(label: cstring, v: ^[4]i32, v_speed: f32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
DragIntRange2 :: proc(label: cstring, v_current_min: ^i32, v_current_max: ^i32) -> b8 ---
DragIntRange2Ex :: proc(label: cstring, v_current_min: ^i32, v_current_max: ^i32, v_speed: f32, v_min: i32, v_max: i32, format: cstring, format_max: cstring, flags: SliderFlags) -> b8 ---
DragScalar :: proc(label: cstring, data_type: DataType, p_data: rawptr) -> b8 ---
DragScalarEx :: proc(label: cstring, data_type: DataType, p_data: rawptr, v_speed: f32, p_min: rawptr, p_max: rawptr, format: cstring, flags: SliderFlags) -> b8 ---
DragScalarN :: proc(label: cstring, data_type: DataType, p_data: rawptr, components: i32) -> b8 ---
DragScalarNEx :: proc(label: cstring, data_type: DataType, p_data: rawptr, components: i32, v_speed: f32, p_min: rawptr, p_max: rawptr, format: cstring, flags: SliderFlags) -> b8 ---
SliderFloat :: proc(label: cstring, v: ^f32, v_min: f32, v_max: f32) -> b8 ---
SliderFloatEx :: proc(label: cstring, v: ^f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
SliderFloat2 :: proc(label: cstring, v: ^[2]f32, v_min: f32, v_max: f32) -> b8 ---
SliderFloat2Ex :: proc(label: cstring, v: ^[2]f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
SliderFloat3 :: proc(label: cstring, v: ^[3]f32, v_min: f32, v_max: f32) -> b8 ---
SliderFloat3Ex :: proc(label: cstring, v: ^[3]f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
SliderFloat4 :: proc(label: cstring, v: ^[4]f32, v_min: f32, v_max: f32) -> b8 ---
SliderFloat4Ex :: proc(label: cstring, v: ^[4]f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
SliderAngle :: proc(label: cstring, v_rad: ^f32) -> b8 ---
SliderAngleEx :: proc(label: cstring, v_rad: ^f32, v_degrees_min: f32, v_degrees_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
SliderInt :: proc(label: cstring, v: ^i32, v_min: i32, v_max: i32) -> b8 ---
SliderIntEx :: proc(label: cstring, v: ^i32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
SliderInt2 :: proc(label: cstring, v: ^[2]i32, v_min: i32, v_max: i32) -> b8 ---
SliderInt2Ex :: proc(label: cstring, v: ^[2]i32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
SliderInt3 :: proc(label: cstring, v: ^[3]i32, v_min: i32, v_max: i32) -> b8 ---
SliderInt3Ex :: proc(label: cstring, v: ^[3]i32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
SliderInt4 :: proc(label: cstring, v: ^[4]i32, v_min: i32, v_max: i32) -> b8 ---
SliderInt4Ex :: proc(label: cstring, v: ^[4]i32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
SliderScalar :: proc(label: cstring, data_type: DataType, p_data: rawptr, p_min: rawptr, p_max: rawptr) -> b8 ---
SliderScalarEx :: proc(label: cstring, data_type: DataType, p_data: rawptr, p_min: rawptr, p_max: rawptr, format: cstring, flags: SliderFlags) -> b8 ---
SliderScalarN :: proc(label: cstring, data_type: DataType, p_data: rawptr, components: i32, p_min: rawptr, p_max: rawptr) -> b8 ---
SliderScalarNEx :: proc(label: cstring, data_type: DataType, p_data: rawptr, components: i32, p_min: rawptr, p_max: rawptr, format: cstring, flags: SliderFlags) -> b8 ---
VSliderFloat :: proc(label: cstring, size: ImVec2, v: ^f32, v_min: f32, v_max: f32) -> b8 ---
VSliderFloatEx :: proc(label: cstring, size: ImVec2, v: ^f32, v_min: f32, v_max: f32, format: cstring, flags: SliderFlags) -> b8 ---
VSliderInt :: proc(label: cstring, size: ImVec2, v: ^i32, v_min: i32, v_max: i32) -> b8 ---
VSliderIntEx :: proc(label: cstring, size: ImVec2, v: ^i32, v_min: i32, v_max: i32, format: cstring, flags: SliderFlags) -> b8 ---
VSliderScalar :: proc(label: cstring, size: ImVec2, data_type: DataType, p_data: rawptr, p_min: rawptr, p_max: rawptr) -> b8 ---
VSliderScalarEx :: proc(label: cstring, size: ImVec2, data_type: DataType, p_data: rawptr, p_min: rawptr, p_max: rawptr, format: cstring, flags: SliderFlags) -> b8 ---
InputText :: proc(label: cstring, buf: cstring, buf_size: u32, flags: InputTextFlags) -> b8 ---
InputTextEx :: proc(label: cstring, buf: cstring, buf_size: u32, flags: InputTextFlags, callback: InputTextCallback, user_data: rawptr) -> b8 ---
InputTextMultiline :: proc(label: cstring, buf: cstring, buf_size: u32) -> b8 ---
InputTextMultilineEx :: proc(label: cstring, buf: cstring, buf_size: u32, size: ImVec2, flags: InputTextFlags, callback: InputTextCallback, user_data: rawptr) -> b8 ---
InputTextWithHint :: proc(label: cstring, hint: cstring, buf: cstring, buf_size: u32, flags: InputTextFlags) -> b8 ---
InputTextWithHintEx :: proc(label: cstring, hint: cstring, buf: cstring, buf_size: u32, flags: InputTextFlags, callback: InputTextCallback, user_data: rawptr) -> b8 ---
InputFloat :: proc(label: cstring, v: ^f32) -> b8 ---
InputFloatEx :: proc(label: cstring, v: ^f32, step: f32, step_fast: f32, format: cstring, flags: InputTextFlags) -> b8 ---
InputFloat2 :: proc(label: cstring, v: ^[2]f32) -> b8 ---
InputFloat2Ex :: proc(label: cstring, v: ^[2]f32, format: cstring, flags: InputTextFlags) -> b8 ---
InputFloat3 :: proc(label: cstring, v: ^[3]f32) -> b8 ---
InputFloat3Ex :: proc(label: cstring, v: ^[3]f32, format: cstring, flags: InputTextFlags) -> b8 ---
InputFloat4 :: proc(label: cstring, v: ^[4]f32) -> b8 ---
InputFloat4Ex :: proc(label: cstring, v: ^[4]f32, format: cstring, flags: InputTextFlags) -> b8 ---
InputInt :: proc(label: cstring, v: ^i32) -> b8 ---
InputIntEx :: proc(label: cstring, v: ^i32, step: i32, step_fast: i32, flags: InputTextFlags) -> b8 ---
InputInt2 :: proc(label: cstring, v: ^[2]i32, flags: InputTextFlags) -> b8 ---
InputInt3 :: proc(label: cstring, v: ^[3]i32, flags: InputTextFlags) -> b8 ---
InputInt4 :: proc(label: cstring, v: ^[4]i32, flags: InputTextFlags) -> b8 ---
InputDouble :: proc(label: cstring, v: ^f64) -> b8 ---
InputDoubleEx :: proc(label: cstring, v: ^f64, step: f64, step_fast: f64, format: cstring, flags: InputTextFlags) -> b8 ---
InputScalar :: proc(label: cstring, data_type: DataType, p_data: rawptr) -> b8 ---
InputScalarEx :: proc(label: cstring, data_type: DataType, p_data: rawptr, p_step: rawptr, p_step_fast: rawptr, format: cstring, flags: InputTextFlags) -> b8 ---
InputScalarN :: proc(label: cstring, data_type: DataType, p_data: rawptr, components: i32) -> b8 ---
InputScalarNEx :: proc(label: cstring, data_type: DataType, p_data: rawptr, components: i32, p_step: rawptr, p_step_fast: rawptr, format: cstring, flags: InputTextFlags) -> b8 ---
ColorEdit3 :: proc(label: cstring, col: ^[3]f32, flags: ColorEditFlags) -> b8 ---
ColorEdit4 :: proc(label: cstring, col: ^[4]f32, flags: ColorEditFlags) -> b8 ---
ColorPicker3 :: proc(label: cstring, col: ^[3]f32, flags: ColorEditFlags) -> b8 ---
ColorPicker4 :: proc(label: cstring, col: ^[4]f32, flags: ColorEditFlags, ref_col: ^f32) -> b8 ---
ColorButton :: proc(desc_id: cstring, col: ImVec4, flags: ColorEditFlags) -> b8 ---
ColorButtonEx :: proc(desc_id: cstring, col: ImVec4, flags: ColorEditFlags, size: ImVec2) -> b8 ---
SetColorEditOptions :: proc(flags: ColorEditFlags) ---
TreeNode :: proc(label: cstring) -> b8 ---
TreeNodeStr :: proc(str_id: cstring, fmt: cstring, #c_vararg __unnamed_arg2__: ..any) -> b8 ---
TreeNodePtr :: proc(ptr_id: rawptr, fmt: cstring, #c_vararg __unnamed_arg2__: ..any) -> b8 ---
TreeNodeV :: proc(str_id: cstring, fmt: cstring, args: va_list) -> b8 ---
TreeNodeVPtr :: proc(ptr_id: rawptr, fmt: cstring, args: va_list) -> b8 ---
TreeNodeEx :: proc(label: cstring, flags: TreeNodeFlags) -> b8 ---
TreeNodeExStr :: proc(str_id: cstring, flags: TreeNodeFlags, fmt: cstring, #c_vararg __unnamed_arg3__: ..any) -> b8 ---
TreeNodeExPtr :: proc(ptr_id: rawptr, flags: TreeNodeFlags, fmt: cstring, #c_vararg __unnamed_arg3__: ..any) -> b8 ---
TreeNodeExV :: proc(str_id: cstring, flags: TreeNodeFlags, fmt: cstring, args: va_list) -> b8 ---
TreeNodeExVPtr :: proc(ptr_id: rawptr, flags: TreeNodeFlags, fmt: cstring, args: va_list) -> b8 ---
TreePush :: proc(str_id: cstring) ---
TreePushPtr :: proc(ptr_id: rawptr) ---
TreePop :: proc() ---
GetTreeNodeToLabelSpacing :: proc() -> f32 ---
CollapsingHeader :: proc(label: cstring, flags: TreeNodeFlags) -> b8 ---
CollapsingHeaderBoolPtr :: proc(label: cstring, p_visible: ^b8, flags: TreeNodeFlags) -> b8 ---
SetNextItemOpen :: proc(is_open: b8, cond: Cond) ---
SetNextItemStorageID :: proc(storage_id: ID) ---
Selectable :: proc(label: cstring) -> b8 ---
SelectableEx :: proc(label: cstring, selected: b8, flags: SelectableFlags, size: ImVec2) -> b8 ---
SelectableBoolPtr :: proc(label: cstring, p_selected: ^b8, flags: SelectableFlags) -> b8 ---
SelectableBoolPtrEx :: proc(label: cstring, p_selected: ^b8, flags: SelectableFlags, size: ImVec2) -> b8 ---
BeginMultiSelect :: proc(flags: MultiSelectFlags) -> ^MultiSelectIO ---
BeginMultiSelectEx :: proc(flags: MultiSelectFlags, selection_size: i32, items_count: i32) -> ^MultiSelectIO ---
EndMultiSelect :: proc() -> ^MultiSelectIO ---
SetNextItemSelectionUserData :: proc(selection_user_data: SelectionUserData) ---
IsItemToggledSelection :: proc() -> b8 ---
BeginListBox :: proc(label: cstring, size: ImVec2) -> b8 ---
EndListBox :: proc() ---
ListBox :: proc(label: cstring, current_item: ^i32, items: ^[]cstring, items_count: i32, height_in_items: i32) -> b8 ---
ListBoxCallback :: proc(label: cstring, current_item: ^i32, getter: proc "c" (user_data: rawptr, idx: i32) -> cstring, user_data: rawptr, items_count: i32) -> b8 ---
ListBoxCallbackEx :: proc(label: cstring, current_item: ^i32, getter: proc "c" (user_data: rawptr, idx: i32) -> cstring, user_data: rawptr, items_count: i32, height_in_items: i32) -> b8 ---
PlotLines :: proc(label: cstring, values: ^f32, values_count: i32) ---
PlotLinesEx :: proc(label: cstring, values: ^f32, values_count: i32, values_offset: i32, overlay_text: cstring, scale_min: f32, scale_max: f32, graph_size: ImVec2, stride: i32) ---
PlotLinesCallback :: proc(label: cstring, values_getter: proc "c" (data: rawptr, idx: i32) -> f32, data: rawptr, values_count: i32) ---
PlotLinesCallbackEx :: proc(label: cstring, values_getter: proc "c" (data: rawptr, idx: i32) -> f32, data: rawptr, values_count: i32, values_offset: i32, overlay_text: cstring, scale_min: f32, scale_max: f32, graph_size: ImVec2) ---
PlotHistogram :: proc(label: cstring, values: ^f32, values_count: i32) ---
PlotHistogramEx :: proc(label: cstring, values: ^f32, values_count: i32, values_offset: i32, overlay_text: cstring, scale_min: f32, scale_max: f32, graph_size: ImVec2, stride: i32) ---
PlotHistogramCallback :: proc(label: cstring, values_getter: proc "c" (data: rawptr, idx: i32) -> f32, data: rawptr, values_count: i32) ---
PlotHistogramCallbackEx :: proc(label: cstring, values_getter: proc "c" (data: rawptr, idx: i32) -> f32, data: rawptr, values_count: i32, values_offset: i32, overlay_text: cstring, scale_min: f32, scale_max: f32, graph_size: ImVec2) ---
BeginMenuBar :: proc() -> b8 ---
EndMenuBar :: proc() ---
BeginMainMenuBar :: proc() -> b8 ---
EndMainMenuBar :: proc() ---
BeginMenu :: proc(label: cstring) -> b8 ---
BeginMenuEx :: proc(label: cstring, enabled: b8) -> b8 ---
EndMenu :: proc() ---
MenuItem :: proc(label: cstring) -> b8 ---
MenuItemEx :: proc(label: cstring, shortcut: cstring, selected: b8, enabled: b8) -> b8 ---
MenuItemBoolPtr :: proc(label: cstring, shortcut: cstring, p_selected: ^b8, enabled: b8) -> b8 ---
BeginTooltip :: proc() -> b8 ---
EndTooltip :: proc() ---
SetTooltip :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
SetTooltipV :: proc(fmt: cstring, args: va_list) ---
BeginItemTooltip :: proc() -> b8 ---
SetItemTooltip :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
SetItemTooltipV :: proc(fmt: cstring, args: va_list) ---
BeginPopup :: proc(str_id: cstring, flags: WindowFlags) -> b8 ---
BeginPopupModal :: proc(name: cstring, p_open: ^b8, flags: WindowFlags) -> b8 ---
EndPopup :: proc() ---
OpenPopup :: proc(str_id: cstring, popup_flags: PopupFlags) ---
OpenPopupID :: proc(id: ID, popup_flags: PopupFlags) ---
OpenPopupOnItemClick :: proc(str_id: cstring, popup_flags: PopupFlags) ---
CloseCurrentPopup :: proc() ---
BeginPopupContextItem :: proc() -> b8 ---
BeginPopupContextItemEx :: proc(str_id: cstring, popup_flags: PopupFlags) -> b8 ---
BeginPopupContextWindow :: proc() -> b8 ---
BeginPopupContextWindowEx :: proc(str_id: cstring, popup_flags: PopupFlags) -> b8 ---
BeginPopupContextVoid :: proc() -> b8 ---
BeginPopupContextVoidEx :: proc(str_id: cstring, popup_flags: PopupFlags) -> b8 ---
IsPopupOpen :: proc(str_id: cstring, flags: PopupFlags) -> b8 ---
BeginTable :: proc(str_id: cstring, columns: i32, flags: TableFlags) -> b8 ---
BeginTableEx :: proc(str_id: cstring, columns: i32, flags: TableFlags, outer_size: ImVec2, inner_width: f32) -> b8 ---
EndTable :: proc() ---
TableNextRow :: proc() ---
TableNextRowEx :: proc(row_flags: TableRowFlags, min_row_height: f32) ---
TableNextColumn :: proc() -> b8 ---
TableSetColumnIndex :: proc(column_n: i32) -> b8 ---
TableSetupColumn :: proc(label: cstring, flags: TableColumnFlags) ---
TableSetupColumnEx :: proc(label: cstring, flags: TableColumnFlags, init_width_or_weight: f32, user_id: ID) ---
TableSetupScrollFreeze :: proc(cols: i32, rows: i32) ---
TableHeader :: proc(label: cstring) ---
TableHeadersRow :: proc() ---
TableAngledHeadersRow :: proc() ---
TableGetSortSpecs :: proc() -> ^TableSortSpecs ---
TableGetColumnCount :: proc() -> i32 ---
TableGetColumnIndex :: proc() -> i32 ---
TableGetRowIndex :: proc() -> i32 ---
TableGetColumnName :: proc(column_n: i32) -> cstring ---
TableGetColumnFlags :: proc(column_n: i32) -> TableColumnFlags ---
TableSetColumnEnabled :: proc(column_n: i32, v: b8) ---
TableGetHoveredColumn :: proc() -> i32 ---
TableSetBgColor :: proc(target: TableBgTarget, color: ImU32, column_n: i32) ---
Columns :: proc() ---
ColumnsEx :: proc(count: i32, id: cstring, borders: b8) ---
NextColumn :: proc() ---
GetColumnIndex :: proc() -> i32 ---
GetColumnWidth :: proc(column_index: i32) -> f32 ---
SetColumnWidth :: proc(column_index: i32, width: f32) ---
GetColumnOffset :: proc(column_index: i32) -> f32 ---
SetColumnOffset :: proc(column_index: i32, offset_x: f32) ---
GetColumnsCount :: proc() -> i32 ---
BeginTabBar :: proc(str_id: cstring, flags: TabBarFlags) -> b8 ---
EndTabBar :: proc() ---
BeginTabItem :: proc(label: cstring, p_open: ^b8, flags: TabItemFlags) -> b8 ---
EndTabItem :: proc() ---
TabItemButton :: proc(label: cstring, flags: TabItemFlags) -> b8 ---
SetTabItemClosed :: proc(tab_or_docked_window_label: cstring) ---
LogToTTY :: proc(auto_open_depth: i32) ---
LogToFile :: proc(auto_open_depth: i32, filename: cstring) ---
LogToClipboard :: proc(auto_open_depth: i32) ---
LogFinish :: proc() ---
LogButtons :: proc() ---
LogText :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
LogTextV :: proc(fmt: cstring, args: va_list) ---
BeginDragDropSource :: proc(flags: DragDropFlags) -> b8 ---
SetDragDropPayload :: proc(type: cstring, data: rawptr, sz: u32, cond: Cond) -> b8 ---
EndDragDropSource :: proc() ---
BeginDragDropTarget :: proc() -> b8 ---
AcceptDragDropPayload :: proc(type: cstring, flags: DragDropFlags) -> ^Payload ---
EndDragDropTarget :: proc() ---
GetDragDropPayload :: proc() -> ^Payload ---
BeginDisabled :: proc(disabled: b8) ---
EndDisabled :: proc() ---
PushClipRect :: proc(clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: b8) ---
PopClipRect :: proc() ---
SetItemDefaultFocus :: proc() ---
SetKeyboardFocusHere :: proc() ---
SetKeyboardFocusHereEx :: proc(offset: i32) ---
SetNavCursorVisible :: proc(visible: b8) ---
SetNextItemAllowOverlap :: proc() ---
IsItemHovered :: proc(flags: HoveredFlags) -> b8 ---
IsItemActive :: proc() -> b8 ---
IsItemFocused :: proc() -> b8 ---
IsItemClicked :: proc() -> b8 ---
IsItemClickedEx :: proc(mouse_button: MouseButton) -> b8 ---
IsItemVisible :: proc() -> b8 ---
IsItemEdited :: proc() -> b8 ---
IsItemActivated :: proc() -> b8 ---
IsItemDeactivated :: proc() -> b8 ---
IsItemDeactivatedAfterEdit :: proc() -> b8 ---
IsItemToggledOpen :: proc() -> b8 ---
IsAnyItemHovered :: proc() -> b8 ---
IsAnyItemActive :: proc() -> b8 ---
IsAnyItemFocused :: proc() -> b8 ---
GetItemID :: proc() -> ID ---
GetItemRectMin :: proc() -> ImVec2 ---
GetItemRectMax :: proc() -> ImVec2 ---
GetItemRectSize :: proc() -> ImVec2 ---
GetMainViewport :: proc() -> ^Viewport ---
GetBackgroundDrawList :: proc() -> ^ImDrawList ---
GetForegroundDrawList :: proc() -> ^ImDrawList ---
IsRectVisibleBySize :: proc(size: ImVec2) -> b8 ---
IsRectVisible :: proc(rect_min: ImVec2, rect_max: ImVec2) -> b8 ---
GetTime :: proc() -> f64 ---
GetFrameCount :: proc() -> i32 ---
GetDrawListSharedData :: proc() -> ^ImDrawListSharedData ---
GetStyleColorName :: proc(idx: Col) -> cstring ---
SetStateStorage :: proc(storage: ^Storage) ---
GetStateStorage :: proc() -> ^Storage ---
CalcTextSize :: proc(text: cstring) -> ImVec2 ---
CalcTextSizeEx :: proc(text: cstring, text_end: cstring, hide_text_after_double_hash: b8, wrap_width: f32) -> ImVec2 ---
ColorConvertU32ToFloat4 :: proc(_in: ImU32) -> ImVec4 ---
ColorConvertFloat4ToU32 :: proc(_in: ImVec4) -> ImU32 ---
ColorConvertRGBtoHSV :: proc(r: f32, g: f32, b: f32, out_h: ^f32, out_s: ^f32, out_v: ^f32) ---
ColorConvertHSVtoRGB :: proc(h: f32, s: f32, v: f32, out_r: ^f32, out_g: ^f32, out_b: ^f32) ---
IsKeyDown :: proc(key: Key) -> b8 ---
IsKeyPressed :: proc(key: Key) -> b8 ---
IsKeyPressedEx :: proc(key: Key, repeat: b8) -> b8 ---
IsKeyReleased :: proc(key: Key) -> b8 ---
IsKeyChordPressed :: proc(key_chord: KeyChord) -> b8 ---
GetKeyPressedAmount :: proc(key: Key, repeat_delay: f32, rate: f32) -> i32 ---
GetKeyName :: proc(key: Key) -> cstring ---
SetNextFrameWantCaptureKeyboard :: proc(want_capture_keyboard: b8) ---
Shortcut :: proc(key_chord: KeyChord, flags: InputFlags) -> b8 ---
SetNextItemShortcut :: proc(key_chord: KeyChord, flags: InputFlags) ---
SetItemKeyOwner :: proc(key: Key) ---
IsMouseDown :: proc(button: MouseButton) -> b8 ---
IsMouseClicked :: proc(button: MouseButton) -> b8 ---
IsMouseClickedEx :: proc(button: MouseButton, repeat: b8) -> b8 ---
IsMouseReleased :: proc(button: MouseButton) -> b8 ---
IsMouseDoubleClicked :: proc(button: MouseButton) -> b8 ---
GetMouseClickedCount :: proc(button: MouseButton) -> i32 ---
IsMouseHoveringRect :: proc(r_min: ImVec2, r_max: ImVec2) -> b8 ---
IsMouseHoveringRectEx :: proc(r_min: ImVec2, r_max: ImVec2, clip: b8) -> b8 ---
IsMousePosValid :: proc(mouse_pos: ^ImVec2) -> b8 ---
IsAnyMouseDown :: proc() -> b8 ---
GetMousePos :: proc() -> ImVec2 ---
GetMousePosOnOpeningCurrentPopup :: proc() -> ImVec2 ---
IsMouseDragging :: proc(button: MouseButton, lock_threshold: f32) -> b8 ---
GetMouseDragDelta :: proc(button: MouseButton, lock_threshold: f32) -> ImVec2 ---
ResetMouseDragDelta :: proc() ---
ResetMouseDragDeltaEx :: proc(button: MouseButton) ---
GetMouseCursor :: proc() -> MouseCursor ---
SetMouseCursor :: proc(cursor_type: MouseCursor) ---
SetNextFrameWantCaptureMouse :: proc(want_capture_mouse: b8) ---
GetClipboardText :: proc() -> cstring ---
SetClipboardText :: proc(text: cstring) ---
LoadIniSettingsFromDisk :: proc(ini_filename: cstring) ---
LoadIniSettingsFromMemory :: proc(ini_data: cstring, ini_size: u32) ---
SaveIniSettingsToDisk :: proc(ini_filename: cstring) ---
SaveIniSettingsToMemory :: proc(out_ini_size: ^u32) -> cstring ---
DebugTextEncoding :: proc(text: cstring) ---
DebugFlashStyleColor :: proc(idx: Col) ---
DebugStartItemPicker :: proc() ---
DebugCheckVersionAndDataLayout :: proc(version_str: cstring, sz_io: u32, sz_style: u32, sz_vec2: u32, sz_vec4: u32, sz_drawvert: u32, sz_drawidx: u32) -> b8 ---
DebugLog :: proc(fmt: cstring, #c_vararg __unnamed_arg1__: ..any) ---
DebugLogV :: proc(fmt: cstring, args: va_list) ---
SetAllocatorFunctions :: proc(alloc_func: MemAllocFunc, free_func: MemFreeFunc, user_data: rawptr) ---
GetAllocatorFunctions :: proc(p_alloc_func: ^MemAllocFunc, p_free_func: ^MemFreeFunc, p_user_data: [^]rawptr) ---
MemAlloc :: proc(size: u32) -> rawptr ---
MemFree :: proc(ptr: rawptr) ---
}
@(default_calling_convention = "cdecl")
foreign imgui {
ImVector_Construct :: proc(vector: rawptr) ---
ImVector_Destruct :: proc(vector: rawptr) ---
// ImStr_FromCharStr :: proc(b: cstring) -> ImStr ---
ImGuiStyle_ScaleAllSizes :: proc(self: ^Style, scale_factor: f32) ---
ImGuiIO_AddKeyEvent :: proc(self: ^IO, key: Key, down: b8) ---
ImGuiIO_AddKeyAnalogEvent :: proc(self: ^IO, key: Key, down: b8, v: f32) ---
ImGuiIO_AddMousePosEvent :: proc(self: ^IO, x: f32, y: f32) ---
ImGuiIO_AddMouseButtonEvent :: proc(self: ^IO, button: i32, down: b8) ---
ImGuiIO_AddMouseWheelEvent :: proc(self: ^IO, wheel_x: f32, wheel_y: f32) ---
ImGuiIO_AddMouseSourceEvent :: proc(self: ^IO, source: MouseSource) ---
ImGuiIO_AddFocusEvent :: proc(self: ^IO, focused: b8) ---
ImGuiIO_AddInputCharacter :: proc(self: ^IO, c: u32) ---
ImGuiIO_AddInputCharacterUTF16 :: proc(self: ^IO, c: ImWchar16) ---
ImGuiIO_AddInputCharactersUTF8 :: proc(self: ^IO, str: cstring) ---
ImGuiIO_SetKeyEventNativeData :: proc(self: ^IO, key: Key, native_keycode: i32, native_scancode: i32) ---
ImGuiIO_SetKeyEventNativeDataEx :: proc(self: ^IO, key: Key, native_keycode: i32, native_scancode: i32, native_legacy_index: i32) ---
ImGuiIO_SetAppAcceptingEvents :: proc(self: ^IO, accepting_events: b8) ---
ImGuiIO_ClearEventsQueue :: proc(self: ^IO) ---
ImGuiIO_ClearInputKeys :: proc(self: ^IO) ---
ImGuiIO_ClearInputMouse :: proc(self: ^IO) ---
ImGuiIO_ClearInputCharacters :: proc(self: ^IO) ---
ImGuiInputTextCallbackData_DeleteChars :: proc(self: ^InputTextCallbackData, pos: i32, bytes_count: i32) ---
ImGuiInputTextCallbackData_InsertChars :: proc(self: ^InputTextCallbackData, pos: i32, text: cstring, text_end: cstring) ---
ImGuiInputTextCallbackData_SelectAll :: proc(self: ^InputTextCallbackData) ---
ImGuiInputTextCallbackData_ClearSelection :: proc(self: ^InputTextCallbackData) ---
ImGuiInputTextCallbackData_HasSelection :: proc(self: ^InputTextCallbackData) -> b8 ---
ImGuiPayload_Clear :: proc(self: ^Payload) ---
ImGuiPayload_IsDataType :: proc(self: ^Payload, type: cstring) -> b8 ---
ImGuiPayload_IsPreview :: proc(self: ^Payload) -> b8 ---
ImGuiPayload_IsDelivery :: proc(self: ^Payload) -> b8 ---
ImGuiTextFilter_ImGuiTextRange_empty :: proc(self: ^TextFilter_ImGuiTextRange) -> b8 ---
ImGuiTextFilter_ImGuiTextRange_split :: proc(self: ^TextFilter_ImGuiTextRange, separator: cstring, out: ^ImVector_ImGuiTextFilter_ImGuiTextRange) ---
ImGuiTextFilter_Draw :: proc(self: ^TextFilter, label: cstring, width: f32) -> b8 ---
ImGuiTextFilter_PassFilter :: proc(self: ^TextFilter, text: cstring, text_end: cstring) -> b8 ---
ImGuiTextFilter_Build :: proc(self: ^TextFilter) ---
ImGuiTextFilter_Clear :: proc(self: ^TextFilter) ---
ImGuiTextFilter_IsActive :: proc(self: ^TextFilter) -> b8 ---
ImGuiTextBuffer_begin :: proc(self: ^TextBuffer) -> cstring ---
ImGuiTextBuffer_end :: proc(self: ^TextBuffer) -> cstring ---
ImGuiTextBuffer_size :: proc(self: ^TextBuffer) -> i32 ---
ImGuiTextBuffer_empty :: proc(self: ^TextBuffer) -> b8 ---
ImGuiTextBuffer_clear :: proc(self: ^TextBuffer) ---
ImGuiTextBuffer_reserve :: proc(self: ^TextBuffer, capacity: i32) ---
ImGuiTextBuffer_c_str :: proc(self: ^TextBuffer) -> cstring ---
ImGuiTextBuffer_append :: proc(self: ^TextBuffer, str: cstring, str_end: cstring) ---
ImGuiTextBuffer_appendf :: proc(self: ^TextBuffer, fmt: cstring, #c_vararg __unnamed_arg2__: ..any) ---
ImGuiTextBuffer_appendfv :: proc(self: ^TextBuffer, fmt: cstring, args: va_list) ---
ImGuiStorage_Clear :: proc(self: ^Storage) ---
ImGuiStorage_GetInt :: proc(self: ^Storage, key: ID, default_val: i32) -> i32 ---
ImGuiStorage_SetInt :: proc(self: ^Storage, key: ID, val: i32) ---
ImGuiStorage_GetBool :: proc(self: ^Storage, key: ID, default_val: b8) -> b8 ---
ImGuiStorage_SetBool :: proc(self: ^Storage, key: ID, val: b8) ---
ImGuiStorage_GetFloat :: proc(self: ^Storage, key: ID, default_val: f32) -> f32 ---
ImGuiStorage_SetFloat :: proc(self: ^Storage, key: ID, val: f32) ---
ImGuiStorage_GetVoidPtr :: proc(self: ^Storage, key: ID) -> rawptr ---
ImGuiStorage_SetVoidPtr :: proc(self: ^Storage, key: ID, val: rawptr) ---
ImGuiStorage_GetIntRef :: proc(self: ^Storage, key: ID, default_val: i32) -> ^i32 ---
ImGuiStorage_GetBoolRef :: proc(self: ^Storage, key: ID, default_val: b8) -> ^b8 ---
ImGuiStorage_GetFloatRef :: proc(self: ^Storage, key: ID, default_val: f32) -> ^f32 ---
ImGuiStorage_GetVoidPtrRef :: proc(self: ^Storage, key: ID, default_val: rawptr) -> [^]rawptr ---
ImGuiStorage_BuildSortByKey :: proc(self: ^Storage) ---
ImGuiStorage_SetAllInt :: proc(self: ^Storage, val: i32) ---
ImGuiListClipper_Begin :: proc(self: ^ListClipper, items_count: i32, items_height: f32) ---
ImGuiListClipper_End :: proc(self: ^ListClipper) ---
ImGuiListClipper_Step :: proc(self: ^ListClipper) -> b8 ---
ImGuiListClipper_IncludeItemByIndex :: proc(self: ^ListClipper, item_index: i32) ---
ImGuiListClipper_IncludeItemsByIndex :: proc(self: ^ListClipper, item_begin: i32, item_end: i32) ---
ImGuiListClipper_SeekCursorForItem :: proc(self: ^ListClipper, item_index: i32) ---
ImGuiListClipper_IncludeRangeByIndices :: proc(self: ^ListClipper, item_begin: i32, item_end: i32) ---
ImGuiListClipper_ForceDisplayRangeByIndices :: proc(self: ^ListClipper, item_begin: i32, item_end: i32) ---
ImColor_SetHSV :: proc(self: ^ImColor, h: f32, s: f32, v: f32, a: f32) ---
ImColor_HSV :: proc(h: f32, s: f32, v: f32, a: f32) -> ImColor ---
ImGuiSelectionBasicStorage_ApplyRequests :: proc(self: ^SelectionBasicStorage, ms_io: ^MultiSelectIO) ---
ImGuiSelectionBasicStorage_Contains :: proc(self: ^SelectionBasicStorage, id: ID) -> b8 ---
ImGuiSelectionBasicStorage_Clear :: proc(self: ^SelectionBasicStorage) ---
ImGuiSelectionBasicStorage_Swap :: proc(self: ^SelectionBasicStorage, r: ^SelectionBasicStorage) ---
ImGuiSelectionBasicStorage_SetItemSelected :: proc(self: ^SelectionBasicStorage, id: ID, selected: b8) ---
ImGuiSelectionBasicStorage_GetNextSelectedItem :: proc(self: ^SelectionBasicStorage, opaque_it: [^]rawptr, out_id: ^ID) -> b8 ---
ImGuiSelectionBasicStorage_GetStorageIdFromIndex :: proc(self: ^SelectionBasicStorage, idx: i32) -> ID ---
ImGuiSelectionExternalStorage_ApplyRequests :: proc(self: ^SelectionExternalStorage, ms_io: ^MultiSelectIO) ---
ImDrawCmd_GetTexID :: proc(self: ^ImDrawCmd) -> ImTextureID ---
ImDrawListSplitter_Clear :: proc(self: ^ImDrawListSplitter) ---
ImDrawListSplitter_ClearFreeMemory :: proc(self: ^ImDrawListSplitter) ---
ImDrawListSplitter_Split :: proc(self: ^ImDrawListSplitter, draw_list: ^ImDrawList, count: i32) ---
ImDrawListSplitter_Merge :: proc(self: ^ImDrawListSplitter, draw_list: ^ImDrawList) ---
ImDrawListSplitter_SetCurrentChannel :: proc(self: ^ImDrawListSplitter, draw_list: ^ImDrawList, channel_idx: i32) ---
ImDrawList_PushClipRect :: proc(self: ^ImDrawList, clip_rect_min: ImVec2, clip_rect_max: ImVec2, intersect_with_current_clip_rect: b8) ---
ImDrawList_PushClipRectFullScreen :: proc(self: ^ImDrawList) ---
ImDrawList_PopClipRect :: proc(self: ^ImDrawList) ---
ImDrawList_PushTextureID :: proc(self: ^ImDrawList, texture_id: ImTextureID) ---
ImDrawList_PopTextureID :: proc(self: ^ImDrawList) ---
ImDrawList_GetClipRectMin :: proc(self: ^ImDrawList) -> ImVec2 ---
ImDrawList_GetClipRectMax :: proc(self: ^ImDrawList) -> ImVec2 ---
ImDrawList_AddLine :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, col: ImU32) ---
ImDrawList_AddLineEx :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, col: ImU32, thickness: f32) ---
ImDrawList_AddRect :: proc(self: ^ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32) ---
ImDrawList_AddRectEx :: proc(self: ^ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags, thickness: f32) ---
ImDrawList_AddRectFilled :: proc(self: ^ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32) ---
ImDrawList_AddRectFilledEx :: proc(self: ^ImDrawList, p_min: ImVec2, p_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags) ---
ImDrawList_AddRectFilledMultiColor :: proc(self: ^ImDrawList, p_min: ImVec2, p_max: ImVec2, col_upr_left: ImU32, col_upr_right: ImU32, col_bot_right: ImU32, col_bot_left: ImU32) ---
ImDrawList_AddQuad :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32) ---
ImDrawList_AddQuadEx :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: f32) ---
ImDrawList_AddQuadFilled :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32) ---
ImDrawList_AddTriangle :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32) ---
ImDrawList_AddTriangleEx :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: f32) ---
ImDrawList_AddTriangleFilled :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32) ---
ImDrawList_AddCircle :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, col: ImU32) ---
ImDrawList_AddCircleEx :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: i32, thickness: f32) ---
ImDrawList_AddCircleFilled :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: i32) ---
ImDrawList_AddNgon :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: i32) ---
ImDrawList_AddNgonEx :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: i32, thickness: f32) ---
ImDrawList_AddNgonFilled :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, col: ImU32, num_segments: i32) ---
ImDrawList_AddEllipse :: proc(self: ^ImDrawList, center: ImVec2, radius: ImVec2, col: ImU32) ---
ImDrawList_AddEllipseEx :: proc(self: ^ImDrawList, center: ImVec2, radius: ImVec2, col: ImU32, rot: f32, num_segments: i32, thickness: f32) ---
ImDrawList_AddEllipseFilled :: proc(self: ^ImDrawList, center: ImVec2, radius: ImVec2, col: ImU32) ---
ImDrawList_AddEllipseFilledEx :: proc(self: ^ImDrawList, center: ImVec2, radius: ImVec2, col: ImU32, rot: f32, num_segments: i32) ---
ImDrawList_AddText :: proc(self: ^ImDrawList, pos: ImVec2, col: ImU32, text_begin: cstring) ---
ImDrawList_AddTextEx :: proc(self: ^ImDrawList, pos: ImVec2, col: ImU32, text_begin: cstring, text_end: cstring) ---
ImDrawList_AddTextImFontPtr :: proc(self: ^ImDrawList, font: ^ImFont, font_size: f32, pos: ImVec2, col: ImU32, text_begin: cstring) ---
ImDrawList_AddTextImFontPtrEx :: proc(self: ^ImDrawList, font: ^ImFont, font_size: f32, pos: ImVec2, col: ImU32, text_begin: cstring, text_end: cstring, wrap_width: f32, cpu_fine_clip_rect: ^ImVec4) ---
ImDrawList_AddBezierCubic :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, col: ImU32, thickness: f32, num_segments: i32) ---
ImDrawList_AddBezierQuadratic :: proc(self: ^ImDrawList, p1: ImVec2, p2: ImVec2, p3: ImVec2, col: ImU32, thickness: f32, num_segments: i32) ---
ImDrawList_AddPolyline :: proc(self: ^ImDrawList, points: ^ImVec2, num_points: i32, col: ImU32, flags: ImDrawFlags, thickness: f32) ---
ImDrawList_AddConvexPolyFilled :: proc(self: ^ImDrawList, points: ^ImVec2, num_points: i32, col: ImU32) ---
ImDrawList_AddConcavePolyFilled :: proc(self: ^ImDrawList, points: ^ImVec2, num_points: i32, col: ImU32) ---
ImDrawList_AddImage :: proc(self: ^ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2) ---
ImDrawList_AddImageEx :: proc(self: ^ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32) ---
ImDrawList_AddImageQuad :: proc(self: ^ImDrawList, user_texture_id: ImTextureID, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2) ---
ImDrawList_AddImageQuadEx :: proc(self: ^ImDrawList, user_texture_id: ImTextureID, p1: ImVec2, p2: ImVec2, p3: ImVec2, p4: ImVec2, uv1: ImVec2, uv2: ImVec2, uv3: ImVec2, uv4: ImVec2, col: ImU32) ---
ImDrawList_AddImageRounded :: proc(self: ^ImDrawList, user_texture_id: ImTextureID, p_min: ImVec2, p_max: ImVec2, uv_min: ImVec2, uv_max: ImVec2, col: ImU32, rounding: f32, flags: ImDrawFlags) ---
ImDrawList_PathClear :: proc(self: ^ImDrawList) ---
ImDrawList_PathLineTo :: proc(self: ^ImDrawList, pos: ImVec2) ---
ImDrawList_PathLineToMergeDuplicate :: proc(self: ^ImDrawList, pos: ImVec2) ---
ImDrawList_PathFillConvex :: proc(self: ^ImDrawList, col: ImU32) ---
ImDrawList_PathFillConcave :: proc(self: ^ImDrawList, col: ImU32) ---
ImDrawList_PathStroke :: proc(self: ^ImDrawList, col: ImU32, flags: ImDrawFlags, thickness: f32) ---
ImDrawList_PathArcTo :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, a_min: f32, a_max: f32, num_segments: i32) ---
ImDrawList_PathArcToFast :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, a_min_of_12: i32, a_max_of_12: i32) ---
ImDrawList_PathEllipticalArcTo :: proc(self: ^ImDrawList, center: ImVec2, radius: ImVec2, rot: f32, a_min: f32, a_max: f32) ---
ImDrawList_PathEllipticalArcToEx :: proc(self: ^ImDrawList, center: ImVec2, radius: ImVec2, rot: f32, a_min: f32, a_max: f32, num_segments: i32) ---
ImDrawList_PathBezierCubicCurveTo :: proc(self: ^ImDrawList, p2: ImVec2, p3: ImVec2, p4: ImVec2, num_segments: i32) ---
ImDrawList_PathBezierQuadraticCurveTo :: proc(self: ^ImDrawList, p2: ImVec2, p3: ImVec2, num_segments: i32) ---
ImDrawList_PathRect :: proc(self: ^ImDrawList, rect_min: ImVec2, rect_max: ImVec2, rounding: f32, flags: ImDrawFlags) ---
ImDrawList_AddCallback :: proc(self: ^ImDrawList, callback: ImDrawCallback, userdata: rawptr) ---
ImDrawList_AddCallbackEx :: proc(self: ^ImDrawList, callback: ImDrawCallback, userdata: rawptr, userdata_size: u32) ---
ImDrawList_AddDrawCmd :: proc(self: ^ImDrawList) ---
ImDrawList_CloneOutput :: proc(self: ^ImDrawList) -> ^ImDrawList ---
ImDrawList_ChannelsSplit :: proc(self: ^ImDrawList, count: i32) ---
ImDrawList_ChannelsMerge :: proc(self: ^ImDrawList) ---
ImDrawList_ChannelsSetCurrent :: proc(self: ^ImDrawList, n: i32) ---
ImDrawList_PrimReserve :: proc(self: ^ImDrawList, idx_count: i32, vtx_count: i32) ---
ImDrawList_PrimUnreserve :: proc(self: ^ImDrawList, idx_count: i32, vtx_count: i32) ---
ImDrawList_PrimRect :: proc(self: ^ImDrawList, a: ImVec2, b: ImVec2, col: ImU32) ---
ImDrawList_PrimRectUV :: proc(self: ^ImDrawList, a: ImVec2, b: ImVec2, uv_a: ImVec2, uv_b: ImVec2, col: ImU32) ---
ImDrawList_PrimQuadUV :: proc(self: ^ImDrawList, a: ImVec2, b: ImVec2, c: ImVec2, d: ImVec2, uv_a: ImVec2, uv_b: ImVec2, uv_c: ImVec2, uv_d: ImVec2, col: ImU32) ---
ImDrawList_PrimWriteVtx :: proc(self: ^ImDrawList, pos: ImVec2, uv: ImVec2, col: ImU32) ---
ImDrawList_PrimWriteIdx :: proc(self: ^ImDrawList, idx: ImDrawIdx) ---
ImDrawList_PrimVtx :: proc(self: ^ImDrawList, pos: ImVec2, uv: ImVec2, col: ImU32) ---
ImDrawList__ResetForNewFrame :: proc(self: ^ImDrawList) ---
ImDrawList__ClearFreeMemory :: proc(self: ^ImDrawList) ---
ImDrawList__PopUnusedDrawCmd :: proc(self: ^ImDrawList) ---
ImDrawList__TryMergeDrawCmds :: proc(self: ^ImDrawList) ---
ImDrawList__OnChangedClipRect :: proc(self: ^ImDrawList) ---
ImDrawList__OnChangedTextureID :: proc(self: ^ImDrawList) ---
ImDrawList__OnChangedVtxOffset :: proc(self: ^ImDrawList) ---
ImDrawList__SetTextureID :: proc(self: ^ImDrawList, texture_id: ImTextureID) ---
ImDrawList__CalcCircleAutoSegmentCount :: proc(self: ^ImDrawList, radius: f32) -> i32 ---
ImDrawList__PathArcToFastEx :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, a_min_sample: i32, a_max_sample: i32, a_step: i32) ---
ImDrawList__PathArcToN :: proc(self: ^ImDrawList, center: ImVec2, radius: f32, a_min: f32, a_max: f32, num_segments: i32) ---
ImDrawData_Clear :: proc(self: ^ImDrawData) ---
ImDrawData_AddDrawList :: proc(self: ^ImDrawData, draw_list: ^ImDrawList) ---
ImDrawData_DeIndexAllBuffers :: proc(self: ^ImDrawData) ---
ImDrawData_ScaleClipRects :: proc(self: ^ImDrawData, fb_scale: ImVec2) ---
ImFontGlyphRangesBuilder_Clear :: proc(self: ^ImFontGlyphRangesBuilder) ---
ImFontGlyphRangesBuilder_GetBit :: proc(self: ^ImFontGlyphRangesBuilder, n: u32) -> b8 ---
ImFontGlyphRangesBuilder_SetBit :: proc(self: ^ImFontGlyphRangesBuilder, n: u32) ---
ImFontGlyphRangesBuilder_AddChar :: proc(self: ^ImFontGlyphRangesBuilder, c: ImWchar) ---
ImFontGlyphRangesBuilder_AddText :: proc(self: ^ImFontGlyphRangesBuilder, text: cstring, text_end: cstring) ---
ImFontGlyphRangesBuilder_AddRanges :: proc(self: ^ImFontGlyphRangesBuilder, ranges: ^ImWchar) ---
ImFontGlyphRangesBuilder_BuildRanges :: proc(self: ^ImFontGlyphRangesBuilder, out_ranges: ^ImVector_ImWchar) ---
ImFontAtlasCustomRect_IsPacked :: proc(self: ^ImFontAtlasCustomRect) -> b8 ---
ImFontAtlas_AddFont :: proc(self: ^ImFontAtlas, font_cfg: ^ImFontConfig) -> ^ImFont ---
ImFontAtlas_AddFontDefault :: proc(self: ^ImFontAtlas, font_cfg: ^ImFontConfig) -> ^ImFont ---
ImFontAtlas_AddFontFromFileTTF :: proc(self: ^ImFontAtlas, filename: cstring, size_pixels: f32, font_cfg: ^ImFontConfig, glyph_ranges: ^ImWchar) -> ^ImFont ---
ImFontAtlas_AddFontFromMemoryTTF :: proc(self: ^ImFontAtlas, font_data: rawptr, font_data_size: i32, size_pixels: f32, font_cfg: ^ImFontConfig, glyph_ranges: ^ImWchar) -> ^ImFont ---
ImFontAtlas_AddFontFromMemoryCompressedTTF :: proc(self: ^ImFontAtlas, compressed_font_data: rawptr, compressed_font_data_size: i32, size_pixels: f32, font_cfg: ^ImFontConfig, glyph_ranges: ^ImWchar) -> ^ImFont ---
ImFontAtlas_AddFontFromMemoryCompressedBase85TTF :: proc(self: ^ImFontAtlas, compressed_font_data_base85: cstring, size_pixels: f32, font_cfg: ^ImFontConfig, glyph_ranges: ^ImWchar) -> ^ImFont ---
ImFontAtlas_ClearInputData :: proc(self: ^ImFontAtlas) ---
ImFontAtlas_ClearTexData :: proc(self: ^ImFontAtlas) ---
ImFontAtlas_ClearFonts :: proc(self: ^ImFontAtlas) ---
ImFontAtlas_Clear :: proc(self: ^ImFontAtlas) ---
ImFontAtlas_Build :: proc(self: ^ImFontAtlas) -> b8 ---
ImFontAtlas_GetTexDataAsAlpha8 :: proc(self: ^ImFontAtlas, out_pixels: [^]cstring, out_width: ^i32, out_height: ^i32, out_bytes_per_pixel: ^i32) ---
ImFontAtlas_GetTexDataAsRGBA32 :: proc(self: ^ImFontAtlas, out_pixels: [^]cstring, out_width: ^i32, out_height: ^i32, out_bytes_per_pixel: ^i32) ---
ImFontAtlas_IsBuilt :: proc(self: ^ImFontAtlas) -> b8 ---
ImFontAtlas_SetTexID :: proc(self: ^ImFontAtlas, id: ImTextureID) ---
ImFontAtlas_GetGlyphRangesDefault :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesGreek :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesKorean :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesJapanese :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesChineseFull :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesChineseSimplifiedCommon :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesCyrillic :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesThai :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_GetGlyphRangesVietnamese :: proc(self: ^ImFontAtlas) -> ^ImWchar ---
ImFontAtlas_AddCustomRectRegular :: proc(self: ^ImFontAtlas, width: i32, height: i32) -> i32 ---
ImFontAtlas_AddCustomRectFontGlyph :: proc(self: ^ImFontAtlas, font: ^ImFont, id: ImWchar, width: i32, height: i32, advance_x: f32, offset: ImVec2) -> i32 ---
ImFontAtlas_GetCustomRectByIndex :: proc(self: ^ImFontAtlas, index: i32) -> ^ImFontAtlasCustomRect ---
ImFontAtlas_CalcCustomRectUV :: proc(self: ^ImFontAtlas, rect: ^ImFontAtlasCustomRect, out_uv_min: ^ImVec2, out_uv_max: ^ImVec2) ---
ImFontAtlas_GetMouseCursorTexData :: proc(self: ^ImFontAtlas, cursor: MouseCursor, out_offset: ^ImVec2, out_size: ^ImVec2, out_uv_border: ^[2]ImVec2, out_uv_fill: ^[2]ImVec2) -> b8 ---
ImFont_FindGlyph :: proc(self: ^ImFont, c: ImWchar) -> ^ImFontGlyph ---
ImFont_FindGlyphNoFallback :: proc(self: ^ImFont, c: ImWchar) -> ^ImFontGlyph ---
ImFont_GetCharAdvance :: proc(self: ^ImFont, c: ImWchar) -> f32 ---
ImFont_IsLoaded :: proc(self: ^ImFont) -> b8 ---
ImFont_GetDebugName :: proc(self: ^ImFont) -> cstring ---
ImFont_CalcTextSizeA :: proc(self: ^ImFont, size: f32, max_width: f32, wrap_width: f32, text_begin: cstring) -> ImVec2 ---
ImFont_CalcTextSizeAEx :: proc(self: ^ImFont, size: f32, max_width: f32, wrap_width: f32, text_begin: cstring, text_end: cstring, remaining: [^]cstring) -> ImVec2 ---
ImFont_CalcWordWrapPositionA :: proc(self: ^ImFont, scale: f32, text: cstring, text_end: cstring, wrap_width: f32) -> cstring ---
ImFont_RenderChar :: proc(self: ^ImFont, draw_list: ^ImDrawList, size: f32, pos: ImVec2, col: ImU32, c: ImWchar) ---
ImFont_RenderText :: proc(self: ^ImFont, draw_list: ^ImDrawList, size: f32, pos: ImVec2, col: ImU32, clip_rect: ImVec4, text_begin: cstring, text_end: cstring, wrap_width: f32, cpu_fine_clip: b8) ---
ImFont_BuildLookupTable :: proc(self: ^ImFont) ---
ImFont_ClearOutputData :: proc(self: ^ImFont) ---
ImFont_GrowIndex :: proc(self: ^ImFont, new_size: i32) ---
ImFont_AddGlyph :: proc(self: ^ImFont, src_cfg: ^ImFontConfig, c: ImWchar, x0: f32, y0: f32, x1: f32, y1: f32, u0: f32, v0: f32, u1: f32, v1: f32, advance_x: f32) ---
ImFont_AddRemapChar :: proc(self: ^ImFont, dst: ImWchar, src: ImWchar, overwrite_dst: b8) ---
ImFont_SetGlyphVisible :: proc(self: ^ImFont, c: ImWchar, visible: b8) ---
ImFont_IsGlyphRangeUnused :: proc(self: ^ImFont, c_begin: u32, c_last: u32) -> b8 ---
ImGuiViewport_GetCenter :: proc(self: ^Viewport) -> ImVec2 ---
ImGuiViewport_GetWorkCenter :: proc(self: ^Viewport) -> ImVec2 ---
}
@(default_calling_convention = "cdecl", link_prefix = "ImGui_")
foreign imgui {
PushButtonRepeat :: proc(repeat: b8) ---
PopButtonRepeat :: proc() ---
PushTabStop :: proc(tab_stop: b8) ---
PopTabStop :: proc() ---
GetContentRegionMax :: proc() -> ImVec2 ---
GetWindowContentRegionMin :: proc() -> ImVec2 ---
GetWindowContentRegionMax :: proc() -> ImVec2 ---
BeginChildFrame :: proc(id: ID, size: ImVec2) -> b8 ---
BeginChildFrameEx :: proc(id: ID, size: ImVec2, window_flags: WindowFlags) -> b8 ---
EndChildFrame :: proc() ---
ShowStackToolWindow :: proc(p_open: ^b8) ---
ComboObsolete :: proc(label: cstring, current_item: ^i32, old_callback: proc(user_data: rawptr, idx: i32, out_text: [^]cstring) -> b8, user_data: rawptr, items_count: i32) -> b8 ---
ComboObsoleteEx :: proc(label: cstring, current_item: ^i32, old_callback: proc(user_data: rawptr, idx: i32, out_text: [^]cstring) -> b8, user_data: rawptr, items_count: i32, popup_max_height_in_items: i32) -> b8 ---
ListBoxObsolete :: proc(label: cstring, current_item: ^i32, old_callback: proc(user_data: rawptr, idx: i32, out_text: [^]cstring) -> b8, user_data: rawptr, items_count: i32) -> b8 ---
ListBoxObsoleteEx :: proc(label: cstring, current_item: ^i32, old_callback: proc(user_data: rawptr, idx: i32, out_text: [^]cstring) -> b8, user_data: rawptr, items_count: i32, height_in_items: i32) -> b8 ---
SetItemAllowOverlap :: proc() ---
PushAllowKeyboardFocus :: proc(tab_stop: b8) ---
PopAllowKeyboardFocus :: proc() ---
}
ImDrawListSharedData :: struct {}
ImFontBuilderIO :: struct {}
Context :: struct {}
ImVec2 :: struct {
x: f32,
y: f32,
}
ImVec4 :: struct {
x: f32,
y: f32,
z: f32,
w: f32,
}
TableSortSpecs :: struct {
Specs: ^TableColumnSortSpecs,
SpecsCount: i32,
SpecsDirty: b8,
}
TableColumnSortSpecs :: struct {
ColumnUserID: ID,
ColumnIndex: ImS16,
SortOrder: ImS16,
SortDirection: SortDirection,
}
ImVector_ImWchar :: struct {
Size: i32,
Capacity: i32,
Data: ^ImWchar,
}
ImVector_ImGuiTextFilter_ImGuiTextRange :: struct {
Size: i32,
Capacity: i32,
Data: ^TextFilter_ImGuiTextRange,
}
ImVector_char :: struct {
Size: i32,
Capacity: i32,
Data: cstring,
}
ImVector_ImGuiStoragePair :: struct {
Size: i32,
Capacity: i32,
Data: ^StoragePair,
}
ImVector_ImGuiSelectionRequest :: struct {
Size: i32,
Capacity: i32,
Data: ^SelectionRequest,
}
ImVector_ImDrawCmd :: struct {
Size: i32,
Capacity: i32,
Data: ^ImDrawCmd,
}
ImVector_ImDrawIdx :: struct {
Size: i32,
Capacity: i32,
Data: ^ImDrawIdx,
}
ImVector_ImDrawChannel :: struct {
Size: i32,
Capacity: i32,
Data: ^ImDrawChannel,
}
ImVector_ImDrawVert :: struct {
Size: i32,
Capacity: i32,
Data: ^ImDrawVert,
}
ImVector_ImVec2 :: struct {
Size: i32,
Capacity: i32,
Data: ^ImVec2,
}
ImVector_ImVec4 :: struct {
Size: i32,
Capacity: i32,
Data: ^ImVec4,
}
ImVector_ImTextureID :: struct {
Size: i32,
Capacity: i32,
Data: ^ImTextureID,
}
ImVector_ImU8 :: struct {
Size: i32,
Capacity: i32,
Data: ^ImU8,
}
ImVector_ImDrawListPtr :: struct {
Size: i32,
Capacity: i32,
Data: ^^ImDrawList,
}
ImVector_ImU32 :: struct {
Size: i32,
Capacity: i32,
Data: ^ImU32,
}
ImVector_ImFontPtr :: struct {
Size: i32,
Capacity: i32,
Data: ^^ImFont,
}
ImVector_ImFontAtlasCustomRect :: struct {
Size: i32,
Capacity: i32,
Data: ^ImFontAtlasCustomRect,
}
ImVector_ImFontConfig :: struct {
Size: i32,
Capacity: i32,
Data: ^ImFontConfig,
}
ImVector_float :: struct {
Size: i32,
Capacity: i32,
Data: ^f32,
}
ImVector_ImFontGlyph :: struct {
Size: i32,
Capacity: i32,
Data: ^ImFontGlyph,
}
Style :: struct {
Alpha: f32,
DisabledAlpha: f32,
WindowPadding: ImVec2,
WindowRounding: f32,
WindowBorderSize: f32,
WindowMinSize: ImVec2,
WindowTitleAlign: ImVec2,
WindowMenuButtonPosition: Dir,
ChildRounding: f32,
ChildBorderSize: f32,
PopupRounding: f32,
PopupBorderSize: f32,
FramePadding: ImVec2,
FrameRounding: f32,
FrameBorderSize: f32,
ItemSpacing: ImVec2,
ItemInnerSpacing: ImVec2,
CellPadding: ImVec2,
TouchExtraPadding: ImVec2,
IndentSpacing: f32,
ColumnsMinSpacing: f32,
ScrollbarSize: f32,
ScrollbarRounding: f32,
GrabMinSize: f32,
GrabRounding: f32,
LogSliderDeadzone: f32,
TabRounding: f32,
TabBorderSize: f32,
TabMinWidthForCloseButton: f32,
TabBarBorderSize: f32,
TabBarOverlineSize: f32,
TableAngledHeadersAngle: f32,
TableAngledHeadersTextAlign: ImVec2,
ColorButtonPosition: Dir,
ButtonTextAlign: ImVec2,
SelectableTextAlign: ImVec2,
SeparatorTextBorderSize: f32,
SeparatorTextAlign: ImVec2,
SeparatorTextPadding: ImVec2,
DisplayWindowPadding: ImVec2,
DisplaySafeAreaPadding: ImVec2,
MouseCursorScale: f32,
AntiAliasedLines: b8,
AntiAliasedLinesUseTex: b8,
AntiAliasedFill: b8,
CurveTessellationTol: f32,
CircleTessellationMaxError: f32,
Colors: [Col.COUNT]ImVec4,
HoverStationaryDelay: f32,
HoverDelayShort: f32,
HoverDelayNormal: f32,
HoverFlagsForTooltipMouse: HoveredFlags,
HoverFlagsForTooltipNav: HoveredFlags,
}
KeyData :: struct {
Down: b8,
DownDuration: f32,
DownDurationPrev: f32,
AnalogValue: f32,
}
IO :: struct {
ConfigFlags: ConfigFlags,
BackendFlags: BackendFlags,
DisplaySize: ImVec2,
DeltaTime: f32,
IniSavingRate: f32,
IniFilename: cstring,
LogFilename: cstring,
UserData: rawptr,
Fonts: ^ImFontAtlas,
FontGlobalScale: f32,
FontAllowUserScaling: b8,
FontDefault: ^ImFont,
DisplayFramebufferScale: ImVec2,
ConfigNavSwapGamepadButtons: b8,
ConfigNavMoveSetMousePos: b8,
ConfigNavCaptureKeyboard: b8,
ConfigNavEscapeClearFocusItem: b8,
ConfigNavEscapeClearFocusWindow: b8,
ConfigNavCursorVisibleAuto: b8,
ConfigNavCursorVisibleAlways: b8,
MouseDrawCursor: b8,
ConfigMacOSXBehaviors: b8,
ConfigInputTrickleEventQueue: b8,
ConfigInputTextCursorBlink: b8,
ConfigInputTextEnterKeepActive: b8,
ConfigDragClickToInputText: b8,
ConfigWindowsResizeFromEdges: b8,
ConfigWindowsMoveFromTitleBarOnly: b8,
ConfigWindowsCopyContentsWithCtrlC: b8,
ConfigScrollbarScrollByPage: b8,
ConfigMemoryCompactTimer: f32,
MouseDoubleClickTime: f32,
MouseDoubleClickMaxDist: f32,
MouseDragThreshold: f32,
KeyRepeatDelay: f32,
KeyRepeatRate: f32,
ConfigErrorRecovery: b8,
ConfigErrorRecoveryEnableAssert: b8,
ConfigErrorRecoveryEnableDebugLog: b8,
ConfigErrorRecoveryEnableTooltip: b8,
ConfigDebugIsDebuggerPresent: b8,
ConfigDebugHighlightIdConflicts: b8,
ConfigDebugBeginReturnValueOnce: b8,
ConfigDebugBeginReturnValueLoop: b8,
ConfigDebugIgnoreFocusLoss: b8,
ConfigDebugIniSettings: b8,
BackendPlatformName: cstring,
BackendRendererName: cstring,
BackendPlatformUserData: rawptr,
BackendRendererUserData: rawptr,
BackendLanguageUserData: rawptr,
WantCaptureMouse: b8,
WantCaptureKeyboard: b8,
WantTextInput: b8,
WantSetMousePos: b8,
WantSaveIniSettings: b8,
NavActive: b8,
NavVisible: b8,
Framerate: f32,
MetricsRenderVertices: i32,
MetricsRenderIndices: i32,
MetricsRenderWindows: i32,
MetricsActiveWindows: i32,
MouseDelta: ImVec2,
Ctx: ^Context,
MousePos: ImVec2,
MouseDown: [5]b8,
MouseWheel: f32,
MouseWheelH: f32,
MouseSource: MouseSource,
KeyCtrl: b8,
KeyShift: b8,
KeyAlt: b8,
KeySuper: b8,
KeyMods: KeyChord,
KeysData: [Key.NamedKey_COUNT]KeyData,
WantCaptureMouseUnlessPopupClose: b8,
MousePosPrev: ImVec2,
MouseClickedPos: [5]ImVec2,
MouseClickedTime: [5]f64,
MouseClicked: [5]b8,
MouseDoubleClicked: [5]b8,
MouseClickedCount: [5]ImU16,
MouseClickedLastCount: [5]ImU16,
MouseReleased: [5]b8,
MouseDownOwned: [5]b8,
MouseDownOwnedUnlessPopupClose: [5]b8,
MouseWheelRequestAxisSwap: b8,
MouseCtrlLeftAsRightClick: b8,
MouseDownDuration: [5]f32,
MouseDownDurationPrev: [5]f32,
MouseDragMaxDistanceSqr: [5]f32,
PenPressure: f32,
AppFocusLost: b8,
AppAcceptingEvents: b8,
InputQueueSurrogate: ImWchar16,
InputQueueCharacters: ImVector_ImWchar,
// GetClipboardTextFn: proc "c" (user_data: rawptr) -> cstring,
// SetClipboardTextFn: proc "c" (user_data: rawptr, text: cstring),
ClipboardUserData: rawptr,
}
InputTextCallbackData :: struct {
Ctx: ^Context,
EventFlag: InputTextFlags,
Flags: InputTextFlags,
UserData: rawptr,
EventChar: ImWchar,
EventKey: Key,
Buf: cstring,
BufTextLen: i32,
BufSize: i32,
BufDirty: b8,
CursorPos: i32,
SelectionStart: i32,
SelectionEnd: i32,
}
SizeCallbackData :: struct {
UserData: rawptr,
Pos: ImVec2,
CurrentSize: ImVec2,
DesiredSize: ImVec2,
}
Payload :: struct {
Data: rawptr,
DataSize: i32,
SourceId: ID,
SourceParentId: ID,
DataFrameCount: i32,
DataType: [32+1]cstring,
Preview: b8,
Delivery: b8,
}
TextFilter_ImGuiTextRange :: struct {
b: cstring,
e: cstring,
}
TextFilter :: struct {
InputBuf: [256]cstring,
Filters: ImVector_ImGuiTextFilter_ImGuiTextRange,
CountGrep: i32,
}
TextBuffer :: struct {
Buf: ImVector_char,
}
StoragePair :: struct {
key: ID,
__anonymous_type0: __anonymous_type0,
}
__anonymous_type0 :: struct {
val_i: i32,
val_f: f32,
val_p: rawptr,
}
Storage :: struct {
Data: ImVector_ImGuiStoragePair,
}
ListClipper :: struct {
Ctx: ^Context,
DisplayStart: i32,
DisplayEnd: i32,
ItemsCount: i32,
ItemsHeight: f32,
StartPosY: f32,
StartSeekOffsetY: f64,
TempData: rawptr,
}
ImColor :: struct {
Value: ImVec4,
}
MultiSelectIO :: struct {
Requests: ImVector_ImGuiSelectionRequest,
RangeSrcItem: SelectionUserData,
NavIdItem: SelectionUserData,
NavIdSelected: b8,
RangeSrcReset: b8,
ItemsCount: i32,
}
SelectionRequest :: struct {
Type: SelectionRequestType,
Selected: b8,
RangeDirection: ImS8,
RangeFirstItem: SelectionUserData,
RangeLastItem: SelectionUserData,
}
SelectionBasicStorage :: struct {
Size: i32,
PreserveOrder: b8,
UserData: rawptr,
AdapterIndexToStorageId: proc "c" (self: ^SelectionBasicStorage, idx: i32) -> ID,
_SelectionOrder: i32,
_Storage: Storage,
}
SelectionExternalStorage :: struct {
UserData: rawptr,
AdapterSetItemSelected: proc "c" (self: ^SelectionExternalStorage, idx: i32, selected: b8),
}
ImDrawCmd :: struct {
ClipRect: ImVec4,
TextureId: ImTextureID,
VtxOffset: u32,
IdxOffset: u32,
ElemCount: u32,
UserCallback: ImDrawCallback,
UserCallbackData: rawptr,
UserCallbackDataSize: i32,
UserCallbackDataOffset: i32,
}
ImDrawVert :: struct {
pos: ImVec2,
uv: ImVec2,
col: ImU32,
}
ImDrawCmdHeader :: struct {
ClipRect: ImVec4,
TextureId: ImTextureID,
VtxOffset: u32,
}
ImDrawChannel :: struct {
_CmdBuffer: ImVector_ImDrawCmd,
_IdxBuffer: ImVector_ImDrawIdx,
}
ImDrawListSplitter :: struct {
_Current: i32,
_Count: i32,
_Channels: ImVector_ImDrawChannel,
}
ImDrawList :: struct {
CmdBuffer: ImVector_ImDrawCmd,
IdxBuffer: ImVector_ImDrawIdx,
VtxBuffer: ImVector_ImDrawVert,
Flags: ImDrawListFlags,
_VtxCurrentIdx: u32,
_Data: ^ImDrawListSharedData,
_VtxWritePtr: ^ImDrawVert,
_IdxWritePtr: ^ImDrawIdx,
_Path: ImVector_ImVec2,
_CmdHeader: ImDrawCmdHeader,
_Splitter: ImDrawListSplitter,
_ClipRectStack: ImVector_ImVec4,
_TextureIdStack: ImVector_ImTextureID,
_CallbacksDataBuf: ImVector_ImU8,
_FringeScale: f32,
_OwnerName: cstring,
}
ImDrawData :: struct {
Valid: b8,
CmdListsCount: i32,
TotalIdxCount: i32,
TotalVtxCount: i32,
CmdLists: ImVector_ImDrawListPtr,
DisplayPos: ImVec2,
DisplaySize: ImVec2,
FramebufferScale: ImVec2,
OwnerViewport: ^Viewport,
}
ImFontConfig :: struct {
FontData: rawptr,
FontDataSize: i32,
FontDataOwnedByAtlas: b8,
FontNo: i32,
SizePixels: f32,
OversampleH: i32,
OversampleV: i32,
PixelSnapH: b8,
GlyphExtraSpacing: ImVec2,
GlyphOffset: ImVec2,
GlyphRanges: ^ImWchar,
GlyphMinAdvanceX: f32,
GlyphMaxAdvanceX: f32,
MergeMode: b8,
FontBuilderFlags: u32,
RasterizerMultiply: f32,
RasterizerDensity: f32,
EllipsisChar: ImWchar,
Name: [40]cstring,
DstFont: ^ImFont,
}
ImFontGlyph :: struct {
Colored: u32,
Visible: u32,
Codepoint: u32,
AdvanceX: f32,
X0: f32,
Y0: f32,
X1: f32,
Y1: f32,
U0: f32,
V0: f32,
U1: f32,
V1: f32,
}
ImFontGlyphRangesBuilder :: struct {
UsedChars: ImVector_ImU32,
}
ImFontAtlasCustomRect :: struct {
X: u16,
Y: u16,
Width: u16,
Height: u16,
GlyphID: u32,
GlyphColored: u32,
GlyphAdvanceX: f32,
GlyphOffset: ImVec2,
Font: ^ImFont,
}
IM_DRAWLIST_TEX_LINES_WIDTH_MAX :: 63
ImFontAtlas :: struct {
Flags: ImFontAtlasFlags,
TexID: ImTextureID,
TexDesiredWidth: i32,
TexGlyphPadding: i32,
Locked: b8,
UserData: rawptr,
TexReady: b8,
TexPixelsUseColors: b8,
TexPixelsAlpha8: cstring,
TexPixelsRGBA32: [^]u32,
TexWidth: i32,
TexHeight: i32,
TexUvScale: ImVec2,
TexUvWhitePixel: ImVec2,
Fonts: ImVector_ImFontPtr,
CustomRects: ImVector_ImFontAtlasCustomRect,
ConfigData: ImVector_ImFontConfig,
TexUvLines: [IM_DRAWLIST_TEX_LINES_WIDTH_MAX+1]ImVec4,
FontBuilderIO: ^ImFontBuilderIO,
FontBuilderFlags: u32,
PackIdMouseCursors: i32,
PackIdLines: i32,
}
IM_UNICODE_CODEPOINT_MAX :: 0x10FFFF
ImFont :: struct {
IndexAdvanceX: ImVector_float,
FallbackAdvanceX: f32,
FontSize: f32,
IndexLookup: ImVector_ImWchar,
Glyphs: ImVector_ImFontGlyph,
FallbackGlyph: ^ImFontGlyph,
ContainerAtlas: ^ImFontAtlas,
ConfigData: ^ImFontConfig,
ConfigDataCount: i16,
EllipsisCharCount: i16,
EllipsisChar: ImWchar,
FallbackChar: ImWchar,
EllipsisWidth: f32,
EllipsisCharStep: f32,
DirtyLookupTables: b8,
Scale: f32,
Ascent: f32,
Descent: f32,
MetricsTotalSurface: i32,
Used4kPagesMap: [(IM_UNICODE_CODEPOINT_MAX +1)/4096/8]ImU8,
}
Viewport :: struct {
ID: ID,
Flags: ViewportFlags,
Pos: ImVec2,
Size: ImVec2,
WorkPos: ImVec2,
WorkSize: ImVec2,
PlatformHandle: rawptr,
PlatformHandleRaw: rawptr,
}
PlatformIO :: struct {
Platform_GetClipboardTextFn: proc "c" (ctx: ^Context) -> cstring,
Platform_SetClipboardTextFn: proc "c" (ctx: ^Context, text: cstring),
Platform_ClipboardUserData: rawptr,
Platform_OpenInShellFn: proc "c" (ctx: ^Context, path: cstring) -> b8,
Platform_OpenInShellUserData: rawptr,
Platform_SetImeDataFn: proc "c" (ctx: ^Context, viewport: ^Viewport, data: ^PlatformImeData),
Platform_ImeUserData: rawptr,
Platform_LocaleDecimalPoint: ImWchar,
Renderer_RenderState: rawptr,
}
PlatformImeData :: struct {
WantVisible: b8,
InputPos: ImVec2,
InputLineHeight: f32,
}