Difference between revisions of "Dear ImGui"
From GiderosMobile
(DONE) |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
Dear ImGui is licensed under the '''MIT License''', see '''https://github.com/ocornut/imgui/blob/master/LICENSE.txt''' for more information. | Dear ImGui is licensed under the '''MIT License''', see '''https://github.com/ocornut/imgui/blob/master/LICENSE.txt''' for more information. | ||
− | To use Dear ImGui in your project you need to add the ImGui plugin and call require like so: | + | To use Dear ImGui in your project you need to add the ImGui plugin and call ''require'' like so: |
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
require "ImGui" | require "ImGui" | ||
Line 37: | Line 37: | ||
==== Widgets ==== | ==== Widgets ==== | ||
− | + | '''Widgets: Color Editor/Picker''' | |
* tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu | * tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu | ||
− | + | '''Widgets: Input with Keyboard''' | |
* If you want to use InputText() with std::string or any custom dynamic string type, see misc/cpp/imgui_stdlib.h and comments in imgui_demo.cpp. | * If you want to use InputText() with std::string or any custom dynamic string type, see misc/cpp/imgui_stdlib.h and comments in imgui_demo.cpp. | ||
* Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc. | * Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc. | ||
− | + | '''Widgets: Regular Sliders''' | |
* CTRL+Click on any slider to turn them into an input box. Manually input values aren't clamped and can go off-bounds. | * CTRL+Click on any slider to turn them into an input box. Manually input values aren't clamped and can go off-bounds. | ||
* Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. | * Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. | ||
Line 51: | Line 51: | ||
If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361 | If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361 | ||
− | + | '''Widgets: Drag Sliders''' | |
* CTRL+Click on any drag box to turn them into an input box. Manually input values aren't clamped and can go off-bounds. | * CTRL+Click on any drag box to turn them into an input box. Manually input values aren't clamped and can go off-bounds. | ||
* For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x | * For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x | ||
Line 71: | Line 71: | ||
</div> | </div> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<!--introduction documentation (c++): https://pixtur.github.io/mkdocs-for-imgui/site/--> | <!--introduction documentation (c++): https://pixtur.github.io/mkdocs-for-imgui/site/--> | ||
<!--Dear ImGui demo (c++): https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html--> | <!--Dear ImGui demo (c++): https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html--> | ||
Line 434: | Line 428: | ||
<!--GIDEROSMTD:ImGui:progressBar(fraction [, anchor_x = -1, anchor_y = 0, overlay_string = nil])--> | <!--GIDEROSMTD:ImGui:progressBar(fraction [, anchor_x = -1, anchor_y = 0, overlay_string = nil])--> | ||
<!--GIDEROSMTD:ImGui:bullet()--> | <!--GIDEROSMTD:ImGui:bullet()--> | ||
− | |||
<!--GIDEROSMTD:ImGui:image(texture, w, h [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) images are streched (ImGui default functions)--> | <!--GIDEROSMTD:ImGui:image(texture, w, h [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) images are streched (ImGui default functions)--> | ||
<!--GIDEROSMTD:ImGui:imageUV(texture, w, h, uv0x, uv0y, uv1x, uv1y [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) images are streched (ImGui default functions)--> | <!--GIDEROSMTD:ImGui:imageUV(texture, w, h, uv0x, uv0y, uv1x, uv1y [, tint_color = 0xffffff, tint_alpha = 1, border_color = 0xffffff, border_alpha = 0]) images are streched (ImGui default functions)--> | ||
Line 564: | Line 557: | ||
<!--GIDEROSMTD:ImGui:endTooltip()--> | <!--GIDEROSMTD:ImGui:endTooltip()--> | ||
<!--GIDEROSMTD:ImGui:setTooltip(text)--> | <!--GIDEROSMTD:ImGui:setTooltip(text)--> | ||
− | + | <!--GIDEROSMTD:ImGui:beginPopup(str_id [, ImGui.WindowFlags = 0]) result? = ImGui:beginPopup(...)--> | |
− | + | <!--GIDEROSMTD:ImGui:beginPopupModal(str_id, p_open [, ImGui.WindowFlags = 0]) p_open, result? = ImGui:beginPopupModal(...)--> | |
− | + | <!--GIDEROSMTD:ImGui:endPopup()--> | |
− | + | <!--GIDEROSMTD:ImGui:openPopup(str_id [, ImGui.PopupFlags = 0])--> | |
− | + | <!--GIDEROSMTD:ImGui:openPopupOnItemClick(str_id [, ImGui.PopupFlags = 0])--> | |
− | + | <!--GIDEROSMTD:ImGui:closeCurrentPopup()--> | |
− | + | <!--GIDEROSMTD:ImGui:beginPopupContextItem(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:beginPopupContextItem(...)--> | |
− | + | <!--GIDEROSMTD:ImGui:beginPopupContextWindow(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:beginPopupContextWindow(...)--> | |
+ | <!--GIDEROSMTD:ImGui:beginPopupContextVoid(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:beginPopupContextVoid(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isPopupOpen(str_id [, ImGui.PopupFlags = 0]) result? = ImGui:isPopupOpen(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:beginTable(str_id, column [, ImGui.TableFlags = 0, outer_w = 0, outer_h = 0, inner_width = 0]) flag = ImGui:beginTable(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:endTable()--> | ||
+ | <!--GIDEROSMTD:ImGui:tableNextRow([ImGui.TableRowFlags = 0, min_row_height = 0])--> | ||
+ | <!--GIDEROSMTD:ImGui:tableNextColumn() flag = ImGui:tableNextColumn()--> | ||
+ | <!--GIDEROSMTD:ImGui:tableSetColumnIndex(column_n) flag = ImGui:tableSetColumnIndex(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:tableSetupColumn(label [, ImGui.TableColumnFlags = 0, init_width_or_weight = 0, user_id = 0])--> | ||
+ | <!--GIDEROSMTD:ImGui:tableSetupScrollFreeze(cols, rows)--> | ||
+ | <!--GIDEROSMTD:ImGui:tableHeadersRow()--> | ||
+ | <!--GIDEROSMTD:ImGui:tableGetSortSpecs() TableSortSpecs = ImGui:tableGetSortSpecs(), see below--> | ||
+ | <!--GIDEROSMTD:ImGui:tableGetColumnCount() number = ImGui:tableGetColumnCount()--> | ||
+ | <!--GIDEROSMTD:ImGui:tableGetColumnIndex() number = ImGui:tableGetColumnIndex()--> | ||
+ | <!--GIDEROSMTD:ImGui:tableGetRowIndex() number = ImGui:tableGetRowIndex()--> | ||
+ | <!--GIDEROSMTD:ImGui:tableGetColumnName([column_n = -1]) string = ImGui:tableGetColumnName(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:tableGetColumnFlags([column_n = -1]) ImGuiTableColumnFlags = ImGui:tableGetColumnFlags(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:tableSetBgColor(ImGui.TableBgTarget, color [, alpha = 1, column_n = -1])--> | ||
+ | <!--GIDEROSMTD:TableSortSpecs:getSpecsCount() number = TableSortSpecs:getSpecsCount(), TableSortSpecs = ImGui:tableGetSortSpecs()--> | ||
+ | <!--GIDEROSMTD:TableSortSpecs:isSpecsDirty() flag = TableSortSpecs:isSpecsDirty(), TableSortSpecs = ImGui:tableGetSortSpecs()--> | ||
+ | <!--GIDEROSMTD:TableSortSpecs:setSpecsDirty(flag) -- TableSortSpecs = ImGui:tableGetSortSpecs()--> | ||
+ | <!--GIDEROSMTD:TableSortSpecs:getColumnSortSpecs() table = TableSortSpecs:getColumnSortSpecs(), TableSortSpecs = ImGui:tableGetSortSpecs(), see below--> | ||
+ | <!--GIDEROSMTD:ImGui:columns([count = 1, id = nil, border = true])--> | ||
+ | <!--GIDEROSMTD:ImGui:nextColumn()--> | ||
+ | <!--GIDEROSMTD:ImGui:getColumnIndex() index = ImGui:getColumnIndex()--> | ||
+ | <!--GIDEROSMTD:ImGui:getColumnWidth([column_index = -1]) width = ImGui:getColumnWidth(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:setColumnWidth(column_index, width)--> | ||
+ | <!--GIDEROSMTD:ImGui:getColumnOffset([column_index = -1]) offset = ImGui:getColumnOffset(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:setColumnOffset(column_index, offset)--> | ||
+ | <!--GIDEROSMTD:ImGui:getColumnsCount() number = ImGui:getColumnsCount()--> | ||
+ | <!--GIDEROSMTD:ImGui:beginTabBar(str_id [, ImGui.TabBarFlags = 0]) bool = ImGui:beginTabBar(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:endTabBar()--> | ||
+ | <!--GIDEROSMTD:ImGui:beginTabItem(label, p_open [, ImGui.TabItemFlags = 0]) p_open, bool = ImGui:beginTabItem(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:endTabItem()--> | ||
+ | <!--GIDEROSMTD:ImGui:setTabItemClosed(tab_or_docked_window_label)--> | ||
+ | <!--GIDEROSMTD:ImGui:tabItemButton(label [, ImGui.TabItemFlags = 0])--> | ||
+ | <!--GIDEROSMTD:ImGui:logToTTY(auto_open_depth = -1) --> | ||
+ | <!--GIDEROSMTD:ImGui:logToFile(auto_open_depth = -1, filename = nil) --> | ||
+ | <!--GIDEROSMTD:ImGui:logToClipboard(auto_open_depth = -1) --> | ||
+ | <!--GIDEROSMTD:ImGui:logFinish() --> | ||
+ | <!--GIDEROSMTD:ImGui:logButtons() --> | ||
+ | <!--GIDEROSMTD:ImGui:logText(text) --> | ||
+ | <!--GIDEROSMTD:ImGui:beginDragDropSource([ImGui.DragDropFlags flags = 0]) flag = ImGui:beginDragDropSource(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:setNumDragDropPayload(str_type, number [, ImGui.Cond cond = 0]) flag = ImGui:setNumDragDropPayload(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:setStrDragDropPayload(str_type, string [, ImGui.Cond cond = 0]) flag = ImGui:setStrDragDropPayload(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:endDragDropSource()--> | ||
+ | <!--GIDEROSMTD:ImGui:beginDragDropTarget() flag = ImGui:beginDragDropTarget()--> | ||
+ | <!--GIDEROSMTD:ImGui:acceptDragDropPayload(type [, ImGui.DragDropFlags flags = 0]) ImGuiPayload = ImGui:acceptDragDropPayload(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:endDragDropTarget()--> | ||
+ | <!--GIDEROSMTD:ImGui:getDragDropPayload() ImGuiPayload = ImGui:getDragDropPayload()--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:getNumData() number = ImGuiPayload:getNumData()--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:getStrData() string = ImGuiPayload:getStrData()--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:clear()--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:getDataSize() number = ImGuiPayload:getDataSize()--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:isDataType(type) flag = ImGuiPayload:isDataType(...), type must be the same as in "ImGui:acceptDragDropPayload(type)"--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:isPreview() flag = ImGuiPayload:isPreview()--> | ||
+ | <!--GIDEROSMTD:ImGuiPayload:isDelivery() flag = ImGuiPayload:isDelivery()--> | ||
+ | <!--GIDEROSMTD:ImGui:pushClipRect(min_x, min_y, max_x, max_y, intersect_with_current_clip_rect)--> | ||
+ | <!--GIDEROSMTD:ImGui:popClipRect()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper.new() instance = ImGuiListClipper.new()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:beginClip(number_of_items [, item_height = -1]) if item_height <= 0 then it is calculated automatically--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:endClip()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:step() bool = ImGuiListClipper:step()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:getDisplayStart() number = ImGuiListClipper:getDisplayStart()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:getDisplayEnd() number = ImGuiListClipper:getDisplayEnd()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:getStartPosY() number = ImGuiListClipper:getStartPosY()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:getItemsCount() number = ImGuiListClipper:getItemsCount()--> | ||
+ | <!--GIDEROSMTD:ImGuiListClipper:forceDisplayRangeByIndices(number_min, number_max)--> | ||
+ | <!--GIDEROSMTD:ImGuiTextFilter.new() filter = ImGuiTextFilter.new()--> | ||
+ | <!--GIDEROSMTD:filter:draw(label [, width = 0]) isValueChanged = filter:draw(...), draws the input field--> | ||
+ | <!--GIDEROSMTD:filter:drawWithHint(label, hint [, width = 0]) isValueChanged = filter:drawWithHint(...), draws the input field (using ImGui:inutTextWithHint())--> | ||
+ | <!--GIDEROSMTD:filter:setBuffer(text) set filter text--> | ||
+ | <!--GIDEROSMTD:filter:build() update filter internals--> | ||
+ | <!--GIDEROSMTD:filter:passFilter(text) bool = filter:passFilter(...), returns true if filter input matches with "text"--> | ||
+ | <!--GIDEROSMTD:ImGui:setItemDefaultFocus()--> | ||
+ | <!--GIDEROSMTD:ImGui:setKeyboardFocusHere([offset = 0])--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemHovered([ImGui.HoveredFlags = 0]) flag = ImGui:isItemHovered(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemActive() flag = ImGui:isItemActive()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemFocused() flag = ImGui:isItemFocused()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemClicked(mouse_button) flag = ImGui:isItemClicked(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemVisible() flag = ImGui:isItemVisible()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemEdited() flag = ImGui:isItemEdited()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemActivated() flag = ImGui:isItemActivated()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemDeactivated() flag = ImGui:isItemDeactivated()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemDeactivatedAfterEdit() flag = ImGui:isItemDeactivatedAfterEdit()--> | ||
+ | <!--GIDEROSMTD:ImGui:isItemToggledOpen() flag = ImGui:isItemToggledOpen()--> | ||
+ | <!--GIDEROSMTD:ImGui:isAnyItemHovered() flag = ImGui:isAnyItemHovered()--> | ||
+ | <!--GIDEROSMTD:ImGui:isAnyItemActive() flag = ImGui:isAnyItemActive()--> | ||
+ | <!--GIDEROSMTD:ImGui:isAnyItemFocused() flag = ImGui:isAnyItemFocused()--> | ||
+ | <!--GIDEROSMTD:ImGui:getItemRect() minX, minY, maxX, maxY = ImGui:getItemRect()--> | ||
+ | <!--GIDEROSMTD:ImGui:getItemRectMin() x, y = ImGui:getItemRectMin()--> | ||
+ | <!--GIDEROSMTD:ImGui:getItemRectMax() x, y = ImGui:getItemRectMax()--> | ||
+ | <!--GIDEROSMTD:ImGui:getItemRectSize() w, h = ImGui:getItemRectSize()--> | ||
+ | <!--GIDEROSMTD:ImGui:setItemAllowOverlap()--> | ||
+ | <!--GIDEROSMTD:ImGui:isRectVisible(w, h [, max_x, max_y]) flag = ImGui:isRectVisible(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:getTime() number = ImGui:getTime()--> | ||
+ | <!--GIDEROSMTD:ImGui:getFrameCount() number = ImGui:getFrameCount()--> | ||
+ | <!--GIDEROSMTD:ImGui:getStyleColorName(idx) str = ImGui:getStyleColorName(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:beginChildFrame(id, w, h [, ImGui.WindowFlags = 0]) flag = ImGui:beginChildFrame(...), id (number)--> | ||
+ | <!--GIDEROSMTD:ImGui:endChildFrame()--> | ||
+ | <!--GIDEROSMTD:ImGui:calcTextSize(text [, hide_text_after_double_hash = false, wrap_width = -1]) w, h = ImGui:calcTextSize(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:getKeyName(keyCode) string = ImGui:getKeyName(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isKeyDown(keyCode) flag = ImGui:isKeyDown(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isKeyPressed(keyCode [, repeat = true]) flag = ImGui:isKeyPressed(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isKeyReleased(keyCode) flag = ImGui:isKeyReleased(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:getKeyPressedAmount(keyCode, repeat_delay, rate) number = ImGui:getKeyPressedAmount(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:setNextFrameWantCaptureKeyboard([want_capture_keyboard_value = true])--> | ||
+ | <!--GIDEROSMTD:ImGui:shortcut(keyChord [, owner_id = 0, ImGui.InputFlags = 0]) keyChord: an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values (ImGuiKey | ImGuiMod_XXX))--> | ||
+ | <!--GIDEROSMTD:ImGui:setShortcutRouting(keyChord [, owner_id = 0, ImGui.InputFlags = 0]) keyChord: an ImGuiKey optionally OR-ed with one or more ImGuiMod_XXX values (ImGuiKey | ImGuiMod_XXX)), useful to disable CTRL + TAB combo: ImGui:setShortcutRouting(ImGui.Mod_Ctrl | ImGui.Key_Tab, ImGui.KeyOwner_None)--> | ||
+ | <!--GIDEROSMTD:ImGui:setItemKeyOwner(keyCode [, ImGui.InputFlags = 0])--> | ||
+ | <!--GIDEROSMTD:ImGui:setKeyOwner(keyCode, owner_id, [, ImGui.InputFlags = 0])--> | ||
+ | <!--GIDEROSMTD:ImGui:isMouseDown(mouse_button) flag = ImGui:isMouseDown(mouse_button), "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:isMouseClicked(mouse_button [, repeat = false]) flag = ImGui:isMouseClicked(...), "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:isMouseReleased(mouse_button) flag = ImGui:isMouseReleased(...), "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:isMouseDoubleClicked(mouse_button) flag = ImGui:isMouseDoubleClicked(mouse_button), "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:isMouseHoveringRect(min_x, min_y, max_x, max_y [, clip = true]) flag = ImGui:isMouseHoveringRect(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isMousePosValid([x = inf, y = inf]) flag = ImGui:isMousePosValid(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:isAnyMouseDown() flag = ImGui:isAnyMouseDown()--> | ||
+ | <!--GIDEROSMTD:ImGui:getMousePos() x, y = ImGui:getMousePos()--> | ||
+ | <!--GIDEROSMTD:ImGui:getMousePosOnOpeningCurrentPopup() x, y = ImGui:getMousePosOnOpeningCurrentPopup()--> | ||
+ | <!--GIDEROSMTD:ImGui:isMouseDragging(mouse_button [, lock_threshold = -1]) flag = ImGui:isMouseDragging(...), "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:getMouseDragDelta(mouse_button [, lock_threshold = -1]) x, y = ImGui:getMouseDragDelta(...), "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:resetMouseDragDelta(mouse_button) "mouse_button" is any gideros mouse button code--> | ||
+ | <!--GIDEROSMTD:ImGui:getMouseCursor() ImGuiMouseCursor = ImGui:getMouseCursor()--> | ||
+ | <!--GIDEROSMTD:ImGui:setMouseCursor(ImGui.MouseCursor)--> | ||
+ | <!--GIDEROSMTD:ImGui:setNextFrameWantCaptureMouse([want_capture_mouse_value = true])--> | ||
+ | <!--GIDEROSMTD:ImGui:setNextFrameWantCaptureKeyboard([want_capture_keyboard_value = true])--> | ||
+ | <!--GIDEROSMTD:ImGui:updateCursor()--> | ||
+ | <!--GIDEROSMTD:ImGui:newFrame(deltaTime)--> | ||
+ | <!--GIDEROSMTD:ImGui:render()--> | ||
+ | <!--GIDEROSMTD:ImGui:endFrame()--> | ||
+ | <!--GIDEROSMTD:ImGui:showUserGuide() is_openFlag = ImGui:showUserGuide()--> | ||
+ | <!--GIDEROSMTD:ImGui:showDemoWindow([p_open]) is_openFlag = ImGui:showDemoWindow(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:showAboutWindow([p_open]) is_openFlag = ImGui:showAboutWindow(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:showStyleEditor() is_openFlag = ImGui:showStyleEditor()--> | ||
+ | <!--GIDEROSMTD:ImGui:showFontSelector() is_openFlag = ImGui:showFontSelector()--> | ||
+ | <!--GIDEROSMTD:ImGui:showMetricsWindow([p_open]) is_openFlag = ImGui:showMetricsWindow(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:showStyleSelector(label) is_openFlag = ImGui:showStyleSelector(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:ShowStackToolWindow([p_open]) is_openFlag = ImGui:ShowStackToolWindow(...)--> | ||
+ | <!--GIDEROSMTD:ImGui:showLuaStyleEditor()--> | ||
+ | <!--GIDEROSMTD:ImGuiTextEditor.new([other_text_editor]) TextEditor = ImGuiTextEditor.new([other_text_editor]), otherTextEditor: another "ImGuiTextEditor" instance to copy setting--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageCPP() LanguageDefinition = TextEditor:getLanguageCPP()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageGLSL() LanguageDefinition = TextEditor:getLanguageGLSL()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageHLSL() LanguageDefinition = TextEditor:getLanguageHLSL()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageC() LanguageDefinition = TextEditor:getLanguageC()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageSQL() LanguageDefinition = TextEditor:getLanguageSQL()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageAngelScript() LanguageDefinition = TextEditor:getLanguageAngelScript()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageLua() LanguageDefinition = TextEditor:getLanguageLua()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setLanguageDefinition(LanguageDefinition)--> | ||
+ | <!--GIDEROSMTD:TextEditor:getLanguageDefinition() LanguageDefinition = TextEditor:getLanguageDefinition()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getPaletteDark() Palette = TextEditor:getPaletteDark()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getPaletteLight() Palette = TextEditor:getPaletteLight()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getPaletteRetro() Palette = TextEditor:getPaletteRetro()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setPalette(Palette)--> | ||
+ | <!--GIDEROSMTD:TextEditor:getPalette() Palette = TextEditor:getPalette()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setPaletteColor(TE_ColorIndex, color [, alpha = 1]) see TextEditor enums--> | ||
+ | <!--GIDEROSMTD:TextEditor:getPaletteColor(TE_ColorIndex) color, alpha = TextEditor:getPaletteColor(TE_ColorIndex)--> | ||
+ | <!--GIDEROSMTD:TextEditor:loadPalette(table) 42 elements table--> | ||
+ | <!--GIDEROSMTD:TextEditor:setErrorMarkers(error_markers)--> | ||
+ | <!--GIDEROSMTD:TextEditor:setBreakpoints(breakpoints)--> | ||
+ | <!--GIDEROSMTD:TextEditor:render(string_id [, w = 0, h = 0, border = 0])--> | ||
+ | <!--GIDEROSMTD:TextEditor:setText(string)--> | ||
+ | <!--GIDEROSMTD:TextEditor:getText()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setTextLines(table) set editor text using table. Structure: {"line 1", "line 2", "line 3", ...}--> | ||
+ | <!--GIDEROSMTD:TextEditor:getTextLines() table = TextEditor:getTextLines()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getSelectedText() string = TextEditor:getSelectedText()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getCurrentLineText() string = TextEditor:getCurrentLineText()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getTotalLines() number = TextEditor:getTotalLines()--> | ||
+ | <!--GIDEROSMTD:TextEditor:isOverwrite() bool = TextEditor:isOverwrite()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setReadOnly() bool = TextEditor:setReadOnly()--> | ||
+ | <!--GIDEROSMTD:TextEditor:isReadOnly() bool = TextEditor:isReadOnly()--> | ||
+ | <!--GIDEROSMTD:TextEditor:isTextChanged() bool = TextEditor:isTextChanged()--> | ||
+ | <!--GIDEROSMTD:TextEditor:isCursorPositionChanged() bool = TextEditor:isCursorPositionChanged()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setColorizerEnable()--> | ||
+ | <!--GIDEROSMTD:TextEditor:isColorizerEnabled() bool = TextEditor:isColorizerEnabled()--> | ||
+ | <!--GIDEROSMTD:TextEditor:getCursorPosition() line, column = TextEditor:getCursorPosition(), 0 based line & column number --> | ||
+ | <!--GIDEROSMTD:TextEditor:setCursorPosition(line, column)--> | ||
+ | <!--GIDEROSMTD:TextEditor:setHandleMouseInputs(bool)--> | ||
+ | <!--GIDEROSMTD:TextEditor:isHandleMouseInputsEnabled() bool = TextEditor:isHandleMouseInputsEnabled()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setHandleKeyboardInputs(bool)--> | ||
+ | <!--GIDEROSMTD:TextEditor:isHandleKeyboardInputsEnabled() bool = TextEditor:isHandleKeyboardInputsEnabled()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setTextEditorChildIgnored(bool)--> | ||
+ | <!--GIDEROSMTD:TextEditor:isTextEditorChildIgnored() bool = TextEditor:isTextEditorChildIgnored()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setShowWhitespaces(bool)--> | ||
+ | <!--GIDEROSMTD:TextEditor:isShowingWhitespaces() bool = TextEditor:isShowingWhitespaces()--> | ||
+ | <!--GIDEROSMTD:TextEditor:setTabSize(size)--> | ||
+ | <!--GIDEROSMTD:TextEditor:getTabSize() size = TextEditor:getTabSize()--> | ||
+ | <!--GIDEROSMTD:TextEditor:insertText(string)--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveUp([amount = 1, select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveDown([amount = 1, select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveLeft([amount = 1, select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveRight([amount = 1, select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveTop([select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveBottom([select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveHome([select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:moveEnd([select = false])--> | ||
+ | <!--GIDEROSMTD:TextEditor:setSelectionStart(line, column)--> | ||
+ | <!--GIDEROSMTD:TextEditor:setSelectionEnd(line, column)--> | ||
+ | <!--GIDEROSMTD:TextEditor:setSelection(start_line, start_column, end_line, end_column)--> | ||
+ | <!--GIDEROSMTD:TextEditor:selectWordUnderCursor()--> | ||
+ | <!--GIDEROSMTD:TextEditor:selectAll()--> | ||
+ | <!--GIDEROSMTD:TextEditor:hasSelection() bool = TextEditor:hasSelection()--> | ||
+ | <!--GIDEROSMTD:TextEditor:copy()--> | ||
+ | <!--GIDEROSMTD:TextEditor:cut()--> | ||
+ | <!--GIDEROSMTD:TextEditor:paste()--> | ||
+ | <!--GIDEROSMTD:TextEditor:delete()--> | ||
+ | <!--GIDEROSMTD:TextEditor:canUndo() bool = TextEditor:canUndo()--> | ||
+ | <!--GIDEROSMTD:TextEditor:canRedo() bool = TextEditor:canRedo()--> | ||
+ | <!--GIDEROSMTD:TextEditor:undo()--> | ||
+ | <!--GIDEROSMTD:TextEditor:redo()--> | ||
+ | <!--GIDEROSMTD:LanguageDefinition:getName() string = LanguageDefinition:getName()--> | ||
+ | <!--GIDEROSMTD:ImGuiErrorMarkers.new() ErrorMarkers = ImGuiErrorMarkers.new()--> | ||
+ | <!--GIDEROSMTD:ErrorMarkers:add(line, message)--> | ||
+ | <!--GIDEROSMTD:ErrorMarkers:remove(line)--> | ||
+ | <!--GIDEROSMTD:ErrorMarkers:get(line) message = ErrorMarkers:get(line)--> | ||
+ | <!--GIDEROSMTD:ErrorMarkers:getSize() number = ErrorMarkers:getSize()--> | ||
+ | <!--GIDEROSMTD:ImGuiBreakpoints.new() Breakpoints = ImGuiBreakpoints.new()--> | ||
+ | <!--GIDEROSMTD:Breakpoints:add(line)--> | ||
+ | <!--GIDEROSMTD:Breakpoints:remove(line)--> | ||
+ | <!--GIDEROSMTD:Breakpoints:get(line) bool = Breakpoints:get(line)--> | ||
+ | <!--GIDEROSMTD:Breakpoints:getSize() number = Breakpoints:getSize()--> | ||
+ | <!--GIDEROSMTD:ImGui:getWindowDrawList() local list = ImGui:getWindowDrawList()--> | ||
+ | <!--GIDEROSMTD:ImGui:getBackgroundDrawList() local list = ImGui:getBackgroundDrawList()--> | ||
+ | <!--GIDEROSMTD:ImGui:getForegroundDrawList() local list = ImGui:getForegroundDrawList()--> | ||
+ | <!--GIDEROSMTD:DrawList:pushClipRect(clip_rect_min_x, clip_rect_min_y, clip_rect_max_x, clip_rect_max_y [, intersect_with_current_clip_rect = false])--> | ||
+ | <!--GIDEROSMTD:DrawList:pushClipRectFullScreen()--> | ||
+ | <!--GIDEROSMTD:DrawList:popClipRect()--> | ||
+ | <!--GIDEROSMTD:DrawList:pushTextureID(texture)--> | ||
+ | <!--GIDEROSMTD:DrawList:popTextureID()--> | ||
+ | <!--GIDEROSMTD:DrawList:getClipRectMin() x, y = DrawList:getClipRectMin()--> | ||
+ | <!--GIDEROSMTD:DrawList:getClipRectMax() x, y = DrawList:getClipRectMax()--> | ||
+ | <!--GIDEROSMTD:DrawList:addLine(p1_x, p1_y, p2_x, p2_y, color [, alpha = 1, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addRect(p_min_x, p_min_y, p_max_x, p_max_y, color [, alpha = 1, rounding = 0, rounding_corners = ImGui.DrawFlags_RoundCornersAll, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addRectFilled(p_min_x, p_min_y, p_max_x, p_max_y, color [, alpha = 1, rounding = 0, rounding_corners = ImGui.DrawFlags_RoundCornersAll])--> | ||
+ | <!--GIDEROSMTD:DrawList:addRectFilledMultiColor(p_min_x, p_min_y, p_max_x, p_max_y, color_upr_left, color_upr_right, color_bot_right, color_bot_left)--> | ||
+ | <!--GIDEROSMTD:DrawList:addQuad(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color [, alpha = 1, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addQuadFilled(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color)--> | ||
+ | <!--GIDEROSMTD:DrawList:addTriangle(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color [, alpha = 1, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addTriangleFilled(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color)--> | ||
+ | <!--GIDEROSMTD:DrawList:addCircle(center_x, center_y, radius, color [, alpha = 1, num_segments = 12, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addCircleFilled(center_x, center_y, radius, color [, alpha = 1, num_segments = 12])--> | ||
+ | <!--GIDEROSMTD:DrawList:addNgon(center_x, center_y, radius, color [, alpha = 1, num_segments = 12, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addNgonFilled(center_x, center_y, radius, color [, alpha = 1, num_segments = 12])--> | ||
+ | <!--GIDEROSMTD:DrawList:addText(x, y, color, alpha, text) -- x, y (number), text_begin (string), text_end (string)--> | ||
+ | <!--GIDEROSMTD:DrawList:addFontText(font, font_size, pos_x, pos_y, color, alpha, text [, wrap_with = 0, cpu_fine_clip_rect_x, cpu_fine_clip_rect_y, cpu_fine_clip_rect_w, cpu_fine_clip_rect_h])--> | ||
+ | <!--GIDEROSMTD:DrawList:addPolyline(points_table, color, alpha, closed, thickness) points_table (table), color (number), closed (bool), thickness (number)--> | ||
+ | <!--GIDEROSMTD:DrawList:addConvexPolyFilled(points_table, color) points_table (table), color (number)--> | ||
+ | <!--GIDEROSMTD:DrawList:addBezierCubic(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, p4_x, p4_y, color, alpha, thickness [, num_segments = 0])--> | ||
+ | <!--GIDEROSMTD:DrawList:addBezierQuadratic(p1_x, p1_y, p2_x, p2_y, p3_x, p3_y, color, alpha, thickness [, num_segments = 0])--> | ||
+ | <!--GIDEROSMTD:DrawList:addImage(texture, x, y, x + w, y + h [, tint_color = 0xffffff, tint_alpha = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addImageUV(texture, x, y, x + w, y + h, uv0x, uv0y, uv1x, uv1y [, tint_color = 0xffffff, tint_alpha = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addImageQuad(texture, x, y, x + w, y, x + w, y + h, x, y + h [, tint_color = 0xffffff, tint_alpha = 1, uv0x = 0, uv0y = 0, uv1x = 1, uv1y = 0, uv2x = 1, uv2y = 1, uv3x = 0, uv3y = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:addImageRounded(texture, x, y, x + w, y + h, tint_color, tint_alpha, round_radius [, corner_flags = ImGui.CorenerFlags_All])--> | ||
+ | <!--GIDEROSMTD:DrawList:addImageRoundedUV(texture, x, y, x + w, y + h, uv0x, uv0y, uv1x, uv1y, tint_color, tint_alpha, round_radius [, corner_flags = ImGui.CorenerFlags_All])--> | ||
+ | <!--GIDEROSMTD:DrawList:pathClear()--> | ||
+ | <!--GIDEROSMTD:DrawList:pathLineTo(x, y)--> | ||
+ | <!--GIDEROSMTD:DrawList:pathLineToMergeDuplicate(x, y)--> | ||
+ | <!--GIDEROSMTD:DrawList:pathFillConvex(color)--> | ||
+ | <!--GIDEROSMTD:DrawList:pathStroke(color, alpha, closed [, thickness = 1])--> | ||
+ | <!--GIDEROSMTD:DrawList:pathArcTo(center_x, center_y, radius, a_min, a_max [, num_segments = 10])--> | ||
+ | <!--GIDEROSMTD:DrawList:pathArcToFast(center_x, center_y, radius, a_min, a_max)--> | ||
+ | <!--GIDEROSMTD:DrawList:pathBezierCubicCurveTo(p2x, p2y, p3x, p3y, p4x, p4y [, num_segments = 0])--> | ||
+ | <!--GIDEROSMTD:DrawList:pathBezierQuadraticCurveTo(p2x, p2y, p3x, p3y [, num_segments = 0])--> | ||
+ | <!--GIDEROSMTD:DrawList:pathRect(min_x, min_y, max_x, max_y [, rounding = 0, ImGui.DrawFlags = 0])--> | ||
+ | <!--GIDEROSMTD:DrawList:rotateBegin() rotate any draw list item around its center point--> | ||
+ | <!--GIDEROSMTD:DrawList:rotateEnd(radians)--> | ||
<!--=== Events ===--> | <!--=== Events ===--> | ||
<!--GIDEROSEVT:ImGui.KeyChar--> | <!--GIDEROSEVT:ImGui.KeyChar--> |
Latest revision as of 01:46, 11 October 2024
Supported platforms:
Available since: Gideros 2020.9
Description
This is an implementation of the Dear ImGui library: https://github.com/ocornut/imgui.
Dear ImGui is licensed under the MIT License, see https://github.com/ocornut/imgui/blob/master/LICENSE.txt for more information.
To use Dear ImGui in your project you need to add the ImGui plugin and call require like so:
require "ImGui"
Current Gideros Dear ImGui version: 1.89.6.
User Guide
- Double-click on title bar to collapse window
- Click and drag on lower corner to resize window (double-click to auto fit window to its contents)
- CTRL+Click on a slider or drag box to input value as text
- TAB/SHIFT+TAB to cycle through keyboard editable fields
- CTRL+Tab to select a window
- CTRL+Mouse Wheel to zoom window contents if io.FontAllowUserScaling is enabled
- While inputing text:
- CTRL+Left/Right to word jump
- CTRL+A or double-click to select all
- CTRL+X/C/V to use clipboard cut/copy/paste
- CTRL+Z,CTRL+Y to undo/redo
- ESCAPE to revert
- With keyboard navigation enabled:
- Arrow keys to navigate
- Space to activate a widget
- Return to input text into a widget
- Escape to deactivate a widget, close popup, exit child window
- Alt to jump to the menu layer of a window
Widgets
Widgets: Color Editor/Picker
* tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu
Widgets: Input with Keyboard
* If you want to use InputText() with std::string or any custom dynamic string type, see misc/cpp/imgui_stdlib.h and comments in imgui_demo.cpp. * Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc.
Widgets: Regular Sliders
* CTRL+Click on any slider to turn them into an input box. Manually input values aren't clamped and can go off-bounds. * Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. * Format string may also be set to NULL or use the default format ("%f" or "%d"). If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361
Widgets: Drag Sliders
* CTRL+Click on any drag box to turn them into an input box. Manually input values aren't clamped and can go off-bounds. * For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x * Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc. * Format string may also be set to NULL or use the default format ("%f" or "%d"). * Speed are per-pixel of mouse movement (v_speed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(v_speed, minimum_step_at_given_precision). * Use v_min < v_max to clamp edits to given limits. Note that CTRL+Click manual input can override those limits. * Use v_max = FLT_MAX / INT_MAX etc to avoid clamping to a maximum, same with v_min = -FLT_MAX / INT_MIN to avoid clamping to a minimum. * We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them.
Gideros Dear ImGui Documentation