Difference between revisions of "Dear ImGui"

From GiderosMobile
(DONE)
 
(42 intermediate revisions by 2 users not shown)
Line 5: Line 5:
  
 
=== Description ===
 
=== Description ===
This is an implementation of the Dear ImGui library.
+
This is an implementation of the '''Dear ImGui''' library: '''https://github.com/ocornut/imgui'''.
See full original documentation here: https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html
 
  
 +
Dear ImGui is licensed under the '''MIT License''', see '''https://github.com/ocornut/imgui/blob/master/LICENSE.txt''' for more information.
  
To use Dear ImGui in your project you need to add the ImGui plugin and call require like so:
+
To use Dear ImGui in your project you need to add the ImGui plugin and call ''require'' like so:
<source lang="lua">
+
<syntaxhighlight lang="lua">
require 'ImGui'
+
require "ImGui"
</source>
+
</syntaxhighlight>
  
 +
Current Gideros Dear ImGui version: '''1.89.6'''.
  
'''This is a brand new plugin in Gideros Studio so it may take some time to document it thoroughly.'''
+
=== User Guide ===
 +
* Double-click on title bar to collapse window
 +
* Click and drag on lower corner to resize window (double-click to auto fit window to its contents)
 +
* CTRL+Click on a slider or drag box to input value as text
 +
* TAB/SHIFT+TAB to cycle through keyboard editable fields
 +
* CTRL+Tab to select a window
 +
* CTRL+Mouse Wheel to zoom window contents if ''io.FontAllowUserScaling'' is enabled
 +
* While inputing text:
 +
** CTRL+Left/Right to word jump
 +
** CTRL+A or double-click to select all
 +
** CTRL+X/C/V to use clipboard cut/copy/paste
 +
** CTRL+Z,CTRL+Y to undo/redo
 +
** ESCAPE to revert
 +
* With keyboard navigation enabled:
 +
** Arrow keys to navigate
 +
** Space to activate a widget
 +
** Return to input text into a widget
 +
** Escape to deactivate a widget, close popup, exit child window
 +
** Alt to jump to the menu layer of a window
  
In the meantime, the '''author's GitHub''' is the best place to get info regarding Dear ImGui Gideros functions.
+
==== Widgets ====
  https://github.com/MultiPain/Gideros_ImGui
+
'''Widgets: Color Editor/Picker'''
 +
  * tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu
  
 +
'''Widgets: Input with Keyboard'''
 +
* If you want to use InputText() with std::string or any custom dynamic string type, see misc/cpp/imgui_stdlib.h and comments in imgui_demo.cpp.
 +
* Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc.
  
'''Of course, Gideros Wiki is here to help as well. You will find below some Dear ImGui examples implemented in Gideros Studio.
+
'''Widgets: Regular Sliders'''
[[ImGui_Examples]]
+
* CTRL+Click on any slider to turn them into an input box. Manually input values aren't clamped and can go off-bounds.
 +
* Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
 +
* Format string may also be set to NULL or use the default format ("%f" or "%d").
 +
 +
If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361
  
=== Classes ===
+
'''Widgets: Drag Sliders'''
 +
* CTRL+Click on any drag box to turn them into an input box. Manually input values aren't clamped and can go off-bounds.
 +
* For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x
 +
* Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
 +
* Format string may also be set to NULL or use the default format ("%f" or "%d").
 +
* Speed are per-pixel of mouse movement (v_speed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(v_speed, minimum_step_at_given_precision).
 +
* Use v_min < v_max to clamp edits to given limits. Note that CTRL+Click manual input can override those limits.
 +
* Use v_max = FLT_MAX / INT_MAX etc to avoid clamping to a maximum, same with v_min = -FLT_MAX / INT_MIN to avoid clamping to a minimum.
 +
* We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them.
 +
 
 +
=== Gideros Dear ImGui Documentation ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
'''[[ImGui]]'''<br/><!--GIDEROSOBJ:ImGui-->
+
*'''[[Dear ImGui FAQ]]'''
'''[[ImGui.DrawList]]'''<br/><!--GIDEROSOBJ:ImGui.DrawList-->
+
*'''[[Dear ImGui Getting Started]]'''
'''[[ImGui.Style]]'''<br/><!--GIDEROSOBJ:ImGui.Style-->
+
*'''[[Dear ImGui API]]'''
 +
*'''[[Dear ImGui Enums]]'''
 +
*'''[[Dear ImGui Flags]]'''
 +
*'''[[Dear ImGui Examples]]'''
 
</div>
 
</div>
 +
 +
<!--introduction documentation (c++): https://pixtur.github.io/mkdocs-for-imgui/site/-->
 +
<!--Dear ImGui demo (c++): https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html-->
 +
<!--=== Methods ===-->
 +
<!--GIDEROSMTD:ImGui.new([font_atlas = nil, mouse_listeners = true, keyboard_listeners = true, touch_listeners = false]) initializes ImGui-->
 +
<!--GIDEROSMTD:ImGui:showLog(title, p_open [, ImGui.WindowFlags = 0]) draw log window, p_open = ImGui:showLog(...)-->
 +
<!--GIDEROSMTD:ImGui:ImGui:writeLog(text)-->
 +
<!--GIDEROSMTD:ImGui:setTouchGesturesEnabled(bool)-->
 +
<!--GIDEROSMTD:ImGui:isTouchGesturesEnabled() bool = ImGui:isTouchGesturesEnabled()-->
 +
<!--GIDEROSMTD:Imgui:getIO() local IO = Imgui:getIO()-->
 +
<!--GIDEROSMTD:IO:getFonts() local FontAtlas = IO:getFonts()-->
 +
<!--GIDEROSMTD:FontAtlas:addFont(ttf_font_path, font_size [, options]) local Font = FontAtlas:addFont(...)-->
 +
<!--GIDEROSMTD:FontAtlas:addFonts(fontsDescription)-->
 +
<!--GIDEROSMTD:FontAtlas:getFont([index]) local Font = FontAtlas:getFont(...) gets font by index (if index is 0 or nil get default font instance)-->
 +
<!--GIDEROSMTD:FontAtlas:build() call after multiple FontAtlas:addFont(...) calls to update ImGui font atlas-->
 +
<!--GIDEROSMTD:FontAtlas:clearInputData()-->
 +
<!--GIDEROSMTD:FontAtlas:clearTexData()-->
 +
<!--GIDEROSMTD:FontAtlas:clearFonts()-->
 +
<!--GIDEROSMTD:FontAtlas:clear()-->
 +
<!--GIDEROSMTD:FontAtlas:getFonts() table = FontAtlas:getFonts() returns a table with all fonts (included default)-->
 +
<!--GIDEROSMTD:FontAtlas:isBuilt() flag = FontAtlas:isBuilt()-->
 +
<!--GIDEROSMTD:FontAtlas:addCustomRectRegular(width, height) number = FontAtlas:addCustomRectRegular(...)-->
 +
<!--GIDEROSMTD:FontAtlas:addCustomRectFontGlyph(font, id, width, height, advance_x [, offset_x, offset_y]) number = FontAtlas:addCustomRectFontGlyph(...)-->
 +
<!--GIDEROSMTD:FontAtlas:getCustomRectByIndex(index) w, h, x, y, glyph_id, offset_x, offset_y, font, is_packed_flag = FontAtlas:getCustomRectByIndex(...)-->
 +
<!--GIDEROSMTD:ImGui:pushFont(font) font (table): object returned by FontAtlas:addFont(...) or FontAtlas:getFont([index])-->
 +
<!--GIDEROSMTD:ImGui:popFont()-->
 +
<!--GIDEROSMTD:Font:getSize() number = Font:getSize()-->
 +
<!--GIDEROSMTD:Font:getContainerAtlas() FontAtlas = Font:getContainerAtlas()-->
 +
<!--GIDEROSMTD:Font:setScale(number)-->
 +
<!--GIDEROSMTD:Font:getScale() number = Font:getScale()-->
 +
<!--GIDEROSMTD:Font:getAscent() number = Font:getAscent()-->
 +
<!--GIDEROSMTD:Font:getDescent() number = Font:getDescent()-->
 +
<!--GIDEROSMTD:Font:isLoaded() bool = Font:isLoaded()-->
 +
<!--GIDEROSMTD:Font:getDebugName() string = Font:getDebugName()-->
 +
<!--GIDEROSMTD:Font:calcTextSizeA(size, max_width, wrap_width, string) w, h = Font:calcTextSizeA(size, max_width, wrap_width, string)-->
 +
<!--GIDEROSMTD:Font:calcWordWrapPositionA(scale, string, wrap_width) not tested-->
 +
<!--GIDEROSMTD:ImGui:onMouseHover(event)-->
 +
<!--GIDEROSMTD:ImGui:onMouseMove(event)-->
 +
<!--GIDEROSMTD:ImGui:onMouseDown(event)-->
 +
<!--GIDEROSMTD:ImGui:onMouseUp(event)-->
 +
<!--GIDEROSMTD:ImGui:onMouseWheel(event)-->
 +
<!--GIDEROSMTD:ImGui:onTouchMove(event)-->
 +
<!--GIDEROSMTD:ImGui:onTouchBegin(event)-->
 +
<!--GIDEROSMTD:ImGui:onTouchEnd(event)-->
 +
<!--GIDEROSMTD:ImGui:onTouchCancel(event)-->
 +
<!--GIDEROSMTD:ImGui:onKeyUp(event)-->
 +
<!--GIDEROSMTD:ImGui:onKeyDown(event)-->
 +
<!--GIDEROSMTD:ImGui:onKeyChar(event)-->
 +
<!--GIDEROSMTD:ImGui:getStyle() local Style = ImGui:getStyle()-->
 +
<!--GIDEROSMTD:Style:setColor(ImGui.Col, color, alpha)-->
 +
<!--GIDEROSMTD:Style:getColor(ImGui.Col) color, alpha = Style:getColor(ImGui.Col)-->
 +
<!--GIDEROSMTD:Style:setAlpha(value)-->
 +
<!--GIDEROSMTD:Style:getAlpha() value = Style:getAlpha()-->
 +
<!--GIDEROSMTD:Style:setWindowRounding(value)-->
 +
<!--GIDEROSMTD:Style:getWindowRounding() value = Style:getWindowRounding()-->
 +
<!--GIDEROSMTD:Style:setWindowBorderSize(value)-->
 +
<!--GIDEROSMTD:Style:getWindowBorderSize() value = Style:getWindowBorderSize()-->
 +
<!--GIDEROSMTD:Style:setChildRounding(value)-->
 +
<!--GIDEROSMTD:Style:getChildRounding() value = Style:getChildRounding()-->
 +
<!--GIDEROSMTD:Style:setChildBorderSize(value)-->
 +
<!--GIDEROSMTD:Style:getChildBorderSize() value = Style:getChildBorderSize()-->
 +
<!--GIDEROSMTD:Style:setPopupRounding(value)-->
 +
<!--GIDEROSMTD:Style:getPopupRounding() value = Style:getPopupRounding()-->
 +
<!--GIDEROSMTD:Style:setPopupBorderSize(value)-->
 +
<!--GIDEROSMTD:Style:getPopupBorderSize() value = Style:getPopupBorderSize()-->
 +
<!--GIDEROSMTD:Style:setFrameRounding(value)-->
 +
<!--GIDEROSMTD:Style:getFrameRounding() value = Style:getFrameRounding()-->
 +
<!--GIDEROSMTD:Style:setFrameBorderSize(value)-->
 +
<!--GIDEROSMTD:Style:getFrameBorderSize() value = Style:getFrameBorderSize()-->
 +
<!--GIDEROSMTD:Style:setIndentSpacing(value)-->
 +
<!--GIDEROSMTD:Style:getIndentSpacing() value = Style:getIndentSpacing()-->
 +
<!--GIDEROSMTD:Style:setColumnsMinSpacing(value)-->
 +
<!--GIDEROSMTD:Style:getColumnsMinSpacing() value = Style:getColumnsMinSpacing()-->
 +
<!--GIDEROSMTD:Style:setScrollbarSize(value)-->
 +
<!--GIDEROSMTD:Style:getScrollbarSize() value = Style:getScrollbarSize()-->
 +
<!--GIDEROSMTD:Style:setScrollbarRounding(value)-->
 +
<!--GIDEROSMTD:Style:getScrollbarRounding() value = Style:getScrollbarRounding()-->
 +
<!--GIDEROSMTD:Style:setGrabMinSize(value)-->
 +
<!--GIDEROSMTD:Style:getGrabMinSize() value = Style:getGrabMinSize()-->
 +
<!--GIDEROSMTD:Style:setGrabRounding(value)-->
 +
<!--GIDEROSMTD:Style:getGrabRounding() value = Style:getGrabRounding()-->
 +
<!--GIDEROSMTD:Style:setLogSliderDeadzone(value)-->
 +
<!--GIDEROSMTD:Style:getLogSliderDeadzone() value = Style:getLogSliderDeadzone()-->
 +
<!--GIDEROSMTD:Style:setTabRounding(value)-->
 +
<!--GIDEROSMTD:Style:getTabRounding() value = Style:getTabRounding()-->
 +
<!--GIDEROSMTD:Style:setTabBorderSize(value)-->
 +
<!--GIDEROSMTD:Style:getTabBorderSize() value = Style:getTabBorderSize()-->
 +
<!--GIDEROSMTD:Style:setTabMinWidthForCloseButton(value)-->
 +
<!--GIDEROSMTD:Style:getTabMinWidthForCloseButton() value = Style:getTabMinWidthForCloseButton()-->
 +
<!--GIDEROSMTD:Style:setMouseCursorScale(value)-->
 +
<!--GIDEROSMTD:Style:getMouseCursorScale() value = Style:getMouseCursorScale()-->
 +
<!--GIDEROSMTD:Style:setCurveTessellationTol(value)-->
 +
<!--GIDEROSMTD:Style:getCurveTessellationTol() value = Style:getCurveTessellationTol()-->
 +
<!--GIDEROSMTD:Style:setCircleSegmentMaxError(value)-->
 +
<!--GIDEROSMTD:Style:getCircleSegmentMaxError() value = Style:getCircleSegmentMaxError()-->
 +
<!--GIDEROSMTD:Style:setWindowPadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getWindowPadding() x, y = Style:getWindowPadding()-->
 +
<!--GIDEROSMTD:Style:setWindowMinSize(x, y)-->
 +
<!--GIDEROSMTD:Style:getWindowMinSize() x, y = Style:getWindowMinSize()-->
 +
<!--GIDEROSMTD:Style:setWindowTitleAlign(x, y)-->
 +
<!--GIDEROSMTD:Style:getWindowTitleAlign() x, y = Style:getWindowTitleAlign()-->
 +
<!--GIDEROSMTD:Style:setFramePadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getFramePadding() x, y = Style:getFramePadding()-->
 +
<!--GIDEROSMTD:Style:setCellPadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getCellPadding() x, y = Style:getCellPadding()-->
 +
<!--GIDEROSMTD:Style:setItemSpacing(x, y)-->
 +
<!--GIDEROSMTD:Style:getItemSpacing() x, y = Style:getItemSpacing()-->
 +
<!--GIDEROSMTD:Style:setItemInnerSpacing(x, y)-->
 +
<!--GIDEROSMTD:Style:getItemInnerSpacing() x, y = Style:getItemInnerSpacing()-->
 +
<!--GIDEROSMTD:Style:setTouchExtraPadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getTouchExtraPadding() x, y = Style:getTouchExtraPadding()-->
 +
<!--GIDEROSMTD:Style:setButtonTextAlign(x, y)-->
 +
<!--GIDEROSMTD:Style:getButtonTextAlign() x, y = Style:getButtonTextAlign()-->
 +
<!--GIDEROSMTD:Style:setSelectableTextAlign(x, y)-->
 +
<!--GIDEROSMTD:Style:getSelectableTextAlign() x, y = Style:getSelectableTextAlign()-->
 +
<!--GIDEROSMTD:Style:setDisplayWindowPadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getDisplayWindowPadding() x, y = Style:getDisplayWindowPadding()-->
 +
<!--GIDEROSMTD:Style:setDisplaySafeAreaPadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getDisplaySafeAreaPadding() x, y = Style:getDisplaySafeAreaPadding()-->
 +
<!--GIDEROSMTD:Style:setWindowMenuButtonPosition(ImGui.Dir)-->
 +
<!--GIDEROSMTD:Style:getWindowMenuButtonPosition() dir = Style:getWindowMenuButtonPosition()-->
 +
<!--GIDEROSMTD:Style:setColorButtonPosition(ImGui.Dir)-->
 +
<!--GIDEROSMTD:Style:getColorButtonPosition() dir = Style:getColorButtonPosition()-->
 +
<!--GIDEROSMTD:Style:setAntiAliasedLines(flag)-->
 +
<!--GIDEROSMTD:Style:getAntiAliasedLines() flag = Style:getAntiAliasedLines()-->
 +
<!--GIDEROSMTD:Style:setAntiAliasedLinesUseTex(flag)-->
 +
<!--GIDEROSMTD:Style:getAntiAliasedLinesUseTex() flag = Style:getAntiAliasedLinesUseTex()-->
 +
<!--GIDEROSMTD:Style:setAntiAliasedFill(flag)-->
 +
<!--GIDEROSMTD:Style:getAntiAliasedFill() flag = Style:getAntiAliasedFill()-->
 +
<!--GIDEROSMTD:Style:setDisabledAlpha(number)-->
 +
<!--GIDEROSMTD:Style:getDisabledAlpha() alpha = Style:getDisabledAlpha()-->
 +
<!--GIDEROSMTD:Style:setSeparatorTextBorderSize(number)-->
 +
<!--GIDEROSMTD:Style:getSeparatorTextBorderSize() number = Style:getSeparatorTextBorderSize()-->
 +
<!--GIDEROSMTD:Style:setSeparatorTextAlign(x, y)-->
 +
<!--GIDEROSMTD:Style:getSeparatorTextAlign() x, y = Style:getSeparatorTextAlign()-->
 +
<!--GIDEROSMTD:Style:setSeparatorTextPadding(x, y)-->
 +
<!--GIDEROSMTD:Style:getSeparatorTextPadding() x, y = Style:getSeparatorTextPadding()-->
 +
<!--GIDEROSMTD:ImGui:setDarkStyle()-->
 +
<!--GIDEROSMTD:ImGui:setLightStyle()-->
 +
<!--GIDEROSMTD:ImGui:setClassicStyle()-->
 +
<!--GIDEROSMTD:ImGui.colorConvertHEXtoRGB(color [, alpha = 1]) r, g, b, a = ImGui.colorConvertHEXtoRGB(color [, alpha = 1])-->
 +
<!--GIDEROSMTD:ImGui.colorConvertRGBtoHEX(r, g, b) hex = ImGui.colorConvertRGBtoHEX(r, g, b)-->
 +
<!--GIDEROSMTD:ImGui.colorConvertRGBtoHSV(r, g, b) h, s, v = ImGui.colorConvertRGBtoHSV(r, g, b)-->
 +
<!--GIDEROSMTD:ImGui.colorConvertHSVtoRGB(h, s, v) r, g, b = ImGui.colorConvertHSVtoRGB(h, s, v)-->
 +
<!--GIDEROSMTD:ImGui.colorConvertHEXtoHSV(hex) h, s, v = ImGui.colorConvertHEXtoHSV(hex)-->
 +
<!--GIDEROSMTD:ImGui.colorConvertHSVtoHEX(h, s, v) hex = ImGui.colorConvertHSVtoHEX(h, s, v)-->
 +
<!--GIDEROSMTD:IO:setFontDefault(font)-->
 +
<!--GIDEROSMTD:IO:getConfigFlags() local ImGuiConfigFlag = IO:getConfigFlags()-->
 +
<!--GIDEROSMTD:IO:setConfigFlags(ImGui.ConfigFlag)-->
 +
<!--GIDEROSMTD:IO:addConfigFlags(ImGui.ConfigFlag)-->
 +
<!--GIDEROSMTD:IO:getBackendFlags() local ImGuiBackendFlag = IO:getBackendFlags()-->
 +
<!--GIDEROSMTD:IO:setBackendFlags(ImGui.BackendFlag)-->
 +
<!--GIDEROSMTD:IO:getIniSavingRate() number = IO:getIniSavingRate()-->
 +
<!--GIDEROSMTD:IO:setIniSavingRate(number)-->
 +
<!--GIDEROSMTD:IO:getIniFilename() string = IO:getIniFilename()-->
 +
<!--GIDEROSMTD:IO:setIniFilename(string)-->
 +
<!--GIDEROSMTD:IO:saveIniSettings([path]) -- if path is not defined it uses default path, which is set by IO:setIniFilename()-->
 +
<!--GIDEROSMTD:IO:loadIniSettings([path])-->
 +
<!--GIDEROSMTD:IO:getLogFilename() string = IO:getLogFilename()-->
 +
<!--GIDEROSMTD:IO:setLogFilename(string)-->
 +
<!--GIDEROSMTD:IO:getMouseDoubleClickTime() number = IO:getMouseDoubleClickTime()-->
 +
<!--GIDEROSMTD:IO:setMouseDoubleClickTime(number)-->
 +
<!--GIDEROSMTD:IO:getMouseDragThreshold() number = IO:getMouseDragThreshold()-->
 +
<!--GIDEROSMTD:IO:setMouseDragThreshold(number)-->
 +
<!--GIDEROSMTD:IO:getMouseDrawCursor() flag = IO:getMouseDrawCursor()-->
 +
<!--GIDEROSMTD:IO:setMouseDrawCursor(flag)-->
 +
<!--GIDEROSMTD:IO:getMouseDoubleClickMaxDist() number = IO:getMouseDoubleClickMaxDist()-->
 +
<!--GIDEROSMTD:IO:setMouseDoubleClickMaxDist(number)-->
 +
<!--GIDEROSMTD:IO:getKeyRepeatDelay() number = IO:getKeyRepeatDelay()-->
 +
<!--GIDEROSMTD:IO:setKeyRepeatDelay(number)-->
 +
<!--GIDEROSMTD:IO:getKeyRepeatRate() number = IO:getKeyRepeatRate()-->
 +
<!--GIDEROSMTD:IO:setKeyRepeatRate(number)-->
 +
<!--GIDEROSMTD:IO:getFontGlobalScale() number = IO:getFontGlobalScale()-->
 +
<!--GIDEROSMTD:IO:setFontGlobalScale(number)-->
 +
<!--GIDEROSMTD:IO:getFontAllowUserScaling() bool = IO:getFontAllowUserScaling()-->
 +
<!--GIDEROSMTD:IO:setFontAllowUserScaling(bool)-->
 +
<!--GIDEROSMTD:IO:getDisplayFramebufferScale() number, number = IO:getDisplayFramebufferScale()-->
 +
<!--GIDEROSMTD:IO:setDisplayFramebufferScale(number, number)-->
 +
<!--GIDEROSMTD:IO:getConfigMacOSXBehaviors() bool = IO:getConfigMacOSXBehaviors()-->
 +
<!--GIDEROSMTD:IO:setConfigMacOSXBehaviors(bool)-->
 +
<!--GIDEROSMTD:IO:getConfigInputTextCursorBlink() bool = IO:getConfigInputTextCursorBlink()-->
 +
<!--GIDEROSMTD:IO:setConfigInputTextCursorBlink(bool)-->
 +
<!--GIDEROSMTD:IO:getConfigWindowsResizeFromEdges() bool = IO:getConfigWindowsResizeFromEdges()-->
 +
<!--GIDEROSMTD:IO:setConfigWindowsResizeFromEdges(bool)-->
 +
<!--GIDEROSMTD:IO:getConfigWindowsMoveFromTitleBarOnly() bool = IO:getConfigWindowsMoveFromTitleBarOnly()-->
 +
<!--GIDEROSMTD:IO:setConfigWindowsMoveFromTitleBarOnly(bool)-->
 +
<!--GIDEROSMTD:IO:getConfigWindowsMemoryCompactTimer() number = IO:getConfigWindowsMemoryCompactTimer()-->
 +
<!--GIDEROSMTD:IO:setConfigWindowsMemoryCompactTimer(number)-->
 +
<!--GIDEROSMTD:IO:getBackendPlatformName() string = IO:getBackendPlatformName()-->
 +
<!--GIDEROSMTD:IO:getBackendRendererName() string = IO:getBackendRendererName()-->
 +
<!--GIDEROSMTD:IO:IsMouseDown(button) bool = IO:IsMouseDown(button)-->
 +
<!--GIDEROSMTD:IO:getMouseWheel() number = IO:getMouseWheel()-->
 +
<!--GIDEROSMTD:IO:getMouseWheelH() number = IO:getMouseWheelH()-->
 +
<!--GIDEROSMTD:IO:wantCaptureMouse() flag = IO:wantCaptureMouse()-->
 +
<!--GIDEROSMTD:IO:wantCaptureKeyboard() flag = IO:wantCaptureKeyboard()-->
 +
<!--GIDEROSMTD:IO:wantTextInput() flag = IO:wantTextInput()-->
 +
<!--GIDEROSMTD:IO:wantSetMousePos() flag = IO:wantSetMousePos()-->
 +
<!--GIDEROSMTD:IO:wantSaveIniSettings() flag = IO:wantSaveIniSettings()-->
 +
<!--GIDEROSMTD:IO:getFramerate() number = IO:getFramerate()-->
 +
<!--GIDEROSMTD:IO:getMetricsRenderVertices() number = IO:getMetricsRenderVertices()-->
 +
<!--GIDEROSMTD:IO:getMetricsRenderIndices() number = IO:getMetricsRenderIndices()-->
 +
<!--GIDEROSMTD:IO:getMetricsRenderWindows() number = IO:getMetricsRenderWindows()-->
 +
<!--GIDEROSMTD:IO:getMetricsActiveWindows() number = IO:getMetricsActiveWindows()-->
 +
<!--GIDEROSMTD:IO:getMetricsActiveAllocations() number = IO:getMetricsActiveAllocations()-->
 +
<!--GIDEROSMTD:IO:getMouseDelta() x, y = IO:getMouseDelta()-->
 +
<!--GIDEROSMTD:IO:getMouseDownSec(mouse_button) number = IO:getMouseDownSec(mouse_button)-->
 +
<!--GIDEROSMTD:IO:setDisplaySize(w, h)-->
 +
<!--GIDEROSMTD:IO:getDisplaySize() w, h = IO:getDisplaySize()-->
 +
<!--GIDEROSMTD:IO:getDeltaTime() number = IO:getDeltaTime()-->
 +
<!--GIDEROSMTD:IO:resetMouseDown() reset mouse buttons state-->
 +
<!--GIDEROSMTD:IO:resetKeysDown() reset key states (including ALT/SHIFT/CTRL/SUPER (META))-->
 +
<!--GIDEROSMTD:IO:setModKeyDown(key_code, bool) set ALT/SHIFT/CTRL/SUPER (META) key state ("key_code" is a gideros MOD key)-->
 +
<!--GIDEROSMTD:IO:setKeysDown(key_code, bool) set any key state ("key_code" is a Gideros regular "keyCode")-->
 +
<!--GIDEROSMTD:IO:addInputCharactersUTF8(text) adds text to active text input widget-->
 +
<!--GIDEROSMTD:IO:setMouseWheel(number) emulate wheel scrolling-->
 +
<!--GIDEROSMTD:IO:setMousePos(x, y) sets mouse position (data only, no visual changes)-->
 +
<!--GIDEROSMTD:IO:setMouseDown(mouse_button, state) set mouse state, where index: 0 - left mouse, 1 - right, 2 - middle, 3 - unused, 4 - unused ("mouse_button" is a Gideros mouse button code)-->
 +
<!--GIDEROSMTD:IO:addKeyEvent(key, down) "key" is any ImGui KeyCode (check keyboard-keys), "down" is a boolean-->
 +
<!--GIDEROSMTD:IO:addKeyAnalogEvent(key, down, number) "key" is any ImGui KeyCode (check keyboard-keys), "down" is a boolean-->
 +
<!--GIDEROSMTD:IO:addMousePosEvent(x, y)-->
 +
<!--GIDEROSMTD:IO:addMouseButtonEvent(button, down) "button" is any ImGui button (check MouseButton), "down" is a boolean-->
 +
<!--GIDEROSMTD:IO:addMouseWheelEvent(x, y)-->
 +
<!--GIDEROSMTD:IO:setAppAcceptingEvents([accepting_events = true])-->
 +
<!--GIDEROSMTD:ImGui:getHoveredWindow() string OR nil = ImGui:getHoveredWindow()-->
 +
<!--GIDEROSMTD:ImGui:getHoveredWindowRoot() string OR nil = ImGui:getHoveredWindowRoot()-->
 +
<!--GIDEROSMTD:ImGui:getHoveredWindowUnderMovingWindow() string OR nil = ImGui:getHoveredWindowUnderMovingWindow()-->
 +
<!--GIDEROSMTD:ImGui:getMovingWindow() string OR nil = ImGui:getMovingWindow()-->
 +
<!--GIDEROSMTD:ImGui:getActiveIdWindow() string OR nil = ImGui:getActiveIdWindow()-->
 +
<!--GIDEROSMTD:ImGui:getActiveId() id = ImGui:getActiveId()-->
 +
<!--GIDEROSMTD:ImGui:getActiveIdPreviousFrame() id = ImGui:getActiveIdPreviousFrame()-->
 +
<!--GIDEROSMTD:ImGui:getActiveIdTimer() number = ImGui:getActiveIdTimer()-->
 +
<!--GIDEROSMTD:ImGui:getActiveIdAllowOverlap() id = ImGui:getActiveIdAllowOverlap()-->
 +
<!--GIDEROSMTD:ImGui:getHoveredId() id = ImGui:getHoveredId()-->
 +
<!--GIDEROSMTD:ImGui:getHoveredIdPreviousFrame() id = ImGui:getHoveredIdPreviousFrame()-->
 +
<!--GIDEROSMTD:ImGui:getHoveredIdTimer() number = ImGui:getHoveredIdTimer()-->
 +
<!--GIDEROSMTD:ImGui:getHoveredIdAllowOverlap() id = ImGui:getHoveredIdAllowOverlap()-->
 +
<!--GIDEROSMTD:ImGui:getDragDropActive() bool = ImGui:getDragDropActive()-->
 +
<!--GIDEROSMTD:ImGui:getDragDropPayloadSourceId() id = ImGui:getDragDropPayloadSourceId()-->
 +
<!--GIDEROSMTD:ImGui:getDragDropPayloadDataType() string = ImGui:getDragDropPayloadDataType()-->
 +
<!--GIDEROSMTD:ImGui:getDragDropPayloadDataSize() number = ImGui:getDragDropPayloadDataSize()-->
 +
<!--GIDEROSMTD:ImGui:beginWindow(label, p_open [, ImGui.WindowFlags = 0]) p_open, draw = ImGui:beginWindow(...)-->
 +
<!--GIDEROSMTD:ImGui:beginWindow(label, nil [, ImGui.WindowFlags = 0]) draw = ImGui:beginWindow(...), do not show "X" button-->
 +
<!--GIDEROSMTD:ImGui:beginFullScreenWindow(label, p_open [, ImGui.WindowFlags = 0]) p_open, draw = ImGui:beginFullScreenWindow(...), start a window with no borders, no paddings, no rounding and ImGui.WindowFlags_Fullscreen flag-->
 +
<!--GIDEROSMTD:ImGui:beginFullScreenWindow(label, nil [, ImGui.WindowFlags = 0]) draw = ImGui:beginFullScreenWindow(...), do not show "X" button-->
 +
<!--GIDEROSMTD:ImGui:endWindow()-->
 +
<!--GIDEROSMTD:ImGui:beginDisabled(disabledFlag)-->
 +
<!--GIDEROSMTD:ImGui:endDisabled()-->
 +
<!--GIDEROSMTD:ImGui:beginChild(id [, w = 0, h = 0, borderFlag = false, ImGui.WindowFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:endChild()-->
 +
<!--GIDEROSMTD:ImGui:isWindowAppearing() flag = ImGui:isWindowAppearing()-->
 +
<!--GIDEROSMTD:ImGui:isWindowCollapsed() flag = ImGui:isWindowCollapsed()-->
 +
<!--GIDEROSMTD:ImGui:isWindowFocused([ImGui.FocusedFlags = 0]) flag = ImGui:isWindowFocused([ImGui.FocusedFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:isWindowHovered([ImGui.HoveredFlags = 0]) flag = ImGui:isWindowHovered([ImGui.HoveredFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:getWindowPos() x, y = ImGui:getWindowPos()-->
 +
<!--GIDEROSMTD:ImGui:getWindowSize() w, h = ImGui:getWindowSize()-->
 +
<!--GIDEROSMTD:ImGui:getWindowWidth() w = ImGui:getWindowWidth()-->
 +
<!--GIDEROSMTD:ImGui:getWindowHeight() h = ImGui:getWindowHeight()-->
 +
<!--GIDEROSMTD:ImGui:getWindowBounds() x1,y1, x2,y2 = ImGui:getWindowBounds(), returns window region rectangle in global coordinates-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowPos(x, y [, ImGui.Cond = 0, pivotX = 0, pivotY = 0])-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowSize(w, h [, ImGui.Cond = 0])-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowContentSize(w, h)-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowCollapsed(flag [, ImGui.Cond = 0])-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowFocus()-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowBgAlpha(alpha)-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowScroll(x, y)-->
 +
<!--GIDEROSMTD:ImGui:setWindowPos(name, x, y [, ImGui.Cond = 0]) OR ImGui:setWindowPos(x, y [, ImGui.Cond = 0])-->
 +
<!--GIDEROSMTD:ImGui:setWindowSize(name, w, h [, ImGui.Cond = 0]) OR ImGui:setWindowSize(w, h [, ImGui.Cond = 0])-->
 +
<!--GIDEROSMTD:ImGui:setWindowCollapsed(name, flag [, ImGui.Cond = 0]) OR ImGui:setWindowCollapsed(flag [, ImGui.Cond = 0])-->
 +
<!--GIDEROSMTD:ImGui:setWindowFocus(name) OR ImGui:setWindowFocus()-->
 +
<!--GIDEROSMTD:ImGui:setWindowFontScale(scale)-->
 +
<!--GIDEROSMTD:ImGui:scrollWhenDragging(x, y) scroll window when touching void-->
 +
<!--GIDEROSMTD:ImGui:setNextWindowSizeConstraints(min_w, min_h, max_w, max_h [, resize_callback, user_data])) call this function before ImGui:beginWindow()-->
 +
<!--GIDEROSMTD:callbackData:getPos() x, y = callbackData:getPos(), get window position-->
 +
<!--GIDEROSMTD:callbackData:getX() x = callbackData:getX()-->
 +
<!--GIDEROSMTD:callbackData:getY() y = callbackData:getY()-->
 +
<!--GIDEROSMTD:callbackData:getCurrentSize() current_width, current_height = callbackData:getCurrentSize(), get currrent size-->
 +
<!--GIDEROSMTD:callbackData:getCurrentWidth() current_width = callbackData:getCurrentWidth()-->
 +
<!--GIDEROSMTD:callbackData:getCurrentHeight() current_height = callbackData:getCurrentHeight()-->
 +
<!--GIDEROSMTD:callbackData:getDesiredSize() desired_width, desired_height = callbackData:getDesiredSize() -- get desired size-->
 +
<!--GIDEROSMTD:callbackData:getDesiredWidth() desired_width = callbackData:getDesiredWidth()-->
 +
<!--GIDEROSMTD:callbackData:getDesiredHeight() desired_height = callbackData:getDesiredHeight()-->
 +
<!--GIDEROSMTD:ImGui:getContentRegionMax() scaleX, scaleY = ImGui:getContentRegionMax()-->
 +
<!--GIDEROSMTD:ImGui:getContentRegionAvail() w, h = ImGui:getContentRegionAvail()-->
 +
<!--GIDEROSMTD:ImGui:getWindowContentRegionMin() x, y = ImGui:getWindowContentRegionMin()-->
 +
<!--GIDEROSMTD:ImGui:getWindowContentRegionMax() x, y = ImGui:getWindowContentRegionMax()-->
 +
<!--GIDEROSMTD:ImGui:getScrollX() x = ImGui:getScrollX()-->
 +
<!--GIDEROSMTD:ImGui:getScrollY() y = ImGui:getScrollY()-->
 +
<!--GIDEROSMTD:ImGui:getScrollMaxX() maxX = ImGui:getScrollMaxX()-->
 +
<!--GIDEROSMTD:ImGui:getScrollMaxY() maxY = ImGui:getScrollMaxY()-->
 +
<!--GIDEROSMTD:ImGui:setScrollX(value)-->
 +
<!--GIDEROSMTD:ImGui:setScrollY(value)-->
 +
<!--GIDEROSMTD:ImGui:setScrollHereX([ratio = 0.5])-->
 +
<!--GIDEROSMTD:ImGui:setScrollHereY([ratio = 0.5])-->
 +
<!--GIDEROSMTD:ImGui:setScrollFromPosX(x [, ratio = 0.5])-->
 +
<!--GIDEROSMTD:ImGui:setScrollFromPosY(y [, ratio = 0.5])-->
 +
<!--GIDEROSMTD:ImGui:pushStyleColor(ImGui.Col, color, alpha)-->
 +
<!--GIDEROSMTD:ImGui:popStyleColor([count = 1])-->
 +
<!--GIDEROSMTD:ImGui:pushStyleVar(ImGui.StyleVar, value) OR ImGui:pushStyleVar(ImGui.StyleVar, value1, value2)-->
 +
<!--GIDEROSMTD:ImGui:popStyleVar([count = 1])-->
 +
<!--GIDEROSMTD:ImGui:getStyleColor(ImGui.Col) color, alpha = ImGui:getStyleColor(ImGui.Col)-->
 +
<!--GIDEROSMTD:ImGui:getFontSize() fontSize = ImGui:getFontSize()-->
 +
<!--GIDEROSMTD:ImGui:pushItemWidth(w)-->
 +
<!--GIDEROSMTD:ImGui:popItemWidth()-->
 +
<!--GIDEROSMTD:ImGui:setNextItemWidth(w)-->
 +
<!--GIDEROSMTD:ImGui:calcItemWidth() w = ImGui:calcItemWidth()-->
 +
<!--GIDEROSMTD:ImGui:pushTextWrapPos([localX = 0])-->
 +
<!--GIDEROSMTD:ImGui:popTextWrapPos()-->
 +
<!--GIDEROSMTD:ImGui:pushTabStop(flag)-->
 +
<!--GIDEROSMTD:ImGui:popTabStop()-->
 +
<!--GIDEROSMTD:ImGui:pushButtonRepeat(flag)-->
 +
<!--GIDEROSMTD:ImGui:popButtonRepeat()-->
 +
<!--GIDEROSMTD:ImGui:separator()-->
 +
<!--GIDEROSMTD:ImGui:sameLine([offset_x = 0, spacing = -1])-->
 +
<!--GIDEROSMTD:ImGui:newLine()-->
 +
<!--GIDEROSMTD:ImGui:spacing()-->
 +
<!--GIDEROSMTD:ImGui:dummy(w, h)-->
 +
<!--GIDEROSMTD:ImGui:indent([indent = 0])-->
 +
<!--GIDEROSMTD:ImGui:unindent([indent = 0])-->
 +
<!--GIDEROSMTD:ImGui:beginGroup()-->
 +
<!--GIDEROSMTD:ImGui:endGroup()-->
 +
<!--GIDEROSMTD:ImGui:getCursorPos() x, y = ImGui:getCursorPos()-->
 +
<!--GIDEROSMTD:ImGui:getCursorPosX() x = ImGui:getCursorPosX()-->
 +
<!--GIDEROSMTD:ImGui:getCursorPosY() y = ImGui:getCursorPosY()-->
 +
<!--GIDEROSMTD:ImGui:setCursorPos(local_x, local_y)-->
 +
<!--GIDEROSMTD:ImGui:setCursorPosX(local_x)-->
 +
<!--GIDEROSMTD:ImGui:setCursorPosY(local_y)-->
 +
<!--GIDEROSMTD:ImGui:getCursorStartPos() x, y = ImGui:getCursorStartPos()-->
 +
<!--GIDEROSMTD:ImGui:getCursorScreenPos() x, y = ImGui:getCursorScreenPos()-->
 +
<!--GIDEROSMTD:ImGui:setCursorScreenPos(x, y)-->
 +
<!--GIDEROSMTD:ImGui:alignTextToFramePadding()-->
 +
<!--GIDEROSMTD:ImGui:getTextLineHeight() lineH = ImGui:getTextLineHeight()-->
 +
<!--GIDEROSMTD:ImGui:getTextLineHeightWithSpacing() lineH = ImGui:getTextLineHeightWithSpacing()-->
 +
<!--GIDEROSMTD:ImGui:getFrameHeight() frameH = ImGui:getFrameHeight()-->
 +
<!--GIDEROSMTD:ImGui:getFrameHeightWithSpacing() frameH = ImGui:getFrameHeightWithSpacing()-->
 +
<!--GIDEROSMTD:ImGui:pushID(anyValue) -->
 +
<!--GIDEROSMTD:ImGui:pushID(str)-->
 +
<!--GIDEROSMTD:ImGui:popID()-->
 +
<!--GIDEROSMTD:ImGui:getID(any_value) number = ImGui:getID(any_value)-->
 +
<!--GIDEROSMTD:ImGui:getID(string) number = ImGui:getID(string)-->
 +
<!--GIDEROSMTD:ImGui:getItemID() number = ImGui:getItemID()-->
 +
<!--GIDEROSMTD:ImGui:textUnformatted(text [, textEnd])-->
 +
<!--GIDEROSMTD:ImGui:text(text)-->
 +
<!--GIDEROSMTD:ImGui:textColored(text, color, alpha)-->
 +
<!--GIDEROSMTD:ImGui:textDisabled(text)-->
 +
<!--GIDEROSMTD:ImGui:textWrapped(text)-->
 +
<!--GIDEROSMTD:ImGui:labelText(text, label)-->
 +
<!--GIDEROSMTD:ImGui:bulletText(text)-->
 +
<!--GIDEROSMTD:ImGui:separatorText(label)-->
 +
<!--GIDEROSMTD:ImGui:button(text [, w = 0, h = 0]) flag = ImGui:button(text [, w = 0, h = 0])-->
 +
<!--GIDEROSMTD:ImGui:smallButton(text) flag = ImGui:smallButton(text)-->
 +
<!--GIDEROSMTD:ImGui:invisibleButton(string_ID [, w = 0, h = 0]) flag = ImGui:invisibleButton(...)-->
 +
<!--GIDEROSMTD:ImGui:arrowButton(string_ID [, ImGui.Dir = 0]) flag = ImGui:arrowButton(string_ID [, ImGui.Dir = 0])-->
 +
<!--GIDEROSMTD:ImGui:checkbox(text, flag) flag = ImGui:checkbox(text, flag)-->
 +
<!--GIDEROSMTD:ImGui:checkboxFlags(label [, flags = 0, flags_value = 0]) flags, is_changed = ImGui:checkboxFlags(...)-->
 +
<!--GIDEROSMTD:ImGui:radioButton(text, number, number) number, is_changed = ImGui:radioButton(text, number, number)-->
 +
<!--GIDEROSMTD:ImGui:radioButton(text, flag) is_changed = ImGui:radioButton(text, flag)-->
 +
<!--GIDEROSMTD:ImGui:progressBar(fraction [, anchor_x = -1, anchor_y = 0, overlay_string = nil])-->
 +
<!--GIDEROSMTD:ImGui:bullet()-->
 +
<!--GIDEROSMTD:ImGui:image(texture, w, h [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) images are streched (ImGui default functions)-->
 +
<!--GIDEROSMTD:ImGui:imageUV(texture, w, h, uv0x, uv0y, uv1x, uv1y [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) images are streched (ImGui default functions)-->
 +
<!--GIDEROSMTD:ImGui:imageButton(str_id, texture, w, h [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) pressFlag = ImGui:imageButton(...) images are streched (ImGui default functions)-->
 +
<!--GIDEROSMTD:ImGui:imageButtonUV(str_id, texture, w, h, uv0x, uv0y, uv1x, uv1y [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) pressFlag = ImGui:imageButtonUV(...) images are streched (ImGui default functions)-->
 +
<!--GIDEROSMTD:ImGui:scaledImage(str_id, texture, w, h [, fit_mode = ImGui.ImageScaleMode_LetterBox, keep_size = false, anchor_x = 0.5, anchor_y = 0.5, tint_col = 0xffffff, tint_alpha = 1, border_col = 0, border_alpha = 0, bg_col = 0, bg_alpha = 0]) images are scaled-->
 +
<!--GIDEROSMTD:ImGui:scaledImageButton(str_id, texture, w, h [, fit_mode = ImGui.ImageScaleMode_LetterBox, keep_size = false, ImGui.ButtonFlags = 0, anchor_x = 0.5, anchor_y = 0.5, clip_offset_x = 0, clip_offset_y = 0, tint_col = 0xffffff, tint_alpha = 1, border_col = 0, border_alpha = 0, bg_col = 0, bg_alpha = 0]) pressFlag = ImGui:scaledImageButton(...) images are scaled-->
 +
<!--GIDEROSMTD:ImGui:scaledImageButtonWithText(texture, label, image_w, image_h [, button_w = 0, button_h = 0,  ImGui.ButtonFlags = 0, fit_mode = ImGui.ImageScaleMode_LetterBox, keep_size = false, anchor_x = 0.5, anchor_y = 0.5, image_side = ImGui.Dir_Left, clip_offset_x = 0, clip_offset_y = 0, tint_col = 0xffffff, tint_alpha = 1, border_col = 0, border_alpha = 0, bg_col = 0, bg_alpha = 0] pressFlag = ImGui:scaledImageButtonWithText(...) images are scaled-->
 +
<!--GIDEROSMTD:ImGui:beginCombo(text, preview_text [, ImGui.ComboFlags = 0]) openFlag = ImGui:beginCombo(...)-->
 +
<!--GIDEROSMTD:ImGui:endCombo()-->
 +
<!--GIDEROSMTD:ImGui:combo(label, current_item, items) current_item, is_open = ImGui:combo(label, current_item, items), items (table): {"item1", "item2", ...}-->
 +
<!--GIDEROSMTD:ImGui:dragFloat(label, value [, inc_step = 1, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value, is_changed = ImGui:dragFloat(...)-->
 +
<!--GIDEROSMTD:ImGui:dragFloat2(label, value1, value2 [, inc_step = 1, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, is_changed = ImGui:dragFloat2(...)-->
 +
<!--GIDEROSMTD:ImGui:dragFloat3(label, value1, value2, value3 [, inc_step = 1, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, value3, is_changed = ImGui:dragFloat3(...)-->
 +
<!--GIDEROSMTD:value1, ImGui:dragFloat4(label, value1, value2, value3, value4 [, inc_step = 1, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value2, value3, value4, is_changed = ImGui:dragFloat4(...)-->
 +
<!--GIDEROSMTD:ImGui:dragFloatRange2(label, value_min, value_max [, inc_step = 1, min = 0, max = 0, format_min_string = "%.3f", ImGui.SliderFlags = 0]) value_min, value_max, is_changed = ImGui:dragFloatRange2(...)-->
 +
<!--GIDEROSMTD:ImGui:dragFloatT(label, table [, inc_step = 1, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) is_changed = ImGui:dragFloatT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:dragInt(label, value [, inc_step = 1, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value, is_changed = ImGui:dragInt(...)-->
 +
<!--GIDEROSMTD:ImGui:dragInt2(label, value1, value2 [, inc_step = 1, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, is_changed = ImGui:dragInt2(...)-->
 +
<!--GIDEROSMTD:ImGui:dragInt3(label, value1, value2, value3 [, inc_step = 1, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, value3, is_changed = ImGui:dragInt3(...)-->
 +
<!--GIDEROSMTD:ImGui:dragInt4(label, value1, value2, value3, value4 [, inc_step = 1, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, value3, value4, is_changed = ImGui:dragInt4(...)-->
 +
<!--GIDEROSMTD:ImGui:dragIntRange2(label, v_current_min, v_current_max [, v_speed = 1, v_min = 0, v_max = 0, format = "%d", format_max = nil, ImGui.SliderFlags = 0]) v_current_min, v_current_max, flag = ImGui:dragIntRange2(...)-->
 +
<!--GIDEROSMTD:ImGui:dragIntT(label, table [, inc_step = 1, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) is_changed = ImGui:dragIntT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:sliderFloat(label, value [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value, is_changed = ImGui:sliderFloat(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderFloat2(label, value1, value2 [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, is_changed = ImGui:sliderFloat2(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderFloat3(label, value1, value2, value3 [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, value3, is_changed = ImGui:sliderFloat3(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderFloat4(label, value1, value2, value3, value4 [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, value3, value4, is_changed = ImGui:sliderFloat4(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderAngle(label, value_in_rad [, min_degrees = -360, max_degrees = 360, format_string = "%.0f deg", ImGui.SliderFlags = 0]) value_in_rad, is_changed = ImGui:sliderAngle(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderFloatT(label, table [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) is_changed = ImGui:sliderFloatT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:sliderInt(label, value [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value, is_changed = ImGui:sliderInt(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderInt2(label, value1, value2 [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, is_changed = ImGui:sliderInt2(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderInt3(label, value1, value2, value3 [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, value3, is_changed = ImGui:sliderInt3(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderInt4(label, value1, value2, value3, value4 [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, value3, value4, is_changed = ImGui:sliderInt4(...)-->
 +
<!--GIDEROSMTD:ImGui:sliderIntT(label, table [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) is_changed = ImGui:sliderIntT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:vSliderFloat(label, w, h, value, min, max [, format_string = "%.3f", ImGui.SliderFlags = 0]) value, is_changed = ImGui:vSliderFloat(...)-->
 +
<!--GIDEROSMTD:ImGui:vSliderInt(label, w, h, value, min, max [, format_string = "%d", ImGui.SliderFlags = 0]) value, is_changed = ImGui:vSliderInt(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderFloat(label, mirror_flag, value [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value, is_changed = ImGui:filledSliderFloat(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderFloat2(label, mirror_flag, value1, value2 [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, is_changed = ImGui:filledSliderFloat2(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderFloat3(label, mirror_flag, value1, value2, value3 [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, value3, is_changed = ImGui:filledSliderFloat3(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderFloat4(label, mirror_flag, value1, value2, value3, value4 [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) value1, value2, value3, value4, is_changed = ImGui:filledSliderFloat4(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderFloatT(label, mirror_flag, table [, min = 0, max = 0, format_string = "%.3f", ImGui.SliderFlags = 0]) is_changed = ImGui:filledSliderFloatT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:filledSliderAngle(label, mirror_flag, value_in_rad [, min_degrees = -360, max_degrees = 360, format_string = "%.0f deg", ImGui.SliderFlags = 0]) value_in_rad, is_changed = ImGui:filledSliderAngle(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderInt(label, mirror_flag, value [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value, is_changed = ImGui:filledSliderInt(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderInt2(label, mirror_flag, value1, value2 [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, is_changed = ImGui:filledSliderInt2(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderInt3(label, mirror_flag, value1, value2, value3 [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, value3, is_changed = ImGui:filledSliderInt3(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderInt4(label, mirror_flag, value1, value2, value3, value4 [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) value1, value2, value3, value4, is_changed = ImGui:filledSliderInt4(...)-->
 +
<!--GIDEROSMTD:ImGui:filledSliderIntT(label, mirror_flag, table [, min = 0, max = 0, format_string = "%d", ImGui.SliderFlags = 0]) is_changed = ImGui:filledSliderIntT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:vFilledSliderFloat(label, mirror_flag, w, h, value, min, max [, format_string = "%.3f", ImGui.SliderFlags = 0]) value, is_changed = ImGui:vFilledSliderFloat(...)-->
 +
<!--GIDEROSMTD:ImGui:vFilledSliderInt(label, mirror_flag, w, h, value, min, max [, format_string = "%d", ImGui.SliderFlags = 0]) value, is_changed = ImGui:vFilledSliderInt(...)-->
 +
<!--GIDEROSMTD:ImGui:inputText(label, text, buffer_size [, ImGui.InputTextFlags = 0]) text, flag = ImGui:inputText(...)-->
 +
<!--GIDEROSMTD:ImGui:inputTextMultiline(label, text, buffer_size [, w = 0, h = 0, ImGui.InputTextFlags = 0]) text, flag = ImGui:inputTextMultiline(...)-->
 +
<!--GIDEROSMTD:ImGui:inputTextWithHint(label, text, hint, buffer_size [, ImGui.InputTextFlags = 0]) text, flag = ImGui:inputTextWithHint(...)-->
 +
<!--GIDEROSMTD:ImGui:inputFloat(label, value [, step = 0, step_fast = 0, format = "%.3f", ImGui.InputTextFlags = 0]) value,  flag = ImGui:inputFloat(...)-->
 +
<!--GIDEROSMTD:ImGui:inputFloat3(label, value1, value2, value3 [, format = "%.3f", ImGui.InputTextFlags = 0]) value1, value2, value3, flag = ImGui:inputFloat3(...)-->
 +
<!--GIDEROSMTD:ImGui:inputFloat4(label, value1, value2, value3, value4 [, format = "%.3f", ImGui.InputTextFlags = 0]) value1, value2, value3, value4, flag = ImGui:inputFloat4(...)-->
 +
<!--GIDEROSMTD:ImGui:inputFloatT(label, table [, format = "%.3f", ImGui.InputTextFlags = 0]) flag = ImGui:inputFloatT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:inputInt(label, value [, step = 0, step_fast = 0, ImGui.InputTextFlags = 0]) value, flag = ImGui:inputInt(...)-->
 +
<!--GIDEROSMTD:ImGui:inputInt2(label, value1, value2 [, ImGui.InputTextFlags = 0]) value1, value2, flag = ImGui:inputInt2(...)-->
 +
<!--GIDEROSMTD:ImGui:inputInt3(label, value1, value2, value3 [, ImGui.InputTextFlags = 0]) value1, value2, value3, flag = ImGui:inputInt3(...)-->
 +
<!--GIDEROSMTD:ImGui:inputInt4(label, value1, value2, value3, value4 [, ImGui.InputTextFlags = 0]) value1, value2, value3, value4, flag = ImGui:inputInt4(...)-->
 +
<!--GIDEROSMTD:ImGui:inputIntT(label, table [, format = "%d", ImGui.InputTextFlags = 0]) flag = ImGui:inputIntT(...), table must be an array of any size > 0-->
 +
<!--GIDEROSMTD:ImGui:inputDouble(label, value [, step = 0, step_fast = 0, format = "%.6f", ImGui.InputTextFlags = 0]) value, flag = ImGui:inputDouble(...)-->
 +
<!--GIDEROSMTD:ImGui:inputText(label, text, buffer_size [, ImGui.InputTextFlags = 0, callback_function, user_data])-->
 +
<!--GIDEROSMTD:ImGui:inputTextMultiline(label, text, buffer_size [, ImGui.InputTextFlags = 0, callback_function, user_data])-->
 +
<!--GIDEROSMTD:ImGui:inputTextWithHint(label, text, hint, buffer_size [, ImGui.InputTextFlags = 0, callback_function, user_data])-->
 +
<!--GIDEROSMTD:callback_data:getEventFlag() ImGuiInputTextFlags = callback_data:getEventFlag()-->
 +
<!--GIDEROSMTD:callback_data:getFlags() ImGuiInputTextFlags = callback_data:getFlags()-->
 +
<!--GIDEROSMTD:callback_data:getEventChar() number = callback_data:getEventChar()-->
 +
<!--GIDEROSMTD:callback_data:setEventChar(number)-->
 +
<!--GIDEROSMTD:callback_data:getEventKey() keyCode = callback_data:getEventKey()-->
 +
<!--GIDEROSMTD:callback_data:getBuf() string = callback_data:getBuf()-->
 +
<!--GIDEROSMTD:callback_data:setBuf(string)-->
 +
<!--GIDEROSMTD:callback_data:getBufTextLen() number = callback_data:getBufTextLen()-->
 +
<!--GIDEROSMTD:callback_data:setBufTextLen(number)-->
 +
<!--GIDEROSMTD:callback_data:getBufSize() number = callback_data:getBufSize()-->
 +
<!--GIDEROSMTD:callback_data:setBufDirty(bool)-->
 +
<!--GIDEROSMTD:callback_data:isBufDirty() bool = callback_data:isBufDirty()-->
 +
<!--GIDEROSMTD:callback_data:setCursorPos(number)-->
 +
<!--GIDEROSMTD:callback_data:getCursorPos() number = callback_data:getCursorPos()-->
 +
<!--GIDEROSMTD:callback_data:setSelectionStart(s_start)-->
 +
<!--GIDEROSMTD:callback_data:getSelectionStart() number = callback_data:getSelectionStart()-->
 +
<!--GIDEROSMTD:callback_data:setSelectionEnd(s_end)-->
 +
<!--GIDEROSMTD:callback_data:getSelectionEnd() s_end = callback_data:getSelectionEnd()-->
 +
<!--GIDEROSMTD:callback_data:setSelection(s_start, s_end)-->
 +
<!--GIDEROSMTD:callback_data:getSelection() s_start, s_end = callback_data:getSelection()-->
 +
<!--GIDEROSMTD:callback_data:selectAll()-->
 +
<!--GIDEROSMTD:callback_data:clearSelection()-->
 +
<!--GIDEROSMTD:callback_data:hasSelection() bool = callback_data:hasSelection()-->
 +
<!--GIDEROSMTD:callback_data:deleteChars(position, bytesCount)-->
 +
<!--GIDEROSMTD:callback_data:insertChars(position, text)-->
 +
<!--GIDEROSMTD:ImGui:colorEdit3(label, color [, ImGui.ColorEditFlags = 0]) hexColor, is_touching = ImGui:colorEdit3(...) alpha ignored, no need to pass it!-->
 +
<!--GIDEROSMTD:ImGui:colorEdit4(label, color [, alpha = 1, ImGui.ColorEditFlags = 0]) hexColor, alpha, is_touching = ImGui:colorEdit4(...)-->
 +
<!--GIDEROSMTD:ImGui:colorPicker3(label, color [, ImGui.ColorEditFlags = 0]) hexColor, is_touching = ImGui:colorPicker3(...)-->
 +
<!--GIDEROSMTD:ImGui:colorPicker4(label, color [, alpha = 1, original_color = 0xffffff, original_alpha = 1, ImGui.ColorEditFlags = 0]) hexColor, alpha, originalColor, originalAlpha, is_touching = ImGui:colorPicker4(...)-->
 +
<!--GIDEROSMTD:ImGui:colorButton(string_ID, color [, alpha = 1, ImGui.ColorEditFlags = 0, w = 0, h = 0]) isHoveringFlag = ImGui:colorButton(...)-->
 +
<!--GIDEROSMTD:ImGui:setColorEditOptions(ImGui.ColorEditFlags)-->
 +
<!--GIDEROSMTD:ImGui:treeNode(label [, format_string]) is_openFlag = ImGui:treeNode(...)-->
 +
<!--GIDEROSMTD:ImGui:treeNodeEx(label, ImGui.TreeNodeFlags [, format_string])-->
 +
<!--GIDEROSMTD:ImGui:treePush(str_id)-->
 +
<!--GIDEROSMTD:ImGui:treePop()-->
 +
<!--GIDEROSMTD:ImGui:getTreeNodeToLabelSpacing() number = ImGui:getTreeNodeToLabelSpacing()-->
 +
<!--GIDEROSMTD:ImGui:collapsingHeader(label, p_open [, ImGui.TreeNodeFlags = 0]) is_openFlag, p_open = ImGui:collapsingHeader(...)-->
 +
<!--GIDEROSMTD:ImGui:collapsingHeader(label [, ImGui.TreeNodeFlags = 0]) is_openFlag = ImGui:collapsingHeader(...)-->
 +
<!--GIDEROSMTD:ImGui:setNextItemOpen(is_open, ImGui.Cond)-->
 +
<!--GIDEROSMTD:ImGui:selectable(label, selected [, ImGui.SelectableFlags = 0, w = 0, h = 0]) result?, selected = ImGui:selectable(...)-->
 +
<!--GIDEROSMTD:ImGui:listBox(label, current_item, item_table [, max_visible_items = -1]) current_item, is_openFlag = ImGui:listBox(...), item_table: {"Item0", "Item1", ...}-->
 +
<!--GIDEROSMTD:ImGui:listBoxHeader(label [, w = 0, h = 0]) result? = ImGui:listBoxHeader(...)-->
 +
<!--GIDEROSMTD:ImGui:listBoxHeader2(label, items_count) result? = ImGui:listBoxHeader2(...)-->
 +
<!--GIDEROSMTD:ImGui:listBoxFooter()-->
 +
<!--GIDEROSMTD:ImGui.cachePoints(points_table) ptr = ImGui.cachePoints(...), store points in memory, points_table: {0.01, 0.5, 10, -50, …}-->
 +
<!--GIDEROSMTD:ImGui.freePoints(ptr) delete points from memory-->
 +
<!--GIDEROSMTD:ImGui:plotCachedLines(label, ptr, len [, values_offset = 0, overlay_text = nil, scale_min = math.huge, scale_max = math.huge, w = 0, h = 0]), len (number): points array lenght-->
 +
<!--GIDEROSMTD:ImGui:plotCachedHistogram(label, ptr, len [, values_offset = 0, overlay_text = nil, scale_min = math.huge, scale_max = math.huge, w = 0, h = 0]), len (number): points array lenght-->
 +
<!--GIDEROSMTD:ImGui:plotLines(label, points_table [, values_offset = 0, overlay_text = nil, scale_min = math.huge, scale_max = math.huge, w = 0, h = 0])-->
 +
<!--GIDEROSMTD:ImGui:plotHistogram(label, points_table [, values_offset = 0, overlay_text = nil, scale_min = math.huge, scale_max = math.huge, w = 0, h = 0])-->
 +
<!--GIDEROSMTD:ImGui:value(prefix, bool)-->
 +
<!--GIDEROSMTD:ImGui:value(prefix, number)-->
 +
<!--GIDEROSMTD:ImGui:value(prefix, float, format_string)-->
 +
<!--GIDEROSMTD:ImGui:beginMenuBar() result? = ImGui:beginMenuBar()-->
 +
<!--GIDEROSMTD:ImGui:endMenuBar()-->
 +
<!--GIDEROSMTD:ImGui:beginMainMenuBar() result? = ImGui:beginMainMenuBar()-->
 +
<!--GIDEROSMTD:ImGui:endMainMenuBar()-->
 +
<!--GIDEROSMTD:ImGui:beginMenu(label [, enabled = true]) result = ImGui:beginMenu(...)-->
 +
<!--GIDEROSMTD:ImGui:beginMenuEx(label, [icon = "", enabled = true]) result = ImGui:beginMenuEx(...)-->
 +
<!--GIDEROSMTD:ImGui:endMenu()-->
 +
<!--GIDEROSMTD:ImGui:menuItem(label [, shortcut = "", selected = false, enabled = true]) result = ImGui:menuItem(...)-->
 +
<!--GIDEROSMTD:ImGui:menuItemEx(label, [icon = "", shortcut = "", selected = false, enabled = true]) result = ImGui:menuItemEx(...)-->
 +
<!--GIDEROSMTD:ImGui:beginTooltip()-->
 +
<!--GIDEROSMTD:ImGui:endTooltip()-->
 +
<!--GIDEROSMTD:ImGui:setTooltip(text)-->
 +
<!--GIDEROSMTD:ImGui:beginPopup(str_id [, ImGui.WindowFlags = 0]) result? = ImGui:beginPopup(...)-->
 +
<!--GIDEROSMTD:ImGui:beginPopupModal(str_id, p_open [, ImGui.WindowFlags = 0]) p_open, result? = ImGui:beginPopupModal(...)-->
 +
<!--GIDEROSMTD:ImGui:endPopup()-->
 +
<!--GIDEROSMTD:ImGui:openPopup(str_id [, ImGui.PopupFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:openPopupOnItemClick(str_id [, ImGui.PopupFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:closeCurrentPopup()-->
 +
<!--GIDEROSMTD:ImGui:beginPopupContextItem(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:beginPopupContextItem(...)-->
 +
<!--GIDEROSMTD:ImGui:beginPopupContextWindow(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:beginPopupContextWindow(...)-->
 +
<!--GIDEROSMTD:ImGui:beginPopupContextVoid(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:beginPopupContextVoid(...)-->
 +
<!--GIDEROSMTD:ImGui:isPopupOpen(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:isPopupOpen(...)-->
 +
<!--GIDEROSMTD:ImGui:beginTable(str_id, column [, ImGui.TableFlags = 0, outer_w = 0, outer_h = 0, inner_width = 0]) flag = ImGui:beginTable(...)-->
 +
<!--GIDEROSMTD:ImGui:endTable()-->
 +
<!--GIDEROSMTD:ImGui:tableNextRow([ImGui.TableRowFlags = 0, min_row_height = 0])-->
 +
<!--GIDEROSMTD:ImGui:tableNextColumn() flag = ImGui:tableNextColumn()-->
 +
<!--GIDEROSMTD:ImGui:tableSetColumnIndex(column_n) flag = ImGui:tableSetColumnIndex(...)-->
 +
<!--GIDEROSMTD:ImGui:tableSetupColumn(label [, ImGui.TableColumnFlags = 0, init_width_or_weight = 0, user_id = 0])-->
 +
<!--GIDEROSMTD:ImGui:tableSetupScrollFreeze(cols, rows)-->
 +
<!--GIDEROSMTD:ImGui:tableHeadersRow()-->
 +
<!--GIDEROSMTD:ImGui:tableGetSortSpecs() TableSortSpecs = ImGui:tableGetSortSpecs(), see below-->
 +
<!--GIDEROSMTD:ImGui:tableGetColumnCount() number = ImGui:tableGetColumnCount()-->
 +
<!--GIDEROSMTD:ImGui:tableGetColumnIndex() number = ImGui:tableGetColumnIndex()-->
 +
<!--GIDEROSMTD:ImGui:tableGetRowIndex() number = ImGui:tableGetRowIndex()-->
 +
<!--GIDEROSMTD:ImGui:tableGetColumnName([column_n = -1]) string = ImGui:tableGetColumnName(...)-->
 +
<!--GIDEROSMTD:ImGui:tableGetColumnFlags([column_n = -1]) ImGuiTableColumnFlags = ImGui:tableGetColumnFlags(...)-->
 +
<!--GIDEROSMTD:ImGui:tableSetBgColor(ImGui.TableBgTarget, color [, alpha = 1, column_n = -1])-->
 +
<!--GIDEROSMTD:TableSortSpecs:getSpecsCount() number = TableSortSpecs:getSpecsCount(), TableSortSpecs = ImGui:tableGetSortSpecs()-->
 +
<!--GIDEROSMTD:TableSortSpecs:isSpecsDirty() flag = TableSortSpecs:isSpecsDirty(), TableSortSpecs = ImGui:tableGetSortSpecs()-->
 +
<!--GIDEROSMTD:TableSortSpecs:setSpecsDirty(flag) -- TableSortSpecs = ImGui:tableGetSortSpecs()-->
 +
<!--GIDEROSMTD:TableSortSpecs:getColumnSortSpecs() table = TableSortSpecs:getColumnSortSpecs(), TableSortSpecs = ImGui:tableGetSortSpecs(), see below-->
 +
<!--GIDEROSMTD:ImGui:columns([count = 1, id = nil, border = true])-->
 +
<!--GIDEROSMTD:ImGui:nextColumn()-->
 +
<!--GIDEROSMTD:ImGui:getColumnIndex() index = ImGui:getColumnIndex()-->
 +
<!--GIDEROSMTD:ImGui:getColumnWidth([column_index = -1]) width = ImGui:getColumnWidth(...)-->
 +
<!--GIDEROSMTD:ImGui:setColumnWidth(column_index, width)-->
 +
<!--GIDEROSMTD:ImGui:getColumnOffset([column_index = -1]) offset = ImGui:getColumnOffset(...)-->
 +
<!--GIDEROSMTD:ImGui:setColumnOffset(column_index, offset)-->
 +
<!--GIDEROSMTD:ImGui:getColumnsCount() number = ImGui:getColumnsCount()-->
 +
<!--GIDEROSMTD:ImGui:beginTabBar(str_id [, ImGui.TabBarFlags = 0]) bool = ImGui:beginTabBar(...)-->
 +
<!--GIDEROSMTD:ImGui:endTabBar()-->
 +
<!--GIDEROSMTD:ImGui:beginTabItem(label, p_open [, ImGui.TabItemFlags = 0]) p_open, bool = ImGui:beginTabItem(...)-->
 +
<!--GIDEROSMTD:ImGui:endTabItem()-->
 +
<!--GIDEROSMTD:ImGui:setTabItemClosed(tab_or_docked_window_label)-->
 +
<!--GIDEROSMTD:ImGui:tabItemButton(label [, ImGui.TabItemFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:logToTTY(auto_open_depth = -1) -->
 +
<!--GIDEROSMTD:ImGui:logToFile(auto_open_depth = -1, filename = nil) -->
 +
<!--GIDEROSMTD:ImGui:logToClipboard(auto_open_depth = -1) -->
 +
<!--GIDEROSMTD:ImGui:logFinish() -->
 +
<!--GIDEROSMTD:ImGui:logButtons() -->
 +
<!--GIDEROSMTD:ImGui:logText(text) -->
 +
<!--GIDEROSMTD:ImGui:beginDragDropSource([ImGui.DragDropFlags flags = 0]) flag = ImGui:beginDragDropSource(...)-->
 +
<!--GIDEROSMTD:ImGui:setNumDragDropPayload(str_type, number [, ImGui.Cond cond = 0]) flag = ImGui:setNumDragDropPayload(...)-->
 +
<!--GIDEROSMTD:ImGui:setStrDragDropPayload(str_type, string [, ImGui.Cond cond = 0]) flag = ImGui:setStrDragDropPayload(...)-->
 +
<!--GIDEROSMTD:ImGui:endDragDropSource()-->
 +
<!--GIDEROSMTD:ImGui:beginDragDropTarget() flag = ImGui:beginDragDropTarget()-->
 +
<!--GIDEROSMTD:ImGui:acceptDragDropPayload(type [, ImGui.DragDropFlags flags = 0]) ImGuiPayload = ImGui:acceptDragDropPayload(...)-->
 +
<!--GIDEROSMTD:ImGui:endDragDropTarget()-->
 +
<!--GIDEROSMTD:ImGui:getDragDropPayload() ImGuiPayload = ImGui:getDragDropPayload()-->
 +
<!--GIDEROSMTD:ImGuiPayload:getNumData() number = ImGuiPayload:getNumData()-->
 +
<!--GIDEROSMTD:ImGuiPayload:getStrData() string = ImGuiPayload:getStrData()-->
 +
<!--GIDEROSMTD:ImGuiPayload:clear()-->
 +
<!--GIDEROSMTD:ImGuiPayload:getDataSize() number = ImGuiPayload:getDataSize()-->
 +
<!--GIDEROSMTD:ImGuiPayload:isDataType(type) flag = ImGuiPayload:isDataType(...), type must be the same as in "ImGui:acceptDragDropPayload(type)"-->
 +
<!--GIDEROSMTD:ImGuiPayload:isPreview() flag = ImGuiPayload:isPreview()-->
 +
<!--GIDEROSMTD:ImGuiPayload:isDelivery() flag = ImGuiPayload:isDelivery()-->
 +
<!--GIDEROSMTD:ImGui:pushClipRect(min_x, min_y, max_x, max_y, intersect_with_current_clip_rect)-->
 +
<!--GIDEROSMTD:ImGui:popClipRect()-->
 +
<!--GIDEROSMTD:ImGuiListClipper.new() instance = ImGuiListClipper.new()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:beginClip(number_of_items [, item_height = -1]) if item_height <= 0 then it is calculated automatically-->
 +
<!--GIDEROSMTD:ImGuiListClipper:endClip()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:step() bool = ImGuiListClipper:step()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:getDisplayStart() number = ImGuiListClipper:getDisplayStart()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:getDisplayEnd() number = ImGuiListClipper:getDisplayEnd()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:getStartPosY() number = ImGuiListClipper:getStartPosY()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:getItemsCount() number = ImGuiListClipper:getItemsCount()-->
 +
<!--GIDEROSMTD:ImGuiListClipper:forceDisplayRangeByIndices(number_min, number_max)-->
 +
<!--GIDEROSMTD:ImGuiTextFilter.new() filter = ImGuiTextFilter.new()-->
 +
<!--GIDEROSMTD:filter:draw(label [, width = 0]) isValueChanged = filter:draw(...), draws the input field-->
 +
<!--GIDEROSMTD:filter:drawWithHint(label, hint [, width = 0]) isValueChanged = filter:drawWithHint(...), draws the input field (using ImGui:inutTextWithHint())-->
 +
<!--GIDEROSMTD:filter:setBuffer(text) set filter text-->
 +
<!--GIDEROSMTD:filter:build() update filter internals-->
 +
<!--GIDEROSMTD:filter:passFilter(text) bool = filter:passFilter(...), returns true if filter input matches with "text"-->
 +
<!--GIDEROSMTD:ImGui:setItemDefaultFocus()-->
 +
<!--GIDEROSMTD:ImGui:setKeyboardFocusHere([offset = 0])-->
 +
<!--GIDEROSMTD:ImGui:isItemHovered([ImGui.HoveredFlags = 0]) flag = ImGui:isItemHovered(...)-->
 +
<!--GIDEROSMTD:ImGui:isItemActive() flag = ImGui:isItemActive()-->
 +
<!--GIDEROSMTD:ImGui:isItemFocused() flag = ImGui:isItemFocused()-->
 +
<!--GIDEROSMTD:ImGui:isItemClicked(mouse_button) flag = ImGui:isItemClicked(...)-->
 +
<!--GIDEROSMTD:ImGui:isItemVisible() flag = ImGui:isItemVisible()-->
 +
<!--GIDEROSMTD:ImGui:isItemEdited() flag = ImGui:isItemEdited()-->
 +
<!--GIDEROSMTD:ImGui:isItemActivated() flag = ImGui:isItemActivated()-->
 +
<!--GIDEROSMTD:ImGui:isItemDeactivated() flag = ImGui:isItemDeactivated()-->
 +
<!--GIDEROSMTD:ImGui:isItemDeactivatedAfterEdit() flag = ImGui:isItemDeactivatedAfterEdit()-->
 +
<!--GIDEROSMTD:ImGui:isItemToggledOpen() flag = ImGui:isItemToggledOpen()-->
 +
<!--GIDEROSMTD:ImGui:isAnyItemHovered() flag = ImGui:isAnyItemHovered()-->
 +
<!--GIDEROSMTD:ImGui:isAnyItemActive() flag = ImGui:isAnyItemActive()-->
 +
<!--GIDEROSMTD:ImGui:isAnyItemFocused() flag = ImGui:isAnyItemFocused()-->
 +
<!--GIDEROSMTD:ImGui:getItemRect() minX, minY, maxX, maxY = ImGui:getItemRect()-->
 +
<!--GIDEROSMTD:ImGui:getItemRectMin() x, y = ImGui:getItemRectMin()-->
 +
<!--GIDEROSMTD:ImGui:getItemRectMax() x, y = ImGui:getItemRectMax()-->
 +
<!--GIDEROSMTD:ImGui:getItemRectSize() w, h = ImGui:getItemRectSize()-->
 +
<!--GIDEROSMTD:ImGui:setItemAllowOverlap()-->
 +
<!--GIDEROSMTD:ImGui:isRectVisible(w, h [, max_x, max_y]) flag = ImGui:isRectVisible(...)-->
 +
<!--GIDEROSMTD:ImGui:getTime() number = ImGui:getTime()-->
 +
<!--GIDEROSMTD:ImGui:getFrameCount() number = ImGui:getFrameCount()-->
 +
<!--GIDEROSMTD:ImGui:getStyleColorName(idx) str = ImGui:getStyleColorName(...)-->
 +
<!--GIDEROSMTD:ImGui:beginChildFrame(id, w, h [, ImGui.WindowFlags = 0]) flag = ImGui:beginChildFrame(...), id (number)-->
 +
<!--GIDEROSMTD:ImGui:endChildFrame()-->
 +
<!--GIDEROSMTD:ImGui:calcTextSize(text [, hide_text_after_double_hash = false, wrap_width = -1]) w, h = ImGui:calcTextSize(...)-->
 +
<!--GIDEROSMTD:ImGui:getKeyName(keyCode) string = ImGui:getKeyName(...)-->
 +
<!--GIDEROSMTD:ImGui:isKeyDown(keyCode) flag = ImGui:isKeyDown(...)-->
 +
<!--GIDEROSMTD:ImGui:isKeyPressed(keyCode [, repeat = true]) flag = ImGui:isKeyPressed(...)-->
 +
<!--GIDEROSMTD:ImGui:isKeyReleased(keyCode) flag = ImGui:isKeyReleased(...)-->
 +
<!--GIDEROSMTD:ImGui:getKeyPressedAmount(keyCode, repeat_delay, rate) number = ImGui:getKeyPressedAmount(...)-->
 +
<!--GIDEROSMTD:ImGui:setNextFrameWantCaptureKeyboard([want_capture_keyboard_value = true])-->
 +
<!--GIDEROSMTD:ImGui:shortcut(keyChord [, owner_id = 0, ImGui.InputFlags = 0]) keyChord: an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values (ImGuiKey | ImGuiMod_XXX))-->
 +
<!--GIDEROSMTD:ImGui:setShortcutRouting(keyChord [, owner_id = 0, ImGui.InputFlags = 0]) keyChord: an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values (ImGuiKey | ImGuiMod_XXX)), useful to disable CTRL + TAB combo: ImGui:setShortcutRouting(ImGui.Mod_Ctrl | ImGui.Key_Tab, ImGui.KeyOwner_None)-->
 +
<!--GIDEROSMTD:ImGui:setItemKeyOwner(keyCode [, ImGui.InputFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:setKeyOwner(keyCode, owner_id, [, ImGui.InputFlags = 0])-->
 +
<!--GIDEROSMTD:ImGui:isMouseDown(mouse_button) flag = ImGui:isMouseDown(mouse_button), "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:isMouseClicked(mouse_button [, repeat = false]) flag = ImGui:isMouseClicked(...), "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:isMouseReleased(mouse_button) flag = ImGui:isMouseReleased(...), "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:isMouseDoubleClicked(mouse_button) flag = ImGui:isMouseDoubleClicked(mouse_button), "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:isMouseHoveringRect(min_x, min_y, max_x, max_y [, clip = true]) flag = ImGui:isMouseHoveringRect(...)-->
 +
<!--GIDEROSMTD:ImGui:isMousePosValid([x = inf, y = inf]) flag = ImGui:isMousePosValid(...)-->
 +
<!--GIDEROSMTD:ImGui:isAnyMouseDown() flag = ImGui:isAnyMouseDown()-->
 +
<!--GIDEROSMTD:ImGui:getMousePos() x, y = ImGui:getMousePos()-->
 +
<!--GIDEROSMTD:ImGui:getMousePosOnOpeningCurrentPopup() x, y = ImGui:getMousePosOnOpeningCurrentPopup()-->
 +
<!--GIDEROSMTD:ImGui:isMouseDragging(mouse_button [, lock_threshold = -1]) flag = ImGui:isMouseDragging(...), "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:getMouseDragDelta(mouse_button [, lock_threshold = -1]) x, y = ImGui:getMouseDragDelta(...), "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:resetMouseDragDelta(mouse_button) "mouse_button" is any gideros mouse button code-->
 +
<!--GIDEROSMTD:ImGui:getMouseCursor() ImGuiMouseCursor = ImGui:getMouseCursor()-->
 +
<!--GIDEROSMTD:ImGui:setMouseCursor(ImGui.MouseCursor)-->
 +
<!--GIDEROSMTD:ImGui:setNextFrameWantCaptureMouse([want_capture_mouse_value = true])-->
 +
<!--GIDEROSMTD:ImGui:setNextFrameWantCaptureKeyboard([want_capture_keyboard_value = true])-->
 +
<!--GIDEROSMTD:ImGui:updateCursor()-->
 +
<!--GIDEROSMTD:ImGui:newFrame(deltaTime)-->
 +
<!--GIDEROSMTD:ImGui:render()-->
 +
<!--GIDEROSMTD:ImGui:endFrame()-->
 +
<!--GIDEROSMTD:ImGui:showUserGuide() is_openFlag = ImGui:showUserGuide()-->
 +
<!--GIDEROSMTD:ImGui:showDemoWindow([p_open]) is_openFlag = ImGui:showDemoWindow(...)-->
 +
<!--GIDEROSMTD:ImGui:showAboutWindow([p_open]) is_openFlag = ImGui:showAboutWindow(...)-->
 +
<!--GIDEROSMTD:ImGui:showStyleEditor() is_openFlag = ImGui:showStyleEditor()-->
 +
<!--GIDEROSMTD:ImGui:showFontSelector() is_openFlag = ImGui:showFontSelector()-->
 +
<!--GIDEROSMTD:ImGui:showMetricsWindow([p_open]) is_openFlag = ImGui:showMetricsWindow(...)-->
 +
<!--GIDEROSMTD:ImGui:showStyleSelector(label) is_openFlag = ImGui:showStyleSelector(...)-->
 +
<!--GIDEROSMTD:ImGui:ShowStackToolWindow([p_open]) is_openFlag = ImGui:ShowStackToolWindow(...)-->
 +
<!--GIDEROSMTD:ImGui:showLuaStyleEditor()-->
 +
<!--GIDEROSMTD:ImGuiTextEditor.new([other_text_editor]) TextEditor = ImGuiTextEditor.new([other_text_editor]), otherTextEditor: another "ImGuiTextEditor" instance to copy setting-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageCPP() LanguageDefinition = TextEditor:getLanguageCPP()-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageGLSL() LanguageDefinition = TextEditor:getLanguageGLSL()-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageHLSL() LanguageDefinition = TextEditor:getLanguageHLSL()-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageC() LanguageDefinition = TextEditor:getLanguageC()-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageSQL() LanguageDefinition = TextEditor:getLanguageSQL()-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageAngelScript() LanguageDefinition = TextEditor:getLanguageAngelScript()-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageLua() LanguageDefinition = TextEditor:getLanguageLua()-->
 +
<!--GIDEROSMTD:TextEditor:setLanguageDefinition(LanguageDefinition)-->
 +
<!--GIDEROSMTD:TextEditor:getLanguageDefinition() LanguageDefinition = TextEditor:getLanguageDefinition()-->
 +
<!--GIDEROSMTD:TextEditor:getPaletteDark() Palette = TextEditor:getPaletteDark()-->
 +
<!--GIDEROSMTD:TextEditor:getPaletteLight() Palette = TextEditor:getPaletteLight()-->
 +
<!--GIDEROSMTD:TextEditor:getPaletteRetro() Palette = TextEditor:getPaletteRetro()-->
 +
<!--GIDEROSMTD:TextEditor:setPalette(Palette)-->
 +
<!--GIDEROSMTD:TextEditor:getPalette() Palette = TextEditor:getPalette()-->
 +
<!--GIDEROSMTD:TextEditor:setPaletteColor(TE_ColorIndex, color [, alpha = 1]) see TextEditor enums-->
 +
<!--GIDEROSMTD:TextEditor:getPaletteColor(TE_ColorIndex) color, alpha = TextEditor:getPaletteColor(TE_ColorIndex)-->
 +
<!--GIDEROSMTD:TextEditor:loadPalette(table) 42 elements table-->
 +
<!--GIDEROSMTD:TextEditor:setErrorMarkers(error_markers)-->
 +
<!--GIDEROSMTD:TextEditor:setBreakpoints(breakpoints)-->
 +
<!--GIDEROSMTD:TextEditor:render(string_id [, w = 0, h = 0, border = 0])-->
 +
<!--GIDEROSMTD:TextEditor:setText(string)-->
 +
<!--GIDEROSMTD:TextEditor:getText()-->
 +
<!--GIDEROSMTD:TextEditor:setTextLines(table) set editor text using table. Structure: {"line 1", "line 2", "line 3", ...}-->
 +
<!--GIDEROSMTD:TextEditor:getTextLines() table = TextEditor:getTextLines()-->
 +
<!--GIDEROSMTD:TextEditor:getSelectedText() string = TextEditor:getSelectedText()-->
 +
<!--GIDEROSMTD:TextEditor:getCurrentLineText() string = TextEditor:getCurrentLineText()-->
 +
<!--GIDEROSMTD:TextEditor:getTotalLines() number = TextEditor:getTotalLines()-->
 +
<!--GIDEROSMTD:TextEditor:isOverwrite() bool = TextEditor:isOverwrite()-->
 +
<!--GIDEROSMTD:TextEditor:setReadOnly() bool = TextEditor:setReadOnly()-->
 +
<!--GIDEROSMTD:TextEditor:isReadOnly() bool = TextEditor:isReadOnly()-->
 +
<!--GIDEROSMTD:TextEditor:isTextChanged() bool = TextEditor:isTextChanged()-->
 +
<!--GIDEROSMTD:TextEditor:isCursorPositionChanged() bool = TextEditor:isCursorPositionChanged()-->
 +
<!--GIDEROSMTD:TextEditor:setColorizerEnable()-->
 +
<!--GIDEROSMTD:TextEditor:isColorizerEnabled() bool = TextEditor:isColorizerEnabled()-->
 +
<!--GIDEROSMTD:TextEditor:getCursorPosition() line, column = TextEditor:getCursorPosition(), 0 based line & column number -->
 +
<!--GIDEROSMTD:TextEditor:setCursorPosition(line, column)-->
 +
<!--GIDEROSMTD:TextEditor:setHandleMouseInputs(bool)-->
 +
<!--GIDEROSMTD:TextEditor:isHandleMouseInputsEnabled() bool = TextEditor:isHandleMouseInputsEnabled()-->
 +
<!--GIDEROSMTD:TextEditor:setHandleKeyboardInputs(bool)-->
 +
<!--GIDEROSMTD:TextEditor:isHandleKeyboardInputsEnabled() bool = TextEditor:isHandleKeyboardInputsEnabled()-->
 +
<!--GIDEROSMTD:TextEditor:setTextEditorChildIgnored(bool)-->
 +
<!--GIDEROSMTD:TextEditor:isTextEditorChildIgnored() bool = TextEditor:isTextEditorChildIgnored()-->
 +
<!--GIDEROSMTD:TextEditor:setShowWhitespaces(bool)-->
 +
<!--GIDEROSMTD:TextEditor:isShowingWhitespaces() bool = TextEditor:isShowingWhitespaces()-->
 +
<!--GIDEROSMTD:TextEditor:setTabSize(size)-->
 +
<!--GIDEROSMTD:TextEditor:getTabSize() size = TextEditor:getTabSize()-->
 +
<!--GIDEROSMTD:TextEditor:insertText(string)-->
 +
<!--GIDEROSMTD:TextEditor:moveUp([amount = 1, select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveDown([amount = 1, select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveLeft([amount = 1, select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveRight([amount = 1, select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveTop([select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveBottom([select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveHome([select = false])-->
 +
<!--GIDEROSMTD:TextEditor:moveEnd([select = false])-->
 +
<!--GIDEROSMTD:TextEditor:setSelectionStart(line, column)-->
 +
<!--GIDEROSMTD:TextEditor:setSelectionEnd(line, column)-->
 +
<!--GIDEROSMTD:TextEditor:setSelection(start_line, start_column, end_line, end_column)-->
 +
<!--GIDEROSMTD:TextEditor:selectWordUnderCursor()-->
 +
<!--GIDEROSMTD:TextEditor:selectAll()-->
 +
<!--GIDEROSMTD:TextEditor:hasSelection() bool = TextEditor:hasSelection()-->
 +
<!--GIDEROSMTD:TextEditor:copy()-->
 +
<!--GIDEROSMTD:TextEditor:cut()-->
 +
<!--GIDEROSMTD:TextEditor:paste()-->
 +
<!--GIDEROSMTD:TextEditor:delete()-->
 +
<!--GIDEROSMTD:TextEditor:canUndo() bool = TextEditor:canUndo()-->
 +
<!--GIDEROSMTD:TextEditor:canRedo() bool = TextEditor:canRedo()-->
 +
<!--GIDEROSMTD:TextEditor:undo()-->
 +
<!--GIDEROSMTD:TextEditor:redo()-->
 +
<!--GIDEROSMTD:LanguageDefinition:getName() string = LanguageDefinition:getName()-->
 +
<!--GIDEROSMTD:ImGuiErrorMarkers.new() ErrorMarkers = ImGuiErrorMarkers.new()-->
 +
<!--GIDEROSMTD:ErrorMarkers:add(line, message)-->
 +
<!--GIDEROSMTD:ErrorMarkers:remove(line)-->
 +
<!--GIDEROSMTD:ErrorMarkers:get(line) message = ErrorMarkers:get(line)-->
 +
<!--GIDEROSMTD:ErrorMarkers:getSize() number = ErrorMarkers:getSize()-->
 +
<!--GIDEROSMTD:ImGuiBreakpoints.new() Breakpoints = ImGuiBreakpoints.new()-->
 +
<!--GIDEROSMTD:Breakpoints:add(line)-->
 +
<!--GIDEROSMTD:Breakpoints:remove(line)-->
 +
<!--GIDEROSMTD:Breakpoints:get(line) bool = Breakpoints:get(line)-->
 +
<!--GIDEROSMTD:Breakpoints:getSize() number = Breakpoints:getSize()-->
 +
<!--GIDEROSMTD:ImGui:getWindowDrawList() local list = ImGui:getWindowDrawList()-->
 +
<!--GIDEROSMTD:ImGui:getBackgroundDrawList() local list = ImGui:getBackgroundDrawList()-->
 +
<!--GIDEROSMTD:ImGui:getForegroundDrawList() local list = ImGui:getForegroundDrawList()-->
 +
<!--GIDEROSMTD:DrawList:pushClipRect(clip_rect_min_x, clip_rect_min_y, clip_rect_max_x, clip_rect_max_y [, intersect_with_current_clip_rect = false])-->
 +
<!--GIDEROSMTD:DrawList:pushClipRectFullScreen()-->
 +
<!--GIDEROSMTD:DrawList:popClipRect()-->
 +
<!--GIDEROSMTD:DrawList:pushTextureID(texture)-->
 +
<!--GIDEROSMTD:DrawList:popTextureID()-->
 +
<!--GIDEROSMTD:DrawList:getClipRectMin() x, y = DrawList:getClipRectMin()-->
 +
<!--GIDEROSMTD:DrawList:getClipRectMax() x, y = DrawList:getClipRectMax()-->
 +
<!--GIDEROSMTD:DrawList:addLine(p1_x, p1_y, p2_x, p2_y, color [, alpha = 1, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:addRect(p_min_x, p_min_y, p_max_x, p_max_y, color [, alpha = 1, rounding = 0, rounding_corners = ImGui.DrawFlags_RoundCornersAll, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:addRectFilled(p_min_x, p_min_y, p_max_x, p_max_y, color [, alpha = 1, rounding = 0, rounding_corners = ImGui.DrawFlags_RoundCornersAll])-->
 +
<!--GIDEROSMTD:DrawList:addRectFilledMultiColor(p_min_x, p_min_y, p_max_x, p_max_y, color_upr_left, color_upr_right, color_bot_right, color_bot_left)-->
 +
<!--GIDEROSMTD:DrawList:addQuad(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color [, alpha = 1, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:addQuadFilled(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color)-->
 +
<!--GIDEROSMTD:DrawList:addTriangle(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color [, alpha = 1, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:addTriangleFilled(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color)-->
 +
<!--GIDEROSMTD:DrawList:addCircle(center_x, center_y, radius, color [, alpha = 1, num_segments = 12, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:addCircleFilled(center_x, center_y, radius, color [, alpha = 1, num_segments = 12])-->
 +
<!--GIDEROSMTD:DrawList:addNgon(center_x, center_y, radius, color [, alpha = 1, num_segments = 12, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:addNgonFilled(center_x, center_y, radius, color [, alpha = 1, num_segments = 12])-->
 +
<!--GIDEROSMTD:DrawList:addText(x, y, color, alpha, text) -- x, y (number), text_begin (string), text_end (string)-->
 +
<!--GIDEROSMTD:DrawList:addFontText(font, font_size, pos_x, pos_y, color, alpha, text [, wrap_with = 0, cpu_fine_clip_rect_x, cpu_fine_clip_rect_y, cpu_fine_clip_rect_w, cpu_fine_clip_rect_h])-->
 +
<!--GIDEROSMTD:DrawList:addPolyline(points_table, color, alpha, closed, thickness) points_table (table), color (number), closed (bool), thickness (number)-->
 +
<!--GIDEROSMTD:DrawList:addConvexPolyFilled(points_table, color) points_table (table), color (number)-->
 +
<!--GIDEROSMTD:DrawList:addBezierCubic(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color, alpha, thickness [, num_segments = 0])-->
 +
<!--GIDEROSMTD:DrawList:addBezierQuadratic(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color, alpha, thickness [, num_segments = 0])-->
 +
<!--GIDEROSMTD:DrawList:addImage(texture, x, y, x + w, y + h [, tint_color = 0xffffff, tint_alpha = 1])-->
 +
<!--GIDEROSMTD:DrawList:addImageUV(texture, x, y, x + w, y + h, uv0x, uv0y, uv1x, uv1y [, tint_color = 0xffffff, tint_alpha = 1])-->
 +
<!--GIDEROSMTD:DrawList:addImageQuad(texture, x, y, x + w, y, x + w, y + h, x, y + h [, tint_color = 0xffffff, tint_alpha = 1, uv0x = 0, uv0y = 0, uv1x = 1, uv1y = 0, uv2x = 1, uv2y = 1, uv3x = 0, uv3y = 1])-->
 +
<!--GIDEROSMTD:DrawList:addImageRounded(texture, x, y, x + w, y + h, tint_color, tint_alpha, round_radius [, corner_flags = ImGui.CorenerFlags_All])-->
 +
<!--GIDEROSMTD:DrawList:addImageRoundedUV(texture, x, y, x + w, y + h, uv0x, uv0y, uv1x, uv1y, tint_color, tint_alpha, round_radius [, corner_flags = ImGui.CorenerFlags_All])-->
 +
<!--GIDEROSMTD:DrawList:pathClear()-->
 +
<!--GIDEROSMTD:DrawList:pathLineTo(x, y)-->
 +
<!--GIDEROSMTD:DrawList:pathLineToMergeDuplicate(x, y)-->
 +
<!--GIDEROSMTD:DrawList:pathFillConvex(color)-->
 +
<!--GIDEROSMTD:DrawList:pathStroke(color, alpha, closed [, thickness = 1])-->
 +
<!--GIDEROSMTD:DrawList:pathArcTo(center_x, center_y, radius, a_min, a_max [, num_segments = 10])-->
 +
<!--GIDEROSMTD:DrawList:pathArcToFast(center_x, center_y, radius, a_min, a_max)-->
 +
<!--GIDEROSMTD:DrawList:pathBezierCubicCurveTo(p2x, p2y, p3x, p3y, p4x, p4y [, num_segments = 0])-->
 +
<!--GIDEROSMTD:DrawList:pathBezierQuadraticCurveTo(p2x, p2y, p3x, p3y [, num_segments = 0])-->
 +
<!--GIDEROSMTD:DrawList:pathRect(min_x, min_y, max_x, max_y [, rounding = 0, ImGui.DrawFlags = 0])-->
 +
<!--GIDEROSMTD:DrawList:rotateBegin() rotate any draw list item around its center point-->
 +
<!--GIDEROSMTD:DrawList:rotateEnd(radians)-->
 +
<!--=== Events ===-->
 +
<!--GIDEROSEVT:ImGui.KeyChar-->
 +
<!--GIDEROSEVT:ImGui.KeyDown-->
 +
<!--GIDEROSEVT:ImGui.KeyUp-->
 +
<!--GIDEROSEVT:ImGui.MouseDown-->
 +
<!--GIDEROSEVT:ImGui.MouseHover-->
 +
<!--GIDEROSEVT:ImGui.MouseMove-->
 +
<!--GIDEROSEVT:ImGui.MouseUp-->
 +
<!--GIDEROSEVT:ImGui.MouseWheel-->
 +
<!--GIDEROSEVT:ImGui.TouchBegin-->
 +
<!--GIDEROSEVT:ImGui.TouchCancel-->
 +
<!--GIDEROSEVT:ImGui.TouchEnd-->
 +
<!--GIDEROSEVT:ImGui.TouchMove-->
 +
<!--=== Constants ===-->
 +
<!--GIDEROSCST:ImGui._VERSION-->
 +
<!--GIDEROSCST:ImGui.BackendFlags_None-->
 +
<!--GIDEROSCST:ImGui.BackendFlags_HasGamepad-->
 +
<!--GIDEROSCST:ImGui.BackendFlags_HasMouseCursors-->
 +
<!--GIDEROSCST:ImGui.BackendFlags_HasSetMousePos-->
 +
<!--GIDEROSCST:ImGui.BackendFlags_RendererHasVtxOffset-->
 +
<!--GIDEROSCST:ImGui.Col_Border-->
 +
<!--GIDEROSCST:ImGui.Col_BorderShadow-->
 +
<!--GIDEROSCST:ImGui.Col_Button-->
 +
<!--GIDEROSCST:ImGui.Col_ButtonActive-->
 +
<!--GIDEROSCST:ImGui.Col_ButtonHovered-->
 +
<!--GIDEROSCST:ImGui.Col_CheckMark-->
 +
<!--GIDEROSCST:ImGui.Col_ChildBg-->
 +
<!--GIDEROSCST:ImGui.Col_DragDropTarget-->
 +
<!--GIDEROSCST:ImGui.Col_FrameBg-->
 +
<!--GIDEROSCST:ImGui.Col_FrameBgActive-->
 +
<!--GIDEROSCST:ImGui.Col_FrameBgHovered-->
 +
<!--GIDEROSCST:ImGui.Col_Header-->
 +
<!--GIDEROSCST:ImGui.Col_HeaderActive-->
 +
<!--GIDEROSCST:ImGui.Col_HeaderHovered-->
 +
<!--GIDEROSCST:ImGui.Col_MenuBarBg-->
 +
<!--GIDEROSCST:ImGui.Col_ModalWindowDimBg-->
 +
<!--GIDEROSCST:ImGui.Col_NavHighlight-->
 +
<!--GIDEROSCST:ImGui.Col_NavWindowingDimBg-->
 +
<!--GIDEROSCST:ImGui.Col_NavWindowingHighlight-->
 +
<!--GIDEROSCST:ImGui.Col_PlotHistogram-->
 +
<!--GIDEROSCST:ImGui.Col_PlotHistogramHovered-->
 +
<!--GIDEROSCST:ImGui.Col_PlotLines-->
 +
<!--GIDEROSCST:ImGui.Col_PlotLinesHovered-->
 +
<!--GIDEROSCST:ImGui.Col_PopupBg-->
 +
<!--GIDEROSCST:ImGui.Col_ResizeGrip-->
 +
<!--GIDEROSCST:ImGui.Col_ResizeGripActive-->
 +
<!--GIDEROSCST:ImGui.Col_ResizeGripHovered-->
 +
<!--GIDEROSCST:ImGui.Col_ScrollbarBg-->
 +
<!--GIDEROSCST:ImGui.Col_ScrollbarGrab-->
 +
<!--GIDEROSCST:ImGui.Col_ScrollbarGrabActive-->
 +
<!--GIDEROSCST:ImGui.Col_ScrollbarGrabHovered-->
 +
<!--GIDEROSCST:ImGui.Col_Separator-->
 +
<!--GIDEROSCST:ImGui.Col_SeparatorActive-->
 +
<!--GIDEROSCST:ImGui.Col_SeparatorHovered-->
 +
<!--GIDEROSCST:ImGui.Col_SliderGrab-->
 +
<!--GIDEROSCST:ImGui.Col_SliderGrabActive-->
 +
<!--GIDEROSCST:ImGui.Col_Tab-->
 +
<!--GIDEROSCST:ImGui.Col_TabActive-->
 +
<!--GIDEROSCST:ImGui.Col_TabHovered-->
 +
<!--GIDEROSCST:ImGui.Col_TableBorderLight-->
 +
<!--GIDEROSCST:ImGui.Col_TableBorderStrong-->
 +
<!--GIDEROSCST:ImGui.Col_TableHeaderBg-->
 +
<!--GIDEROSCST:ImGui.Col_TableRowBg-->
 +
<!--GIDEROSCST:ImGui.Col_TableRowBgAlt-->
 +
<!--GIDEROSCST:ImGui.Col_TabUnfocused-->
 +
<!--GIDEROSCST:ImGui.Col_TabUnfocusedActive-->
 +
<!--GIDEROSCST:ImGui.Col_Text-->
 +
<!--GIDEROSCST:ImGui.Col_TextDisabled-->
 +
<!--GIDEROSCST:ImGui.Col_TextSelectedBg-->
 +
<!--GIDEROSCST:ImGui.Col_TitleBg-->
 +
<!--GIDEROSCST:ImGui.Col_TitleBgActive-->
 +
<!--GIDEROSCST:ImGui.Col_TitleBgCollapsed-->
 +
<!--GIDEROSCST:ImGui.Col_WindowBg-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_None-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_AlphaBar-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_AlphaPreview-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_AlphaPreviewHalf-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_DisplayHex-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_DisplayHSV-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_DisplayRGB-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_Float-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_HDR-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_InputHSV-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_InputRGB-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoAlpha-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoBorder-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoDragDrop-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoInputs-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoLabel-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoOptions-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoPicker-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoSidePreview-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoSmallPreview-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_NoTooltip-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_OptionsDefault-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_PickerHueBar-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_PickerHueWheel-->
 +
<!--GIDEROSCST:ImGui.ColorEditFlags_Uint8-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_None-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_HeightLarge-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_HeightLargest-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_HeightMask-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_HeightRegular-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_HeightSmall-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_NoArrowButton-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_NoPreview-->
 +
<!--GIDEROSCST:ImGui.ComboFlags_PopupAlignLeft -->
 +
<!--GIDEROSCST:ImGui.Cond_None-->
 +
<!--GIDEROSCST:ImGui.Cond_Always-->
 +
<!--GIDEROSCST:ImGui.Cond_Appearing-->
 +
<!--GIDEROSCST:ImGui.Cond_FirstUseEver-->
 +
<!--GIDEROSCST:ImGui.Cond_Once -->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_None-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_IsSRGB-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_IsTouchScreen-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_NavEnableGamepad-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_NavEnableKeyboard-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_NavEnableSetMousePos-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_NavNoCaptureKeyboard-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_NoMouse-->
 +
<!--GIDEROSCST:ImGui.ConfigFlags_NoMouseCursorChange -->
 +
<!--GIDEROSCST:ImGui.DrawFlags_None-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_Closed-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersAll-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersBottom-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersBottomLeft-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersBottomRight-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersLeft-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersRight-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersTop-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersTopLeft-->
 +
<!--GIDEROSCST:ImGui.DrawFlags_RoundCornersTopRight -->
 +
<!--GIDEROSCST:ImGui.DataType_Double-->
 +
<!--GIDEROSCST:ImGui.DataType_Float-->
 +
<!--GIDEROSCST:ImGui.DataType_S8-->
 +
<!--GIDEROSCST:ImGui.DataType_S16-->
 +
<!--GIDEROSCST:ImGui.DataType_S32-->
 +
<!--GIDEROSCST:ImGui.DataType_S64-->
 +
<!--GIDEROSCST:ImGui.DataType_U8-->
 +
<!--GIDEROSCST:ImGui.DataType_U16-->
 +
<!--GIDEROSCST:ImGui.DataType_U32-->
 +
<!--GIDEROSCST:ImGui.DataType_U64 -->
 +
<!--GIDEROSCST:ImGui.Dir_None-->
 +
<!--GIDEROSCST:ImGui.Dir_Down-->
 +
<!--GIDEROSCST:ImGui.Dir_Left-->
 +
<!--GIDEROSCST:ImGui.Dir_Right-->
 +
<!--GIDEROSCST:ImGui.Dir_Up-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_None-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_AcceptBeforeDelivery-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_AcceptNoDrawDefaultRect-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_AcceptNoPreviewTooltip-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_AcceptPeekOnly-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_SourceAllowNullID-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_SourceAutoExpirePayload-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_SourceExtern-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_SourceNoDisableHover-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_SourceNoHoldToOpenOthers-->
 +
<!--GIDEROSCST:ImGui.DragDropFlags_SourceNoPreviewTooltip-->
 +
<!--GIDEROSCST:ImGui.FocusedFlags_None-->
 +
<!--GIDEROSCST:ImGui.FocusedFlags_AnyWindow-->
 +
<!--GIDEROSCST:ImGui.FocusedFlags_ChildWindows-->
 +
<!--GIDEROSCST:ImGui.FocusedFlags_NoPopupHierarchy-->
 +
<!--GIDEROSCST:ImGui.FocusedFlags_RootAndChildWindows-->
 +
<!--GIDEROSCST:ImGui.FocusedFlags_RootWindow -->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_ChineseFull-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_ChineseSimplifiedCommon-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_Cyrillic-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_Default-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_Japanese-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_Korean-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_Thai-->
 +
<!--GIDEROSCST:ImGui.GlyphRanges_Vietnamese -->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_None-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_AllowWhenBlockedByActiveItem-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_AllowWhenBlockedByPopup-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_AllowWhenDisabled-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_AllowWhenOverlapped-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_AnyWindow-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_ChildWindows-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_DelayNormal-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_DelayShort-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_NoNavOverride-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_NoSharedDelay-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_RectOnly-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_RootAndChildWindows-->
 +
<!--GIDEROSCST:ImGui.HoveredFlags_RootWindow -->
 +
<!--GIDEROSCST:ImGui.ImageScaleMode_FitHeight-->
 +
<!--GIDEROSCST:ImGui.ImageScaleMode_FitWidth-->
 +
<!--GIDEROSCST:ImGui.ImageScaleMode_LetterBox-->
 +
<!--GIDEROSCST:ImGui.ImageScaleMode_Stretch -->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_None-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_AllowTabInput-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_AlwaysInsertMode-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_AutoSelectAll-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CallbackAlways-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CallbackCharFilter-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CallbackCompletion-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CallbackEdit-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CallbackHistory-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CallbackResize-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CharsDecimal-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CharsHexadecimal-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CharsNoBlank-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CharsScientific-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CharsUppercase-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_CtrlEnterForNewLine-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_EnterReturnsTrue-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_EscapeClearsAll-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_NoBackground-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_NoHorizontalScroll-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_NoUndoRedo-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_Password-->
 +
<!--GIDEROSCST:ImGui.InputTextFlags_ReadOnly -->
 +
<!--GIDEROSCST:ImGui.ItemFlags_ButtonRepeat-->
 +
<!--GIDEROSCST:ImGui.ItemFlags_Disabled-->
 +
<!--GIDEROSCST:ImGui.ItemFlags_NoTabStop -->
 +
<!--GIDEROSCST:ImGui.MouseButton_Left-->
 +
<!--GIDEROSCST:ImGui.MouseButton_Middle-->
 +
<!--GIDEROSCST:ImGui.MouseButton_Right -->
 +
<!--GIDEROSCST:ImGui.MouseCursor_None-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_Arrow-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_Hand-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_NotAllowed-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_ResizeAll-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_ResizeEW-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_ResizeNESW-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_ResizeNS-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_ResizeNWSE-->
 +
<!--GIDEROSCST:ImGui.MouseCursor_TextInput -->
 +
<!--GIDEROSCST:ImGui.NavInput_Activate-->
 +
<!--GIDEROSCST:ImGui.NavInput_Cancel-->
 +
<!--GIDEROSCST:ImGui.NavInput_DpadDown-->
 +
<!--GIDEROSCST:ImGui.NavInput_DpadLeft-->
 +
<!--GIDEROSCST:ImGui.NavInput_DpadRight-->
 +
<!--GIDEROSCST:ImGui.NavInput_DpadUp-->
 +
<!--GIDEROSCST:ImGui.NavInput_FocusNext-->
 +
<!--GIDEROSCST:ImGui.NavInput_FocusPrev-->
 +
<!--GIDEROSCST:ImGui.NavInput_Input-->
 +
<!--GIDEROSCST:ImGui.NavInput_LStickDown-->
 +
<!--GIDEROSCST:ImGui.NavInput_LStickLeft-->
 +
<!--GIDEROSCST:ImGui.NavInput_LStickRight-->
 +
<!--GIDEROSCST:ImGui.NavInput_LStickUp-->
 +
<!--GIDEROSCST:ImGui.NavInput_Menu-->
 +
<!--GIDEROSCST:ImGui.NavInput_TweakFast-->
 +
<!--GIDEROSCST:ImGui.NavInput_TweakSlow -->
 +
<!--GIDEROSCST:ImGui.PopupFlags_None-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_AnyPopup-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_AnyPopupId-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_AnyPopupLevel-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_MouseButtonDefault-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_MouseButtonLeft-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_MouseButtonMask-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_MouseButtonMiddle-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_MouseButtonRight-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_NoOpenOverExistingPopup-->
 +
<!--GIDEROSCST:ImGui.PopupFlags_NoOpenOverItems -->
 +
<!--GIDEROSCST:ImGui.SelectableFlags_None-->
 +
<!--GIDEROSCST:ImGui.SelectableFlags_AllowDoubleClick-->
 +
<!--GIDEROSCST:ImGui.SelectableFlags_AllowItemOverlap-->
 +
<!--GIDEROSCST:ImGui.SelectableFlags_Disabled-->
 +
<!--GIDEROSCST:ImGui.SelectableFlags_DontClosePopups-->
 +
<!--GIDEROSCST:ImGui.SelectableFlags_SpanAllColumns -->
 +
<!--GIDEROSCST:ImGui.SliderFlags_None          -->
 +
<!--GIDEROSCST:ImGui.SliderFlags_AlwaysClamp-->
 +
<!--GIDEROSCST:ImGui.SliderFlags_Logarithmic  -->
 +
<!--GIDEROSCST:ImGui.SliderFlags_NoInput-->
 +
<!--GIDEROSCST:ImGui.SliderFlags_NoRoundToFormat -->
 +
<!--GIDEROSCST:ImGui.SortDirection_None-->
 +
<!--GIDEROSCST:ImGui.SortDirection_Ascending-->
 +
<!--GIDEROSCST:ImGui.SortDirection_Descending -->
 +
<!--GIDEROSCST:ImGui.StyleVar_Alpha-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ButtonTextAlign-->
 +
<!--GIDEROSCST:ImGui.StyleVar_CellPadding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ChildBorderSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ChildRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_DisabledAlpha-->
 +
<!--GIDEROSCST:ImGui.StyleVar_FrameBorderSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_FramePadding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_FrameRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_GrabMinSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_GrabRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_IndentSpacing-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ItemInnerSpacing-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ItemSpacing-->
 +
<!--GIDEROSCST:ImGui.StyleVar_PopupBorderSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_PopupRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ScrollbarRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_ScrollbarSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_SelectableTextAlign-->
 +
<!--GIDEROSCST:ImGui.StyleVar_SeparatorTextAlign-->
 +
<!--GIDEROSCST:ImGui.StyleVar_SeparatorTextBorderSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_SeparatorTextPadding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_TabRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_WindowBorderSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_WindowMinSize-->
 +
<!--GIDEROSCST:ImGui.StyleVar_WindowPadding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_WindowRounding-->
 +
<!--GIDEROSCST:ImGui.StyleVar_WindowTitleAlign -->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_None-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_AutoSelectNewTabs-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_FittingPolicyDefault-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_FittingPolicyMask-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_FittingPolicyResizeDown-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_FittingPolicyScroll-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_NoCloseWithMiddleMouseButton-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_NoTabListScrollingButtons-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_NoTooltip-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_Reorderable-->
 +
<!--GIDEROSCST:ImGui.TabBarFlags_TabListPopupButton -->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_None-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_Leading-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_NoCloseWithMiddleMouseButton-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_NoPushId-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_NoReorder-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_NoTooltip-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_SetSelected-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_Trailing-->
 +
<!--GIDEROSCST:ImGui.TabItemFlags_UnsavedDocument -->
 +
<!--GIDEROSCST:ImGui.TableFlags_None-->
 +
<!--GIDEROSCST:ImGui.TableFlags_Borders-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersH-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersInner-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersInnerH -->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersInnerV-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersOuter-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersOuterH-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersOuterV-->
 +
<!--GIDEROSCST:ImGui.TableFlags_BordersV-->
 +
<!--GIDEROSCST:ImGui.TableFlags_ContextMenuInBody-->
 +
<!--GIDEROSCST:ImGui.TableFlags_Hideable-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoBordersInBody-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoBordersInBodyUntilResize-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoClip-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoHostExtendX-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoHostExtendY-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoKeepColumnsVisible-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoPadInnerX-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoPadOuterX-->
 +
<!--GIDEROSCST:ImGui.TableFlags_NoSavedSettings-->
 +
<!--GIDEROSCST:ImGui.TableFlags_PadOuterX-->
 +
<!--GIDEROSCST:ImGui.TableFlags_PreciseWidths-->
 +
<!--GIDEROSCST:ImGui.TableFlags_Reorderable-->
 +
<!--GIDEROSCST:ImGui.TableFlags_Resizable-->
 +
<!--GIDEROSCST:ImGui.TableFlags_RowBg-->
 +
<!--GIDEROSCST:ImGui.TableFlags_ScrollX-->
 +
<!--GIDEROSCST:ImGui.TableFlags_ScrollY-->
 +
<!--GIDEROSCST:ImGui.TableFlags_SizingFixedFit-->
 +
<!--GIDEROSCST:ImGui.TableFlags_SizingFixedSame-->
 +
<!--GIDEROSCST:ImGui.TableFlags_SizingStretchProp-->
 +
<!--GIDEROSCST:ImGui.TableFlags_SizingStretchSame-->
 +
<!--GIDEROSCST:ImGui.TableFlags_Sortable-->
 +
<!--GIDEROSCST:ImGui.TableFlags_SortMulti-->
 +
<!--GIDEROSCST:ImGui.TableFlags_SortTristate -->
 +
<!--GIDEROSCST:ImGui.TableBgTarget_None-->
 +
<!--GIDEROSCST:ImGui.TableBgTarget_CellBg-->
 +
<!--GIDEROSCST:ImGui.TableBgTarget_RowBg0-->
 +
<!--GIDEROSCST:ImGui.TableBgTarget_RowBg1 -->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_None-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_DefaultHide-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_DefaultSort-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_Disabled-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_IndentDisable-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_IndentEnable-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_IsEnabled-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_IsHovered-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_IsSorted-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_IsVisible-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoClip-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoHeaderLabel-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoHeaderWidth-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoHide-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoReorder-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoResize-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoSort-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoSortAscending-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_NoSortDescending-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_PreferSortAscending-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_PreferSortDescending-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_WidthFixed-->
 +
<!--GIDEROSCST:ImGui.TableColumnFlags_WidthStretch -->
 +
<!--GIDEROSCST:ImGui.TableRowFlags_None-->
 +
<!--GIDEROSCST:ImGui.TableRowFlags_Headers -->
 +
<!--GIDEROSCST:ImGui.TE_Background-->
 +
<!--GIDEROSCST:ImGui.TE_Breakpoint-->
 +
<!--GIDEROSCST:ImGui.TE_CharLiteral-->
 +
<!--GIDEROSCST:ImGui.TE_ColorIndex-->
 +
<!--GIDEROSCST:ImGui.TE_Comment-->
 +
<!--GIDEROSCST:ImGui.TE_CurrentLineEdge-->
 +
<!--GIDEROSCST:ImGui.TE_CurrentLineFill-->
 +
<!--GIDEROSCST:ImGui.TE_CurrentLineFillInactive-->
 +
<!--GIDEROSCST:ImGui.TE_Cursor-->
 +
<!--GIDEROSCST:ImGui.TE_Default-->
 +
<!--GIDEROSCST:ImGui.TE_ErrorMarker-->
 +
<!--GIDEROSCST:ImGui.TE_Identifier-->
 +
<!--GIDEROSCST:ImGui.TE_Keyword-->
 +
<!--GIDEROSCST:ImGui.TE_KnownIdentifier-->
 +
<!--GIDEROSCST:ImGui.TE_LineNumber-->
 +
<!--GIDEROSCST:ImGui.TE_MultiLineComment-->
 +
<!--GIDEROSCST:ImGui.TE_Number-->
 +
<!--GIDEROSCST:ImGui.TE_Preprocessor-->
 +
<!--GIDEROSCST:ImGui.TE_PreprocIdentifier-->
 +
<!--GIDEROSCST:ImGui.TE_Punctuation-->
 +
<!--GIDEROSCST:ImGui.TE_Selection-->
 +
<!--GIDEROSCST:ImGui.TE_String-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_None-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_AllowItemOverlap-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_Bullet-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_CollapsingHeader-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_DefaultOpen-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_Framed-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_FramePadding-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_Leaf-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_NavLeftJumpsBackHere-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_NoAutoOpenOnLog-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_NoTreePushOnOpen-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_OpenOnArrow-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_OpenOnDoubleClick-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_Selected-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_SpanAvailWidth-->
 +
<!--GIDEROSCST:ImGui.TreeNodeFlags_SpanFullWidth-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_None-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_AlwaysAutoResize-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_AlwaysHorizontalScrollbar-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_AlwaysUseWindowPadding-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_AlwaysVerticalScrollbar-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_FullScreen-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_HorizontalScrollbar-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_MenuBar-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoBackground-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoBringToFrontOnFocus-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoCollapse-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoDecoration-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoFocusOnAppearing-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoInputs-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoMouseInputs-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoMove-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoNav-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoNavFocus-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoNavInputs-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoResize-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoSavedSettings-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoScrollbar-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoScrollWithMouse-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_NoTitleBar-->
 +
<!--GIDEROSCST:ImGui.WindowFlags_UnsavedDocument-->
  
 
{{GIDEROS IMPORTANT LINKS}}
 
{{GIDEROS IMPORTANT LINKS}}

Latest revision as of 01:46, 11 October 2024

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
Available since: Gideros 2020.9

Description

This is an implementation of the Dear ImGui library: https://github.com/ocornut/imgui.

Dear ImGui is licensed under the MIT License, see https://github.com/ocornut/imgui/blob/master/LICENSE.txt for more information.

To use Dear ImGui in your project you need to add the ImGui plugin and call require like so:

require "ImGui"

Current Gideros Dear ImGui version: 1.89.6.

User Guide

  • Double-click on title bar to collapse window
  • Click and drag on lower corner to resize window (double-click to auto fit window to its contents)
  • CTRL+Click on a slider or drag box to input value as text
  • TAB/SHIFT+TAB to cycle through keyboard editable fields
  • CTRL+Tab to select a window
  • CTRL+Mouse Wheel to zoom window contents if io.FontAllowUserScaling is enabled
  • While inputing text:
    • CTRL+Left/Right to word jump
    • CTRL+A or double-click to select all
    • CTRL+X/C/V to use clipboard cut/copy/paste
    • CTRL+Z,CTRL+Y to undo/redo
    • ESCAPE to revert
  • With keyboard navigation enabled:
    • Arrow keys to navigate
    • Space to activate a widget
    • Return to input text into a widget
    • Escape to deactivate a widget, close popup, exit child window
    • Alt to jump to the menu layer of a window

Widgets

Widgets: Color Editor/Picker

* tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu

Widgets: Input with Keyboard

* If you want to use InputText() with std::string or any custom dynamic string type, see misc/cpp/imgui_stdlib.h and comments in imgui_demo.cpp.
* Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc.

Widgets: Regular Sliders

* CTRL+Click on any slider to turn them into an input box. Manually input values aren't clamped and can go off-bounds.
* Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
* Format string may also be set to NULL or use the default format ("%f" or "%d").

If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361

Widgets: Drag Sliders

* CTRL+Click on any drag box to turn them into an input box. Manually input values aren't clamped and can go off-bounds.
* For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x
* Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
* Format string may also be set to NULL or use the default format ("%f" or "%d").
* Speed are per-pixel of mouse movement (v_speed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(v_speed, minimum_step_at_given_precision).
* Use v_min < v_max to clamp edits to given limits. Note that CTRL+Click manual input can override those limits.
* Use v_max = FLT_MAX / INT_MAX etc to avoid clamping to a maximum, same with v_min = -FLT_MAX / INT_MIN to avoid clamping to a minimum.
* We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them.

Gideros Dear ImGui Documentation