===== Gui Namespace =====
The gui namespace contains functions that interact with the ImGui interface of Ashita. This allows addons to create rich user interfaces.
You can access these functions via:
ashita.gui.
Because of the nature of these functions and the amount of functions that exist, I do not plan to create full documentation for each function. You can find an example of the ImGui demo application ported to an Ashita addon here instead.
This will serve as a demo of how to use these functions:\\
https://gist.github.com/atom0s/188283e6ff097f37fa31400f22ec8762
It is important that when making use of the GUI functions, that your addon includes the script: 'imguidef'.\\
You can do this by adding the following line of code to the top of your addon:\\
require 'imguidef'
By including this helper file, this also exposes these GUI functions via a global 'imgui'. Instead of having to use 'ashita.gui.' before every call, instead you just need to use 'imgui.' instead. For example:\\
-- before
local hide = ashita.gui.GetHide();
-- after
local hide = imgui.GetHide();
----
Most of the calls are straight-forward and used as they are in C++. However, some of them had to have minor changes to work with Lua's types and lack of pointers. The following is a list of how things are implemented.
Please note, the following changes apply to ALL functions listed below:
\\
\\
* Any function that takes ImVec2(...) is replaced by two float values instead.
* Any function that takes ImVec4(...) is replaced by four float values instead.
* //**Example (Before):** void SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0);//
* //**Example (After):** void SetNextWindowPos(float pos_x, float pos_y, ImGuiSetCond cond = 0);//
* Any function that returns ImVec2(...) instead returns two values.
* Any function that returns ImVec4(...) instead returns four values.
* //**Example (Before):** ImVec2 GetWindowPos(void);//
* //**Example (After):** pos_x, pos_y = GetWindowPos();//
* Any function that takes a pointer value is replaced with an ImGuiVar variable instead. (See more info on ImGuiVar below.)
* Any function that accepts varargs '...' are not handled as such. Instead they accept only a single string. Use Lua's buildt-in string.format function to format strings.
* Any function that accepts va_list as an argument type is not implemented as Lua has no way to do this natively.
----
* bool GetHideObjects(void) const;\\
* void SetHideObjects(bool bHide);\\
* Implemented as 'imgui.GetHide()' and 'imgui.SetHide(hide)'.
* ImGuiIO& GetIO(void);\\
* ImGuiStyle& GetStyle(void);\\
* ImDrawData* GetDrawData(void);\\
* Not implemented through these functions.
* GetIO can be accessed via 'imgui.io'.
* GetStyle can be accessed via 'imgui.style'.
* GetDrawData is not implemented at all currently.
* void ShowUserGuide(void);\\
* void ShowStyleEditor(ImGuiStyle* ref = NULL);\\
* void ShowTestWindow(bool* p_open = NULL);\\
* void ShowMetricsWindow(bool* p_open = NULL);\\
* bool Begin(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0);\\
* bool Begin(const char* name, bool* p_open, const ImVec2& size_on_first_use, float bg_alpha = -1.0f, ImGuiWindowFlags flags = 0);\\
* void End(void);\\
* bool BeginChild(const char* str_id, const ImVec2& size = ImVec2(0, 0), bool border = false, ImGuiWindowFlags extra_flags = 0);\\
* bool BeginChild(ImGuiID id, const ImVec2& size = ImVec2(0, 0), bool border = false, ImGuiWindowFlags extra_flags = 0);\\
* void EndChild(void);\\
* ImVec2 GetContentRegionMax(void);\\
* ImVec2 GetContentRegionAvail(void);\\
* float GetContentRegionAvailWidth(void);\\
* ImVec2 GetWindowContentRegionMin(void);\\
* ImVec2 GetWindowContentRegionMax(void);\\
* float GetWindowContentRegionWidth(void);\\
* ImDrawList* GetWindowDrawList(void);\\
* ImVec2 GetWindowPos(void);\\
* ImVec2 GetWindowSize(void);\\
* float GetWindowWidth(void);\\
* float GetWindowHeight(void);\\
* bool IsWindowCollapsed(void);\\
* void SetWindowFontScale(float scale);\\
* void SetNextWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0);\\
* void SetNextWindowPosCenter(ImGuiSetCond cond = 0);\\
* void SetNextWindowSize(const ImVec2& size, ImGuiSetCond cond = 0);\\
* void SetNextWindowSizeConstraints(const ImVec2& size_min, const ImVec2& size_max, ImGuiSizeConstraintCallback custom_callback = NULL, void* custom_callback_data = NULL);\\
* callback is implemented as a string. It is the name to a Lua function to call when the callback is invoked. (custom_callback_data is not implemented.)
* void SetNextWindowContentSize(const ImVec2& size);\\
* void SetNextWindowContentWidth(float width);\\
* void SetNextWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0);\\
* void SetNextWindowFocus(void);\\
* void SetWindowPos(const ImVec2& pos, ImGuiSetCond cond = 0);\\
* void SetWindowSize(const ImVec2& size, ImGuiSetCond cond = 0);\\
* void SetWindowCollapsed(bool collapsed, ImGuiSetCond cond = 0);\\
* void SetWindowFocus(void);\\
* void SetWindowPos(const char* name, const ImVec2& pos, ImGuiSetCond cond = 0);\\
* void SetWindowSize(const char* name, const ImVec2& size, ImGuiSetCond cond = 0);\\
* void SetWindowCollapsed(const char* name, bool collapsed, ImGuiSetCond cond = 0);\\
* void SetWindowFocus(const char* name);\\
* float GetScrollX(void);\\
* float GetScrollY(void);\\
* float GetScrollMaxX(void);\\
* float GetScrollMaxY(void);\\
* void SetScrollX(float scroll_x);\\
* void SetScrollY(float scroll_y);\\
* void SetScrollHere(float center_y_ratio = 0.5f);\\
* void SetScrollFromPosY(float pos_y, float center_y_ratio = 0.5f);\\
* void SetKeyboardFocusHere(int offset = 0);\\
* void SetStateStorage(ImGuiStorage* tree);\\
* ImGuiStorage* GetStateStorage(void);\\
* void PushFont(ImFont* font);\\
* void PopFont(void);\\
* void PushStyleColor(ImGuiCol idx, const ImVec4& col);\\
* void PopStyleColor(int count = 1);\\
* void PushStyleVar(ImGuiStyleVar idx, float val);\\
* void PushStyleVar(ImGuiStyleVar idx, const ImVec2& val);\\
* void PopStyleVar(int count = 1);\\
* ImFont* GetFont(void);\\
* float GetFontSize(void);\\
* ImVec2 GetFontTexUvWhitePixel(void);\\
* ImU32 GetColorU32(ImGuiCol idx, float alpha_mul = 1.0f);\\
* ImU32 GetColorU32(const ImVec4& col);\\
* void PushItemWidth(float item_width);\\
* void PopItemWidth(void);\\
* float CalcItemWidth(void);\\
* void PushTextWrapPos(float wrap_pos_x = 0.0f);\\
* void PopTextWrapPos(void);\\
* void PushAllowKeyboardFocus(bool v);\\
* void PopAllowKeyboardFocus(void);\\
* void PushButtonRepeat(bool repeat);\\
* void PopButtonRepeat(void);\\
* void Separator(void);\\
* void SameLine(float pos_x = 0.0f, float spacing_w = -1.0f);\\
* void NewLine(void);\\
* void Spacing(void);\\
* void Dummy(const ImVec2& size);\\
* void Indent(float indent_w = 0.0f);\\
* void Unindent(float indent_w = 0.0f);\\
* void BeginGroup(void);\\
* void EndGroup(void);\\
* ImVec2 GetCursorPos(void);\\
* float GetCursorPosX(void);\\
* float GetCursorPosY(void);\\
* void SetCursorPos(const ImVec2& local_pos);\\
* void SetCursorPosX(float x);\\
* void SetCursorPosY(float y);\\
* ImVec2 GetCursorStartPos(void);\\
* ImVec2 GetCursorScreenPos(void);\\
* void SetCursorScreenPos(const ImVec2& pos);\\
* void AlignFirstTextHeightToWidgets(void);\\
* float GetTextLineHeight(void);\\
* float GetTextLineHeightWithSpacing(void);\\
* float GetItemsLineHeightWithSpacing(void);\\
* void Columns(int count = 1, const char* id = NULL, bool border = true);\\
* void NextColumn(void);\\
* int GetColumnIndex(void);\\
* float GetColumnOffset(int column_index = -1);\\
* void SetColumnOffset(int column_index, float offset_x);\\
* float GetColumnWidth(int column_index = -1);\\
* int GetColumnsCount(void);\\
* void PushID(const char* str_id);\\
* void PushID(const char* str_id_begin, const char* str_id_end);\\
* void PushID(const void* ptr_id);\\
* void PushID(int int_id);\\
* void PopID(void);\\
* ImGuiID GetID(const char* str_id);\\
* ImGuiID GetID(const char* str_id_begin, const char* str_id_end);\\
* ImGuiID GetID(const void* ptr_id);\\
* void Text(const char* fmt, ...);\\
* void TextV(const char* fmt, va_list args);\\
* void TextColored(const ImVec4& col, const char* fmt, ...);\\
* void TextColoredV(const ImVec4& col, const char* fmt, va_list args);\\
* void TextDisabled(const char* fmt, ...);\\
* void TextDisabledV(const char* fmt, va_list args);\\
* void TextWrapped(const char* fmt, ...);\\
* void TextWrappedV(const char* fmt, va_list args);\\
* void TextUnformatted(const char* text, const char* text_end = NULL);\\
* There may be some issues with this function. It may change in the future.
* void LabelText(const char* label, const char* fmt, ...);\\
* void LabelTextV(const char* label, const char* fmt, va_list args);\\
* void Bullet(void);\\
* void BulletText(const char* fmt, ...);\\
* void BulletTextV(const char* fmt, va_list args);\\
* bool Button(const char* label, const ImVec2& size = ImVec2(0, 0));\\
* bool SmallButton(const char* label);\\
* bool InvisibleButton(const char* str_id, const ImVec2& size);\\
* void Image(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), const ImVec4& tint_col = ImVec4(1, 1, 1, 1), const ImVec4& border_col = ImVec4(0, 0, 0, 0));\\
* bool ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0 = ImVec2(0, 0), const ImVec2& uv1 = ImVec2(1, 1), int frame_padding = -1, const ImVec4& bg_col = ImVec4(0, 0, 0, 0), const ImVec4& tint_col = ImVec4(1, 1, 1, 1));\\
* bool Checkbox(const char* label, bool* v);\\
* bool CheckboxFlags(const char* label, unsigned int* flags, unsigned int flags_value);\\
* bool RadioButton(const char* label, bool active);\\
* bool RadioButton(const char* label, int* v, int v_button);\\
* bool Combo(const char* label, int* current_item, const char%%**%% items, int items_count, int height_in_items = -1);\\
* bool Combo(const char* label, int* current_item, const char* items_separated_by_zeros, int height_in_items = -1);\\
* bool Combo(const char* label, int* current_item, bool(*items_getter)(void* data, int idx, const char%%**%% out_text), void* data, int items_count, int height_in_items = -1);\\
* bool ColorButton(const ImVec4& col, bool small_height = false, bool outline_border = true);\\
* bool ColorEdit3(const char* label, float col[3]);\\
* bool ColorEdit4(const char* label, float col[4], bool show_alpha = true);\\
* void ColorEditMode(ImGuiColorEditMode mode);\\
* void PlotLines(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float));\\
* Implemented in a custom manner to support an array of float values, using a Lua table. Call is setup as:
* imgui.PlotLines(label, values_table, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size_x, graph_size_y, stride);
* Default values are still present starting at values_offset.
* void PlotLines(const char* label, float(*values_getter)(void* data, int idx), void* data, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0));\\
* void PlotHistogram(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0), int stride = sizeof(float));\\
* Implemented in a custom manner to support an array of float values, using a Lua table. Call is setup as:
* imgui.PlotHistogram(label, values_table, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size_x, graph_size_y, stride);
* Default values are still present starting at values_offset.
* void PlotHistogram(const char* label, float(*values_getter)(void* data, int idx), void* data, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MAX, ImVec2 graph_size = ImVec2(0, 0));\\
* void ProgressBar(float fraction, const ImVec2& size_arg = ImVec2(-1, 0), const char* overlay = NULL);\\
* bool DragFloat(const char* label, float* v, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);\\
* bool DragFloat2(const char* label, float v[2], float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);\\
* bool DragFloat3(const char* label, float v[3], float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);\\
* bool DragFloat4(const char* label, float v[4], float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);\\
* bool DragFloatRange2(const char* label, float* v_current_min, float* v_current_max, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", const char* display_format_max = NULL, float power = 1.0f);\\
* bool DragInt(const char* label, int* v, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.0f");\\
* bool DragInt2(const char* label, int v[2], float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.0f");\\
* bool DragInt3(const char* label, int v[3], float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.0f");\\
* bool DragInt4(const char* label, int v[4], float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.0f");\\
* bool DragIntRange2(const char* label, int* v_current_min, int* v_current_max, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.0f", const char* display_format_max = NULL);\\
* bool InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = NULL, void* user_data = NULL);\\
* callback is implemented as a string. It is the name to a Lua function to call when the callback is invoked. (user_data is not implemented.)
* bool InputTextMultiline(const char* label, char* buf, size_t buf_size, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = NULL, void* user_data = NULL);\\
* callback is implemented as a string. It is the name to a Lua function to call when the callback is invoked. (user_data is not implemented.)
* bool InputFloat(const char* label, float* v, float step = 0.0f, float step_fast = 0.0f, int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);\\
* bool InputFloat2(const char* label, float v[2], int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);\\
* bool InputFloat3(const char* label, float v[3], int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);\\
* bool InputFloat4(const char* label, float v[4], int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);\\
* bool InputInt(const char* label, int* v, int step = 1, int step_fast = 100, ImGuiInputTextFlags extra_flags = 0);\\
* bool InputInt2(const char* label, int v[2], ImGuiInputTextFlags extra_flags = 0);\\
* bool InputInt3(const char* label, int v[3], ImGuiInputTextFlags extra_flags = 0);\\
* bool InputInt4(const char* label, int v[4], ImGuiInputTextFlags extra_flags = 0);\\
* bool SliderFloat(const char* label, float* v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);\\
* bool SliderFloat2(const char* label, float v[2], float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);\\
* bool SliderFloat3(const char* label, float v[3], float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);\\
* bool SliderFloat4(const char* label, float v[4], float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);\\
* bool SliderAngle(const char* label, float* v_rad, float v_degrees_min = -360.0f, float v_degrees_max = +360.0f);\\
* bool SliderInt(const char* label, int* v, int v_min, int v_max, const char* display_format = "%.0f");\\
* bool SliderInt2(const char* label, int v[2], int v_min, int v_max, const char* display_format = "%.0f");\\
* bool SliderInt3(const char* label, int v[3], int v_min, int v_max, const char* display_format = "%.0f");\\
* bool SliderInt4(const char* label, int v[4], int v_min, int v_max, const char* display_format = "%.0f");\\
* bool VSliderFloat(const char* label, const ImVec2& size, float* v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);\\
* bool VSliderInt(const char* label, const ImVec2& size, int* v, int v_min, int v_max, const char* display_format = "%.0f");\\
* bool TreeNode(const char* label);\\
* bool TreeNode(const char* str_id, const char* fmt, ...);\\
* bool TreeNode(const void* ptr_id, const char* fmt, ...);\\
* bool TreeNodeV(const char* str_id, const char* fmt, va_list args);\\
* bool TreeNodeV(const void* ptr_id, const char* fmt, va_list args);\\
* bool TreeNodeEx(const char* label, ImGuiTreeNodeFlags flags = 0);\\
* bool TreeNodeEx(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, ...);\\
* bool TreeNodeEx(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, ...);\\
* bool TreeNodeExV(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args);\\
* bool TreeNodeExV(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args);\\
* void TreePush(const char* str_id = NULL);\\
* void TreePush(const void* ptr_id = NULL);\\
* void TreePop(void);\\
* void TreeAdvanceToLabelPos(void);\\
* float GetTreeNodeToLabelSpacing(void);\\
* void SetNextTreeNodeOpen(bool is_open, ImGuiSetCond cond = 0);\\
* bool CollapsingHeader(const char* label, ImGuiTreeNodeFlags flags = 0);\\
* bool CollapsingHeader(const char* label, bool* p_open, ImGuiTreeNodeFlags flags = 0);\\
* bool Selectable(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0, 0));\\
* bool Selectable(const char* label, bool* p_selected, ImGuiSelectableFlags flags = 0, const ImVec2& size = ImVec2(0, 0));\\
* bool ListBox(const char* label, int* current_item, const char%%**%% items, int items_count, int height_in_items = -1);\\
* bool ListBox(const char* label, int* current_item, const char* items_separated_by_zeros, int height_in_items = -1);\\
* bool ListBox(const char* label, int* current_item, bool(*items_getter)(void* data, int idx, const char%%**%% out_text), void* data, int items_count, int height_in_items = -1);\\
* bool ListBoxHeader(const char* label, const ImVec2& size = ImVec2(0, 0));\\
* bool ListBoxHeader(const char* label, int items_count, int height_in_items = -1);\\
* void ListBoxFooter(void);\\
* void Value(const char* prefix, bool b);\\
* void Value(const char* prefix, int v);\\
* void Value(const char* prefix, unsigned int v);\\
* void Value(const char* prefix, float v, const char* float_format = NULL);\\
* Value functions take an extra argument due to not being able to differentiate between the types in Lua.
* Value(prefix, type, b);
* Value(prefix, type, v);
* Value(prefix, type, v);
* Value(prefix, type, v, float_format);
* Type: 0 = bool
* Type: 1 = int
* Type: 2 = unsigned int
* Type: 3 = float
* void ValueColor(const char* prefix, const ImVec4& v);\\
* void ValueColor(const char* prefix, unsigned int v);\\
* void SetTooltip(const char* fmt, ...);\\
* void SetTooltipV(const char* fmt, va_list args);\\
* void BeginTooltip(void);\\
* void EndTooltip(void);\\
* bool BeginMainMenuBar(void);\\
* void EndMainMenuBar(void);\\
* bool BeginMenuBar(void);\\
* void EndMenuBar(void);\\
* bool BeginMenu(const char* label, bool enabled = true);\\
* void EndMenu(void);\\
* bool MenuItem(const char* label, const char* shortcut = NULL, bool selected = false, bool enabled = true);\\
* bool MenuItem(const char* label, const char* shortcut, bool* p_selected, bool enabled = true);\\
* void OpenPopup(const char* str_id);\\
* bool BeginPopup(const char* str_id);\\
* bool BeginPopupModal(const char* name, bool* p_open = NULL, ImGuiWindowFlags extra_flags = 0);\\
* bool BeginPopupContextItem(const char* str_id, int mouse_button = 1);\\
* bool BeginPopupContextWindow(bool also_over_items = true, const char* str_id = NULL, int mouse_button = 1);\\
* bool BeginPopupContextVoid(const char* str_id = NULL, int mouse_button = 1);\\
* void EndPopup(void);\\
* void CloseCurrentPopup(void);\\
* void LogToTTY(int max_depth = -1);\\
* void LogToFile(int max_depth = -1, const char* filename = NULL);\\
* void LogToClipboard(int max_depth = -1);\\
* void LogFinish(void);\\
* void LogButtons(void);\\
* void LogText(const char* fmt, ...);\\
* These logging functions should not be relied on, they may be removed in the future.
* void PushClipRect(const ImVec2& clip_rect_min, const ImVec2& clip_rect_max, bool intersect_with_current_clip_rect);\\
* void PopClipRect(void);\\
* bool IsItemHovered(void);\\
* bool IsItemHoveredRect(void);\\
* bool IsItemActive(void);\\
* bool IsItemClicked(int mouse_button = 0);\\
* bool IsItemVisible(void);\\
* bool IsAnyItemHovered(void);\\
* bool IsAnyItemActive(void);\\
* ImVec2 GetItemRectMin(void);\\
* ImVec2 GetItemRectMax(void);\\
* ImVec2 GetItemRectSize(void);\\
* void SetItemAllowOverlap(void);\\
* bool IsWindowHovered(void);\\
* bool IsWindowFocused(void);\\
* bool IsRootWindowFocused(void);\\
* bool IsRootWindowOrAnyChildFocused(void);\\
* bool IsRootWindowOrAnyChildHovered(void);\\
* bool IsRectVisible(const ImVec2& size);\\
* bool IsPosHoveringAnyWindow(const ImVec2& pos);\\
* float GetTime(void);\\
* int GetFrameCount(void);\\
* const char* GetStyleColName(ImGuiCol idx);\\
* ImVec2 CalcItemRectClosestPoint(const ImVec2& pos, bool on_edge = false, float outward = +0.0f);\\
* Not implementing this unless its requested.
* ImVec2 CalcTextSize(const char* text, const char* text_end = NULL, bool hide_text_after_double_hash = false, float wrap_width = -1.0f);\\
* Not implementing this unless it's requested.
* void CalcListClipping(int items_count, float items_height, int* out_items_display_start, int* out_items_display_end);\\
* Not implementing this unless it's requested.
* bool BeginChildFrame(ImGuiID id, const ImVec2& size, ImGuiWindowFlags extra_flags = 0);\\
* void EndChildFrame(void);\\
* ImVec4 ColorConvertU32ToFloat4(ImU32 in);\\
* ImU32 ColorConvertFloat4ToU32(const ImVec4& in);\\
* void ColorConvertRGBtoHSV(float r, float g, float b, float& out_h, float& out_s, float& out_v);\\
* Lua does not support 'out' values, instead, this function will return out_h, out_s, out_v.
* void ColorConvertHSVtoRGB(float h, float s, float v, float& out_r, float& out_g, float& out_b);\\
* Lua does not support 'out' values, instead, this function will return out_r, out_g, out_b.
* int GetKeyIndex(ImGuiKey key);\\
* bool IsKeyDown(int key_index);\\
* bool IsKeyPressed(int key_index, bool repeat = true);\\
* bool IsKeyReleased(int key_index);\\
* bool IsMouseDown(int button);\\
* bool IsMouseClicked(int button, bool repeat = false);\\
* bool IsMouseDoubleClicked(int button);\\
* bool IsMouseReleased(int button);\\
* bool IsMouseHoveringWindow(void);\\
* bool IsMouseHoveringAnyWindow(void);\\
* bool IsMouseHoveringRect(const ImVec2& r_min, const ImVec2& r_max, bool clip = true);\\
* bool IsMouseDragging(int button = 0, float lock_threshold = -1.0f);\\
* ImVec2 GetMousePos(void);\\
* ImVec2 GetMousePosOnOpeningCurrentPopup(void);\\
* ImVec2 GetMouseDragDelta(int button = 0, float lock_threshold = -1.0f);\\
* void ResetMouseDragDelta(int button = 0);\\
* ImGuiMouseCursor GetMouseCursor(void);\\
* void SetMouseCursor(ImGuiMouseCursor type);\\
* void CaptureKeyboardFromApp(bool capture = true);\\
* void CaptureMouseFromApp(bool capture = true);\\
* void* MemAlloc(size_t sz);\\
* Not implementing this function.
* void MemFree(void* ptr);\\
* Not implementing this function.
* const char* GetClipboardText(void);\\
* void SetClipboardText(const char* text);\\
* const char* GetVersion(void);\\
* ImGuiContext* CreateContext(void* (*malloc_fn)(size_t) = NULL, void(*free_fn)(void*) = NULL);\\
* Not implementing this function.
* void DestroyContext(ImGuiContext* ctx);\\
* Not implementing this function.
* ImGuiContext* GetCurrentContext(void);\\
* Not implementing this function.
* void SetCurrentContext(ImGuiContext* ctx);\\
* Not implementing this function.
-----
===== Notes =====
**InputText / InputTextMultiline** - The callback, if present, should be a string that points to a callback function like this:
- The callbacks data is a [[imgui.ImGuiTextEditCallbackData]] structure instance.
if (imgui.InputText('test', test_text_input_buffer, 1024, imgui.bor(ImGuiInputTextFlags_EnterReturnsTrue,ImGuiInputTextFlags_CallbackCompletion,ImGuiInputTextFlags_CallbackHistory), 'test_callback')) then
print('Enter was pressed!');
end
function test_callback(data)
print('Callback was fired!');
return 0;
end
**SetNextWindowSizeConstraints** - The callback, if present, should be a string that points to a callback function like this:
- The callbacks data is a [[imgui.ImGuiSizeConstraintCallbackData]] structure instance.
function SquareResizeConstraint(data)
data.DesiredSize = ImVec2(math.max(data.DesiredSize.x, data.DesiredSize.y), math.max(data.DesiredSize.x, data.DesiredSize.y));
end
imgui.SetNextWindowSizeConstraints(0, 0, float_max, float_max, 'SquareResizeConstraint');