# Table: ImGui

# Documentation
You can find all the supported functions and overloads below.

## Windows
```lua
  -- ImGui.Begin(...)
  -- Parameters: text (name), bool (open) [O], ImGuiWindowFlags (flags) [O]
  -- Returns A: bool (shouldDraw)
  -- Returns B & C: bool (open), bool (shouldDraw)
  -- Overloads
  shouldDraw = ImGui.Begin("Name")
  shouldDraw = ImGui.Begin("Name", ImGuiWindowFlags.NoMove)
  open, shouldDraw = ImGui.Begin("Name", open)
  open, shouldDraw = ImGui.Begin("Name", open, ImGuiWindowFlags.NoMove)

  -- ImGui.End()
  ImGui.End()
```

## Child Windows
```lua
  -- ImGui.BeginChild(...)
  -- Parameters: text (name), float (size_x) [O], float (size_y) [O], bool (border) [O], ImGuiWindowFlags (flags) [O]
  -- Returns: bool (shouldDraw)
  -- Overloads
  shouldDraw = ImGui.BeginChild("Name")
  shouldDraw = ImGui.BeginChild("Name", 100)
  shouldDraw = ImGui.BeginChild("Name", 100, 200)
  shouldDraw = ImGui.BeginChild("Name", 100, 200, true)
  shouldDraw = ImGui.BeginChild("Name", 100, 200, true, ImGuiWindowFlags.NoMove)

  -- ImGui.EndChild()
  ImGui.EndChild()
```

## Windows Utilities
```lua
  -- ImGui.IsWindowAppearing()
  -- Returns: bool (appearing)
  appearing = ImGui.IsWindowAppearing()

  -- ImGui.IsWindowCollapsed()
  -- Returns: bool (collapsed)
  collapsed = ImGui.IsWindowCollapsed()

  -- ImGui.IsWindowFocused(...)
  -- Parameters: ImGuiFocusedFlags (flags) [O]
  -- Returns: bool (focused)
  -- Overloads
  focused = ImGui.IsWindowFocused()
  focused = ImGui.IsWindowFocused(ImGuiFocusedFlags.ChildWindows)

  -- ImGui.IsWindowHovered(...)
  -- Parameters: ImGuiHoveredFlags (flags) [O]
  -- Returns: bool (hovered)
  -- Overloads
  hovered = ImGui.IswindowHovered()
  hovered = ImGui.IsWindowHovered(ImGuiHoveredFlags.ChildWindows)

  -- ImGui.GetWindowDpiScale()
  -- Returns: float (dpiScale)
  dpiScale = ImGui.GetWindowDpiScale()

  -- ImGui.GetWindowPos()
  -- Returns: float (pos_x), float (pos_y)
  pos_x, pos_y = ImGui.GetWindowPos()

  -- ImGui.GetWindowSize()
  -- Returns: float (size_x), float (size_y)
  size_x, size_y = ImGui.GetWindowSize()

  -- ImGui.GetWindowWidth()
  -- Returns: float (width)
  width = ImGui.GetWindowWidth()

  -- ImGui.GetWindowHeight()
  -- Returns: float (height)
  height = ImGui.GetWindowHeight()

  -- ImGui.SetNextWindowPos(...)
  -- Parameters: float (pos_x), float (pos_y), ImGuiCond (cond) [O], float (pivot_x) [O], float (pivot_y) [O]
  -- Overloads
  ImGui.SetNextWindowPos(100, 100)
  ImGui.SetNextWindowPos(100, 100, ImGuiCond.Always)
  ImGui.SetNextWindowPos(100, 100, ImGuiCond.Always, 0, 0.5)

  -- ImGui.SetNextWindowSize(...)
  -- Parameters: float (size_x), float (size_y), ImGuiCond (cond) [O]
  -- Overloads
  ImGui.SetNextWindowSize(500, 500)
  ImGui.SetNextWindowSize(500, 500, ImGuiCond.Appearing)

  -- ImGui.SetNextWindowSizeConstraints(...)
  -- Parameters: float (min_x), float (min_y), float (max_x), float (max_y)
  ImGui.SetNextWindowSizeConstraints(100, 100, 500, 600)

  -- ImGui.SetNextWindowContentSize(...)
  -- Parameters: float (size_x), float (size_y)
  ImGui.SetNextWindowContentSize(200, 100)

  -- ImGui.SetNextWindowCollapsed(...)
  -- Parameters: bool (collapsed), ImGuiCond (cond) [O]
  -- Overloads
  ImGui.SetNextWindowCollapsed(true)
  ImGui.SetNextWindowCollapsed(true, ImGuiCond.Appearing)

  -- ImGui.SetNextWindowFocus()
  ImGui.SetNextWindowFocus()

  -- ImGui.SetNextWindowBgAlpha(...)
  -- Parameters: float (alpha)
  ImGui.SetNextWindowBgAlpha(0.5)

  -- ImGui.SetWindowPos(...)
  -- Parameters: float (pos_x), float (pos_y), ImguiCond (cond) [O]
  -- Overloads
  ImGui.SetWindowPos(100, 100)
  ImGui.SetWindowPos(100, 100, ImGuiCond.Appearing)

  -- ImGui.SetWindowSize(...)
  -- Parameters: float (size_x), float (size_y), ImguiCond (cond) [O]
  -- Overloads
  ImGui.SetWindowSize(100, 300)
  ImGui.SetWindowSize(100, 300, ImGuiCond.Appearing)

  -- ImGui.SetWindowCollapsed(...)
  -- Parameters: bool (collapsed), ImguiCond (cond) [O]
  -- Overloads
  ImGui.SetWindowCollapsed(false)
  ImGui.SetWindowCollapsed(true, ImGuiCond.Appearing)

  -- ImGui.SetWindowFocus()
  ImGui.SetWindowFocus()

  -- ImGui.SetWindowFontScale(...)
  -- Parameters: float (scale)
  ImGui.SetWindowFontScale(1.2)

  -- ImGui.SetWindowPos(...)
  -- Parameters: text (name), float (pos_x), float (pos_y), ImGuiCond (cond) [O]
  -- Overloads
  ImGui.SetWindowPos("WindowName", 100, 100)
  ImGui.SetWindowPos("WindowName", 100, 100, ImGuiCond.Always)

  -- ImGui.SetWindowSize(...)
  -- Parameters: text (name), float (size_x), float (size_y), ImGuiCond (cond) [O]
  -- Overloads
  ImGui.SetWindowSize("WindowName", 300, 400)
  ImGui.SetWindowSize("WindowName", 300, 400, ImGuiCond.Always)

  -- ImGui.SetWindowCollapsed(...)
  -- Parameters: text (name), bool (collapsed), ImGuiCond (cond) [O]
  -- Overloads
  ImGui.SetWindowCollapsed("WindowName", true)
  ImGui.SetWindowCollapsed("WindowName", false, ImGuiCond.Always)

  -- ImGui.SetWindowFocus(...)
  -- Parameters: text (name)
  ImGui.SetWindowFocus("WindowName")
```

## Content Region
```lua
  -- ImGui.GetContentRegionMax()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetContentRegionMax()

  -- ImGui.GetContentRegionAvail()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetContentRegionAvail()

  -- ImGui.GetWindowContentRegionMin()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetWindowContentRegionMin()

  -- ImGui.GetWindowContentRegionMax()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetWindowContentRegionMax()

  -- ImGui.GetWindowContentRegionWidth()
  -- Returns: float (width)
  width = ImGui.GetWindowContentRegionWidth()
```

## Windows Scrolling
```lua
  -- ImGui.GetScrollX()
  -- Returns: float (x)
  x = ImGui.GetScrollX()

  -- ImGui.GetScrollY()
  -- Returns: float (y)
  y = ImGui.GetScrollY()

  -- ImGui.GetScrollMaxX()
  -- Returns: float (x)
  x = ImGui.GetScrollMaxX()

  -- ImGui.GetScrollMaxY()
  -- Returns: float (y)
  y = ImGui.GetScrollMaxY()

  -- ImGui.SetScrollX(...)
  -- Parameters: float (scroll_x)
  ImGui.SetScrollX(0.7)

  -- ImGui.SetScrollY(...)
  -- Parameters: float (scroll_y)
  ImGui.SetScrollY(0.7)

  -- ImGui.SetScrollHereX(...)
  -- Parameters: float (center_x_ratio) [O]
  -- Overloads
  ImGui.SetScrollHereX()
  ImGui.SetScrollHereX(0.5)

  -- ImGui.SetScrollHereY(...)
  -- Parameters: float (center_y_ratio) [O]
  -- Overloads
  ImGui.SetScrollHereY()
  ImGui.SetScrollHereY(0.5)

  -- ImGui.SetScrollFromPosX(...)
  -- Parameters: float (local_x), float (center_x_ratio) [O]
  -- Overloads
  ImGui.SetScrollFromPosX(10)
  ImGui.SetScrollFromPosX(10, 0.5)

  -- ImGui.SetScrollFromPosY(...)
  -- Parameters: float (local_y), float (center_y_ratio) [O]
  -- Overloads
  ImGui.SetScrollFromPosY(10)
  ImGui.SetScrollFromPosY(10, 0.5)
```

## Parameters Stacks (Shared)
```lua
  -- ImGui.PushStyleColor(...)
  -- Parameters A: ImGuiCol (idx), int (color_u32)
  -- Parameters B: ImGuiCol (idx), float (color_r), float (color_g), float (color_b), float (color_a)
  -- Overloads
  ImGui.PushStyleColor(ImGuiCol.Tab, 0xF42069FF)
  ImGui.PushStyleColor(ImGuiCol.Border, 1, 0, 0, 1)

  -- ImGui.PopStyleColor(...)
  -- Parameters: int (count) [O]
  -- Overloads
  ImGui.PopStyleColor()
  ImGui.PopStyleColor(5)

  -- ImGui.PushStyleVar(...)
  -- Parameters A: ImGuiStyleVar (idx), float (value)
  -- Parameters B: ImGuiStyleVar (idx), float (value_x), float (value_y)
  -- Overloads
  ImGui.PushStyleVar(ImGuiStyleVar.Alpha, 0.5)
  ImGui.PushStyleVar(ImGuiStyleVar.WindowPadding, 0.2, 0.1)

  -- ImGui.PopStyleVar(...)
  -- Parameters: int (count) [O]
  ImGui.PopStyleVar()
  ImGui.PopStyleVar(2)

  -- ImGui.GetStyleColorVec4(...)
  -- Parameters: ImGuiCol (idx)
  -- Returns: float (color_r), float (color_g), float (color_b), float (color_a)
  color_r, color_g, color_b, color_a = ImGui.GetStyleColorVec4(ImGuiCol.Text)

  -- ImGui.GetFontSize()
  -- Returns: float (fontSize)
  fontSize = ImGui.GetFontSize()

  -- ImGui.GetFontTexUvWhitePixel()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetFontTexUvWhitePixel()

  -- ImGui.GetColorU32(...)
  -- Parameters A: ImGuiCol (idx), float (alphaMultiplier, usually stays at 1)
  -- Parameters B: float (color_r), float (color_g), float (color_b), float (color_a)
  -- Returns: int (color_u32)
  -- Overloads
  color_u32 = ImGui.GetColorU32(ImGuiCol.Text, 1)
  color_u32 = ImGui.GetColorU32(0, 1, 0, 1)

```

## Parameter Stacks (Current Window)
```lua
  -- ImGui.PushItemWidth(...)
  -- Parameters: float (width)
  ImGui.PushItemWidth(100)

  -- ImGui.PopItemWidth()
  ImGui.PopItemWidth()

  -- ImGui.SetNextItemWidth(...)
  -- Parameters: float (width)
  ImGui.SetNextItemWidth(100)

  -- ImGui.CalcItemWidth()
  -- Returns: float (width)
  width = ImGui.CalcItemWidth()

  -- ImGui.PushTextWrapPos(...)
  -- Parameters: float (wrap_local_pos_x) [O]
  -- Overloads
  ImGui.PushTextWrapPos()
  ImGui.PushTextWrapPos(50)

  -- ImGui.PopTextWrapPos()
  ImGui.PopTextWrapPos()

  -- ImGui.PushAllowKeyboardFocus(...)
  -- Parameters: bool (allow_keyboard_focus)
  ImGui.PushAllowKeyboardFocus(true)

  -- ImGui.PopAllowKeyboardFocus()
  ImGui.PopAllowKeyboardFocus()

  -- ImGui.PushButtonRepeat(...)
  -- Parameters: bool (repeat)
  ImGui.PushButtonRepeat(true)

  -- ImGui.PopButtonRepeat()
  ImGui.PopButtonRepeat()
```

## Cursor / Layout
```lua
  -- ImGui.Separator()
  ImGui.Separator

  -- ImGui.SeparatorText(...)
  -- Parameters: text (text)
  ImGui.SeparatorText("some text")

  -- ImGui.SameLine(...)
  -- Parameters: float (offset_from_start_x) [O], float (spacing) [O]
  -- Overloads
  ImGui.SameLine()
  ImGui.SameLine(100)
  ImGui.SameLine(100, 5)

  -- ImGui.NewLine()
  ImGui.NewLine()

  -- ImGui.Spacing()
  ImGui.Spacing()

  -- ImGui.Dummy(...)
  -- Parameters: float (size_x), float (size_y)
  ImGui.Dummy(100, 200)

  -- ImGui.Indent(...)
  -- Parameters: float (indent_w) [O]
  ImGui.Indent()
  ImGui.Indent(10)

  -- ImGui.Unindent(...)
  -- Parameters: float (indent_w) [O]
  ImGui.Unindent()
  ImGui.Unindent(-10)

  -- ImGui.BeginGroup()
  ImGui.BeginGroup()

  -- ImGui.EndGroup()
  ImGui.EndGroup()

  -- ImGui.GetCursorPos()
  -- Returns: float (x), float(y)
  x, y = ImGui.GetCursorPos()

  -- ImGui.GetCursorPosX()
  -- Returns: float (x)
  x = ImGui.GetCursorPosX()

  -- ImGui.GetCursorPosY()
  -- Returns: float (y)
  y = ImGui.GetCursorPosY()

  -- ImGui.SetCursorPos(...)
  -- Parameters: float (x), float (y)
  ImGui.SetCursorPos(10, 10)

  -- ImGui.SetCursorPosX(...)
  -- Parameters: float (x)
  ImGui.SetCursorPosX(10)

  -- ImGui.SetCursorPosY(...)
  -- Parameters: float (y)
  ImGui.SetCursorPosY(10)

  -- ImGui.GetCursorStartPos()
  -- Returns: float (x), float(y)
  x, y = ImGui.GetCursorStartPos()

  -- ImGui.GetCursorScreenPos()
  -- Returns: float (x), float(y)
  x, y = ImGui.GetCursorScreenPos()

  -- ImGui.SetCursorScreenPos(...)
  -- Parameters: float (x), float (y)
  ImGui.SetCursorScreenPos(10, 10)

  -- ImGui.AlignTextToFramePadding()
  ImGui.AlignTextToFramePadding()

  -- ImGui.GetTextLineHeight()
  -- Returns: float (height)
  height = ImGui.GetTextLineHeight()

  -- ImGui.GetTextLineHeightWithSpacing()
  -- Returns: float (height)
  height = ImGui.GetTextLineHeightWithSpacing()

  -- ImGui.GetFrameHeight()
  -- Returns: float (height)
  height = ImGui.GetFrameHeight()

  -- ImGui.GetFrameHeightWithSpacing()
  -- Returns: float (height)
  height = ImGui.GetFrameHeightWithSpacing()
```

## ID Stack / Scopes
```lua
  -- ImGui.PushID(...)
  -- Parameters A: text (str_id)
  -- Parameters B: int (int_id)
  -- Overloads
  ImGui.PushID("MyID")
  ImGui.PushID(1)

  -- ImGui.PopID()
  ImGui.PopID()

  -- ImGui.GetID(...)
  -- Parameters A: text (str_id)
  -- Returns: int (id)
  -- Overloads
  id = ImGui.GetID("MyID")
```

## Widgets: Text
```lua
  -- ImGui.TextUnformatted(...)
  -- Parameters: text (text)
  -- Overloads
  ImGui.TextUnformatted("I am Unformatted")

  -- ImGui.Text(...)
  -- Parameters: text (text)
  ImGui.Text("Well hello there, General Kenobi")

  -- ImGui.TextColored(...)
  -- Parameters: float (color_r), float (color_g), float (color_b), float (color_a), text (text)
  ImGui.TextColored(1, 0, 0, 1, "Well hello there, General Kenobi")

  -- ImGui.TextDisabled(...)
  -- Parameters: text (text)
  ImGui.TextDisabled("Well hello there, General Kenobi")

  -- ImGui.TextWrapped(...)
  -- Parameters: text (text)
  ImGui.TextWrapped("Well hello there, General Kenobi")

  -- ImGui.LabelText(...)
  -- Parameters: text (label), text (text)
  ImGui.LabelText("Well hello there", "General Kenobi")

  -- ImGui.BulletText(...)
  -- Parameters: text (text)
  ImGui.BulletText("Well hello there, General Kenobi")
```

## Widgets: Main
```lua
  -- ImGui.Button(...)
  -- Parameters: text (label), float (size_x) [O], float (size_y) [O]
  -- Returns: bool (clicked)
  -- Overloads
  clicked = ImGui.Button("Label")
  clicked = ImGui.Button("Label", 100, 50)

  -- ImGui.SmallButton(...)
  -- Parameters: text (label)
  -- Returns: bool (clicked)
  clicked = ImGui.SmallButton("Label")

  -- ImGui.InvisibleButton(...)
  -- Parameters: text (label), float (size_x), float (size_y)
  -- Returns: bool (clicked)
  clicked = ImGui.InvisibleButton("Label", 100, 50)

  -- ImGui.ArrowButton(...)
  -- Parameters: text (str_id), ImGuiDir (dir)
  -- Returns: bool (clicked)
  clicked = ImGui.ArrowButton("I have an arrow", ImGuiDir.Down)

  -- ImGui.Checkbox(...)
  -- Parameters: text (label), bool (value)
  -- Returns: bool (value), bool (pressed)
  value, pressed = ImGui.Checkbox("My Checkbox", value)

  -- ImGui.RadioButton(...)
  -- Parameters A: text (label), bool (active)
  -- Parameters B: text (label), int (value), int (v_button)
  -- Returns A: bool (pressed)
  -- Returns B: int (value), bool (pressed)
  -- Overloads
  pressed = ImGui.RadioButton("Click me", pressed == true)
  value, pressed = ImGui.RadioButton("Click me too", value, 2)

  -- ImGui.ProgressBar(...)
  -- Parameters: float (fraction), float (size_x) [O], float (size_y) [O], text (overlay) [O]
  -- Overloads
  ImGui.ProgressBar(0.5)
  ImGui.ProgressBar(0.5, 100, 25)
  ImGui.ProgressBar(0.5, 100, 25, "Loading Failed. Sike. - 50%")

  -- ImGui.Bullet()
  ImGui.Bullet()
```

## Widgets: Combo Box
```lua
  -- ImGui.BeginCombo(...)
  -- Parameters: text (label), text (previewValue), ImGuiComboFlags (flags) [O]
  -- Returns: bool (shouldDraw)
  -- Overloads
  shouldDraw = ImGui.BeginCombo("My Combo", "Preview")
  shouldDraw = ImGui.BeginCombo("My Combo", "Preview", ImGuiComboFlags.PopupAlignLeft)

  -- ImGui.EndCombo()
  ImGui.EndCombo()

  -- ImGui.Combo(...)
  -- Parameters A: text (label), int (current_item), table (items), int (items_count), int (popup_max_height_in_items) [O]
  -- Parameters B: text (label), int (current_item), text (items_separated_by_zeros), int (popup_max_height_in_items) [O]
  -- Returns: int (current_item), bool (clicked)
  -- Overloads
  current_item, clicked = ImGui.Combo("Label", current_item, { "Option 1 ", "Option 2" }, 2)
  current_item, clicked = ImGui.Combo("Label", current_item, { "Option 1 ", "Option 2" }, 2, 5)
  current_item, clicked = ImGui.Combo("Label", current_item, "Option1\0Option2\0")
  current_item, clicked = ImGui.Combo("Label", current_item, "Option1\0Option2\0", 5)
```

## Widgets: Drags
```lua
  -- ImGui.DragFloat(...)
  -- Parameters: text (label), float (value), float (value_speed) [O], float (value_min) [O], float (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: float (value), bool (used)
  -- Overloads
  value, used = ImGui.DragFloat("Label", value)
  value, used = ImGui.DragFloat("Label", value, 0.01)
  value, used = ImGui.DragFloat("Label", value, 0.01, -10)
  value, used = ImGui.DragFloat("Label", value, 0.01, -10, 10)
  value, used = ImGui.DragFloat("Label", value, 0.01, -10, 10, "%.1f")
  value, used = ImGui.DragFloat("Label", value, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragFloat2(...)
  -- Parameters: text (label), table (values), float (value_speed) [O], float (value_min) [O], float (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.DragFloat2("Label", values)
  values, used = ImGui.DragFloat2("Label", values, 0.01)
  values, used = ImGui.DragFloat2("Label", values, 0.01, -10)
  values, used = ImGui.DragFloat2("Label", values, 0.01, -10, 10)
  values, used = ImGui.DragFloat2("Label", values, 0.01, -10, 10, "%.1f")
  values, used = ImGui.DragFloat2("Label", values, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragFloat3(...)
  -- Parameters: text (label), table (values), float (value_speed) [O], float (value_min) [O], float (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.DragFloat3("Label", values)
  values, used = ImGui.DragFloat3("Label", values, 0.01)
  values, used = ImGui.DragFloat3("Label", values, 0.01, -10)
  values, used = ImGui.DragFloat3("Label", values, 0.01, -10, 10)
  values, used = ImGui.DragFloat3("Label", values, 0.01, -10, 10, "%.1f")
  values, used = ImGui.DragFloat3("Label", values, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragFloat4(...)
  -- Parameters: text (label), table (values), float (value_speed) [O], float (value_min) [O], float (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.DragFloat4("Label", values)
  values, used = ImGui.DragFloat4("Label", values, 0.01)
  values, used = ImGui.DragFloat4("Label", values, 0.01, -10)
  values, used = ImGui.DragFloat4("Label", values, 0.01, -10, 10)
  values, used = ImGui.DragFloat4("Label", values, 0.01, -10, 10, "%.1f")
  values, used = ImGui.DragFloat4("Label", values, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragInt(...)
  -- Parameters: text (label), int (value), float (value_speed) [O], int (value_min) [O], int (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: int (value), bool (used)
  -- Overloads
  value, used = ImGui.DragInt("Label", value)
  value, used = ImGui.DragInt("Label", value, 0.01)
  value, used = ImGui.DragInt("Label", value, 0.01, -10)
  value, used = ImGui.DragInt("Label", value, 0.01, -10, 10)
  value, used = ImGui.DragInt("Label", value, 0.01, -10, 10, "%d")
  value, used = ImGui.DragInt("Label", value, 0.01, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragInt2(...)
  -- Parameters: text (label), table (values), float (value_speed) [O], int (value_min) [O], int (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.DragInt2("Label", values)
  values, used = ImGui.DragInt2("Label", values, 0.01)
  values, used = ImGui.DragInt2("Label", values, 0.01, -10)
  values, used = ImGui.DragInt2("Label", values, 0.01, -10, 10)
  values, used = ImGui.DragInt2("Label", values, 0.01, -10, 10, "%d")
  values, used = ImGui.DragInt2("Label", values, 0.01, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragInt3(...)
  -- Parameters: text (label), table (values), float (value_speed) [O], int (value_min) [O], int (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.DragInt3("Label", values)
  values, used = ImGui.DragInt3("Label", values, 0.01)
  values, used = ImGui.DragInt3("Label", values, 0.01, -10)
  values, used = ImGui.DragInt3("Label", values, 0.01, -10, 10)
  values, used = ImGui.DragInt3("Label", values, 0.01, -10, 10, "%d")
  values, used = ImGui.DragInt3("Label", values, 0.01, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.DragInt4(...)
  -- Parameters: text (label), table (values), float (value_speed) [O], int (value_min) [O], int (value_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.DragInt4("Label", values)
  values, used = ImGui.DragInt4("Label", values, 0.01)
  values, used = ImGui.DragInt4("Label", values, 0.01, -10)
  values, used = ImGui.DragInt4("Label", values, 0.01, -10, 10)
  values, used = ImGui.DragInt4("Label", values, 0.01, -10, 10, "%d")
  values, used = ImGui.DragInt4("Label", values, 0.01, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)
```

## Widgets: Sliders
```lua
  -- ImGui.SliderFloat(...)
  -- Parameters: text (label), float (value), float (value_min), float (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: float (value), bool (used)
  -- Overloads
  value, used = ImGui.SliderFloat("Label", value, -10, 10)
  value, used = ImGui.SliderFloat("Label", value, -10, 10, "%.1f")
  value, used = ImGui.SliderFloat("Label", value, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderFloat2(...)
  -- Parameters: text (label), table (values), float (value_min), float (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.SliderFloat2("Label", values, 0.01, -10, 10)
  values, used = ImGui.SliderFloat2("Label", values, 0.01, -10, 10, "%.1f")
  values, used = ImGui.SliderFloat2("Label", values, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderFloat3(...)
  -- Parameters: text (label), table (values), float (value_min), float (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.SliderFloat3("Label", values, 0.01, -10, 10)
  values, used = ImGui.SliderFloat3("Label", values, 0.01, -10, 10, "%.1f")
  values, used = ImGui.SliderFloat3("Label", values, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderFloat4(...)
  -- Parameters: text (label), table (values), float (value_min), float (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.SliderFloat4("Label", values, 0.01, -10, 10)
  values, used = ImGui.SliderFloat4("Label", values, 0.01, -10, 10, "%.1f")
  values, used = ImGui.SliderFloat4("Label", values, 0.01, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderAngle(...)
  -- Parameters: text (label), float (v_rad), float (v_degrees_min) [O], float (v_degrees_max) [O], text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: float (v_rad), bool (used)
  -- Overloads
  v_rad, used = ImGui.SliderAngle("Label", v_rad)
  v_rad, used = ImGui.SliderAngle("Label", v_rad, -255)
  v_rad, used = ImGui.SliderAngle("Label", v_rad, -255, 360)
  v_rad, used = ImGui.SliderAngle("Label", v_rad, -255, 360, "%.0f deg")
  v_rad, used = ImGui.SliderAngle("Label", v_rad, -255, 360, "%.0f deg", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderInt(...)
  -- Parameters: text (label), int (value), int (value_min), int (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: int (value), bool (used)
  -- Overloads
  value, used = ImGui.SliderInt("Label", value, -10, 10)
  value, used = ImGui.SliderInt("Label", value, -10, 10, "%d")
  value, used = ImGui.SliderInt("Label", value, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderInt2(...)
  -- Parameters: text (label), table (values), int (value_min), int (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.SliderInt2("Label", values, -10, 10)
  values, used = ImGui.SliderInt2("Label", values, -10, 10, "%d")
  values, used = ImGui.SliderInt2("Label", values, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderInt3(...)
  -- Parameters: text (label), table (values), int (value_min), int (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.SliderInt3("Label", values, -10, 10)
  values, used = ImGui.SliderInt3("Label", values, -10, 10, "%d")
  values, used = ImGui.SliderInt3("Label", values, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.SliderInt4(...)
  -- Parameters: text (label), table (values), int (value_min), int (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.SliderInt4("Label", values, -10, 10)
  values, used = ImGui.SliderInt4("Label", values, -10, 10, "%d")
  values, used = ImGui.SliderInt4("Label", values, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)

  -- ImGui.VSliderFloat(...)
  -- Parameters: text (label), float (size_x), float (size_y), float (value), float (value_min), float (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: float (value), bool (used)
  -- Overloads
  value, used = ImGui.VSliderFloat("Label", 100, 25, value, -10, 10)
  value, used = ImGui.VSliderFloat("Label", 100, 25, value, -10, 10, "%.1f")
  value, used = ImGui.VSliderFloat("Label", 100, 25, value, -10, 10, "%.1f", ImGuiSliderFlags.Logarithmic)

  -- ImGui.VSliderInt(...)
  -- Parameters: text (label), float (size_x), float (size_y), int (value), int (value_min), int (value_max), text (format) [O], ImGuiSliderFlags (flags) [O]
  -- Returns: int (value), bool (used)
  -- Overloads
  value, used = ImGui.VSliderInt("Label", 100, 25, value, -10, 10)
  value, used = ImGui.VSliderInt("Label", 100, 25, value, -10, 10, "%d")
  value, used = ImGui.VSliderInt("Label", 100, 25, value, -10, 10, "%d", ImGuiSliderFlags.Logarithmic)
```

## Widgets: Input with Keyboard
```lua
  -- ImGui.InputText(...)
  -- Parameters: text (label), text (text), int (buf_size), ImGuiInputTextFlags (flags) [O]
  -- Returns: text (text), bool (selected)
  -- Overloads
  text, selected = ImGui.InputText("Label", text, 100)
  text, selected = ImGui.InputText("Label", text, 100, ImGuiInputTextFlags.ReadOnly)

  -- ImGui.InputTextMultiline(...)
  -- Parameters: text (label), text (text), int (buf_size), float (size_x) [O], float (size_y) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: text (text), bool (selected)
  -- Overloads
  text, selected = ImGui.InputTextMultiline("Label", text, 100)
  text, selected = ImGui.InputTextMultiline("Label", text, 100, 200, 35)
  text, selected = ImGui.InputTextMultiline("Label", text, 100, 200, 35, ImGuiInputTextFlags.ReadOnly)

  -- ImGui.InputTextWithHint(...)
  -- Parameters: text (label), text (hint), text (text), int (buf_size), ImGuiInputTextFlags (flags) [O]
  -- Returns: text (text), bool (selected)
  -- Overloads
  text, selected = ImGui.InputTextWithHint("Label", "Hint", text, 100)
  text, selected = ImGui.InputTextWithHint("Label", "Hint", text, 100, ImGuiInputTextFlags.ReadOnly)

  -- ImGui.InputFloat(...)
  -- Parameters: text (label), float (value), float (step) [O], float (step_fast) [O], text (format) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: float (value), bool (used)
  -- Overloads
  value, used = ImGui.InputFloat("Label", value)
  value, used = ImGui.InputFloat("Label", value, 1)
  value, used = ImGui.InputFloat("Label", value, 1, 10)
  value, used = ImGui.InputFloat("Label", value, 1, 10, "%.1f")
  value, used = ImGui.InputFloat("Label", value, 1, 10, "%.1f", ImGuiInputTextFlags.None)

  -- ImGui.InputFloat2(...)
  -- Parameters: text (label), table (values), text (format) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.InputFloat2("Label", values)
  values, used = ImGui.InputFloat2("Label", values, "%.1f")
  values, used = ImGui.InputFloat2("Label", values, "%.1f", ImGuiInputTextFlags.None)

  -- ImGui.InputFloat3(...)
  -- Parameters: text (label), table (values), text (format) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.InputFloat3("Label", values)
  values, used = ImGui.InputFloat3("Label", values, "%.1f")
  values, used = ImGui.InputFloat3("Label", values, "%.1f", ImGuiInputTextFlags.None)

  -- ImGui.InputFloat4(...)
  -- Parameters: text (label), table (values), text (format) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.InputFloat4("Label", values)
  values, used = ImGui.InputFloat4("Label", values, "%.1f")
  values, used = ImGui.InputFloat4("Label", values, "%.1f", ImGuiInputTextFlags.None)

  -- ImGui.InputInt(...)
  -- Parameters: text (label), int (value), int (step) [O], int (step_fast) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: int (value), bool (used)
  -- Overloads
  value, used = ImGui.InputInt("Label", value)
  value, used = ImGui.InputInt("Label", value, 1)
  value, used = ImGui.InputInt("Label", value, 1, 10)
  value, used = ImGui.InputInt("Label", value, 1, 10, ImGuiInputTextFlags.None)

  -- ImGui.InputInt2(...)
  -- Parameters: text (label), table (values), ImGuiInputTextFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.InputInt2("Label", values)
  values, used = ImGui.InputInt2("Label", values, ImGuiInputTextFlags.None)

  -- ImGui.InputInt3(...)
  -- Parameters: text (label), table (values), ImGuiInputTextFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.InputInt3("Label", values)
  values, used = ImGui.InputInt3("Label", values, ImGuiInputTextFlags.None)

  -- ImGui.InputInt4(...)
  -- Parameters: text (label), table (values), ImGuiInputTextFlags (flags) [O]
  -- Returns: table (values), bool (used)
  -- Overloads
  values, used = ImGui.InputInt4("Label", values)
  values, used = ImGui.InputInt4("Label", values, ImGuiInputTextFlags.None)

  -- ImGui.InputDouble(...)
  -- Parameters: text (label), double (value), double (step) [O], double (step_fast) [O], text (format) [O], ImGuiInputTextFlags (flags) [O]
  -- Returns: double (value), bool (used)
  -- Overloads
  value, used = ImGui.InputDouble("Label", value)
  value, used = ImGui.InputDouble("Label", value, 1)
  value, used = ImGui.InputDouble("Label", value, 1, 10)
  value, used = ImGui.InputDouble("Label", value, 1, 10, "%.4f")
  value, used = ImGui.InputDouble("Label", value, 1, 10, "%.4f", ImGuiInputTextFlags.None)
```

## Widgets: Color Editor / Picker
```lua
  -- ImGui.ColorEdit3(...)
  -- Parameters: text (label), table (col), ImGuiColorEditFlags (flags) [O]
  -- Returns: table (col), bool (used)
  -- Overloads
  col, used = ImGui.ColorEdit3("Label", col)
  col, used = ImGui.ColorEdit3("Label", col, ImGuiColorEditFlags.NoTooltip)

  -- ImGui.ColorEdit4(...)
  -- Parameters: text (label), table (col), ImGuiColorEditFlags (flags) [O]
  -- Returns: table (col), bool (used)
  -- Overloads
  col, used = ImGui.ColorEdit4("Label", col)
  col, used = ImGui.ColorEdit4("Label", col, ImGuiColorEditFlags.NoTooltip)

  -- ImGui.ColorPicker3(...)
  -- Parameters: text (label), table (col), ImGuiColorEditFlags (flags) [O]
  -- Returns: table (col), bool (used)
  -- Overloads
  col, used = ImGui.ColorPicker3("Label", col)
  col, used = ImGui.ColorPicker3("Label", col, ImGuiColorEditFlags.NoTooltip)

  -- ImGui.ColorPicker4(...)
  -- Parameters: text (label), table (col), ImGuiColorEditFlags (flags) [O]
  -- Returns: table (col), bool (used)
  -- Overloads
  col, used = ImGui.ColorPicker4("Label", col)
  col, used = ImGui.ColorPicker4("Label", col, ImGuiColorEditFlags.NoTooltip)

  -- ImGui.ColorButton(...)
  -- Parameters: text (desc_id), table (col), ImGuiColorEditFlags (flags) [O], float (size_x) [O], float (size_y) [O]
  -- Returns: bool (pressed)
  -- Overloads
  pressed = ImGui.ColorButton("Desc ID", { 1, 0, 0, 1 })
  pressed = ImGui.ColorButton("Desc ID", { 1, 0, 0, 1 }, ImGuiColorEditFlags.None)
  pressed = ImGui.ColorButton("Desc ID", { 1, 0, 0, 1 }, ImGuiColorEditFlags.None, 100, 100)

  -- ImGui.SetColorEditOptions(...)
  -- Parameters: ImGuiColorEditFlags (flags)
  ImGui.SetColorEditOptions(ImGuiColorEditFlags.NoTooltip | ImGuiColorEditFlags.NoInputs)
```

## Widgets: Trees
```lua
  -- ImGui.TreeNode(...)
  -- Parameters: text (label), text (fmt) [O]
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.TreeNode("Label")
  open = ImGui.TreeNode("Label", "Some Text")

  -- ImGui.TreeNodeEx(...)
  -- Parameters: text (label), ImGuiTreeNodeFlags (flags) [O], text (fmt) [O]
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.TreeNodeEx("Label")
  open = ImGui.TreeNodeEx("Label", ImGuiTreeNodeFlags.Selected)
  open = ImGui.TreeNodeEx("Label", ImGuiTreeNodeFlags.Selected, "Some Text")

  -- ImGui.TreePush(...)
  -- Parameters: text (str_id)
  ImGui.TreePush("String ID")

  -- ImGui.TreePop()
  ImGui.TreePop()

  -- ImGui.GetTreeNodeToLabelSpacing()
  -- Returns: float (spacing)
  spacing = ImGui.GetTreeNodeToLabelSpacing()

  -- ImGui.CollapsingHeader(...)
  -- Parameters A: text (label), ImGuiTreeNodeFlags (flags) [O]
  -- Parameters B: text (label), bool (open), ImGuiTreeNodeFlags (flags) [O]
  -- Returns A: bool (notCollapsed)
  -- Returns B: bool (open), bool (notCollapsed)
  -- Overloads
  notCollapsed = ImGui.CollapsingHeader("Label")
  notCollapsed = ImGui.CollapsingHeader("Label", ImGuiTreeNodeFlags.Selected)
  open, notCollapsed = ImGui.CollapsingHeader("Label", open)
  open, notCollapsed = ImGui.CollapsingHeader("Label", open, ImGuiTreeNodeFlags.Selected)

  -- ImGui.SetNextItemOpen(...)
  -- Parameters: bool (open), ImGuiCond (cond) [O]
  -- Overloads
  ImGui.SetNextItemOpen(true)
  ImGui.SetNextItemOpen(true, ImGuiCond.Always)
```

## Widgets: Selectables
```lua
  -- ImGui.Selectable(...)
  -- Parameters: text (label), bool (selected) [O], ImGuiSelectableFlags (flags) [O], float (size_x) [O], float (size_y) [O]
  -- Returns: bool (selected)
  -- Overloads
  selected = ImGui.Selectable("Label")
  selected = ImGui.Selectable("Label", selected)
  selected = ImGui.Selectable("Label", selected, ImGuiSelectableFlags.AllowDoubleClick)
  selected = ImGui.Selectable("Label", selected, ImGuiSelectableFlags.AllowDoubleClick, 100, 100)
```

## Widgets: List Boxes
```lua
  -- ImGui.ListBox(...)
  -- Parameters: text (label), int (current_item), table (items), int (items_count), int (height_in_items) [O]
  -- Returns: int (current_item), bool (clicked)
  -- Overloads
  current_item, clicked = ImGui.ListBox("Label", current_item, { "Item 1", "Item 2", 2 })
  current_item, clicked = ImGui.ListBox("Label", current_item, { "Item 1", "Item 2", 2 }, 5)

  -- ImGui.BeginListBox(...)
  -- Parameters A: text (label), float (size_x) [O], float (size_y) [O]
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginListBox("Label")
  open = ImGui.BeginListBox("Label", 100.0, 100.0)

  -- ImGui.EndListBox()
  ImGui.EndListBox()
```

## Widgets: Value() Helpers
```lua
  -- ImGui.Value(...)
  -- Parameters: text (prefix) bool/int/unsigned int/float (value), text (float_format) [O] -- format only available with float
  -- Overloads
  ImGui.Value("Prefix", true)
  ImGui.Value("Prefix", -5)
  ImGui.Value("Prefix", 5)
  ImGui.Value("Prefix", 5.0)
  ImGui.Value("Prefix", 5.0, "%.2f")
```

## Widgets: Menus
```lua
-- ImGui.BeginMenuBar()
-- Returns: bool (shouldDraw)
shouldDraw = ImGui.BeginMenuBar()

-- ImGui.EndMenuBar()
ImGui.EndMenuBar()

-- ImGui.BeginMainMenuBar()
-- Returns: bool (shouldDraw)
shouldDraw = ImGui.BeginMainMenuBar()

-- ImGui.EndMainMenuBar()
ImGui.EndMainMenuBar()

-- ImGui.BeginMenu(...)
-- Parameters: text (label), bool (enabled) [O]
-- Returns: bool (shouldDraw)
-- Overloads
shouldDraw = ImGui.BeginMenu("Label")
shouldDraw = ImGui.BeginMenu("Label", true)

-- ImGui.EndMenu()
ImGui.EndMenu()

-- ImGui.MenuItem(...)
-- Parameters A: text (label), text (shortcut) [0]
-- Parameters B: text (label), text (shortcut), bool (selected)
-- Returns A: bool (activated)
-- returns B: bool (selected), bool (activated)
-- Overloads
activated = ImGui.MenuItem("Label")
activated = ImGui.MenuItem("Label", "ALT+F4")
selected, activated = ImGui.MenuItem("Label", "ALT+F4", selected)
selected, activated = ImGui.MenuItem("Label", "ALT+F4", selected, true)
```

## Tooltips
```lua
  -- ImGui.BeginTooltip()
  ImGui.BeginTooltip()

  -- ImGui.EndTooltip()
  ImGui.EndTooltip()

  -- ImGui.SetTooltip(...)
  -- Parameters: text (fmt)
  ImGui.SetTooltip("Did you know that I have the high ground?")
```

## Popups, Modals
```lua
  -- ImGui.BeginPopup(...)
  -- Parameters: text (str_id), ImGuiWindowFlags (flags) [O]
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginPopup("String ID")
  open = ImGui.BeginPopup("String ID", ImGuiWindowFlags.NoCollapse)

  -- ImGui.BeginPopupModal(...)
  -- Parameters: text (name), bool (open) [O], ImGuiWindowFlags (flags) [O]
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginPopupModal("Name")
  open = ImGui.BeginPopupModal("Name", ImGuiWindowFlags.NoCollapse)
  open = ImGui.BeginPopupModal("Name", open)
  open = ImGui.BeginPopupModal("Name", open, ImGuiWindowFlags.NoCollapse)

  -- ImGui.EndPopup()
  ImGui.EndPopup()

  -- ImGui.OpenPopup(...)
  -- Parameters: text (str_id), ImGuiPopupFlags (popup_flags)
  -- Overloads
  ImGui.OpenPopup("String ID")
  ImGui.OpenPopup("String ID", ImGuiPopupFlags.NoOpenOverExistingPopup)

  -- ImGui.OpenPopupContextItem(...)
  -- Parameters: text (str_id), ImGuiPopupFlags (popup_flags)
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.OpenPopupContextItem()
  open = ImGui.OpenPopupContextItem("String ID")
  open = ImGui.OpenPopupContextItem("String ID", ImGuiPopupFlags.NoOpenOverExistingPopup)

  -- ImGui.CloseCurrentPopup()
  ImGui.CloseCurrentPopup()

  -- ImGui.BeginPopupContextItem(...)
  -- Parameters: text (str_id), ImGuiPopupFlags (popup_flags)
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginPopupContextItem()
  open = ImGui.BeginPopupContextItem("String ID")
  open = ImGui.BeginPopupContextItem("String ID", ImGuiPopupFlags.NoOpenOverExistingPopup)

  -- ImGui.BeginPopupContextWindow(...)
  -- Parameters: text (str_id), ImGuiPopupFlags (popup_flags)
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginPopupContextWindow()
  open = ImGui.BeginPopupContextWindow("String ID")
  open = ImGui.BeginPopupContextWindow("String ID", ImGuiPopupFlags.NoOpenOverExistingPopup)

  -- ImGui.BeginPopupContextVoid(...)
  -- Parameters: text (str_id), ImGuiPopupFlags (popup_flags)
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginPopupContextVoid()
  open = ImGui.BeginPopupContextVoid("String ID")
  open = ImGui.BeginPopupContextVoid("String ID", ImGuiPopupFlags.NoOpenOverExistingPopup)

  -- ImGui.IsPopupOpen(...)
  -- Parameters: text (str_id), ImGuiPopupFlags (popup_flags)
  -- Overloads
  ImGui.IsPopupOpen("String ID")
  ImGui.IsPopupOpen("String ID", ImGuiPopupFlags.NoOpenOverExistingPopup)
```

## Tables
```lua
  -- ImGui.BeginTable(...)
  -- Parameters: string (str_id), int (column), ImGuiTableFlags (flags) [O], float (outer_size_x) [O], float (outer_size_y) [O], float (inner_width) [O]
  -- Returns: bool
  ImGui.BeginTable("Table1", 3)
  ImGui.BeginTable("Table1", 3, ImGuiTableFlags.Resizable)
  ImGui.BeginTable("Table1", 3, ImGuiTableFlags.Resizable, 200, 150)
  ImGui.BeginTable("Table1", 3, ImGuiTableFlags.Resizable, 200, 150, 10)

  -- ImGui.EndTable() // only call EndTable() if BeginTable() returns true!
  ImGui.EndTable()

  -- ImGui.TableNextRow(...) // append into the first cell of a new row.
  -- Parameters: ImGuiTableRowFlags (flags) [O], float (min_row_height) [O]
  ImGui.TableNextRow()
  ImGui.TableNextRow(ImGuiTableRowFlags.Headers)
  ImGui.TableNextRow(ImGuiTableRowFlags.Headers, 25)

  -- ImGui.TableNextColumn() // append into the next column (or first column of next row if currently in last column). Return true when column is visible.
  -- Returns: bool (visible)
  visible = ImGui.TableNextColumn()

  -- ImGui.TableSetColumnIndex(...) // append into the specified column. Return true when column is visible.
  -- Parameter: int (column_n)
  -- Returns: bool (visible)
  visible = ImGui.TableSetColumnIndex(2)

  -- ImGui.TableSetupColumn(...)
  -- Parameters: string (label), ImGuiTableColumnFlags (flags) [O], float (init_width_or_weight) [O], ImU32 (user_id) [O]
  ImGui.TableSetupColumn("Column1")
  ImGui.TableSetupColumn("Column1", ImGuiTableColumnFlags.WidthFixed)
  ImGui.TableSetupColumn("Column1", ImGuiTableColumnFlags.WidthFixed, 60)

  -- ImGui.TableSetupScrollFreeze(...) // lock columns/rows so they stay visible when scrolled.
  -- Parameters: int (cols), int(rows)
  ImGui.TableSetupScrollFreeze(3, 1)

  -- ImGuui.TableHeadersRow() // submit all headers cells based on data provided to TableSetupColumn() + submit context menu
  ImGui.TableHeadersRow()

  -- ImGui.TableHeader(...) // submit one header cell manually (rarely used)
  -- Parameter: string (label)
  ImGui.TableHeader("Header")

  -- ImGui.TableGetSortSpecs() // get latest sort specs for the table (NULL if not sorting).
  -- Returns: ImGuiTableSortSpecs*
  ImGui.TableGetSortSpecs()

  -- ImGui.TableGetColumnCount() // return number of columns (value passed to BeginTable)
  -- Returns: int (cols)
  cols = ImGui.TableGetColumnCount()

  -- ImGui.TableGetColumnIndex() // return current column index.
  -- Returns: int (col_index)
  col_index = ImGui.TableGetColumnIndex()

  -- ImGui.TableGetRowIndex() // return current row index.
  -- Returns: int (row_index)
  row_index = ImGui.TableGetRowIndex()

  -- ImGui.TableGetColumnName(...) // return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.
  -- Parameter: int (column_n) [O]
  -- Returns: string(col_name)
  col_name = ImGui.TableGetColumnName()
  col_name = ImGui.TableGetColumnName(2)

  -- ImGui.TableGetColumnFlags(...) // return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.
  -- Parameter: int (column_n) [O]
  -- Returns: ImGuiTableColumnFlags
  col_flags = ImGui.TableGetColumnFlags()
  col_flags = ImGui.TableGetColumnFlags(2)

  -- ImGui.TableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n = -1) // change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.
  -- Parameters1: ImGuiTableBgTarget (target), ImU32 (color), int (column_n) [O]
  -- Parameters2: ImGuiTableBgTarget (target), float (col_R), float (col_G), float (col_B), float (col_A), int (column_n) [O]
  ImGui.TableSetBgColor(ImGuiTableBgTarget.CellBg, 0xF42069FF)
  ImGui.TableSetBgColor(ImGuiTableBgTarget.CellBg, 0xF42069FF, 2)
  ImGui.TableSetBgColor(ImGuiTableBgTarget.CellBg, 1, 0, 0, 1)
  ImGui.TableSetBgColor(ImGuiTableBgTarget.CellBg, 1, 0, 0, 1, 2)
```


## Columns (Legacy API, prefer using Tables!)
```lua
  -- ImGui.Columns(...)
  -- Parameters: int (count) [O], text (id) [O], bool (border) [O]
  -- Overloads
  ImGui.Columns()
  ImGui.Columns(2)
  ImGui.Columns(2, "MyOtherColumn")
  ImGui.Columns(3, "MyColumnWithBorder", true)

  -- ImGui.NextColumn()
  ImGui.NextColumn()

  -- ImGui.GetColumnIndex()
  -- Returns: int (index)
  index = ImGui.GetColumnIndex()

  -- ImGui.GetColumnWidth(...)
  -- Parameters: int (column_index) [O]
  -- Returns: float (width)
  -- Overloads
  width = ImGui.GetColumnWidth()
  width = ImGui.getColumnWidth(2)

  -- ImGui.SetColumnWidth(...)
  -- Parameters: int (column_index), float (width)
  ImGui.SetColumnWidth(2, 100)

  -- ImGui.GetColumnOffset(...)
  -- Parameters: int (column_index) [O]
  -- Returns: float (offset)
  -- Overloads
  offset = ImGui.GetColumnOffset()
  offset = ImGui.GetColumnOffset(2)

  -- ImGui.SetColumnOffset(...)
  -- Parameters: int (column_index), float (offset)
  ImGui.SetColumnOffset(2, 10)

  -- ImGui.GetColumnsCount()
  -- Returns: int (count)
  count = ImGui.GetColumnsCount()
```

## Tab Bars, Tabs
```lua
  -- ImGui.BeginTabBar(...)
  -- Parameters: text (str_id), ImGuiTabBarFlags (flags)
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginTabBar("String ID")
  open = ImGui.BeginTabBar("String ID", ImGuiTabBarFlags.Reorderable)

  -- ImGui.EndTabBar()
  ImGui.EndTabBar()

  -- ImGui.BeginTabItem()
  -- Parameters A: text (label)
  -- Parameters B: text (label), bool (open), ImGuiTabItemFlags (flags) [O]
  -- Returns A: bool (selected)
  -- Returns B: bool (open), bool (selected)
  -- Overloads
  selected = ImGui.BeginTabItem("Label")
  selected = ImGui.BeginTabItem("Label", ImGuiTabItemFlags.NoTooltip)
  open, selected = ImGui.BeginTabItem("Label", open)
  open, selected = ImGui.BeginTabItem("Label", open, ImGuiTabItemFlags.NoTooltip)

  -- ImGui.EndTabItem()
  ImGui.EndTabItem()

  -- ImGui.SetTabItemClosed(...)
  -- Parameters: text (tab_or_docked_window_label)
  ImGui.SetTabItemClosed("MyDockedWindow")
```

## Disabling
```lua
  -- ImGui.BeginDisabled()
  -- ImGui.BeginDisabled(disabled) -- bool: disabled
  -- ImGui.EndDisabled()
  ImGui.BeginDisabled()
  ImGui.BeginDisabled(false)
  ImGui.EndDisabled()
```

## Clipping
```lua
  -- ImGui.PushClipRect(...)
  -- Parameters: float (min_x), float (min_y), float (max_x), float (max_y), bool (intersect_current)
  ImGui.PushClipRect(0, 0, 100, 100, false)

  -- ImGui.PopClipRect()
  ImGui.PopClipRect()
```

## Focus, Activation
```lua
  -- ImGui.SetItemDefaultFocus()
  ImGui.SetItemDefaultFocus()

  -- ImGui.SetKeyboardFocusHere(...)
  -- Parameters: int (offset) [O]
  -- Overloads
  ImGui.SetItemDefaultFocus()
  ImGui.SetItemDefaultFocus(5)
```

## Item / Widgets Utilities
```lua
  -- ImGui.IsItemHovered(...)
  -- Parameters: ImGuiHoveredFlags (flags) [O]
  -- Returns: bool (hovered)
  -- Overloads
  hovered = ImGui.IsItemHovered()
  hovered = ImGui.IsItemHovered(ImGuiHoveredFlags.ChildWindows)

  -- ImGui.IsItemActive()
  -- Returns: bool (active)
  active = ImGui.IsItemActive()

  -- ImGui.IsItemFocused()
  -- Returns: bool (focused)
  focused = ImGui.IsItemFocused()

  -- ImGui.IsItemClicked(...)
  -- Parameters: ImGuiMouseButton (mouse_button) [O]
  -- Returns: bool (clicked)
  -- Overloads
  clicked = ImGui.IsItemClicked()
  clicked = ImGui.IsItemClicked(ImGuiMouseButton.Middle)

  -- ImGui.IsItemVisible()
  -- Returns: bool (visible)
  visible = ImGui.IsItemVisible()

  -- ImGui.IsItemEdited()
  -- Returns: bool (edited)
  edited = ImGui.IsItemEdited()

  -- ImGui.IsItemActivated()
  -- Returns: bool (activated)
  activated = ImGui.IsItemActivated()

  -- ImGui.IsItemDeactivated()
  -- Returns: bool (deactivated)
  deactivated = ImGui.IsItemDeactivated()

  -- ImGui.IsItemDeactivatedAfterEdit()
  -- Returns: bool (deactivated_after_edit)
  deactivated_after_edit = ImGui.IsItemDeactivatedAfterEdit()

  -- ImGui.IsItemToggledOpen()
  -- Returns: bool (toggled_open)
  toggled_open = ImGui.IsItemToggledOpen()

  -- ImGui.IsAnyItemHovered()
  -- Returns: bool (any_item_hovered)
  any_item_hovered = ImGui.IsAnyItemHovered()

   -- ImGui.IsAnyItemActive()
  -- Returns: bool (any_item_active)
  any_item_active = ImGui.IsAnyItemActive()

  -- ImGui.IsAnyItemFocused()
  -- Returns: bool (any_item_focused)
  any_item_focused = ImGui.IsAnyItemFocused()

  -- ImGui.GetItemRectMin()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetItemRectMin()

  -- ImGui.GetItemRectMax()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetItemRectMax()

  -- ImGui.GetItemRectSize()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetItemRectSize()

  -- ImGui.SetItemAllowOverlap()
  ImGui.SetItemAllowOverlap()
```

## Miscellaneous Utilities
```lua
  -- ImGui.IsRectVisible(...)
  -- Parameters A: float (size_x), float (size_y)
  -- Parameters B: float(min_x), float (min_y), float (max_x), float (max_y)
  -- Returns: bool (visible)
  -- Overloads
  visible = ImGui.IsRectVisible(100, 100)
  visible = ImGui.IsRectVisible(50, 50, 200, 200)

  -- ImGui.GetTime()
  -- Returns double (time)
  time = ImGui.GetTime()

  -- ImGui.GetFrameCount()
  -- Returns int (frame_count)
  frame_count = ImGui.GetFrameCount()

  -- ImGui.GetStyleColorName(...)
  -- Parameters: ImGuiCol (idx)
  -- Returns: text (style_color_name)
  style_color_name = ImGui.GetStyleColorName(ImGuiCol.Text)

  -- ImGui.BeginChildFrame(...)
  -- Parameters: unsigned int (id), float (size_x), float (size_y), ImGuiWindowFlags (flags) [O]
  -- Returns: bool (open)
  -- Overloads
  open = ImGui.BeginChildFrame(0, 100, 100)
  open = ImGui.BeginChildFrame(0, 100, 100, ImGuiWindowFlags.NoBackground)

  -- ImGui.EndChildFrame()
  ImGui.EndChildFrame()
```

## Text Utilities
```lua
  -- ImGui.CalcTextSize(...)
  -- Parameters: text (text), bool (hide_text_after_double_hash) [O], float (wrap_width) [O]
  -- Returns: float (x), float (y)
  -- Overloads
  x, y = ImGui.CalcTextSize("Calculate me")
  x, y = ImGui.CalcTextSize("Calculate me", true)
  x, y = ImGui.CalcTextSize("Calculate me", true, 100)
```

## Color Utilities
```lua
  -- ImGui.ColorConvertRGBtoHSV(...)
  -- Parameters: float (r), float (g), float (b)
  -- Returns: float (h), float (s), float (v)
  h, s, v = ImGui.ColorConvertRGBtoHSV(1, 0, 0.5)

  -- ImGui.ColorConvertHSVtoRGB(...)
  -- Parameters: float (h), float (s), float (v)
  -- Returns: float (r), float (g), float (b)
  r, g, b = ImGui.ColorConvertHSVtoRGB(1, 0, 0.5)

  -- ImGui.ColorConvertU32ToFloat4(...)
  -- Parameters: int (color_u32)
  -- Returns: float array (color_f4={r,g,b,a})
  color_f4 = ImGui.ColorConvertU32ToFloat4(0xF69420FF)

  -- ImGui.ColorConvertFloat4ToU32(...)
  -- Parameters: float array (color_f4={r,g,b,a})
  -- Returns: int (color_u32)
  -- NOTE: this function is fundamentally
  color_u32 = ImGui.ColorConvertFloat4ToU32({0.4, 0.2, 0, 1})
```

## Inputs Utilities: Mouse
```lua
  -- ImGui.IsMouseHoveringRect(...)
  -- Parameters: float (min_x), float (min_y), float(max_x), float(max_y), bool (clip) [O]
  -- Returns: bool (hovered)
  hovered = ImGui.IsMouseHoveringRect(0, 0, 100, 100)
  hovered = ImGui.IsMouseHoveringRect(0, 0, 100, 100, true)

  -- ImGui.GetMousePos()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetMousePos()

  -- ImGui.GetMousePosOnOpeningCurrentPopup()
  -- Returns: float (x), float (y)
  x, y = ImGui.GetMousePosOnOpeningCurrentPopup()

  -- ImGui.IsMouseDragging(...)
  -- Parameters: ImGuiMouseButton (button), float (lock_threshold) [O]
  -- Returns: bool (dragging)
  -- Overloads
  dragging = ImGui.IsMouseDragging(ImGuiMouseButton.Middle)
  dragging = ImGui.IsMouseDragging(ImGuiMouseButton.Middle, 0.5)

  -- ImGui.GetMouseDragDelta(...)
  -- Parameters: ImGuiMouseButton (button) [O], float (lock_threshold) [O]
  -- Returns: float (x), float (y)
  -- Overloads
  x, y = ImGui.GetMouseDragDelta()
  x, y = ImGui.GetMouseDragDelta(ImGuiMouseButton.Middle)
  x, y = ImGui.GetMouseDragDelta(ImGuiMouseButton.Middle, 0.5)

  -- ImGui.ResetMouseDragDelta(...)
  -- Parameters: ImGuiMouseButton (button) [O]
  -- Overloads
  ImGui.ResetMouseDragDelta()
  ImGui.ResetMouseDragDelta(ImGuiMouseButton.Middle)
```

## Clipboard Utilities
```lua
  -- ImGui.GetClipboardText()
  -- Returns: text (text)
  text = ImGui.GetClipboardText()

  -- ImGui.SetClipboardText(...)
  -- Parameters: text (text)
  ImGui.SetClipboardText("I made it to the clipboard!")
```