|
|
Line 13: |
Line 13: |
| | | |
| Current Gideros Dear ImGui version: '''1.89.6'''. | | Current Gideros Dear ImGui version: '''1.89.6'''. |
− |
| |
| | | |
| See full introduction documentation here: https://pixtur.github.io/mkdocs-for-imgui/site/ | | See full introduction documentation here: https://pixtur.github.io/mkdocs-for-imgui/site/ |
| | | |
| and the full Dear ImGui demo here: https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html | | and the full Dear ImGui demo here: https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html |
− |
| |
− |
| |
− | You can find some Dear ImGui examples implemented in Gideros Studio here: '''[[ImGui_Examples]]'''.
| |
| | | |
| = Dear ImGui = | | = Dear ImGui = |
Line 29: |
Line 25: |
| Dear ImGui is particularly suited to integration in game engines (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on console platforms where operating system features are non-standard. | | Dear ImGui is particularly suited to integration in game engines (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on console platforms where operating system features are non-standard. |
| | | |
− | Code example: | + | Code sample (Lua): |
| <syntaxhighlight lang="lua"> | | <syntaxhighlight lang="lua"> |
| imgui:text("Hello World!") | | imgui:text("Hello World!") |
Line 67: |
Line 63: |
| * 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. | | * 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. |
| | | |
− | == Labels and the ID Stack ==
| + | ---- |
− | Dear ImGui internally need to uniquely identify UI elements. Elements that are typically not clickable (such as calls to the Text functions) don't need an ID. Interactive widgets (such as calls to Button buttons) need a unique ID. Unique ID are used internally to track active widgets and occasionally associate state to widgets. Unique ID are implicitly built from the hash of multiple elements that identify the "path" to the UI element.
| + | *'''[[Dear ImGui FAQ]]''' |
− | | + | *'''[[Dear ImGui API]]''' |
− | Unique ID are often derived from a string label and at minimum scoped within their host window:
| + | *'''[[ImGui_Examples|Dear ImGui Gideros Examples]]''' |
− | <syntaxhighlight lang="lua">
| |
− | Begin("MyWindow");
| |
− | Button("OK"); // Label = "OK", ID = hash of ("MyWindow", "OK")
| |
− | Button("Cancel"); // Label = "Cancel", ID = hash of ("MyWindow", "Cancel")
| |
− | End();
| |
− | </syntaxhighlight>
| |
− | | |
− | Other elements such as tree nodes, etc. also pushes to the ID stack:
| |
− | <syntaxhighlight lang="lua">
| |
− | Begin("MyWindow");
| |
− | if (TreeNode("MyTreeNode"))
| |
− | {
| |
− | Button("OK"); // Label = "OK", ID = hash of ("MyWindow", "MyTreeNode", "OK")
| |
− | TreePop();
| |
− | }
| |
− | End();
| |
− | </syntaxhighlight>
| |
− | | |
− | Two items labeled "OK" in different windows or different tree locations won't collide:
| |
− | <syntaxhighlight lang="lua">
| |
− | Begin("MyFirstWindow");
| |
− | Button("OK"); // Label = "OK", ID = hash of ("MyFirstWindow", "OK")
| |
− | End();
| |
− | Begin("MyOtherWindow");
| |
− | Button("OK"); // Label = "OK", ID = hash of ("MyOtherWindow", "OK")
| |
− | End();
| |
− | </syntaxhighlight>
| |
− | | |
− | If you have a same ID twice in the same location, you'll have a conflict:
| |
− | <syntaxhighlight lang="lua">
| |
− | Button("OK");
| |
− | Button("OK"); // ID collision! Interacting with either button will trigger the first one.
| |
− | </syntaxhighlight>
| |
− | | |
− | Fear not! this is easy to solve and there are many ways to solve it!
| |
− | | |
− | Solving ID conflict in a simple/local context: When passing a label you can optionally specify extra ID information within string itself. Use "##" to pass a complement to the ID that won't be visible to the end-user. This helps solving the simple collision cases when you know e.g. at compilation time which items are going to be created:
| |
− | <syntaxhighlight lang="lua">
| |
− | Begin("MyWindow");
| |
− | Button("Play"); // Label = "Play", ID = hash of ("MyWindow", "Play")
| |
− | Button("Play##foo1"); // Label = "Play", ID = hash of ("MyWindow", "Play##foo1") // Different from above
| |
− | Button("Play##foo2"); // Label = "Play", ID = hash of ("MyWindow", "Play##foo2") // Different from above
| |
− | End();
| |
− | </syntaxhighlight>
| |
− | | |
− | If you want to completely hide the label, but still need an ID:
| |
− | <syntaxhighlight lang="lua">
| |
− | Checkbox("##On", &b); // Label = "", ID = hash of (..., "##On") // No visible label, just a checkbox!
| |
− | </syntaxhighlight>
| |
− | | |
− | Occasionally/rarely you might want change a label while preserving a constant ID. This allows you to animate labels. For example you may want to include varying information in a window title bar, but windows are uniquely identified by their ID. Use "###" to pass a label that isn't part of ID:
| |
− | <syntaxhighlight lang="lua">
| |
− | Button("Hello###ID"); // Label = "Hello", ID = hash of (..., "###ID")
| |
− | Button("World###ID"); // Label = "World", ID = hash of (..., "###ID") // Same as above, even if the label looks different
| |
− | | |
− | sprintf(buf, "My game (%f FPS)###MyGame", fps);
| |
− | Begin(buf); // Variable title, ID = hash of "MyGame"
| |
− | </syntaxhighlight>
| |
− | | |
− | Solving ID conflict in a more general manner: Use PushID() / PopID() to create scopes and manipulate the ID stack, as to avoid ID conflicts within the same window. This is the most convenient way of distinguishing ID when iterating and creating many UI elements programmatically. You can push a pointer, a string or an integer value into the ID stack. Remember that ID are formed from the concatenation of everything pushed into the ID stack. At each level of the stack we store the seed used for items at this level of the ID stack.
| |
− | <syntaxhighlight lang="lua">
| |
− | Begin("Window");
| |
− | for (int i = 0; i < 100; i++)
| |
− | {
| |
− | PushID(i); // Push i to the id tack
| |
− | Button("Click"); // Label = "Click", ID = hash of ("Window", i, "Click")
| |
− | PopID();
| |
− | }
| |
− | for (int i = 0; i < 100; i++)
| |
− | {
| |
− | MyObject* obj = Objects[i];
| |
− | PushID(obj);
| |
− | Button("Click"); // Label = "Click", ID = hash of ("Window", obj pointer, "Click")
| |
− | PopID();
| |
− | }
| |
− | for (int i = 0; i < 100; i++)
| |
− | {
| |
− | MyObject* obj = Objects[i];
| |
− | PushID(obj->Name);
| |
− | Button("Click"); // Label = "Click", ID = hash of ("Window", obj->Name, "Click")
| |
− | PopID();
| |
− | }
| |
− | End();
| |
− | </syntaxhighlight>
| |
− | | |
− | You can stack multiple prefixes into the ID stack:
| |
− | <syntaxhighlight lang="lua">
| |
− | Button("Click"); // Label = "Click", ID = hash of (..., "Click")
| |
− | PushID("node");
| |
− | Button("Click"); // Label = "Click", ID = hash of (..., "node", "Click")
| |
− | PushID(my_ptr);
| |
− | Button("Click"); // Label = "Click", ID = hash of (..., "node", my_ptr, "Click")
| |
− | PopID();
| |
− | PopID();
| |
− | </syntaxhighlight>
| |
− | | |
− | Tree nodes implicitly creates a scope for you by calling PushID().
| |
− | <syntaxhighlight lang="lua">
| |
− | Button("Click"); // Label = "Click", ID = hash of (..., "Click")
| |
− | if (TreeNode("node")) // <-- this function call will do a PushID() for you (unless instructed not to, with a special flag)
| |
− | {
| |
− | Button("Click"); // Label = "Click", ID = hash of (..., "node", "Click")
| |
− | TreePop();
| |
− | }
| |
− | </syntaxhighlight>
| |
− | | |
− | When working with trees, ID are used to preserve the open/close state of each tree node. Depending on your use cases you may want to use strings, indices or pointers as ID. e.g. when following a single pointer that may change over time, using a static string as ID will preserve your node open/closed state when the targeted object change. e.g. when displaying a list of objects, using indices or pointers as ID will preserve the node open/closed state differently. See what makes more sense in your situation!
| |
− | | |
− | '''note''': we used "..." above to signify whatever was already pushed to the ID stack previously
| |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | '''WIP'''
| |
− | | |
− | (copied from @'''rrraptor''''s GitHub '''https://github.com/MultiPain/Gideros_ImGui''')
| |
− | | |
− | | |
− | __TOC__
| |
− | | |
− | = Dear ImGui LUA binding for Gideros Mobile =
| |
− | | |
− | == Constructor ==
| |
− | <syntaxhighlight lang="lua">
| |
− | -- font_atlas: copy fonts
| |
− | -- mouse_listeners: adds internal mouse event listeners
| |
− | -- keyboard_listeners: adds internal keyboard event listeners
| |
− | -- touch_listeners: adds internal touch event listeners
| |
− | ImGui.new([font_atlas = nil, mouse_listeners = true, keyboard_listeners = true, touch_listeners = false])
| |
− | </syntaxhighlight>
| |
− | | |
− | == EXPERIMENTAL ==
| |
− | <syntaxhighlight lang="lua">
| |
− | p_open = ImGui:showLog(title, p_open [, ImGui.WindowFlags = 0]) -- draw log window
| |
− | ImGui:writeLog(text)
| |
− | </syntaxhighlight>
| |
− | | |
− | Gestures (touch only, turned OFF by default) ''WIP'':
| |
− | * tap gesture (Left Mouse Button) | |
− | * hold gesture (Right Mouse Button)
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:setTouchGesturesEnabled(bool)
| |
− | bool = ImGui:isTouchGesturesEnabled()
| |
− | </syntaxhighlight>
| |
− | | |
− | == FONTS ==
| |
− | <syntaxhighlight lang="lua">
| |
− | IO = imgui:getIO()
| |
− | FontAtlas = IO:getFonts()
| |
− | | |
− | Font = FontAtlas:addFont(ttf_font_path, font_size [, options])
| |
− | | |
− | -- options (table): all parameters are optional
| |
− | -- fontDataOwnedByAtlas - bool
| |
− | -- pixelSnapH - bool
| |
− | -- mergeMode - bool
| |
− | -- fontNo - number
| |
− | -- oversampleH - number
| |
− | -- oversampleV - number
| |
− | -- glyphExtraSpacingX - number
| |
− | -- glyphExtraSpacingY - number
| |
− | -- glyphOffsetX - number
| |
− | -- glyphOffsetY - number
| |
− | -- glyphMinAdvanceX - number
| |
− | -- glyphMaxAdvanceX - number
| |
− | -- rasterizerFlags - number
| |
− | -- rasterizerMultiply - number
| |
− | --
| |
− | -- glyphs - table:
| |
− | -- text(string): represents available chars
| |
− | -- chars(table): list of specific char code (example: {0x7262, ...})
| |
− | -- ranges(table): predefined glyph ranges (example: {ImGui.GlyphRanges_Default, ImGui.GlyphRanges_Japanese, ...})
| |
− | FontAtlas:addFonts(fontsDescription)
| |
− | -- fontsDescriptions(table):
| |
− | -- description(table):
| |
− | -- ttf_font_path(string): path to a font
| |
− | -- font_size(number): font size
| |
− | -- options(table): see description above
| |
− | -- example:
| |
− | -- FontAtlas:addFonts{ {"fonts/DroidSans.ttf", 16}, {"fonts/ProggyTiny.ttf", 16} }
| |
− | | |
− | Font = FontAtlas:getFont([index]) -- get font by index (if index is 0 or nil you will get default font instance)
| |
− | FontAtlas:build() -- call after multiple FontAtlas:addFont(...) calls to update ImGui font atlas
| |
− | FontAtlas:clearInputData()
| |
− | FontAtlas:clearTexData()
| |
− | FontAtlas:clearFonts()
| |
− | FontAtlas:clear()
| |
− | table = FontAtlas:getFonts() -- returns a table with all fonts (included default)
| |
− | flag = FontAtlas:isBuilt()
| |
− | number = FontAtlas:addCustomRectRegular(width, height)
| |
− | number = FontAtlas:addCustomRectFontGlyph(font, id, width, height, advance_x [, offset_x, offset_y])
| |
− | w, h, x, y, glyph_id, offset_x, offset_y, font, is_packed_flag = FontAtlas:getCustomRectByIndex(index)
| |
− | | |
− | ImGui:pushFont(font) -- font (table): object returned by FontAtlas:addFont(...) or FontAtlas:getFont([index])
| |
− | ImGui:popFont()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Minimal example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local UI = ImGui.new()
| |
− | local IO = UI:getIO()
| |
− | local FontAtlas = IO:getFonts()
| |
− | local VDS_font = FontAtlas:addFont("fonts/VDS.ttf", 16, {
| |
− | oversampleH = 2,
| |
− | oversampleV = 2,
| |
− | glyphs = {
| |
− | ranges = {ImGui.GlyphRanges_Cyrillic}
| |
− | }
| |
− | })
| |
− | IO:setFontDefault(VDS_font)
| |
− | FontAtlas:build()
| |
− | stage:addChild(UI)
| |
− | | |
− | -- you can use multiple fonts at the same time
| |
− | function enterFrame(e)
| |
− | UI:newFrame(e.deltaTime)
| |
− |
| |
− | UI:pushFont(font1)
| |
− | UI:text("Font1")
| |
− | UI:popFont()
| |
− |
| |
− | UI:pushFont(font2)
| |
− | UI:text("Font2")
| |
− | UI:popFont()
| |
− |
| |
− | UI:render()
| |
− | UI:endFrame()
| |
− | end
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Glyphs example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local fonts = io:getFonts()
| |
− | fonts:addFont(font_path, font_size, {
| |
− | glyphs = {
| |
− | ranges = {
| |
− | {
| |
− | 0x2590,0x2593, -- range1
| |
− | 0x2660,0x266B -- range2
| |
− | -- ...
| |
− | },
| |
− | ImGui.GlyphRanges_Cyrillic,
| |
− | {
| |
− | 0x01C0, 0x01C3 -- range3
| |
− | },
| |
− | ImGui.GlyphRanges_Korean
| |
− | },
| |
− |
| |
− | -- same structure:
| |
− | ranges = {
| |
− | {
| |
− | 0x2590,0x2593, -- range1
| |
− | 0x2660,0x266B, -- range2
| |
− | 0x01C0,0x01C3 -- range3
| |
− | -- ...
| |
− | },
| |
− | ImGui.GlyphRanges_Cyrillic,
| |
− | ImGui.GlyphRanges_Korean
| |
− | }
| |
− | },
| |
− | mergeMode = true, -- merge into previous font
| |
− | })
| |
− | fonts:build()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Icons example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local icon = utf8.char(0x2590)
| |
− | ImGui:text("My icon >>" .. icon .. " << !!!")
| |
− | | |
− | -- or with new Luau support:
| |
− | ImGui:text("My icon >> \u{2590} << !!!")
| |
− | -- can be also stored in memory:
| |
− | local icon = "\u{2590}"
| |
− | </syntaxhighlight>
| |
− | | |
− | == Font ==
| |
− | <syntaxhighlight lang="lua">
| |
− | number = Font:getSize()
| |
− | FontAtlas = Font:getContainerAtlas()
| |
− | Font:setScale(number)
| |
− | number = Font:getScale()
| |
− | number = Font:getAscent()
| |
− | number = Font:getDescent()
| |
− | boo = Font:isLoaded()
| |
− | string = Font:getDebugName()
| |
− | w, h = Font:calcTextSizeA(size, max_width, wrap_width, string)
| |
− | Font:calcWordWrapPositionA(scale, string, wrap_width) -- not tested
| |
− | </syntaxhighlight>
| |
− | | |
− | == INPUTS ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:onMouseHover(event)
| |
− | ImGui:onMouseMove(event)
| |
− | ImGui:onMouseDown(event)
| |
− | ImGui:onMouseUp(event)
| |
− | ImGui:onMouseWheel(event)
| |
− | | |
− | ImGui:onTouchMove(event)
| |
− | ImGui:onTouchBegin(event)
| |
− | ImGui:onTouchEnd(event)
| |
− | ImGui:onTouchCancel(event)
| |
− | | |
− | ImGui:onKeyUp(event)
| |
− | ImGui:onKeyDown(event)
| |
− | ImGui:onKeyChar(event)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Usage examples''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local UI = ImGui.new(nil, false, false, false)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Mouse'''
| |
− | <syntaxhighlight lang="lua">
| |
− | stage:addEventListener("mouseHover", function(e) UI:onMouseHover(e) end)
| |
− | stage:addEventListener("mouseMove", function(e) UI:onMouseMove(e) end)
| |
− | stage:addEventListener("mouseDown", function(e) UI:onMouseDown(e) end)
| |
− | stage:addEventListener("mouseUp", function(e) UI:onMouseUp(e) end)
| |
− | stage:addEventListener("mouseWheel", function(e) UI:onMouseWheel(e) end)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Touch'''
| |
− | <syntaxhighlight lang="lua">
| |
− | stage:addEventListener("touchesCancel", function(e) ui:onTouchCancel(e) end)
| |
− | stage:addEventListener("touchesMove", function(e) ui:onTouchMove(e) end)
| |
− | stage:addEventListener("touchesBegin", function(e) ui:onTouchBegin(e) end)
| |
− | stage:addEventListener("touchesEnd", function(e) ui:onTouchEnd(e) end)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Keyboard'''
| |
− | <syntaxhighlight lang="lua">
| |
− | stage:addEventListener("keyUp", function(e) UI:onKeyUp(e) end)
| |
− | stage:addEventListener("keyDown", function(e) UI:onKeyDown(e) end)
| |
− | stage:addEventListener("keyChar", function(e) UI:onKeyChar(e) end)
| |
− | </syntaxhighlight>
| |
− | | |
− | == Style setters/getters ==
| |
− | Get style settings instance:
| |
− | <syntaxhighlight lang="lua">
| |
− | local Style = ImGui:getStyle()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Setters/getters''':
| |
− | <syntaxhighlight lang="lua">
| |
− | Style:setColor(ImGui.Col, color, alpha)
| |
− | color, alpha = Style:getColor(ImGui.Col)
| |
− | Style:setAlpha(value)
| |
− | value = Style:getAlpha()
| |
− | Style:setWindowRounding(value)
| |
− | value = Style:getWindowRounding()
| |
− | Style:setWindowBorderSize(value)
| |
− | value = Style:getWindowBorderSize()
| |
− | Style:setChildRounding(value)
| |
− | value = Style:getChildRounding()
| |
− | Style:setChildBorderSize(value)
| |
− | value = Style:getChildBorderSize()
| |
− | Style:setPopupRounding(value)
| |
− | value = Style:getPopupRounding()
| |
− | Style:setPopupBorderSize(value)
| |
− | value = Style:getPopupBorderSize()
| |
− | Style:setFrameRounding(value)
| |
− | value = Style:getFrameRounding()
| |
− | Style:setFrameBorderSize(value)
| |
− | value = Style:getFrameBorderSize()
| |
− | Style:setIndentSpacing(value)
| |
− | value = Style:getIndentSpacing()
| |
− | Style:setColumnsMinSpacing(value)
| |
− | value = Style:getColumnsMinSpacing()
| |
− | Style:setScrollbarSize(value)
| |
− | value = Style:getScrollbarSize()
| |
− | Style:setScrollbarRounding(value)
| |
− | value = Style:getScrollbarRounding()
| |
− | Style:setGrabMinSize(value)
| |
− | value = Style:getGrabMinSize()
| |
− | Style:setGrabRounding(value)
| |
− | value = Style:getGrabRounding()
| |
− | Style:setLogSliderDeadzone(value)
| |
− | value = Style:getLogSliderDeadzone()
| |
− | Style:setTabRounding(value)
| |
− | value = Style:getTabRounding()
| |
− | Style:setTabBorderSize(value)
| |
− | value = Style:getTabBorderSize()
| |
− | Style:setTabMinWidthForCloseButton(value)
| |
− | value = Style:getTabMinWidthForCloseButton()
| |
− | Style:setMouseCursorScale(value)
| |
− | value = Style:getMouseCursorScale()
| |
− | Style:setCurveTessellationTol(value)
| |
− | value = Style:getCurveTessellationTol()
| |
− | Style:setCircleSegmentMaxError(value)
| |
− | value = Style:getCircleSegmentMaxError()
| |
− | Style:setWindowPadding(x, y)
| |
− | x, y = Style:getWindowPadding()
| |
− | Style:setWindowMinSize(x, y)
| |
− | x, y = Style:getWindowMinSize()
| |
− | Style:setWindowTitleAlign(x, y)
| |
− | x, y = Style:getWindowTitleAlign()
| |
− | Style:setFramePadding(x, y)
| |
− | x, y = Style:getFramePadding()
| |
− | Style:setCellPadding(x, y)
| |
− | x, y = Style:getCellPadding()
| |
− | Style:setItemSpacing(x, y)
| |
− | x, y = Style:getItemSpacing()
| |
− | Style:setItemInnerSpacing(x, y)
| |
− | x, y = Style:getItemInnerSpacing()
| |
− | Style:setTouchExtraPadding(x, y)
| |
− | x, y = Style:getTouchExtraPadding()
| |
− | Style:setButtonTextAlign(x, y)
| |
− | x, y = Style:getButtonTextAlign()
| |
− | Style:setSelectableTextAlign(x, y)
| |
− | x, y = Style:getSelectableTextAlign()
| |
− | Style:setDisplayWindowPadding(x, y)
| |
− | x, y = Style:getDisplayWindowPadding()
| |
− | Style:setDisplaySafeAreaPadding(x, y)
| |
− | x, y = Style:getDisplaySafeAreaPadding()
| |
− | Style:setWindowMenuButtonPosition(ImGui.Dir)
| |
− | dir = Style:getWindowMenuButtonPosition()
| |
− | Style:setColorButtonPosition(ImGui.Dir)
| |
− | dir = Style:getColorButtonPosition()
| |
− | Style:setAntiAliasedLines(flag)
| |
− | flag = Style:getAntiAliasedLines()
| |
− | Style:setAntiAliasedLinesUseTex(flag)
| |
− | flag = Style:getAntiAliasedLinesUseTex()
| |
− | Style:setAntiAliasedFill(flag)
| |
− | flag = Style:getAntiAliasedFill()
| |
− | Style:setDisabledAlpha(number)
| |
− | alpha = Style:getDisabledAlpha()
| |
− | Style:setSeparatorTextBorderSize(number)
| |
− | number = Style:getSeparatorTextBorderSize()
| |
− | Style:setSeparatorTextAlign(x, y)
| |
− | x, y = Style:getSeparatorTextAlign()
| |
− | Style:setSeparatorTextPadding(x, y)
| |
− | x, y = Style:getSeparatorTextPadding()
| |
− | </syntaxhighlight>
| |
− | | |
− | == DEFAULT STYLES ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:setDarkStyle()
| |
− | ImGui:setLightStyle()
| |
− | ImGui:setClassicStyle()
| |
− | </syntaxhighlight>
| |
− | | |
− | == Color convert ==
| |
− | '''Note''': use ''DOT'' instead of ''COLON'', so you can use it without creating an ImGui object
| |
− | <syntaxhighlight lang="lua">
| |
− | r, g, b, a = ImGui.colorConvertHEXtoRGB(color [, alpha = 1])
| |
− | hex = ImGui.colorConvertRGBtoHEX(r, g, b)
| |
− | h, s, v = ImGui.colorConvertRGBtoHSV(r, g, b)
| |
− | r, g, b = ImGui.colorConvertHSVtoRGB(h, s, v)
| |
− | h, s, v = ImGui.colorConvertHEXtoHSV(hex)
| |
− | hex = ImGui.colorConvertHSVtoHEX(h, s, v)
| |
− | </syntaxhighlight>
| |
− | | |
− | == IO Functions ==
| |
− | Get IO instance:
| |
− | <syntaxhighlight lang="lua">
| |
− | local IO = ImGui:getIO()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Functions''':
| |
− | <syntaxhighlight lang="lua">
| |
− | IO:setFontDefault(font)
| |
− | ImGuiConfigFlag = IO:getConfigFlags()
| |
− | IO:setConfigFlags(ImGui.ConfigFlag)
| |
− | IO:addConfigFlags(ImGui.ConfigFlag)
| |
− | ImGuiBackendFlag = IO:getBackendFlags()
| |
− | IO:setBackendFlags(ImGui.BackendFlag)
| |
− | number = IO:getIniSavingRate()
| |
− | IO:setIniSavingRate(number)
| |
− | string = IO:getIniFilename()
| |
− | IO:setIniFilename(string)
| |
− | IO:saveIniSettings([path]) -- if path is not defined the it uses default path, which is set by IO:setIniFilename()
| |
− | IO:loadIniSettings([path])
| |
− | string = IO:getLogFilename()
| |
− | IO:setLogFilename(string)
| |
− | number = IO:getMouseDoubleClickTime()
| |
− | IO:setMouseDoubleClickTime(number)
| |
− | number = IO:getMouseDragThreshold()
| |
− | IO:setMouseDragThreshold(number)
| |
− | flag = IO:getMouseDrawCursor()
| |
− | IO:setMouseDrawCursor(flag)
| |
− | number = IO:getMouseDoubleClickMaxDist()
| |
− | IO:setMouseDoubleClickMaxDist(number)
| |
− | number = IO:getKeyRepeatDelay()
| |
− | IO:setKeyRepeatDelay(number)
| |
− | number = IO:getKeyRepeatRate()
| |
− | IO:setKeyRepeatRate(number)
| |
− | number = IO:getFontGlobalScale()
| |
− | IO:setFontGlobalScale(number)
| |
− | bool = IO:getFontAllowUserScaling()
| |
− | IO:setFontAllowUserScaling(bool)
| |
− | number, number = IO:getDisplayFramebufferScale()
| |
− | IO:setDisplayFramebufferScale(number, number)
| |
− | bool = IO:getConfigMacOSXBehaviors()
| |
− | IO:setConfigMacOSXBehaviors(bool)
| |
− | bool = IO:getConfigInputTextCursorBlink()
| |
− | IO:setConfigInputTextCursorBlink(bool)
| |
− | bool = IO:getConfigWindowsResizeFromEdges()
| |
− | IO:setConfigWindowsResizeFromEdges(bool)
| |
− | bool = IO:getConfigWindowsMoveFromTitleBarOnly()
| |
− | IO:setConfigWindowsMoveFromTitleBarOnly(bool)
| |
− | number = IO:getConfigWindowsMemoryCompactTimer()
| |
− | IO:setConfigWindowsMemoryCompactTimer(number)
| |
− | string = IO:getBackendPlatformName()
| |
− | string = IO:getBackendRendererName()
| |
− | bool = IO:IsMouseDown(button)
| |
− | number = IO:getMouseWheel()
| |
− | number = IO:getMouseWheelH()
| |
− | flag = IO:wantCaptureMouse()
| |
− | flag = IO:wantCaptureKeyboard()
| |
− | flag = IO:wantTextInput()
| |
− | flag = IO:wantSetMousePos()
| |
− | flag = IO:wantSaveIniSettings()
| |
− | number = IO:getFramerate()
| |
− | number = IO:getMetricsRenderVertices()
| |
− | number = IO:getMetricsRenderIndices()
| |
− | number = IO:getMetricsRenderWindows()
| |
− | number = IO:getMetricsActiveWindows()
| |
− | number = IO:getMetricsActiveAllocations()
| |
− | x, y = IO:getMouseDelta()
| |
− | number = IO:getMouseDownSec(mouse_button)
| |
− | IO:setDisplaySize(w, h)
| |
− | w, h = IO:getDisplaySize()
| |
− | number = IO:getDeltaTime()
| |
− | -- reset mouse buttons state
| |
− | IO:resetMouseDown()
| |
− | -- reset key states (including ALT/SHIFT/CTRL/SUPER (META))
| |
− | IO:resetKeysDown()
| |
− | -- set ALT/SHIFT/CTRL/SUPER (META) key state
| |
− | IO:setModKeyDown(key_code, bool) -- "key_code" is a gideros MOD key
| |
− | -- set any key state
| |
− | IO:setKeysDown(key_code, bool) -- "key_code" is a gideros regular "keyCode"
| |
− | -- adds text to active text input widget
| |
− | IO:addInputCharactersUTF8(text)
| |
− | -- emulate wheel scrolling
| |
− | IO:setMouseWheel(number)
| |
− | -- sets mouse position (data only, no visual changes)
| |
− | IO:setMousePos(x, y)
| |
− | -- set mouse state, where index: 0 - left mouse, 1 - right, 2 - middle, 3 - unused, 4 - unused.
| |
− | IO:setMouseDown(mouse_button, state) -- "mouse_button" is a gideros mouse button code
| |
− | | |
− | -- "key" is any ImGui KeyCode (check [here](#keyboard-keys))
| |
− | -- "down" is a boolean
| |
− | IO:addKeyEvent(key, down)
| |
− | IO:addKeyAnalogEvent(key, down, number)
| |
− | IO:AddMousePosEvent(x, y)
| |
− | -- "button" is any ImGui button (check [here](#MouseButton))
| |
− | IO:addMouseButtonEvent(button, down)
| |
− | IO:addMouseWheelEvent(x, y)
| |
− | | |
− | IO:setAppAcceptingEvents([accepting_events = true])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Context ==
| |
− | <syntaxhighlight lang="lua">
| |
− | string OR nil = ImGui:getHoveredWindow()
| |
− | string OR nil = ImGui:getHoveredWindowRoot()
| |
− | string OR nil = ImGui:getHoveredWindowUnderMovingWindow()
| |
− | string OR nil = ImGui:getMovingWindow()
| |
− | string OR nil = ImGui:getActiveIdWindow()
| |
− | id = ImGui:getActiveId()
| |
− | id = ImGui:getActiveIdPreviousFrame()
| |
− | number = ImGui:getActiveIdTimer()
| |
− | id = ImGui:getActiveIdAllowOverlap()
| |
− | id = ImGui:getHoveredId()
| |
− | id = ImGui:getHoveredIdPreviousFrame()
| |
− | number = ImGui:getHoveredIdTimer()
| |
− | id = ImGui:getHoveredIdAllowOverlap()
| |
− | bool = ImGui:getDragDropActive()
| |
− | id = ImGui:getDragDropPayloadSourceId()
| |
− | string = ImGui:getDragDropPayloadDataType()
| |
− | number = ImGui:getDragDropPayloadDataSize()
| |
− | </syntaxhighlight>
| |
− | | |
− | == WIDGETS & STUFF ==
| |
− | === Windows ===
| |
− | <syntaxhighlight lang="lua">
| |
− | p_open, draw = ImGui:beginWindow(label, p_open [, ImGui.WindowFlags = 0])
| |
− | -- do not show "X" button
| |
− | draw = ImGui:beginWindow(label, nil [, ImGui.WindowFlags = 0])
| |
− | -- start a window with no borders, no paddings, no rounding and ImGui.WindowFlags_Fullscreen flag
| |
− | p_open, draw = ImGui:beginFullScreenWindow(label, p_open [, ImGui.WindowFlags = 0])
| |
− | -- do not show "X" button
| |
− | draw = ImGui:beginFullScreenWindow(label, nil [, ImGui.WindowFlags = 0])
| |
− | ImGui:endWindow()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Disabled groups ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:beginDisabled(disabledFlag)
| |
− | ImGui:endDisabled()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Child Windows ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:beginChild(id [, w = 0, h = 0, borderFlag = false, ImGui.WindowFlags = 0])
| |
− | ImGui:endChild()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Windows Utilities ===
| |
− | <syntaxhighlight lang="lua">
| |
− | flag = ImGui:isWindowAppearing()
| |
− | flag = ImGui:isWindowCollapsed()
| |
− | flag = ImGui:isWindowFocused([ImGui.FocusedFlags = 0])
| |
− | flag = ImGui:isWindowHovered([ImGui.HoveredFlags = 0])
| |
− | x, y = ImGui:getWindowPos()
| |
− | w, h = ImGui:getWindowSize()
| |
− | w = ImGui:getWindowWidth()
| |
− | h = ImGui:getWindowHeight()
| |
− | | |
− | x1,y1, x2,y2 = ImGui:getWindowBounds() -- returns window region rectangle in global coordinates
| |
− | ImGui:setNextWindowPos(x, y [, ImGui.Cond = 0, pivotX = 0, pivotY = 0])
| |
− | ImGui:setNextWindowSize(w, h [, ImGui.Cond = 0])
| |
− | ImGui:setNextWindowContentSize(w, h)
| |
− | ImGui:setNextWindowCollapsed(flag [, ImGui.Cond = 0])
| |
− | ImGui:setNextWindowFocus()
| |
− | ImGui:setNextWindowBgAlpha(alpha)
| |
− | ImGui:setNextWindowScroll(x, y)
| |
− | ImGui:setWindowPos(name, x, y [, ImGui.Cond = 0]) OR ImGui:setWindowPos(x, y [, ImGui.Cond = 0])
| |
− | ImGui:setWindowSize(name, w, h [, ImGui.Cond = 0]) OR ImGui:setWindowSize(w, h [, ImGui.Cond = 0])
| |
− | ImGui:setWindowCollapsed(name, flag [, ImGui.Cond = 0]) OR ImGui:setWindowCollapsed(flag [, ImGui.Cond = 0])
| |
− | ImGui:setWindowFocus(name) OR ImGui:setWindowFocus()
| |
− | ImGui:setWindowFontScale(scale)
| |
− | -- scroll window when touching void
| |
− | ImGui:scrollWhenDragging(x, y)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Window size constraints ===
| |
− | Can be used to set minimum and maximum window size, plus contraint the size if needed.
| |
− | <syntaxhighlight lang="lua">
| |
− | -- call this function before ImGui:beginWindow()
| |
− | ImGui:setNextWindowSizeConstraints(min_w, min_h, max_w, max_h [, resize_callback, user_data]))
| |
− | -- resizeCallback is a function:
| |
− | function (callbackData [, user_data])
| |
− | -- do some math, and return desired size
| |
− | -- ...
| |
− | return desired_width, desired_height
| |
− | end
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Resize callback''': | |
− | <syntaxhighlight lang="lua">
| |
− | -- get window position
| |
− | x, y = callbackData:getPos()
| |
− | x = callbackData:getX()
| |
− | y = callbackData:getY()
| |
− | | |
− | -- get currrent size
| |
− | current_width, current_height = callbackData:getCurrentSize()
| |
− | current_width = callbackData:getCurrentWidth()
| |
− | current_height = callbackData:getCurrentHeight()
| |
− | | |
− | -- get desired size
| |
− | deserid_width, deserid_height = callbackData:getDesiredSize()
| |
− | deserid_width = callbackData:getDesiredWidth()
| |
− | deserid_height = callbackData:getDesiredHeight()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | require "ImGui"
| |
− | | |
− | local function stepSize(callback_data, step)
| |
− | local w, h = callback_data:getDesiredSize()
| |
− | w = (w // step) * step
| |
− | h = (h // step) * step
| |
− | return w, h
| |
− | end
| |
− | | |
− | local ui = ImGui.new()
| |
− | stage:addChild(ui)
| |
− | | |
− | stage:addEventListener("enterFrame", function(e)
| |
− | ui:newFrame(e.deltaTime)
| |
− |
| |
− | -- window size step is 32 (last argument, that is passed to the callback as second argument)
| |
− | ui:setNextWindowSizeConstraints(200, 200, 400, 400, stepSize, 32)
| |
− | if (ui:beginWindow("My window")) then
| |
− |
| |
− | ui:textWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")
| |
− | end
| |
− | ui:endWindow()
| |
− |
| |
− | ui:showDemoWindow()
| |
− |
| |
− | ui:render()
| |
− | ui:endFrame()
| |
− | end)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Content region ===
| |
− | <syntaxhighlight lang="lua">
| |
− | scaleX, scaleY = ImGui:getContentRegionMax()
| |
− | w, h = ImGui:getContentRegionAvail()
| |
− | x, y = ImGui:getWindowContentRegionMin()
| |
− | x, y = ImGui:getWindowContentRegionMax()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Windows Scrolling ===
| |
− | <syntaxhighlight lang="lua">
| |
− | x = ImGui:getScrollX()
| |
− | y = ImGui:getScrollY()
| |
− | maxX = ImGui:getScrollMaxX()
| |
− | maxY = ImGui:getScrollMaxY()
| |
− | ImGui:setScrollX(value)
| |
− | ImGui:setScrollY(value)
| |
− | ImGui:setScrollHereX([ratio = 0.5])
| |
− | ImGui:setScrollHereY([ratio = 0.5])
| |
− | ImGui:setScrollFromPosX(x [, ratio = 0.5])
| |
− | ImGui:setScrollFromPosY(y [, ratio = 0.5])
| |
− | </syntaxhighlight>
| |
− | | |
− | === Parameters stacks (shared) ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:pushStyleColor(ImGui.Col, color, alpha)
| |
− | ImGui:popStyleColor([count = 1])
| |
− | ImGui:pushStyleVar(ImGui.StyleVar, value) OR ImGui:pushStyleVar(ImGui.StyleVar, value1, value2)
| |
− | ImGui:popStyleVar([count = 1])
| |
− | color, alpha = ImGui:getStyleColor(ImGui.Col)
| |
− | fontSize = ImGui:getFontSize()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Parameters stacks (current window) ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:pushItemWidth(w)
| |
− | ImGui:popItemWidth()
| |
− | ImGui:setNextItemWidth(w)
| |
− | w = ImGui:calcItemWidth()
| |
− | ImGui:pushTextWrapPos([localX = 0])
| |
− | ImGui:popTextWrapPos()
| |
− | ImGui:pushTabStop(flag)
| |
− | ImGui:popTabStop()
| |
− | ImGui:pushButtonRepeat(flag)
| |
− | ImGui:popButtonRepeat()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Cursor / Layout ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:separator()
| |
− | ImGui:sameLine([offset_x = 0, spacing = -1])
| |
− | ImGui:newLine()
| |
− | ImGui:spacing()
| |
− | ImGui:dummy(w, h)
| |
− | ImGui:indent([indent = 0])
| |
− | ImGui:unindent([indent = 0])
| |
− | ImGui:beginGroup()
| |
− | ImGui:endGroup()
| |
− |
| |
− | x, y = ImGui:getCursorPos()
| |
− | x = ImGui:getCursorPosX()
| |
− | y = ImGui:getCursorPosY()
| |
− | ImGui:setCursorPos(local_x, local_y)
| |
− | ImGui:setCursorPosX(local_x)
| |
− | ImGui:setCursorPosY(local_y)
| |
− | x, y = ImGui:getCursorStartPos()
| |
− | x, y = ImGui:getCursorScreenPos()
| |
− | ImGui:setCursorScreenPos(x, y)
| |
− | ImGui:alignTextToFramePadding()
| |
− | lineH = ImGui:getTextLineHeight()
| |
− | lineH = ImGui:getTextLineHeightWithSpacing()
| |
− | frameH = ImGui:getFrameHeight()
| |
− | frameH = ImGui:getFrameHeightWithSpacing()
| |
− | </syntaxhighlight>
| |
− | | |
− | === ID stack/scopes ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:pushID(anyValue)
| |
− | ImGui:pushID(str)
| |
− | ImGui:popID()
| |
− | number = ImGui:getID(any_value)
| |
− | number = ImGui:getID(string)
| |
− | number = ImGui:getItemID()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Text ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:textUnformatted(text [, textEnd])
| |
− | ImGui:text(text)
| |
− | ImGui:textColored(text, color, alpha)
| |
− | ImGui:textDisabled(text)
| |
− | ImGui:textWrapped(text)
| |
− | ImGui:labelText(text, label)
| |
− | ImGui:bulletText(text)
| |
− | ImGui:separatorText(label)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Main ===
| |
− | <syntaxhighlight lang="lua">
| |
− | flag = ImGui:button(text [, w = 0, h = 0])
| |
− | flag = ImGui:smallButton(text)
| |
− | flag = ImGui:invisibleButton(string_ID [, w = 0, h = 0])
| |
− | flag = ImGui:arrowButton(string_ID [, ImGui.Dir = 0])
| |
− | flag = ImGui:checkbox(text, flag)
| |
− | flags, is_changed = ImGui:checkboxFlags(label [, flags = 0, flags_value = 0])
| |
− | number, is_changed = ImGui:radioButton(text, number, number)
| |
− | is_changed = ImGui:radioButton(text, flag)
| |
− | ImGui:progressBar(fraction [, anchor_x = -1, anchor_y = 0, overlay_string = nil])
| |
− | ImGui:bullet()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Images ===
| |
− | <syntaxhighlight lang="lua">
| |
− | -- Images are streched (ImGui default functions)
| |
− | ImGui:image(texture, w, h
| |
− | [, tint_color = 0xffffff, tint_alpha = 1,
| |
− | border_color = 0xffffff, border_alpha = 0])
| |
− | | |
− | ImGui:imageUV(texture,
| |
− | w, h,
| |
− | uv0x, uv0y,
| |
− | uv1x, uv1y,
| |
− | [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0])
| |
− | | |
− | pressFlag = ImGui:imageButton(str_id, texture, w, h
| |
− | [, tint_color = 0xffffff, tint_alpha = 1,
| |
− | border_color = 0xffffff, border_alpha = 0])
| |
− | | |
− | pressFlag = ImGui:imageButtonUV(str_id, texture, w, h,
| |
− | uv0x, uv0y, uv1x, uv1y
| |
− | [, tint_color = 0xffffff, tint_alpha = 1,
| |
− | border_color = 0xffffff, border_alpha = 0])
| |
− | | |
− | -- Images are scaled (extended by @MultiPain)
| |
− | -- padding deprecated
| |
− | -- (use "ImGui:pushStyleVar(ImGui.StyleVar_FramePadding, x, y)/ImGui:popStyleVar()")
| |
− | 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])
| |
− |
| |
− | pressFlag = 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: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])
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Combo Box ===
| |
− | <syntaxhighlight lang="lua">
| |
− | openFlag = ImGui:beginCombo(text, preview_text [, ImGui.ComboFlags = 0])
| |
− | ImGui:endCombo()
| |
− | current_item, is_open = ImGui:combo(label, current_item, items) -- items (table): {"item1", "item2", ...}
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Drags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | value, is_changed = ImGui:dragFloat(label, value
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, is_changed = ImGui:dragFloat2(label, value1, value2
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, is_changed = ImGui:dragFloat3(label, value1, value2, value3
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, value4, is_changed = ImGui:dragFloat4(label, value1, value2, value3, value4
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value_min, value_max, is_changed = ImGui:dragFloatRange2(label, value_min, value_max
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_min_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | -- table must be an array of any size > 0
| |
− | is_changed = ImGui:dragFloatT(label, table
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:dragInt(label, value
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, is_changed = ImGui:dragInt2(label, value1, value2
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, is_changed = ImGui:dragInt3(label, value1, value2, value3
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, value4, is_changed = ImGui:dragInt4(label, value1, value2, value3, value4
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | v_current_min, v_current_max, flag = 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])
| |
− | | |
− | -- table must be an array of any size > 0
| |
− | is_changed = ImGui:dragIntT(label, table
| |
− | [, inc_step = 1, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Sliders ===
| |
− | <syntaxhighlight lang="lua">
| |
− | value, is_changed = ImGui:sliderFloat(label, value
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, is_changed = ImGui:sliderFloat2(label, value1, value2
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, is_changed = ImGui:sliderFloat3(label, value1, value2, value3
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, value4, is_changed = ImGui:sliderFloat4(label, value1, value2, value3, value4
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value_in_rad, is_changed = ImGui:sliderAngle(label, value_in_rad
| |
− | [, min_degrees = -360, max_degrees = 360,
| |
− | format_string = "%.0f deg", ImGui.SliderFlags = 0])
| |
− | | |
− | -- table must be an array of any size > 0
| |
− | is_changed = ImGui:sliderFloatT(label, table
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:sliderInt(label, value
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d, ImGui.SliderFlags = 0"])
| |
− | | |
− | value1, value2, is_changed = ImGui:sliderInt2(label, value1, value2
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d, ImGui.SliderFlags = 0"])
| |
− | | |
− | value1, value2, value3, is_changed = ImGui:sliderInt3(label, value1, value2, value3
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d, ImGui.SliderFlags = 0"])
| |
− | | |
− | value1, value2, value3, value4, is_changed = ImGui:sliderInt4(label, value1, value2, value3, value4
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d, ImGui.SliderFlags = 0"])
| |
− | | |
− | -- table must be an array of any size > 0
| |
− | is_changed = ImGui:sliderIntT(label, table
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:vSliderFloat(label, w, h, value, min, max
| |
− | [, format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:vSliderInt(label, w, h, value, min, max
| |
− | [, format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:filledSliderFloat(label, mirror_flag, value
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, is_changed = ImGui:filledSliderFloat2(label, mirror_flag, value1, value2
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, is_changed = ImGui:filledSliderFloat3(label, mirror_flag, value1, value2, value3
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, value4, is_changed = ImGui:filledSliderFloat4(label, mirror_flag, value1, value2, value3, value4
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | -- table must be an array of any size > 0
| |
− | is_changed = ImGui:filledSliderFloatT(label, mirror_flag, table
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value_in_rad, is_changed = ImGui:filledSliderAngle(label, mirror_flag, value_in_rad
| |
− | [, min_degrees = -360, max_degrees = 360,
| |
− | format_string = "%.0f deg", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:filledSliderInt(label, mirror_flag, value
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, is_changed = ImGui:filledSliderInt2(label, mirror_flag, value1, value2
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, is_changed = ImGui:filledSliderInt3(label, mirror_flag, value1, value2, value3
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value1, value2, value3, value4, is_changed = ImGui:filledSliderInt4(label, mirror_flag, value1, value2, value3, value4
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | -- table must be an array of any size > 0
| |
− | is_changed = ImGui:filledSliderIntT(label, mirror_flag, table
| |
− | [, min = 0, max = 0,
| |
− | format_string = "%d", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:vFilledSliderFloat(label, mirror_flag, w, h, value, min, max
| |
− | [, format_string = "%.3f", ImGui.SliderFlags = 0])
| |
− | | |
− | value, is_changed = ImGui:vFilledSliderInt(label, mirror_flag, w, h, value, min, max
| |
− | [, format_string = "%d", ImGui.SliderFlags = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Input with Keyboard ===
| |
− | <syntaxhighlight lang="lua">
| |
− | text, flag = ImGui:inputText(label, text, buffer_size [, ImGui.InputTextFlags = 0])
| |
− | text, flag = ImGui:inputTextMultiline(label, text, buffer_size [, w = 0, h = 0, ImGui.InputTextFlags = 0])
| |
− | text, flag = ImGui:inputTextWithHint(label, text, hint, buffer_size [, ImGui.InputTextFlags = 0])
| |
− | value, flag = ImGui:inputFloat(label, value [, step = 0, step_fast = 0, format = "%.3f", ImGui.InputTextFlags = 0])
| |
− | value1, value2, flag = ImGui:inputFloat2(label, value1, value2 [, format = "%.3f", ImGui.InputTextFlags = 0])
| |
− | value1, value2, value3, flag = ImGui:inputFloat3(label, value1, value2, value3 [, format = "%.3f", ImGui.InputTextFlags = 0])
| |
− | value1, value2, value3, value4, flag = ImGui:inputFloat4(label, value1, value2, value3, value4 [, format = "%.3f", ImGui.InputTextFlags = 0])
| |
− | -- table must be an array of any size > 0
| |
− | flag = ImGui:inputFloatT(label, table [, format = "%.3f", ImGui.InputTextFlags = 0])
| |
− | value, flag = ImGui:inputInt(label, value [, step = 0, step_fast = 0, ImGui.InputTextFlags = 0])
| |
− | value1, value2, flag = ImGui:inputInt2(label, value1, value2 [, ImGui.InputTextFlags = 0])
| |
− | value1, value2, value3, flag = ImGui:inputInt3(label, value1, value2, value3 [, ImGui.InputTextFlags = 0])
| |
− | value1, value2, value3, value4, flag = ImGui:inputInt4(label, value1, value2, value3, value4 [, ImGui.InputTextFlags = 0])
| |
− | -- table must be an array of any size > 0
| |
− | flag = ImGui:inputIntT(label, table [, format = "%d", ImGui.InputTextFlags = 0])
| |
− | value, flag = ImGui:inputDouble(label, value [, step = 0, step_fast = 0, format = "%.6f", ImGui.InputTextFlags = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Input text callbacks''': | |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:inputText(label, text, buffer_size [, ImGui.InputTextFlags = 0, callback_function, user_data])
| |
− | ImGui:inputTextMultiline(label, text, buffer_size [, ImGui.InputTextFlags = 0, callback_function, user_data])
| |
− | ImGui:inputTextWithHint(label, text, hint, buffer_size [, ImGui.InputTextFlags = 0, callback_function, user_data])
| |
− | | |
− | callback_function = function(callback_data, user_data)
| |
− | -- do something with data
| |
− | -- see below
| |
− | end
| |
− | </syntaxhighlight>
| |
− | | |
− | '''callback_data''':
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGuiInputTextFlags = callback_data:getEventFlag()
| |
− | ImGuiInputTextFlags = callback_data:getFlags()
| |
− | | |
− | number = callback_data:getEventChar()
| |
− | | |
− | callback_data:setEventChar(number)
| |
− | | |
− | keyCode = callback_data:getEventKey()
| |
− | | |
− | string = callback_data:getBuf()
| |
− | | |
− | callback_data:setBuf(string)
| |
− | | |
− | number = callback_data:getBufTextLen()
| |
− | | |
− | callback_data:setBufTextLen(number)
| |
− | | |
− | number = callback_data:getBufSize()
| |
− | | |
− | callback_data:setBufDirty(bool)
| |
− | bool = callback_data:isBufDirty()
| |
− | | |
− | callback_data:setCursorPos(number)
| |
− | number = callback_data:getCursorPos()
| |
− | | |
− | callback_data:setSelectionStart(s_start)
| |
− | number = callback_data:getSelectionStart()
| |
− | | |
− | callback_data:setSelectionEnd(s_end)
| |
− | s_end = callback_data:getSelectionEnd()
| |
− | | |
− | callback_data:setSelection(s_start, s_end)
| |
− | s_start, s_end = callback_data:getSelection()
| |
− | | |
− | callback_data:selectAll()
| |
− | callback_data:clearSelection()
| |
− | bool = callback_data:hasSelection()
| |
− | | |
− | callback_data:deleteChars(position, bytesCount)
| |
− | callback_data:insertChars(position, text)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | require "ImGui"
| |
− | | |
− | ui = ImGui.new()
| |
− | stage:addChild(ui)
| |
− | | |
− | local testMessage1 = ""
| |
− | local testMessage2 = ""
| |
− | local testMessage3 = ""
| |
− | | |
− | -- Add ".." at the end of current input string
| |
− | function myCallback1(data)
| |
− | data:insertChars(data:getCursorPos(), "..")
| |
− | end
| |
− | | |
− | -- Replace all chars if UP/DOWN arrow is pressed
| |
− | function myCallback2(data)
| |
− | local key = data:getEventKey()
| |
− | if (key == key_code.UP) then
| |
− | data:deleteChars(0, data:getBufTextLen())
| |
− | data:insertChars(0, "Pressed Up!")
| |
− | data:selectAll()
| |
− | elseif (key == key_code.DOWN) then
| |
− | data:deleteChars(0, data:getBufTextLen())
| |
− | data:insertChars(0, "Pressed Down!")
| |
− | data:selectAll()
| |
− | end
| |
− | end
| |
− | | |
− | -- Switch case of the first char
| |
− | function myCallback3(data)
| |
− | local buf = data:getBuf()
| |
− | local s = buf:sub(1,1)
| |
− | if ((s >= 'a' and s <= 'z') or (s >= 'A' and s <= 'Z')) then
| |
− | local first = string.char(string.byte(s) ~ 32)
| |
− | data:setBuf(first .. buf:sub(2))
| |
− | data:setBufDirty(true)
| |
− | end
| |
− | end
| |
− | | |
− | function enterFrame(e)
| |
− | ui:newFrame(e.deltaTime)
| |
− |
| |
− | testMessage1 = ui:inputText(
| |
− | "Label1",
| |
− | testMessage1,
| |
− | 64,
| |
− | ImGui.InputTextFlags_CallbackCompletion,
| |
− | myCallback1
| |
− | )
| |
− | testMessage2 = ui:inputText(
| |
− | "Label2",
| |
− | testMessage2,
| |
− | 64,
| |
− | ImGui.InputTextFlags_CallbackHistory,
| |
− | myCallback2
| |
− | )
| |
− | testMessage3 = ui:inputText(
| |
− | "Label3",
| |
− | testMessage3,
| |
− | 64,
| |
− | ImGui.InputTextFlags_CallbackEdit,
| |
− | myCallback3
| |
− | )
| |
− |
| |
− | ui:render()
| |
− | ui:endFrame()
| |
− | end
| |
− | | |
− | stage:addEventListener("enterFrame", enterFrame)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Color Editor/Picker ===
| |
− | <syntaxhighlight lang="lua">
| |
− | hexColor, is_touching = ImGui:colorEdit3(label, color [, ImGui.ColorEditFlags = 0]) -- alpha ignored, no need to pass it!
| |
− | hexColor, alpha, is_touching = ImGui:colorEdit4(label, color [, alpha = 1, ImGui.ColorEditFlags = 0])
| |
− | hexColor, is_touching = ImGui:colorPicker3(label, color [, ImGui.ColorEditFlags = 0])
| |
− | hexColor, alpha, originalColor, originalAlpha, is_touching = ImGui:colorPicker4(label, color
| |
− | [, alpha = 1, original_color = 0xffffff, original_alpha = 1, ImGui.ColorEditFlags = 0])
| |
− | isHoveringFlag = ImGui:colorButton(string_ID, color [, alpha = 1, ImGui.ColorEditFlags = 0, w = 0, h = 0])
| |
− | ImGui:setColorEditOptions(ImGui.ColorEditFlags)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Trees ===
| |
− | <syntaxhighlight lang="lua">
| |
− | is_openFlag = ImGui:treeNode(label [, format_string])
| |
− | ImGui:treeNodeEx(label, ImGui.TreeNodeFlags [, format_string])
| |
− | ImGui:treePush(str_id)
| |
− | ImGui:treePop()
| |
− | number = ImGui:getTreeNodeToLabelSpacing()
| |
− | is_openFlag, p_open = ImGui:collapsingHeader(label, p_open [, ImGui.TreeNodeFlags = 0])
| |
− | is_openFlag = ImGui:collapsingHeader(label [, ImGui.TreeNodeFlags = 0])
| |
− | ImGui:setNextItemOpen(is_open, ImGui.Cond)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Selectables ===
| |
− | <syntaxhighlight lang="lua">
| |
− | result?, selected = ImGui:selectable(label, selected [, ImGui.SelectableFlags = 0, w = 0, h = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: List Boxes ===
| |
− | <syntaxhighlight lang="lua">
| |
− | -- item_table: {"Item0", "Item1", ...}
| |
− | current_item, is_openFlag = ImGui:listBox(label, current_item, item_table [, max_visible_items = -1])
| |
− | result? = ImGui:listBoxHeader(label [, w = 0, h = 0])
| |
− | result? = ImGui:listBoxHeader2(label, items_count)
| |
− | ImGui:listBoxFooter()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Widgets: Data Plotting ===
| |
− | '''Caching''':
| |
− | | |
− | If you have big array of points it is better to cache it instead of translating lua table to C++ vector every time you call `ImGui:plotLines()`. But in this case you need to manage memory by yourself (free points pointer when you dont need it).
| |
− | <syntaxhighlight lang="lua">
| |
− | -- store points in memory
| |
− | -- points_table: {0.01, 0.5, 10, -50, ...}
| |
− | -- ptr: c++ pointer to a given vector
| |
− | ptr = ImGui.cachePoints(points_table)
| |
− | | |
− | -- delete points from memory
| |
− | ImGui.freePoints(ptr)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Plot functions''':
| |
− | <syntaxhighlight lang="lua">
| |
− | -- len (number): points array lenght
| |
− | ImGui:plotCachedLines(label, ptr, len,
| |
− | [, values_offset = 0, overlay_text = nil,
| |
− | scale_min = math.huge, scale_max = math.huge,
| |
− | w = 0, h = 0])
| |
− |
| |
− | ImGui:plotCachedHistogram(label, ptr, len,
| |
− | [, values_offset = 0, overlay_text = nil,
| |
− | scale_min = math.huge, scale_max = math.huge,
| |
− | w = 0, h = 0])
| |
− | | |
− | ImGui:plotLines(label, points_table
| |
− | [, values_offset = 0, overlay_text = nil,
| |
− | scale_min = math.huge, scale_max = math.huge,
| |
− | w = 0, h = 0])
| |
− | | |
− | ImGui:plotHistogram(label, points_table
| |
− | [, values_offset = 0, overlay_text = nil,
| |
− | scale_min = math.huge, scale_max = math.huge,
| |
− | w = 0, h = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | -- delete ptr if it exist
| |
− | function deletePtr()
| |
− | if pointsPtr then
| |
− | ImGui.freePoints(pointsPtr)
| |
− | end
| |
− | end
| |
− | | |
− | function onEnterFrame()
| |
− | ui:newFrame(e.deltaTime)
| |
− |
| |
− | if ui:button("Generate") then
| |
− | deletePtr()
| |
− | points = generatePoints() -- returns big array
| |
− | pointsPtr = ImGui.cachePoints(points)
| |
− | end
| |
− |
| |
− | if pointsPtr then
| |
− | ui:plotCachedLines("Big data", pointsPtr, #points)
| |
− | end
| |
− |
| |
− | ui:render()
| |
− | ui:endFrame()
| |
− | end
| |
− | | |
− | -- do not forget to clear memory when app is closing
| |
− | function onAppExit()
| |
− | deletePtr()
| |
− | end
| |
− | </syntaxhighlight>
| |
− | | |
− | == Widgets: Value() Helpers ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:value(prefix, bool)
| |
− | ImGui:value(prefix, number)
| |
− | ImGui:value(prefix, float, format_string)
| |
− | </syntaxhighlight>
| |
− | | |
− | == Widgets: Menus ==
| |
− | <syntaxhighlight lang="lua">
| |
− | result? = ImGui:beginMenuBar()
| |
− | ImGui:endMenuBar()
| |
− | result? = ImGui:beginMainMenuBar()
| |
− | ImGui:endMainMenuBar()
| |
− | result = ImGui:beginMenu(label [, enabled = true])
| |
− | result = ImGui:beginMenuEx(label, [icon = "", enabled = true])
| |
− | ImGui:endMenu()
| |
− | result = ImGui:menuItem(label [, shortcut = "", selected = false, enabled = true])
| |
− | result = ImGui:menuItemEx(label, [icon = "", shortcut = "", selected = false, enabled = true])
| |
− | ImGui:beginTooltip()
| |
− | ImGui:endTooltip()
| |
− | ImGui:setTooltip(text)
| |
− | </syntaxhighlight>
| |
− | | |
− | == Popups, Modals ==
| |
− | <syntaxhighlight lang="lua">
| |
− | result? = ImGui:beginPopup(str_id [, ImGui.WindowFlags = 0])
| |
− | p_open, result? = ImGui:beginPopupModal(str_id, p_open [, ImGui.WindowFlags = 0])
| |
− | ImGui:endPopup()
| |
− | ImGui:openPopup(str_id [, ImGui.PopupFlags = 0])
| |
− | ImGui:openPopupOnItemClick(str_id [, ImGui.PopupFlags = 0])
| |
− | ImGui:closeCurrentPopup()
| |
− | result? = ImGui:beginPopupContextItem(str_id [, ImGui.PopupFlags = 0])
| |
− | result? = ImGui:beginPopupContextWindow(str_id [, ImGui.PopupFlags = 0])
| |
− | result? = ImGui:beginPopupContextVoid(str_id [, ImGui.PopupFlags = 0])
| |
− | result? = ImGui:isPopupOpen(str_id [, ImGui.PopupFlags = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Tables ==
| |
− | <syntaxhighlight lang="lua">
| |
− | flag = ImGui:beginTable(str_id, column [, ImGui.TableFlags = 0, outer_w = 0, outer_h = 0, inner_width = 0])
| |
− | ImGui:endTable()
| |
− | ImGui:tableNextRow([ImGui.TableRowFlags = 0, min_row_height = 0])
| |
− | flag = ImGui:tableNextColumn()
| |
− | flag = ImGui:tableSetColumnIndex(column_n)
| |
− | ImGui:tableSetupColumn(label [, ImGui.TableColumnFlags = 0, init_width_or_weight = 0, user_id = 0])
| |
− | ImGui:tableSetupScrollFreeze(cols, rows)
| |
− | ImGui:tableHeadersRow()
| |
− | TableSortSpecs = ImGui:tableGetSortSpecs() -- see below
| |
− | number = ImGui:tableGetColumnCount()
| |
− | number = ImGui:tableGetColumnIndex()
| |
− | number = ImGui:tableGetRowIndex()
| |
− | string = ImGui:tableGetColumnName([column_n = -1])
| |
− | ImGuiTableColumnFlags = ImGui:tableGetColumnFlags([column_n = -1])
| |
− | ImGui:tableSetBgColor(ImGui.TableBgTarget, color [, alpha = 1, column_n = -1])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Table sort specs ==
| |
− | <syntaxhighlight lang="lua">
| |
− | -- TableSortSpecs = ImGui:tableGetSortSpecs()
| |
− | number = TableSortSpecs:getSpecsCount()
| |
− | flag = TableSortSpecs:isSpecsDirty()
| |
− | TableSortSpecs:setSpecsDirty(flag)
| |
− | table = TableSortSpecs:getColumnSortSpecs() -- see below
| |
− | </syntaxhighlight>
| |
− | | |
− | == Table column sort specs ==
| |
− | <syntaxhighlight lang="lua">
| |
− | -- table = TableSortSpecs:getColumnSortSpecs()
| |
− | -- each value of this table is an object that have this functions:
| |
− | number = item:getColumnUserID()
| |
− | number = item:getColumnIndex() -- 0 based
| |
− | number = item:getSortOrder() -- used in multi sorted tables
| |
− | number = item:getSortDirection() -- ImGui.SortDirection_Ascending OR ImGui.SortDirection_Descending
| |
− | </syntaxhighlight>
| |
− | Example: https://github.com/MultiPain/Gideros_examples/blob/master/ImGuiTablesDemo/assets/TablesDemo.lua</br>
| |
− | | |
− | == Columns ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:columns([count = 1, id = nil, border = true])
| |
− | ImGui:nextColumn()
| |
− | index = ImGui:getColumnIndex()
| |
− | width = ImGui:getColumnWidth([column_index = -1])
| |
− | ImGui:setColumnWidth(column_index, width)
| |
− | offset = ImGui:getColumnOffset([column_index = -1])
| |
− | ImGui:setColumnOffset(column_index, offset)
| |
− | number = ImGui:getColumnsCount()
| |
− | </syntaxhighlight>
| |
− | | |
− | == Tab Bars, Tabs ==
| |
− | <syntaxhighlight lang="lua">
| |
− | bool = ImGui:beginTabBar(str_id [, ImGui.TabBarFlags = 0])
| |
− | ImGui:endTabBar()
| |
− | p_open, bool = ImGui:beginTabItem(label, p_open [, ImGui.TabItemFlags = 0])
| |
− | ImGui:endTabItem()
| |
− | ImGui:setTabItemClosed(tab_or_docked_window_label)
| |
− | ImGui:tabItemButton(label [, ImGui.TabItemFlags = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Logging/Capture ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:logToTTY(auto_open_depth = -1)
| |
− | ImGui:logToFile(auto_open_depth = -1, filename = nil)
| |
− | ImGui:logToClipboard(auto_open_depth = -1)
| |
− | ImGui:logFinish()
| |
− | ImGui:logButtons()
| |
− | ImGui:logText(text)
| |
− | </syntaxhighlight>
| |
− | | |
− | == Drag and drop ==
| |
− | <syntaxhighlight lang="lua">
| |
− | flag = ImGui:beginDragDropSource([ImGui.DragDropFlags flags = 0])
| |
− | flag = ImGui:setNumDragDropPayload(str_type, number [, ImGui.Cond cond = 0])
| |
− | flag = ImGui:setStrDragDropPayload(str_type, string [, ImGui.Cond cond = 0])
| |
− | ImGui:endDragDropSource()
| |
− | flag = ImGui:beginDragDropTarget()
| |
− | ImGuiPayload = ImGui:acceptDragDropPayload(type [, ImGui.DragDropFlags flags = 0])
| |
− | ImGui:endDragDropTarget()
| |
− | ImGuiPayload = ImGui:getDragDropPayload()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Payload''':
| |
− | <syntaxhighlight lang="lua">
| |
− | number = ImGuiPayload:getNumData()
| |
− | string = ImGuiPayload:getStrData()
| |
− | ImGuiPayload:clear()
| |
− | number = ImGuiPayload:getDataSize()
| |
− | flag = ImGuiPayload:isDataType(type) -- type must be the same as in "ImGui:acceptDragDropPayload(type)"
| |
− | flag = ImGuiPayload:isPreview()
| |
− | flag = ImGuiPayload:isDelivery()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Usage example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local names = {
| |
− | "Bobby", "Beatrice", "Betty",
| |
− | "Brianna", "Barry", "Bernard",
| |
− | "Bibi", "Blaine", "Bryn"
| |
− | }
| |
− | -- modes:
| |
− | local Mode_Copy = 0
| |
− | local Mode_Move = 1
| |
− | local Mode_Swap = 2
| |
− |
| |
− | local mode = 0 -- current mode
| |
− | | |
− | function onEnterFrame(e)
| |
− | UI:newFrame(e.deltaTime)
| |
− |
| |
− | if (UI:radioButton("Copy", mode == Mode_Copy)) then mode = Mode_Copy end UI:sameLine()
| |
− | if (UI:radioButton("Move", mode == Mode_Move)) then mode = Mode_Move end UI:sameLine()
| |
− | if (UI:radioButton("Swap", mode == Mode_Swap)) then mode = Mode_Swap end
| |
− |
| |
− | for i,v in ipairs(names) do
| |
− | UI:pushID(i)
| |
− | if (((i-1) % 3) ~= 0) then UI:sameLine() end
| |
− |
| |
− | UI:button(v, 60, 60)
| |
− |
| |
− | if (UI:beginDragDropSource(ImGui.DragDropFlags_None)) then
| |
− | --UI:setStrDragDropPayload("DND_DEMO_CELL", "ID_"..i) -- used for strings
| |
− | UI:setNumDragDropPayload("DND_DEMO_CELL", i) -- used for numbers
| |
− |
| |
− | if (mode == Mode_Copy) then UI:text(("Copy %s"):format(v)) end
| |
− | if (mode == Mode_Move) then UI:text(("Move %s"):format(v)) end
| |
− | if (mode == Mode_Swap) then UI:text(("Swap %s"):format(v)) end
| |
− | UI:endDragDropSource()
| |
− | end
| |
− |
| |
− | if (UI:beginDragDropTarget()) then
| |
− | local payload = UI:acceptDragDropPayload("DND_DEMO_CELL")
| |
− | if (payload) then
| |
− | --local payload_n = tonumber(payload:getStrData():sub(4)) -- if "setStrDragDropPayload" was used
| |
− | local payload_n = payload:getNumData() -- if "setNumDragDropPayload" was used
| |
− |
| |
− | if (mode == Mode_Copy) then
| |
− | names[i] = names[payload_n];
| |
− | end
| |
− | if (mode == Mode_Move) then
| |
− | names[i] = names[payload_n];
| |
− | names[payload_n] = "";
| |
− | end
| |
− |
| |
− | if (mode == Mode_Swap) then
| |
− | names[i], names[payload_n] = names[payload_n], names[i]
| |
− | end
| |
− | end
| |
− | UI:endDragDropTarget()
| |
− | end
| |
− | UI:popID()
| |
− | end
| |
− | UI:render()
| |
− | UI:endFrame()
| |
− | end
| |
− | | |
− | stage:addEventListener("enterFrame", onEnterFrame)
| |
− | </syntaxhighlight>
| |
− | | |
− | == Clipping ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:pushClipRect(min_x, min_y, max_x, max_y, intersect_with_current_clip_rect)
| |
− | ImGui:popClipRect()
| |
− | </syntaxhighlight>
| |
− | | |
− | == ImGuiListClipper ==
| |
− | Try to avoid creating new instances in "enterFrame" event.
| |
− | | |
− | '''Constructor''':
| |
− | <syntaxhighlight lang="lua">
| |
− | instance = ImGuiListClipper.new()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Methods''':
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGuiListClipper:beginClip(number_of_items [, item_height = -1]) -- if item_height <= 0 then it is calculated automatically
| |
− | ImGuiListClipper:endClip()
| |
− | bool = ImGuiListClipper:step()
| |
− | number = ImGuiListClipper:getDisplayStart()
| |
− | number = ImGuiListClipper:getDisplayEnd()
| |
− | number = ImGuiListClipper:getStartPosY()
| |
− | number = ImGuiListClipper:getItemsCount()
| |
− | ImGuiListClipper:forceDisplayRangeByIndices(number_min, number_max)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Usage example''':
| |
− | <syntaxhighlight lang="lua">
| |
− | ui = ImGui.new()
| |
− | stage:addChild(ui)
| |
− | | |
− | clipper = ImGuiListClipper.new()
| |
− | | |
− | function onEnterFrame(e)
| |
− | ui:newFrame(e.deltaTime)
| |
− |
| |
− | if (ui:beginWindow("Clipper demo")) then
| |
− | if (ui:beginTable("table", 3)) then
| |
− | ui:tableSetupScrollFreeze(0, 1)
| |
− | ui:tableSetupColumn("One")
| |
− | ui:tableSetupColumn("Two")
| |
− | ui:tableSetupColumn("Three")
| |
− | ui:tableHeadersRow()
| |
− |
| |
− | clipper:beginClip(1000)
| |
− | while (clipper:step()) do
| |
− | for row = clipper:getDisplayStart(), clipper:getDisplayEnd() do
| |
− | ui:tableNextRow()
| |
− | for column = 1, 3 do
| |
− | ui:tableSetColumnIndex(column - 1)
| |
− | ui:text(("col: %d; row: %d"):format(column, row))
| |
− | end
| |
− | end
| |
− | end
| |
− | clipper:endClip()
| |
− |
| |
− | ui:endTable()
| |
− | end
| |
− | end
| |
− | ui:endWindow()
| |
− |
| |
− | ui:endFrame()
| |
− | ui:render()
| |
− | end
| |
− | | |
− | stage:addEventListener("enterFrame", onEnterFrame)
| |
− | </syntaxhighlight>
| |
− | | |
− | == ImGuiTextFilter ==
| |
− | Try to avoid creating new instaces in "enterFrame" event.
| |
− | | |
− | '''Constructor''':
| |
− | <syntaxhighlight lang="lua">
| |
− | filter = ImGuiTextFilter.new()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Methods''':
| |
− | <syntaxhighlight lang="lua">
| |
− | -- draws the input field
| |
− | isValueChanged = filter:draw(label [, width = 0])
| |
− | -- draws the input field (using ImGui:inutTextWithHint())
| |
− | isValueChanged = filter:drawWithHint(label, hint [, width = 0])
| |
− | | |
− | filter:setBuffer(text) -- set filter text
| |
− | filter:build() -- update filter internals (see example below)
| |
− | bool = filter:passFilter(text) -- returns true if filter input matches with "text"
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Usage example 1''':</br>
| |
− | https://github.com/MultiPain/Gideros_ImGui/blob/28d2cdd4f393d6f2048792e51f695d56d7e0ae9a/imgui_src/imgui_demo.cpp#L5657
| |
− | <syntaxhighlight lang="lua">
| |
− | ui = ImGui.new()
| |
− | stage:addChild(ui)
| |
− | | |
− | filter = ImGuiTextFilter.new()
| |
− | items = { "aaa1.c", "bbb1.c", "ccc1.c", "aaa2.cpp", "bbb2.cpp", "ccc2.cpp", "abc.h", "hello, world" }
| |
− | | |
− | function onEnterFrame(e)
| |
− | ui:newFrame(e.deltaTime)
| |
− |
| |
− | if (ui:beginWindow("Filter demo")) then
| |
− | ui:text(
| |
− | [[Filter usage:
| |
− | "" display all lines
| |
− | "xxx" display lines containing "xxx"
| |
− | "xxx,yyy" display lines containing "xxx" or "yyy"
| |
− | "-xxx" hide lines containing "xxx"]])
| |
− |
| |
− | filter:draw("Filter")
| |
− |
| |
− | for i, text in ipairs(items) do
| |
− | if filter:passFilter(text) then
| |
− | ui:bulletText(text)
| |
− | end
| |
− | end
| |
− | end
| |
− | ui:endWindow()
| |
− |
| |
− | ui:endFrame()
| |
− | ui:render()
| |
− | end
| |
− | | |
− | stage:addEventListener("enterFrame", onEnterFrame)
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Usage example 2''':
| |
− | <syntaxhighlight lang="lua">
| |
− | ui = ImGui.new()
| |
− | stage:addChild(ui)
| |
− | filter = ImGuiTextFilter.new()
| |
− | | |
− | searchText = ""
| |
− | items = { "aaa1.c", "bbb1.c", "ccc1.c", "aaa2.cpp", "bbb2.cpp", "ccc2.cpp", "abc.h", "hello, world" }
| |
− | function onEnterFrame(e)
| |
− | ui:newFrame(e.deltaTime)
| |
− |
| |
− | -- Draw standart text input control
| |
− | -- filter:drawWithHint("Filter", "Search")
| |
− |
| |
− | -- Draw custom control
| |
− | local valueChanged = false
| |
− | searchText, valueChanged = ui:inputText("Filter", searchText, 256, ImGui.InputTextFlags_EnterReturnsTrue)
| |
− | if valueChanged then
| |
− | filter:setBuffer(searchText)
| |
− | -- try to avoid calling "build" function every frame
| |
− | filter:build()
| |
− | end
| |
− |
| |
− | for i, item in ipairs(items) do
| |
− | if not filter:passFilter(item) then
| |
− | continue
| |
− | end
| |
− |
| |
− | ui:bulletText(item)
| |
− | end
| |
− |
| |
− | ui:endFrame()
| |
− | ui:render()
| |
− | end
| |
− | </syntaxhighlight>
| |
− | | |
− | == Focus, Activation ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:setItemDefaultFocus()
| |
− | ImGui:setKeyboardFocusHere([offset = 0])
| |
− | flag = ImGui:isItemHovered([ImGui.HoveredFlags = 0])
| |
− | flag = ImGui:isItemActive()
| |
− | flag = ImGui:isItemFocused()
| |
− | flag = ImGui:isItemClicked(mouse_button)
| |
− | flag = ImGui:isItemVisible()
| |
− | flag = ImGui:isItemEdited()
| |
− | flag = ImGui:isItemActivated()
| |
− | flag = ImGui:isItemDeactivated()
| |
− | flag = ImGui:isItemDeactivatedAfterEdit()
| |
− | flag = ImGui:isItemToggledOpen()
| |
− | flag = ImGui:isAnyItemHovered()
| |
− | flag = ImGui:isAnyItemActive()
| |
− | flag = ImGui:isAnyItemFocused()
| |
− | minX, minY, maxX, maxY = ImGui:getItemRect()
| |
− | x, y = ImGui:getItemRectMin()
| |
− | x, y = ImGui:getItemRectMax()
| |
− | w, h = ImGui:getItemRectSize()
| |
− | ImGui:setItemAllowOverlap()
| |
− | </syntaxhighlight>
| |
− | | |
− | == Miscellaneous Utilities ==
| |
− | <syntaxhighlight lang="lua">
| |
− | flag = ImGui:isRectVisible(w, h [, max_x, max_y])
| |
− | number = ImGui:getTime()
| |
− | number = ImGui:getFrameCount()
| |
− | str = ImGui:getStyleColorName(idx)
| |
− | flag = ImGui:beginChildFrame(id, w, h [, ImGui.WindowFlags = 0]) -- id (number)
| |
− | ImGui:endChildFrame()
| |
− | </syntaxhighlight>
| |
− | | |
− | == Text Utilities ==
| |
− | <syntaxhighlight lang="lua">
| |
− | w, h = ImGui:calcTextSize(text [, hide_text_after_double_hash = false, wrap_width = -1])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Inputs Utilities: Keyboard ==
| |
− | <syntaxhighlight lang="lua">
| |
− | string = ImGui:getKeyName(keyCode)
| |
− | flag = ImGui:isKeyDown(keyCode)
| |
− | flag = ImGui:isKeyPressed(keyCode [, repeat = true])
| |
− | flag = ImGui:isKeyReleased(keyCode)
| |
− | number = ImGui:getKeyPressedAmount(keyCode, repeat_delay, rate)
| |
− | ImGui:setNextFrameWantCaptureKeyboard([want_capture_keyboard_value = true])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Shortcut system ==
| |
− | <syntaxhighlight lang="lua">
| |
− | -- (keyChord: an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values (ImGuiKey | ImGuiMod_XXX))
| |
− | ImGui:shortcut(keyChord [, owner_id = 0, ImGui.InputFlags = 0])
| |
− | | |
− | -- (useful to disable CTRL + TAB combo: ImGui:setShortcutRouting(ImGui.Mod_Ctrl | ImGui.Key_Tab, ImGui.KeyOwner_None))
| |
− | ImGui:setShortcutRouting(keyChord [, owner_id = 0, ImGui.InputFlags = 0])
| |
− | | |
− | ImGui:setItemKeyOwner(keyCode [, ImGui.InputFlags = 0])
| |
− | | |
− | ImGui:setKeyOwner(keyCode, owner_id, [, ImGui.InputFlags = 0])
| |
− | </syntaxhighlight>
| |
− | | |
− | == Inputs Utilities: Mouse ==
| |
− | <syntaxhighlight lang="lua">
| |
− | -- "mouse_button" is any gideros mouse button code
| |
− | flag = ImGui:isMouseDown(mouse_button)
| |
− | flag = ImGui:isMouseClicked(mouse_button [, repeat = false])
| |
− | flag = ImGui:isMouseReleased(mouse_button)
| |
− | flag = ImGui:isMouseDoubleClicked(mouse_button)
| |
− | flag = ImGui:isMouseHoveringRect(min_x, min_y, max_x, max_y [, clip = true])
| |
− | flag = ImGui:isMousePosValid([x = inf, y = inf])
| |
− | flag = ImGui:isAnyMouseDown()
| |
− | x, y = ImGui:getMousePos()
| |
− | x, y = ImGui:getMousePosOnOpeningCurrentPopup()
| |
− | flag = ImGui:isMouseDragging(mouse_button [, lock_threshold = -1])
| |
− | x, y = ImGui:getMouseDragDelta(mouse_button [, lock_threshold = -1])
| |
− | ImGui:resetMouseDragDelta(mouse_button)
| |
− | ImGuiMouseCursor = ImGui:getMouseCursor()
| |
− | ImGui:setMouseCursor(ImGui.MouseCursor)
| |
− | ImGui:setNextFrameWantCaptureMouse([want_capture_mouse_value = true])
| |
− | ImGui:setNextFrameWantCaptureKeyboard([want_capture_keyboard_value = true])
| |
− | ImGui:updateCursor()
| |
− | </syntaxhighlight>
| |
− | | |
− | == Render ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui:newFrame(deltaTime)
| |
− | ImGui:render()
| |
− | ImGui:endFrame()
| |
− | </syntaxhighlight>
| |
− | | |
− | == Demos ==
| |
− | <syntaxhighlight lang="lua">
| |
− | is_openFlag = ImGui:showUserGuide()
| |
− | is_openFlag = ImGui:showDemoWindow([p_open])
| |
− | is_openFlag = ImGui:showAboutWindow([p_open])
| |
− | is_openFlag = ImGui:showStyleEditor()
| |
− | is_openFlag = ImGui:showFontSelector()
| |
− | is_openFlag = ImGui:showMetricsWindow([p_open])
| |
− | is_openFlag = ImGui:showStyleSelector(label)
| |
− | is_openFlag = ImGui:ShowStackToolWindow([p_open])
| |
− | ImGui:showLuaStyleEditor()
| |
− | </syntaxhighlight>
| |
− | | |
− | == TextEditor ==
| |
− | <syntaxhighlight lang="lua">
| |
− | -- otherTextEditor: another "ImGuiTextEditor" instance to copy setting
| |
− | TextEditor = ImGuiTextEditor.new([other_text_editor])
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Functions''':
| |
− | <syntaxhighlight lang="lua">
| |
− | LanguageDefinition = TextEditor:getLanguageCPP()
| |
− | LanguageDefinition = TextEditor:getLanguageGLSL()
| |
− | LanguageDefinition = TextEditor:getLanguageHLSL()
| |
− | LanguageDefinition = TextEditor:getLanguageC()
| |
− | LanguageDefinition = TextEditor:getLanguageSQL()
| |
− | LanguageDefinition = TextEditor:getLanguageAngelScript()
| |
− | LanguageDefinition = TextEditor:getLanguageLua()
| |
− | | |
− | TextEditor:setLanguageDefinition(LanguageDefinition)
| |
− | LanguageDefinition = TextEditor:getLanguageDefinition()
| |
− | | |
− | Palette = TextEditor:getPaletteDark()
| |
− | Palette = TextEditor:getPaletteLight()
| |
− | Palette = TextEditor:getPaletteRetro()
| |
− | | |
− | TextEditor:setPalette(Palette)
| |
− | Palette = TextEditor:getPalette()
| |
− | | |
− | TextEditor:setPaletteColor(TE_ColorIndex, color [, alpha = 1]) -- see TextEditor enums below
| |
− | color, alpha = TextEditor:getPaletteColor(TE_ColorIndex)
| |
− | | |
− | TextEditor:loadPalette(table) -- 42 elements table
| |
− | -- example:
| |
− | --[[ dark palete:
| |
− | TextEditor:loadPalette{
| |
− | 0x7f7f7f, 1, -- Default
| |
− | 0xd69c56, 1, -- Keyword
| |
− | 0x00ff00, 1, -- Number
| |
− | 0x7070e0, 1, -- String
| |
− | 0x70a0e0, 1, -- Char literal
| |
− | 0xffffff, 1, -- Punctuation
| |
− | 0x408080, 1, -- Preprocessor
| |
− | 0xaaaaaa, 1, -- Identifier
| |
− | 0x9bc64d, 1, -- Known identifier
| |
− | 0xc040a0, 1, -- Preproc identifier
| |
− | 0x206020, 1, -- Comment (single line)
| |
− | 0x406020, 1, -- Comment (multi line)
| |
− | 0x101010, 1, -- Background
| |
− | 0xe0e0e0, 1, -- Cursor
| |
− | 0xa06020, 0.5, -- Selection
| |
− | 0x0020ff, 0.5, -- ErrorMarker
| |
− | 0xf08000, 0.25, -- Breakpoint
| |
− | 0x707000, 1, -- Line number
| |
− | 0x000000, 0.25, -- Current line fill
| |
− | 0x808080, 0.25, -- Current line fill (inactive)
| |
− | 0xa0a0a0, 0.25, -- Current line edge
| |
− | }
| |
− | ]]
| |
− | | |
− | -- see below
| |
− | TextEditor:setErrorMarkers(error_markers)
| |
− | TextEditor:setBreakpoints(breakpoints)
| |
− | | |
− | TextEditor:render(string_id [, w = 0, h = 0, border = 0])
| |
− | | |
− | TextEditor:setText(string)
| |
− | TextEditor:getText()
| |
− | TextEditor:setTextLines(table) -- set editor text using table. Structure: {"line 1", "line 2", "line 3", ...}
| |
− | table = TextEditor:getTextLines()
| |
− | | |
− | string = TextEditor:getSelectedText()
| |
− | string = TextEditor:getCurrentLineText()
| |
− | | |
− | number = TextEditor:getTotalLines()
| |
− | bool = TextEditor:isOverwrite()
| |
− | | |
− | bool = TextEditor:setReadOnly()
| |
− | bool = TextEditor:isReadOnly()
| |
− | bool = TextEditor:isTextChanged()
| |
− | bool = TextEditor:isCursorPositionChanged()
| |
− | | |
− | TextEditor:setColorizerEnable()
| |
− | bool = TextEditor:isColorizerEnabled()
| |
− | | |
− | line, column = TextEditor:getCursorPosition() -- 0 based line & column number
| |
− | TextEditor:setCursorPosition(line, column)
| |
− | | |
− | TextEditor:setHandleMouseInputs(bool)
| |
− | bool = TextEditor:isHandleMouseInputsEnabled()
| |
− | | |
− | TextEditor:setHandleKeyboardInputs(bool)
| |
− | bool = TextEditor:isHandleKeyboardInputsEnabled()
| |
− | | |
− | TextEditor:setTextEditorChildIgnored(bool)
| |
− | bool = TextEditor:isTextEditorChildIgnored()
| |
− | | |
− | TextEditor:setShowWhitespaces(bool)
| |
− | bool = TextEditor:isShowingWhitespaces()
| |
− | | |
− | TextEditor:setTabSize(size)
| |
− | size = TextEditor:getTabSize()
| |
− | | |
− | TextEditor:insertText(string)
| |
− | | |
− | TextEditor:moveUp([amount = 1, select = false])
| |
− | TextEditor:moveDown([amount = 1, select = false])
| |
− | TextEditor:moveLeft([amount = 1, select = false])
| |
− | TextEditor:moveRight([amount = 1, select = false])
| |
− | TextEditor:moveTop([select = false])
| |
− | TextEditor:moveBottom([select = false])
| |
− | TextEditor:moveHome([select = false])
| |
− | TextEditor:moveEnd([select = false])
| |
− | | |
− | TextEditor:setSelectionStart(line, column)
| |
− | TextEditor:setSelectionEnd(line, column)
| |
− | TextEditor:setSelection(start_line, start_column, end_line, end_column)
| |
− | TextEditor:selectWordUnderCursor()
| |
− | TextEditor:selectAll()
| |
− | bool = TextEditor:hasSelection()
| |
− | | |
− | TextEditor:copy()
| |
− | TextEditor:cut()
| |
− | TextEditor:paste()
| |
− | TextEditor:delete()
| |
− | | |
− | bool = TextEditor:canUndo()
| |
− | bool = TextEditor:canRedo()
| |
− | TextEditor:undo()
| |
− | TextEditor:redo()
| |
− | </syntaxhighlight>
| |
− | | |
− | === LanguageDefinition ===
| |
− | <syntaxhighlight lang="lua">
| |
− | string = LanguageDefinition:getName()
| |
− | </syntaxhighlight>
| |
− | | |
− | === ErrorMarkers ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ErrorMarkers = ImGuiErrorMarkers.new()
| |
− | | |
− | ErrorMarkers:add(line, message)
| |
− | ErrorMarkers:remove(line)
| |
− | message = ErrorMarkers:get(line)
| |
− | number = ErrorMarkers:getSize()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Breakpoints ===
| |
− | <syntaxhighlight lang="lua">
| |
− | Breakpoints = ImGuiBreakpoints.new()
| |
− | | |
− | Breakpoints:add(line)
| |
− | Breakpoints:remove(line)
| |
− | bool = Breakpoints:get(line)
| |
− | number = Breakpoints:getSize()
| |
− | </syntaxhighlight>
| |
− | | |
− | == ENUMS ==
| |
− | | |
− | === Keyboard keys ===
| |
− | ==== Keys ====
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.Key_None
| |
− | ImGui.Key_Tab
| |
− | ImGui.Key_LeftArrow
| |
− | ImGui.Key_RightArrow
| |
− | ImGui.Key_UpArrow
| |
− | ImGui.Key_DownArrow
| |
− | ImGui.Key_PageUp
| |
− | ImGui.Key_PageDown
| |
− | ImGui.Key_Home
| |
− | ImGui.Key_End
| |
− | ImGui.Key_Insert
| |
− | ImGui.Key_Delete
| |
− | ImGui.Key_Backspace
| |
− | ImGui.Key_Space
| |
− | ImGui.Key_Enter
| |
− | ImGui.Key_Escape
| |
− | ImGui.Key_LeftCtrl
| |
− | ImGui.Key_LeftShift
| |
− | ImGui.Key_LeftAlt
| |
− | ImGui.Key_LeftSuper
| |
− | ImGui.Key_RightCtrl
| |
− | ImGui.Key_RightShift
| |
− | ImGui.Key_RightAlt
| |
− | ImGui.Key_RightSuper
| |
− | ImGui.Key_Menu
| |
− | ImGui.Key_MouseLeft
| |
− | ImGui.Key_MouseRight
| |
− | ImGui.Key_MouseMiddle
| |
− | ImGui.Key_MouseX1
| |
− | ImGui.Key_MouseX2
| |
− | ImGui.Key_MouseWheelX
| |
− | ImGui.Key_MouseWheelY
| |
− | ImGui.Key_0
| |
− | ImGui.Key_1
| |
− | ImGui.Key_2
| |
− | ImGui.Key_3
| |
− | ImGui.Key_4
| |
− | ImGui.Key_5
| |
− | ImGui.Key_6
| |
− | ImGui.Key_7
| |
− | ImGui.Key_8
| |
− | ImGui.Key_9
| |
− | ImGui.Key_A
| |
− | ImGui.Key_B
| |
− | ImGui.Key_C
| |
− | ImGui.Key_D
| |
− | ImGui.Key_E
| |
− | ImGui.Key_F
| |
− | ImGui.Key_G
| |
− | ImGui.Key_H
| |
− | ImGui.Key_I
| |
− | ImGui.Key_J
| |
− | ImGui.Key_K
| |
− | ImGui.Key_L
| |
− | ImGui.Key_M
| |
− | ImGui.Key_N
| |
− | ImGui.Key_O
| |
− | ImGui.Key_P
| |
− | ImGui.Key_Q
| |
− | ImGui.Key_R
| |
− | ImGui.Key_S
| |
− | ImGui.Key_T
| |
− | ImGui.Key_U
| |
− | ImGui.Key_V
| |
− | ImGui.Key_W
| |
− | ImGui.Key_X
| |
− | ImGui.Key_Y
| |
− | ImGui.Key_Z
| |
− | ImGui.Key_F1
| |
− | ImGui.Key_F2
| |
− | ImGui.Key_F3
| |
− | ImGui.Key_F4
| |
− | ImGui.Key_F5
| |
− | ImGui.Key_F6
| |
− | ImGui.Key_F7
| |
− | ImGui.Key_F8
| |
− | ImGui.Key_F9
| |
− | ImGui.Key_F10
| |
− | ImGui.Key_F11
| |
− | ImGui.Key_F12
| |
− | ImGui.Key_Apostrophe
| |
− | ImGui.Key_Comma
| |
− | ImGui.Key_Minus
| |
− | ImGui.Key_Period
| |
− | ImGui.Key_Slash
| |
− | ImGui.Key_Semicolon
| |
− | ImGui.Key_Equal
| |
− | ImGui.Key_LeftBracket
| |
− | ImGui.Key_Backslash
| |
− | ImGui.Key_RightBracket
| |
− | ImGui.Key_GraveAccent
| |
− | ImGui.Key_CapsLock
| |
− | ImGui.Key_ScrollLock
| |
− | ImGui.Key_NumLock
| |
− | ImGui.Key_PrintScreen
| |
− | ImGui.Key_Pause
| |
− | ImGui.Key_Keypad0
| |
− | ImGui.Key_Keypad1
| |
− | ImGui.Key_Keypad2
| |
− | ImGui.Key_Keypad3
| |
− | ImGui.Key_Keypad4
| |
− | ImGui.Key_Keypad5
| |
− | ImGui.Key_Keypad6
| |
− | ImGui.Key_Keypad7
| |
− | ImGui.Key_Keypad8
| |
− | ImGui.Key_Keypad9
| |
− | ImGui.Key_KeypadDecimal
| |
− | ImGui.Key_KeypadDivide
| |
− | ImGui.Key_KeypadMultiply
| |
− | ImGui.Key_KeypadSubtract
| |
− | ImGui.Key_KeypadAdd
| |
− | ImGui.Key_KeypadEnter
| |
− | ImGui.Key_KeypadEqual
| |
− | </syntaxhighlight>
| |
− | | |
− | ==== Gamepad ====
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.Key_GamepadStart
| |
− | ImGui.Key_GamepadBack
| |
− | ImGui.Key_GamepadFaceUp
| |
− | ImGui.Key_GamepadFaceDown
| |
− | ImGui.Key_GamepadFaceLeft
| |
− | ImGui.Key_GamepadFaceRight
| |
− | ImGui.Key_GamepadDpadUp
| |
− | ImGui.Key_GamepadDpadDown
| |
− | ImGui.Key_GamepadDpadLeft
| |
− | ImGui.Key_GamepadDpadRight
| |
− | ImGui.Key_GamepadL1
| |
− | ImGui.Key_GamepadR1
| |
− | ImGui.Key_GamepadL2
| |
− | ImGui.Key_GamepadR2
| |
− | ImGui.Key_GamepadL3
| |
− | ImGui.Key_GamepadR3
| |
− | ImGui.Key_GamepadLStickUp
| |
− | ImGui.Key_GamepadLStickDown
| |
− | ImGui.Key_GamepadLStickLeft
| |
− | ImGui.Key_GamepadLStickRight
| |
− | ImGui.Key_GamepadRStickUp
| |
− | ImGui.Key_GamepadRStickDown
| |
− | ImGui.Key_GamepadRStickLeft
| |
− | ImGui.Key_GamepadRStickRight
| |
− | </syntaxhighlight>
| |
− | | |
− | ==== Modifiers ====
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.Key_ModCtrl
| |
− | ImGui.Key_ModShift
| |
− | ImGui.Key_ModAlt
| |
− | ImGui.Key_ModSuper
| |
− | </syntaxhighlight>
| |
− | | |
− | === FocusedFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.FocusedFlags_ChildWindows
| |
− | ImGui.FocusedFlags_AnyWindow
| |
− | ImGui.FocusedFlags_RootWindow
| |
− | ImGui.FocusedFlags_RootAndChildWindows
| |
− | ImGui.FocusedFlags_None
| |
− | ImGui.FocusedFlags_NoPopupHierarchy
| |
− | </syntaxhighlight>
| |
− | | |
− | === PopupFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.PopupFlags_NoOpenOverExistingPopup
| |
− | ImGui.PopupFlags_MouseButtonLeft
| |
− | ImGui.PopupFlags_MouseButtonMask
| |
− | ImGui.PopupFlags_MouseButtonRight
| |
− | ImGui.PopupFlags_AnyPopupId
| |
− | ImGui.PopupFlags_MouseButtonDefault
| |
− | ImGui.PopupFlags_MouseButtonMiddle
| |
− | ImGui.PopupFlags_None
| |
− | ImGui.PopupFlags_AnyPopup
| |
− | ImGui.PopupFlags_AnyPopupLevel
| |
− | ImGui.PopupFlags_NoOpenOverItems
| |
− | </syntaxhighlight>
| |
− | | |
− | === HoveredFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.HoveredFlags_None
| |
− | ImGui.HoveredFlags_RootAndChildWindows
| |
− | ImGui.HoveredFlags_AllowWhenBlockedByPopup
| |
− | ImGui.HoveredFlags_AllowWhenBlockedByActiveItem
| |
− | ImGui.HoveredFlags_ChildWindows
| |
− | ImGui.HoveredFlags_RectOnly
| |
− | ImGui.HoveredFlags_AllowWhenDisabled
| |
− | ImGui.HoveredFlags_AllowWhenOverlapped
| |
− | ImGui.HoveredFlags_AnyWindow
| |
− | ImGui.HoveredFlags_RootWindow
| |
− | ImGui.HoveredFlags_NoNavOverride
| |
− | ImGui.HoveredFlags_DelayNormal
| |
− | ImGui.HoveredFlags_DelayShort
| |
− | ImGui.HoveredFlags_NoSharedDelay
| |
− | </syntaxhighlight>
| |
− | | |
− | === InputTextFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.InputTextFlags_None
| |
− | ImGui.InputTextFlags_EnterReturnsTrue
| |
− | ImGui.InputTextFlags_ReadOnly
| |
− | ImGui.InputTextFlags_AutoSelectAll
| |
− | ImGui.InputTextFlags_AllowTabInput
| |
− | ImGui.InputTextFlags_CharsScientific
| |
− | ImGui.InputTextFlags_CharsDecimal
| |
− | ImGui.InputTextFlags_NoUndoRedo
| |
− | ImGui.InputTextFlags_CtrlEnterForNewLine
| |
− | ImGui.InputTextFlags_CharsHexadecimal
| |
− | ImGui.InputTextFlags_CharsNoBlank
| |
− | ImGui.InputTextFlags_Password
| |
− | ImGui.InputTextFlags_NoHorizontalScroll
| |
− | ImGui.InputTextFlags_AlwaysInsertMode
| |
− | ImGui.InputTextFlags_CharsUppercase
| |
− | ImGui.InputTextFlags_NoBackground -- custom constant, used to disable background
| |
− | ImGui.InputTextFlags_EscapeClearsAll
| |
− | ImGui.InputTextFlags_CallbackCompletion
| |
− | ImGui.InputTextFlags_CallbackResize
| |
− | ImGui.InputTextFlags_CallbackAlways
| |
− | ImGui.InputTextFlags_CallbackHistory
| |
− | ImGui.InputTextFlags_CallbackCharFilter
| |
− | ImGui.InputTextFlags_CallbackEdit
| |
− | </syntaxhighlight>
| |
− | | |
− | === NavInput ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.NavInput_FocusNext
| |
− | ImGui.NavInput_TweakFast
| |
− | ImGui.NavInput_Input
| |
− | ImGui.NavInput_DpadRight
| |
− | ImGui.NavInput_FocusPrev
| |
− | ImGui.NavInput_LStickDown
| |
− | ImGui.NavInput_LStickUp
| |
− | ImGui.NavInput_Activate
| |
− | ImGui.NavInput_LStickLeft
| |
− | ImGui.NavInput_LStickRight
| |
− | ImGui.NavInput_DpadLeft
| |
− | ImGui.NavInput_DpadDown
| |
− | ImGui.NavInput_TweakSlow
| |
− | ImGui.NavInput_DpadUp
| |
− | ImGui.NavInput_Menu
| |
− | ImGui.NavInput_Cancel
| |
− | </syntaxhighlight>
| |
− | | |
− | === TabBarFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TabBarFlags_AutoSelectNewTabs
| |
− | ImGui.TabBarFlags_NoCloseWithMiddleMouseButton
| |
− | ImGui.TabBarFlags_TabListPopupButton
| |
− | ImGui.TabBarFlags_NoTooltip
| |
− | ImGui.TabBarFlags_FittingPolicyMask
| |
− | ImGui.TabBarFlags_Reorderable
| |
− | ImGui.TabBarFlags_FittingPolicyDefault
| |
− | ImGui.TabBarFlags_FittingPolicyScroll
| |
− | ImGui.TabBarFlags_FittingPolicyResizeDown
| |
− | ImGui.TabBarFlags_None
| |
− | ImGui.TabBarFlags_NoTabListScrollingButtons
| |
− | </syntaxhighlight>
| |
− | | |
− | === TreeNodeFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TreeNodeFlags_Bullet
| |
− | ImGui.TreeNodeFlags_None
| |
− | ImGui.TreeNodeFlags_CollapsingHeader
| |
− | ImGui.TreeNodeFlags_NavLeftJumpsBackHere
| |
− | ImGui.TreeNodeFlags_Framed
| |
− | ImGui.TreeNodeFlags_FramePadding
| |
− | ImGui.TreeNodeFlags_AllowItemOverlap
| |
− | ImGui.TreeNodeFlags_OpenOnArrow
| |
− | ImGui.TreeNodeFlags_SpanFullWidth
| |
− | ImGui.TreeNodeFlags_NoAutoOpenOnLog
| |
− | ImGui.TreeNodeFlags_Leaf
| |
− | ImGui.TreeNodeFlags_NoTreePushOnOpen
| |
− | ImGui.TreeNodeFlags_Selected
| |
− | ImGui.TreeNodeFlags_SpanAvailWidth
| |
− | ImGui.TreeNodeFlags_OpenOnDoubleClick
| |
− | ImGui.TreeNodeFlags_DefaultOpen
| |
− | </syntaxhighlight>
| |
− | | |
− | === StyleVar ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.StyleVar_GrabRounding
| |
− | ImGui.StyleVar_Alpha
| |
− | ImGui.StyleVar_WindowMinSize
| |
− | ImGui.StyleVar_PopupBorderSize
| |
− | ImGui.StyleVar_WindowBorderSize
| |
− | ImGui.StyleVar_FrameBorderSize
| |
− | ImGui.StyleVar_ItemSpacing
| |
− | ImGui.StyleVar_IndentSpacing
| |
− | ImGui.StyleVar_FramePadding
| |
− | ImGui.StyleVar_WindowPadding
| |
− | ImGui.StyleVar_ChildRounding
| |
− | ImGui.StyleVar_ItemInnerSpacing
| |
− | ImGui.StyleVar_WindowRounding
| |
− | ImGui.StyleVar_FrameRounding
| |
− | ImGui.StyleVar_TabRounding
| |
− | ImGui.StyleVar_ChildBorderSize
| |
− | ImGui.StyleVar_GrabMinSize
| |
− | ImGui.StyleVar_ScrollbarRounding
| |
− | ImGui.StyleVar_ScrollbarSize
| |
− | ImGui.StyleVar_WindowTitleAlign
| |
− | ImGui.StyleVar_SelectableTextAlign
| |
− | ImGui.StyleVar_PopupRounding
| |
− | ImGui.StyleVar_ButtonTextAlign
| |
− | ImGui.StyleVar_CellPadding
| |
− | ImGui.StyleVar_DisabledAlpha
| |
− | ImGui.StyleVar_SeparatorTextBorderSize
| |
− | ImGui.StyleVar_SeparatorTextAlign
| |
− | ImGui.StyleVar_SeparatorTextPadding
| |
− | </syntaxhighlight>
| |
− | | |
− | === Col ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.Col_PlotHistogram
| |
− | ImGui.Col_TitleBg
| |
− | ImGui.Col_Separator
| |
− | ImGui.Col_HeaderActive
| |
− | ImGui.Col_HeaderHovered
| |
− | ImGui.Col_ButtonHovered
| |
− | ImGui.Col_NavWindowingHighlight
| |
− | ImGui.Col_ScrollbarGrab
| |
− | ImGui.Col_FrameBg
| |
− | ImGui.Col_TextSelectedBg
| |
− | ImGui.Col_ScrollbarGrabActive
| |
− | ImGui.Col_TitleBgCollapsed
| |
− | ImGui.Col_ModalWindowDimBg
| |
− | ImGui.Col_ResizeGripActive
| |
− | ImGui.Col_SeparatorHovered
| |
− | ImGui.Col_ScrollbarGrabHovered
| |
− | ImGui.Col_TabUnfocused
| |
− | ImGui.Col_ScrollbarBg
| |
− | ImGui.Col_ChildBg
| |
− | ImGui.Col_Header
| |
− | ImGui.Col_NavWindowingDimBg
| |
− | ImGui.Col_CheckMark
| |
− | ImGui.Col_Button
| |
− | ImGui.Col_BorderShadow
| |
− | ImGui.Col_DragDropTarget
| |
− | ImGui.Col_MenuBarBg
| |
− | ImGui.Col_TitleBgActive
| |
− | ImGui.Col_SeparatorActive
| |
− | ImGui.Col_Text
| |
− | ImGui.Col_PlotLinesHovered
| |
− | ImGui.Col_Border
| |
− | ImGui.Col_TabUnfocusedActive
| |
− | ImGui.Col_PlotLines
| |
− | ImGui.Col_PlotHistogramHovered
| |
− | ImGui.Col_ResizeGripHovered
| |
− | ImGui.Col_Tab
| |
− | ImGui.Col_TabHovered
| |
− | ImGui.Col_PopupBg
| |
− | ImGui.Col_TabActive
| |
− | ImGui.Col_FrameBgActive
| |
− | ImGui.Col_ButtonActive
| |
− | ImGui.Col_WindowBg
| |
− | ImGui.Col_SliderGrabActive
| |
− | ImGui.Col_SliderGrab
| |
− | ImGui.Col_NavHighlight
| |
− | ImGui.Col_FrameBgHovered
| |
− | ImGui.Col_TextDisabled
| |
− | ImGui.Col_ResizeGrip
| |
− | ImGui.Col_TableHeaderBg
| |
− | ImGui.Col_TableBorderStrong
| |
− | ImGui.Col_TableBorderLight
| |
− | ImGui.Col_TableRowBg
| |
− | ImGui.Col_TableRowBgAlt
| |
− | </syntaxhighlight>
| |
− | | |
− | === DataType ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.DataType_U8
| |
− | ImGui.DataType_S64
| |
− | ImGui.DataType_Float
| |
− | ImGui.DataType_S16
| |
− | ImGui.DataType_U16
| |
− | ImGui.DataType_Double
| |
− | ImGui.DataType_S8
| |
− | ImGui.DataType_U32
| |
− | ImGui.DataType_S32
| |
− | ImGui.DataType_U64
| |
− | </syntaxhighlight>
| |
− | | |
− | === Dir ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.Dir_None
| |
− | ImGui.Dir_Left
| |
− | ImGui.Dir_Up
| |
− | ImGui.Dir_Down
| |
− | ImGui.Dir_Right
| |
− | </syntaxhighlight>
| |
− | | |
− | === WindowFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.WindowFlags_NoScrollWithMouse
| |
− | ImGui.WindowFlags_None
| |
− | ImGui.WindowFlags_NoScrollbar
| |
− | ImGui.WindowFlags_HorizontalScrollbar
| |
− | ImGui.WindowFlags_NoFocusOnAppearing
| |
− | ImGui.WindowFlags_NoBringToFrontOnFocus
| |
− | ImGui.WindowFlags_NoDecoration
| |
− | ImGui.WindowFlags_NoCollapse
| |
− | ImGui.WindowFlags_NoTitleBar
| |
− | ImGui.WindowFlags_NoMove
| |
− | ImGui.WindowFlags_NoInputs
| |
− | ImGui.WindowFlags_NoMouseInputs
| |
− | ImGui.WindowFlags_NoSavedSettings
| |
− | ImGui.WindowFlags_NoNav
| |
− | ImGui.WindowFlags_UnsavedDocument
| |
− | ImGui.WindowFlags_NoNavFocus
| |
− | ImGui.WindowFlags_AlwaysHorizontalScrollbar
| |
− | ImGui.WindowFlags_AlwaysUseWindowPadding
| |
− | ImGui.WindowFlags_NoNavInputs
| |
− | ImGui.WindowFlags_NoResize
| |
− | ImGui.WindowFlags_AlwaysVerticalScrollbar
| |
− | ImGui.WindowFlags_MenuBar
| |
− | ImGui.WindowFlags_NoBackground
| |
− | ImGui.WindowFlags_AlwaysAutoResize
| |
− | ImGui.WindowFlags_FullScreen -- custom constant, used to create a fullscreen window
| |
− | </syntaxhighlight>
| |
− | | |
− | === TabItemFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TabItemFlags_SetSelected
| |
− | ImGui.TabItemFlags_NoCloseWithMiddleMouseButton
| |
− | ImGui.TabItemFlags_NoTooltip
| |
− | ImGui.TabItemFlags_None
| |
− | ImGui.TabItemFlags_NoPushId
| |
− | ImGui.TabItemFlags_UnsavedDocument
| |
− | ImGui.TabItemFlags_Leading
| |
− | ImGui.TabItemFlags_Trailing
| |
− | ImGui.TabItemFlags_NoReorder
| |
− | </syntaxhighlight>
| |
− | | |
− | === ComboFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.ComboFlags_HeightSmall
| |
− | ImGui.ComboFlags_HeightLarge
| |
− | ImGui.ComboFlags_PopupAlignLeft
| |
− | ImGui.ComboFlags_None
| |
− | ImGui.ComboFlags_NoPreview
| |
− | ImGui.ComboFlags_HeightRegular
| |
− | ImGui.ComboFlags_HeightMask
| |
− | ImGui.ComboFlags_NoArrowButton
| |
− | ImGui.ComboFlags_HeightLargest
| |
− | </syntaxhighlight>
| |
− | | |
− | === Cond ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.Cond_Appearing
| |
− | ImGui.Cond_None
| |
− | ImGui.Cond_Always
| |
− | ImGui.Cond_FirstUseEver
| |
− | ImGui.Cond_Once
| |
− | </syntaxhighlight>
| |
− | | |
− | === SelectableFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.SelectableFlags_None
| |
− | ImGui.SelectableFlags_SpanAllColumns
| |
− | ImGui.SelectableFlags_AllowItemOverlap
| |
− | ImGui.SelectableFlags_DontClosePopups
| |
− | ImGui.SelectableFlags_AllowDoubleClick
| |
− | ImGui.SelectableFlags_Disabled
| |
− | </syntaxhighlight>
| |
− | | |
− | === MouseCursor ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.MouseCursor_Hand
| |
− | ImGui.MouseCursor_ResizeAll
| |
− | ImGui.MouseCursor_ResizeEW
| |
− | ImGui.MouseCursor_Arrow
| |
− | ImGui.MouseCursor_ResizeNS
| |
− | ImGui.MouseCursor_None
| |
− | ImGui.MouseCursor_NotAllowed
| |
− | ImGui.MouseCursor_ResizeNWSE
| |
− | ImGui.MouseCursor_ResizeNESW
| |
− | ImGui.MouseCursor_TextInput
| |
− | </syntaxhighlight>
| |
− | | |
− | === MouseButton ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.MouseButton_Right
| |
− | ImGui.MouseButton_Middle
| |
− | ImGui.MouseButton_Left
| |
− | </syntaxhighlight>
| |
− | | |
− | === ColorEditFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.ColorEditFlags_AlphaPreview
| |
− | ImGui.ColorEditFlags_DisplayRGB
| |
− | ImGui.ColorEditFlags_DisplayHex
| |
− | ImGui.ColorEditFlags_InputHSV
| |
− | ImGui.ColorEditFlags_NoSidePreview
| |
− | ImGui.ColorEditFlags_Uint8
| |
− | ImGui.ColorEditFlags_AlphaPreviewHalf
| |
− | ImGui.ColorEditFlags_Float
| |
− | ImGui.ColorEditFlags_PickerHueWheel
| |
− | ImGui.ColorEditFlags_OptionsDefault
| |
− | ImGui.ColorEditFlags_InputRGB
| |
− | ImGui.ColorEditFlags_HDR
| |
− | ImGui.ColorEditFlags_NoPicker
| |
− | ImGui.ColorEditFlags_AlphaBar
| |
− | ImGui.ColorEditFlags_DisplayHSV
| |
− | ImGui.ColorEditFlags_PickerHueBar
| |
− | ImGui.ColorEditFlags_NoAlpha
| |
− | ImGui.ColorEditFlags_NoOptions
| |
− | ImGui.ColorEditFlags_NoDragDrop
| |
− | ImGui.ColorEditFlags_NoInputs
| |
− | ImGui.ColorEditFlags_None
| |
− | ImGui.ColorEditFlags_NoSmallPreview
| |
− | ImGui.ColorEditFlags_NoBorder
| |
− | ImGui.ColorEditFlags_NoLabel
| |
− | ImGui.ColorEditFlags_NoTooltip
| |
− | </syntaxhighlight>
| |
− | | |
− | === DragDropFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.DragDropFlags_SourceNoPreviewTooltip
| |
− | ImGui.DragDropFlags_SourceAllowNullID
| |
− | ImGui.DragDropFlags_AcceptNoDrawDefaultRect
| |
− | ImGui.DragDropFlags_AcceptPeekOnly
| |
− | ImGui.DragDropFlags_AcceptBeforeDelivery
| |
− | ImGui.DragDropFlags_SourceNoHoldToOpenOthers
| |
− | ImGui.DragDropFlags_AcceptNoPreviewTooltip
| |
− | ImGui.DragDropFlags_SourceAutoExpirePayload
| |
− | ImGui.DragDropFlags_SourceExtern
| |
− | ImGui.DragDropFlags_None
| |
− | ImGui.DragDropFlags_SourceNoDisableHover
| |
− | </syntaxhighlight>
| |
− | | |
− | === corner_flags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.DrawFlags_None
| |
− | ImGui.DrawFlags_Closed
| |
− | ImGui.DrawFlags_RoundCornersTopLeft
| |
− | ImGui.DrawFlags_RoundCornersTopRight
| |
− | ImGui.DrawFlags_RoundCornersBottomLeft
| |
− | ImGui.DrawFlags_RoundCornersBottomRight
| |
− | ImGui.DrawFlags_RoundCornersTop
| |
− | ImGui.DrawFlags_RoundCornersBottom
| |
− | ImGui.DrawFlags_RoundCornersLeft
| |
− | ImGui.DrawFlags_RoundCornersRight
| |
− | ImGui.DrawFlags_RoundCornersAll
| |
− | </syntaxhighlight>
| |
− | | |
− | === ConfigFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.ConfigFlags_None
| |
− | ImGui.ConfigFlags_NavEnableKeyboard
| |
− | ImGui.ConfigFlags_NavEnableGamepad
| |
− | ImGui.ConfigFlags_NavEnableSetMousePos
| |
− | ImGui.ConfigFlags_NavNoCaptureKeyboard
| |
− | ImGui.ConfigFlags_NoMouse
| |
− | ImGui.ConfigFlags_NoMouseCursorChange
| |
− | ImGui.ConfigFlags_IsSRGB
| |
− | ImGui.ConfigFlags_IsTouchScreen
| |
− | </syntaxhighlight>
| |
− | | |
− | === BackendFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.BackendFlags_None
| |
− | ImGui.BackendFlags_HasGamepad
| |
− | ImGui.BackendFlags_HasMouseCursors
| |
− | ImGui.BackendFlags_HasSetMousePos
| |
− | ImGui.BackendFlags_RendererHasVtxOffset
| |
− | </syntaxhighlight>
| |
− | | |
− | === SliderFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.SliderFlags_None
| |
− | ImGui.SliderFlags_ClampOnInput -- renamed in 1.79 to "SliderFlags_AlwaysClamp" (can be still used until 1.80)
| |
− | ImGui.SliderFlags_AlwaysClamp
| |
− | ImGui.SliderFlags_Logarithmic
| |
− | ImGui.SliderFlags_NoRoundToFormat
| |
− | ImGui.SliderFlags_NoInput
| |
− | </syntaxhighlight>
| |
− | | |
− | === GlyphRanges ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.GlyphRanges_Default,
| |
− | ImGui.GlyphRanges_Korean,
| |
− | ImGui.GlyphRanges_ChineseFull,
| |
− | ImGui.GlyphRanges_ChineseSimplifiedCommon,
| |
− | ImGui.GlyphRanges_Japanese,
| |
− | ImGui.GlyphRanges_Cyrillic,
| |
− | ImGui.GlyphRanges_Thai,
| |
− | ImGui.GlyphRanges_Vietnamese
| |
− | </syntaxhighlight>
| |
− | | |
− | === ItemFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.ItemFlags_Disabled
| |
− | ImGui.ItemFlags_ButtonRepeat
| |
− | ImGui.ItemFlags_NoTabStop
| |
− | </syntaxhighlight>
| |
− | | |
− | === TableBgTarget ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TableBgTarget_None
| |
− | ImGui.TableBgTarget_RowBg0
| |
− | ImGui.TableBgTarget_RowBg1
| |
− | ImGui.TableBgTarget_CellBg
| |
− | </syntaxhighlight>
| |
− | | |
− | | |
− | === TableColumnFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TableColumnFlags_None
| |
− | ImGui.TableColumnFlags_DefaultHide
| |
− | ImGui.TableColumnFlags_DefaultSort
| |
− | ImGui.TableColumnFlags_WidthStretch
| |
− | ImGui.TableColumnFlags_WidthFixed
| |
− | ImGui.TableColumnFlags_NoResize
| |
− | ImGui.TableColumnFlags_NoReorder
| |
− | ImGui.TableColumnFlags_NoHide
| |
− | ImGui.TableColumnFlags_NoClip
| |
− | ImGui.TableColumnFlags_NoSort
| |
− | ImGui.TableColumnFlags_NoSortAscending
| |
− | ImGui.TableColumnFlags_NoSortDescending
| |
− | ImGui.TableColumnFlags_NoHeaderWidth
| |
− | ImGui.TableColumnFlags_PreferSortAscending
| |
− | ImGui.TableColumnFlags_PreferSortDescending
| |
− | ImGui.TableColumnFlags_IndentEnable
| |
− | ImGui.TableColumnFlags_IndentDisable
| |
− | ImGui.TableColumnFlags_IsEnabled
| |
− | ImGui.TableColumnFlags_IsVisible
| |
− | ImGui.TableColumnFlags_IsSorted
| |
− | ImGui.TableColumnFlags_IsHovered
| |
− | ImGui.TableColumnFlags_Disabled
| |
− | ImGui.TableColumnFlags_NoHeaderLabel
| |
− | </syntaxhighlight>
| |
− | | |
− | === TableFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TableFlags_None
| |
− | ImGui.TableFlags_Resizable
| |
− | ImGui.TableFlags_Reorderable
| |
− | ImGui.TableFlags_Hideable
| |
− | ImGui.TableFlags_Sortable
| |
− | ImGui.TableFlags_NoSavedSettings
| |
− | ImGui.TableFlags_ContextMenuInBody
| |
− | ImGui.TableFlags_RowBg
| |
− | ImGui.TableFlags_BordersInnerH
| |
− | ImGui.TableFlags_BordersOuterH
| |
− | ImGui.TableFlags_BordersInnerV
| |
− | ImGui.TableFlags_BordersOuterV
| |
− | ImGui.TableFlags_BordersH
| |
− | ImGui.TableFlags_BordersV
| |
− | ImGui.TableFlags_BordersInner
| |
− | ImGui.TableFlags_BordersOuter
| |
− | ImGui.TableFlags_Borders
| |
− | ImGui.TableFlags_NoBordersInBody
| |
− | ImGui.TableFlags_NoBordersInBodyUntilResize
| |
− | ImGui.TableFlags_SizingFixedFit
| |
− | ImGui.TableFlags_SizingFixedSame
| |
− | ImGui.TableFlags_SizingStretchProp
| |
− | ImGui.TableFlags_SizingStretchSame
| |
− | ImGui.TableFlags_NoHostExtendX
| |
− | ImGui.TableFlags_NoHostExtendY
| |
− | ImGui.TableFlags_NoKeepColumnsVisible
| |
− | ImGui.TableFlags_PreciseWidths
| |
− | ImGui.TableFlags_NoClip
| |
− | ImGui.TableFlags_PadOuterX
| |
− | ImGui.TableFlags_NoPadOuterX
| |
− | ImGui.TableFlags_NoPadInnerX
| |
− | ImGui.TableFlags_ScrollX
| |
− | ImGui.TableFlags_ScrollY
| |
− | ImGui.TableFlags_SortMulti
| |
− | ImGui.TableFlags_SortTristate
| |
− | </syntaxhighlight>
| |
− | | |
− | === TableColumnFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TableColumnFlags_None
| |
− | ImGui.TableColumnFlags_DefaultHide
| |
− | ImGui.TableColumnFlags_DefaultSort
| |
− | ImGui.TableColumnFlags_WidthStretch
| |
− | ImGui.TableColumnFlags_WidthFixed
| |
− | ImGui.TableColumnFlags_NoResize
| |
− | ImGui.TableColumnFlags_NoReorder
| |
− | ImGui.TableColumnFlags_NoHide
| |
− | ImGui.TableColumnFlags_NoClip
| |
− | ImGui.TableColumnFlags_NoSort
| |
− | ImGui.TableColumnFlags_NoSortAscending
| |
− | ImGui.TableColumnFlags_NoSortDescending
| |
− | ImGui.TableColumnFlags_NoHeaderWidth
| |
− | ImGui.TableColumnFlags_PreferSortAscending
| |
− | ImGui.TableColumnFlags_PreferSortDescending
| |
− | ImGui.TableColumnFlags_IndentEnable
| |
− | ImGui.TableColumnFlags_IndentDisable
| |
− | ImGui.TableColumnFlags_IsEnabled
| |
− | ImGui.TableColumnFlags_IsVisible
| |
− | ImGui.TableColumnFlags_IsSorted
| |
− | ImGui.TableColumnFlags_IsHovered
| |
− | </syntaxhighlight>
| |
− | | |
− | === TableRowFlags ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TableRowFlags_None
| |
− | ImGui.TableRowFlags_Headers
| |
− | </syntaxhighlight>
| |
− | | |
− | === SortDirection ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.SortDirection_None
| |
− | ImGui.SortDirection_Ascending
| |
− | ImGui.SortDirection_Descending
| |
− | </syntaxhighlight>
| |
− | | |
− | === TE_ColorIndex ===
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.TE_Default
| |
− | ImGui.TE_Keyword
| |
− | ImGui.TE_Number
| |
− | ImGui.TE_String
| |
− | ImGui.TE_CharLiteral
| |
− | ImGui.TE_Punctuation
| |
− | ImGui.TE_Preprocessor
| |
− | ImGui.TE_Identifier
| |
− | ImGui.TE_KnownIdentifier
| |
− | ImGui.TE_PreprocIdentifier
| |
− | ImGui.TE_Comment
| |
− | ImGui.TE_MultiLineComment
| |
− | ImGui.TE_Background
| |
− | ImGui.TE_Cursor
| |
− | ImGui.TE_Selection
| |
− | ImGui.TE_ErrorMarker
| |
− | ImGui.TE_Breakpoint
| |
− | ImGui.TE_LineNumber
| |
− | ImGui.TE_CurrentLineFill
| |
− | ImGui.TE_CurrentLineFillInactive
| |
− | ImGui.TE_CurrentLineEdge
| |
− | </syntaxhighlight>
| |
− | | |
− | == ImageScaleMode ==
| |
− | <syntaxhighlight lang="lua">
| |
− | ImGui.ImageScaleMode_LetterBox
| |
− | ImGui.ImageScaleMode_FitWidth
| |
− | ImGui.ImageScaleMode_FitHeight
| |
− | ImGui.ImageScaleMode_Stretch
| |
− | </syntaxhighlight>
| |
− | | |
− | == DRAW LISTS ==
| |
− | | |
− | === Window draw list ===
| |
− | <syntaxhighlight lang="lua">
| |
− | local list = ImGui:getWindowDrawList()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Background draw list''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local list = ImGui:getBackgroundDrawList()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Foreground draw list''':
| |
− | <syntaxhighlight lang="lua">
| |
− | local list = ImGui:getForegroundDrawList()
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Draw lists commands''':
| |
− | <syntaxhighlight lang="lua">
| |
− | DrawList:pushClipRect(clip_rect_min_x, clip_rect_min_y, clip_rect_max_x, clip_rect_max_y [, intersect_with_current_clip_rect = false])
| |
− | DrawList:pushClipRectFullScreen()
| |
− | DrawList:popClipRect()
| |
− | DrawList:pushTextureID(texture)
| |
− | DrawList:popTextureID()
| |
− | x, y = DrawList:getClipRectMin()
| |
− | x, y = DrawList:getClipRectMax()
| |
− | DrawList:addLine(p1_x, p1_y, p2_x, p2_y, color [, alpha = 1, thickness = 1])
| |
− | 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])
| |
− | DrawList:addRectFilled(p_min_x, p_min_y, p_max_x, p_max_y, color [, alpha = 1, rounding = 0, rounding_corners = ImGui.DrawFlags_RoundCornersAll])
| |
− | 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)
| |
− | DrawList:addQuad(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color [, alpha = 1, thickness = 1])
| |
− | DrawList:addQuadFilled(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color)
| |
− | DrawList:addTriangle(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color [, alpha = 1, thickness = 1])
| |
− | DrawList:addTriangleFilled(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color)
| |
− | DrawList:addCircle(center_x, center_y, radius, color [, alpha = 1, num_segments = 12, thickness = 1])
| |
− | DrawList:addCircleFilled(center_x, center_y, radius, color [, alpha = 1, num_segments = 12])
| |
− | DrawList:addNgon(center_x, center_y, radius, color [, alpha = 1, num_segments = 12, thickness = 1])
| |
− | DrawList:addNgonFilled(center_x, center_y, radius, color [, alpha = 1, num_segments = 12])
| |
− | DrawList:addText(x, y, color, alpha, text) -- x, y (number), text_begin (string), text_end (string)
| |
− | 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])
| |
− | DrawList:addPolyline(points_table, color, alpha, closed, thickness) -- points_table (table), color (number), closed (bool), thickness (number)
| |
− | DrawList:addConvexPolyFilled(points_table, color) -- points_table (table), color (number)
| |
− | DrawList:addBezierCubic(
| |
− | p1_x, p1_y,
| |
− | p2_x, p2_y,
| |
− | p3_x, p3_y,
| |
− | p4_x, p4_y,
| |
− | color, alpha, thickness [, num_segments = 0])
| |
− | DrawList:addBezierQuadratic(
| |
− | p1_x, p1_y,
| |
− | p2_x, p2_y,
| |
− | p3_x, p3_y,
| |
− | color, alpha, thickness [, num_segments = 0])
| |
− | DrawList:addImage(texture,
| |
− | x, y,
| |
− | x + w, y + h
| |
− | [, tint_color = 0xffffff, tint_alpha = 1])
| |
− | DrawList:addImageUV(texture,
| |
− | x, y,
| |
− | x + w, y + h,
| |
− | uv0x, uv0y,
| |
− | uv1x, uv1y
| |
− | [, tint_color = 0xffffff, tint_alpha = 1])
| |
− | 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])
| |
− | DrawList:addImageRounded(texture,
| |
− | x, y,
| |
− | x + w,
| |
− | y + h,
| |
− | tint_color, tint_alpha, round_radius
| |
− | [, corner_flags = ImGui.CorenerFlags_All])
| |
− | DrawList:addImageRoundedUV(texture,
| |
− | x, y,
| |
− | x + w, y + h,
| |
− | uv0x, uv0y,
| |
− | uv1x, uv1y,
| |
− | tint_color, tint_alpha, round_radius
| |
− | [, corner_flags = ImGui.CorenerFlags_All])
| |
− | DrawList:pathClear()
| |
− | DrawList:pathLineTo(x, y)
| |
− | DrawList:pathLineToMergeDuplicate(x, y)
| |
− | DrawList:pathFillConvex(color)
| |
− | DrawList:pathStroke(color, alpha, closed [, thickness = 1])
| |
− | DrawList:pathArcTo(center_x, center_y, radius, a_min, a_max [, num_segments = 10])
| |
− | DrawList:pathArcToFast(center_x, center_y, radius, a_min, a_max)
| |
− | DrawList:pathBezierCubicCurveTo(p2x, p2y, p3x, p3y, p4x, p4y [, num_segments = 0])
| |
− | DrawList:pathBezierQuadraticCurveTo(p2x, p2y, p3x, p3y [, num_segments = 0])
| |
− | DrawList:pathRect(min_x, min_y, max_x, max_y [, rounding = 0, ImGui.DrawFlags = 0])
| |
− | -- CUSTOM
| |
− | -- rotate any draw list item around its center point
| |
− | DrawList:rotateBegin()
| |
− | DrawList:rotateEnd(radians)
| |
− | -- example:
| |
− | ...
| |
− | local list = ImGui:getWindowDrawList()
| |
− | list:rotateBegin()
| |
− | list:addLine(100, 100, 100, 250, 0xff0000, 1, 10)
| |
− | list:rotateEnd(math.pi/2.2)
| |
− | ...
| |
− | </syntaxhighlight>
| |
− | | |
− | '''Usage example''':
| |
− | <img src="https://user-images.githubusercontent.com/1312968/99901217-4697fa80-2cb5-11eb-9e80-c469cc69b848.gif">
| |
− | <syntaxhighlight lang="lua">
| |
− | -- reference: https://github.com/ocornut/imgui/issues/3606#issuecomment-731726406
| |
− | require "ImGui"
| |
− | UI = ImGui.new()
| |
− | IO = UI:getIO()
| |
− | local w = 320
| |
− | local h = 180
| |
− | IO:setDisplaySize(w*2,h*2)
| |
− | | |
− | local cos,sin,sqrt=math.cos,math.sin,math.sqrt
| |
− | local HSV2RGB=ImGui.colorConvertHSVtoRGB
| |
− | local RGB2HEX=ImGui.colorConvertRGBtoHEX
| |
− | local p = {-1,-1, 1,-1, 1,1, -1,1}
| |
− | local function conv(z,szx,szy,ox,oy,vx,vy) return ((vx/z)*szx*5+szx*0.5)+ox,((vy/z)*szy*5+szy*0.5)+oy end
| |
− | local function R(vx, vy, ng) ng*=0.1 local cosn = cos(ng) local sinn = sin(ng) return vx*cosn-vy*sinn, vx*sinn+vy*cosn end
| |
− | local function FX(d,ax,ay,bx,by,sw,sh,t)
| |
− | d:addRectFilled(ax,ay,bx,by,0,1,0)
| |
− | t *= 4
| |
− | for i = 0, 19 do
| |
− | local z=21-i-(t-(t//1))*2
| |
− | local ng,ot0,ot1=-t*2.1+z,-t+z*0.2,-t+(z+1)*0.2
| |
− | local s,of,pts={cos((t+z)*0.1)*0.2+1,sin((t+z)*0.1)*0.2+1,cos((t+z+1)*0.1)*0.2+1,sin((t+z+1)*0.1)*0.2+1},{cos(ot0)*0.3,sin(ot0)*0.3,cos(ot1)*0.3,sin(ot1)*0.3},{}
| |
− | for j=0,7 do
| |
− | local i,n = ((j%4)+1)*2,j//4
| |
− | pts[j*2+1],pts[j*2+2]=conv((z+n)*2,sw,sh,ax,ay,R(p[i-1]*s[n*2+1]+of[n*2+1],p[i-0]*s[n*2+2]+of[n*2+2],ng+n))
| |
− | end
| |
− | for j=0,3 do
| |
− | local it=((((i&1) ~= 0) and 0.5 or 0.6)+j*0.05)*((21-z)/21)
| |
− | d:addConvexPolyFilled(
| |
− | {pts[j*2+1],pts[j*2+2],pts[((j+1)%4)*2+1],pts[((j+1)%4)*2+2],pts[(((j+1)%4)+4)*2+1],pts[(((j+1)%4)+4)*2+2],pts[(j+4)*2+1],pts[(j+4)*2+2]},
| |
− | RGB2HEX(HSV2RGB(0.6+sin(t*0.03)*0.5,1,sqrt(it)))
| |
− | )
| |
− | end
| |
− | end
| |
− | end
| |
− | | |
− | function onEnterFrame(e)
| |
− | UI:newFrame(e.deltaTime)
| |
− | if (UI:beginWindow("FX", nil, ImGui.WindowFlags_AlwaysAutoResize)) then
| |
− | UI:invisibleButton("canvas", w, h)
| |
− | local min_x, min_y = UI:getItemRectMin()
| |
− | local max_x, max_y = UI:getItemRectMax()
| |
− | local draw_list = UI:getWindowDrawList()
| |
− | draw_list:pushClipRect(min_x, min_y, max_x, max_y)
| |
− | FX(draw_list,min_x,min_y,max_x,max_y,w,h,UI:getTime())
| |
− | draw_list:popClipRect()
| |
− | end
| |
− | UI:endWindow()
| |
− | UI:render()
| |
− | UI:endFrame()
| |
− | end
| |
− | | |
− | stage:addChild(UI)
| |
− | stage:addEventListener("enterFrame", onEnterFrame)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Classes ===
| |
− | <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
| |
− | '''[[ImGui|ImGui.Core (ImGui)]]'''<br/><!--GIDEROSOBJ:ImGui--> | |
− | '''[[ImGui.DrawList]]'''<br/><!--GIDEROSOBJ:ImGui.DrawList-->
| |
− | '''[[ImGui.Style]]'''<br/><!--GIDEROSOBJ:ImGui.Style-->
| |
− | </div>
| |
| | | |
| {{GIDEROS IMPORTANT LINKS}} | | {{GIDEROS IMPORTANT LINKS}} |