Documentation ¶
Overview ¶
Package imgui contains all the functions to create an immediate mode graphical user interface based on Dear ImGui.
Setup ¶
For integration, please refer to the dedicated repository https://github.com/inkyblackness/imgui-go-examples , which contains ported examples of the C++ version, available to Go.
Conventions ¶
The exported functions and constants are named closely to that of the wrapped library. If a function has optional parameters, it will be available in two versions: A verbose one, which has all optional parameters listed, and a terse one, with only the mandatory parameters in its signature. The verbose variant will have the suffix V in its name. For example, there are
func Button(id string) bool
and
func ButtonV(id string, size Vec2) bool
The terse variant will list the default parameters it uses to call the verbose variant.
There are several types which are based on uintptr. These are references to the wrapped instances in C++. You will always get to such a reference via some function - you never "instantiate" such an instance on your own.
Index ¶
- Constants
- Variables
- func AlignTextToFramePadding()
- func Begin(id string) bool
- func BeginChild(id string) bool
- func BeginChildV(id string, size Vec2, border bool, flags int) bool
- func BeginCombo(label, previewValue string) bool
- func BeginComboV(label, previewValue string, flags int) bool
- func BeginGroup()
- func BeginMainMenuBar() bool
- func BeginMenu(label string) bool
- func BeginMenuBar() bool
- func BeginMenuV(label string, enabled bool) bool
- func BeginPopupContextItem() bool
- func BeginPopupContextItemV(label string, mouseButton int) bool
- func BeginPopupModal(name string) bool
- func BeginPopupModalV(name string, open *bool, flags int) bool
- func BeginTabBar(strID string) bool
- func BeginTabBarV(strID string, flags int) bool
- func BeginTabItem(label string) bool
- func BeginTabItemV(label string, open *bool, flags int) bool
- func BeginTooltip()
- func BeginV(id string, open *bool, flags int) bool
- func Button(id string) bool
- func ButtonV(id string, size Vec2) bool
- func CalcItemWidth() float32
- func Checkbox(id string, selected *bool) bool
- func CloseCurrentPopup()
- func ColumnIndex() int
- func ColumnOffset() float32
- func ColumnOffsetV(index int) float32
- func ColumnWidth() int
- func ColumnWidthV(index int) int
- func Columns(count int, label string)
- func ColumnsCount() int
- func ColumnsV(count int, label string, flags int32)
- func CursorPosX() float32
- func CursorPosY() float32
- func DragFloat(label string, value *float32) bool
- func DragFloatV(label string, value *float32, speed, min, max float32, format string, ...) bool
- func DragInt(label string, value *int32) bool
- func DragIntV(label string, value *int32, speed float32, min, max int32, format string) bool
- func Dummy(size Vec2)
- func End()
- func EndChild()
- func EndCombo()
- func EndFrame()
- func EndGroup()
- func EndMainMenuBar()
- func EndMenu()
- func EndMenuBar()
- func EndPopup()
- func EndTabBar()
- func EndTabItem()
- func EndTooltip()
- func FontSize() float32
- func Image(id TextureID, size Vec2)
- func ImageButton(id TextureID, size Vec2) bool
- func ImageButtonV(id TextureID, size Vec2, uv0, uv1 Vec2, framePadding int, bgCol Vec4, ...) bool
- func ImageV(id TextureID, size Vec2, uv0, uv1 Vec2, tintCol, borderCol Vec4)
- func IndexBufferLayout() (entrySize int)
- func InputText(label string, text *string) bool
- func InputTextMultiline(label string, text *string) bool
- func InputTextMultilineV(label string, text *string, size Vec2, flags int, cb InputTextCallback) bool
- func InputTextV(label string, text *string, flags int, cb InputTextCallback) bool
- func IsAnyItemFocused() bool
- func IsAnyMouseDown() bool
- func IsItemFocused() bool
- func IsItemHovered() bool
- func IsItemHoveredV(flags int) bool
- func IsKeyDown(key int) bool
- func IsKeyPressed(key int) bool
- func IsKeyPressedV(key int, repeat bool) bool
- func IsKeyReleased(key int) bool
- func IsMouseClicked(button int) bool
- func IsMouseClickedV(button int, repeat bool) bool
- func IsMouseDoubleClicked(button int) bool
- func IsMouseDown(button int) bool
- func IsMouseReleased(button int) bool
- func LabelText(label, text string)
- func ListBox(label string, currentItem *int32, items []string) bool
- func ListBoxV(label string, currentItem *int32, items []string, heightItems int) bool
- func MenuItem(label string) bool
- func MenuItemV(label string, shortcut string, selected bool, enabled bool) bool
- func MouseCursor() int
- func NewFrame()
- func NextColumn()
- func OpenPopup(id string)
- func PlotHistogram(label string, values []float32)
- func PlotHistogramV(label string, values []float32, valuesOffset int, overlayText string, ...)
- func PlotLines(label string, values []float32)
- func PlotLinesV(label string, values []float32, valuesOffset int, overlayText string, ...)
- func PopFont()
- func PopID()
- func PopItemWidth()
- func PopStyleColor()
- func PopStyleColorV(count int)
- func PopStyleVar()
- func PopStyleVarV(count int)
- func PopTextWrapPos()
- func ProgressBar(fraction float32)
- func ProgressBarV(fraction float32, size Vec2, overlay string)
- func PushFont(font Font)
- func PushID(id string)
- func PushItemWidth(width float32)
- func PushStyleColor(id StyleColorID, color Vec4)
- func PushStyleVarFloat(id StyleVarID, value float32)
- func PushStyleVarVec2(id StyleVarID, value Vec2)
- func PushTextWrapPos()
- func PushTextWrapPosV(wrapPosX float32)
- func Render()
- func SameLine()
- func SameLineV(posX float32, spacingW float32)
- func Selectable(label string) bool
- func SelectableV(label string, selected bool, flags int, size Vec2) bool
- func Separator()
- func SetAssertHandler(handler AssertHandler)
- func SetColumnOffset(index int, offsetX float32)
- func SetColumnWidth(index int, width float32)
- func SetCursorPos(localPos Vec2)
- func SetCursorScreenPos(absPos Vec2)
- func SetItemDefaultFocus()
- func SetMouseCursor(cursor int)
- func SetNextTreeNodeOpen(open bool, cond Condition)
- func SetNextWindowBgAlpha(value float32)
- func SetNextWindowContentSize(size Vec2)
- func SetNextWindowFocus()
- func SetNextWindowPos(pos Vec2)
- func SetNextWindowPosV(pos Vec2, cond Condition, pivot Vec2)
- func SetNextWindowSize(size Vec2)
- func SetNextWindowSizeV(size Vec2, cond Condition)
- func SetScrollHereY(ratio float32)
- func SetTabItemClosed(tabOrDockedWindowLabel string)
- func SetTooltip(text string)
- func ShowDemoWindow(open *bool)
- func ShowUserGuide()
- func SliderFloat(label string, value *float32, min, max float32) bool
- func SliderFloat3(label string, values *[3]float32, min, max float32) bool
- func SliderFloat3V(label string, values *[3]float32, min, max float32, format string, ...) bool
- func SliderFloatV(label string, value *float32, min, max float32, format string, power float32) bool
- func SliderInt(label string, value *int32, min, max int32) bool
- func SliderIntV(label string, value *int32, min, max int32, format string) bool
- func Spacing()
- func Text(text string)
- func TextLineHeight() float32
- func TextLineHeightWithSpacing() float32
- func TreeNode(label string) bool
- func TreeNodeToLabelSpacing() float32
- func TreeNodeV(label string, flags int) bool
- func TreePop()
- func Version() string
- func VertexBufferLayout() (entrySize int, posOffset int, uvOffset int, colOffset int)
- func WindowHeight() float32
- func WindowWidth() float32
- type AllocatedGlyphRanges
- type Alpha8Image
- type AssertHandler
- type Clipboard
- type Condition
- type Context
- type DrawCommand
- type DrawData
- type DrawList
- type Font
- type FontAtlas
- func (atlas FontAtlas) AddFontDefault() Font
- func (atlas FontAtlas) AddFontDefaultV(cfg FontConfig) Font
- func (atlas FontAtlas) AddFontFromFileTTF(filename string, sizePixels float32) Font
- func (atlas FontAtlas) AddFontFromFileTTFV(filename string, sizePixels float32, config FontConfig, glyphRange GlyphRanges) Font
- func (atlas FontAtlas) AddFontFromMemoryTTF(fontData []byte, sizePixels float32) Font
- func (atlas FontAtlas) AddFontFromMemoryTTFV(fontData []byte, sizePixels float32, config FontConfig, glyphRange GlyphRanges) Font
- func (atlas FontAtlas) GlyphRangesChinese() GlyphRanges
- func (atlas FontAtlas) GlyphRangesChineseFull() GlyphRanges
- func (atlas FontAtlas) GlyphRangesChineseSimplifiedCommon() GlyphRanges
- func (atlas FontAtlas) GlyphRangesCyrillic() GlyphRanges
- func (atlas FontAtlas) GlyphRangesDefault() GlyphRanges
- func (atlas FontAtlas) GlyphRangesJapanese() GlyphRanges
- func (atlas FontAtlas) GlyphRangesKorean() GlyphRanges
- func (atlas FontAtlas) GlyphRangesThai() GlyphRanges
- func (atlas FontAtlas) SetTexDesiredWidth(value int)
- func (atlas FontAtlas) SetTextureID(id TextureID)
- func (atlas FontAtlas) TextureDataAlpha8() *Alpha8Image
- func (atlas FontAtlas) TextureDataRGBA32() *RGBA32Image
- type FontConfig
- func (config *FontConfig) Delete()
- func (config FontConfig) SetGlyphMaxAdvanceX(value float32)
- func (config FontConfig) SetGlyphMinAdvanceX(value float32)
- func (config FontConfig) SetMergeMode(value bool)
- func (config FontConfig) SetOversampleH(value int)
- func (config FontConfig) SetOversampleV(value int)
- func (config FontConfig) SetPixelSnapH(value bool)
- func (config FontConfig) SetSize(sizePixels float32)
- type GlyphRanges
- type GlyphRangesBuilder
- type IO
- func (io IO) AddInputCharacters(chars string)
- func (io IO) AddMouseWheelDelta(horizontal, vertical float32)
- func (io IO) Fonts() FontAtlas
- func (io IO) KeyAlt(leftAlt int, rightAlt int)
- func (io IO) KeyCtrl(leftCtrl int, rightCtrl int)
- func (io IO) KeyMap(imguiKey int, nativeKey int)
- func (io IO) KeyPress(key int)
- func (io IO) KeyRelease(key int)
- func (io IO) KeyShift(leftShift int, rightShift int)
- func (io IO) KeySuper(leftSuper int, rightSuper int)
- func (io IO) SetBackendFlags(flags int)
- func (io IO) SetClipboard(board Clipboard)
- func (io IO) SetConfigFlags(flags int)
- func (io IO) SetDeltaTime(value float32)
- func (io IO) SetDisplaySize(value Vec2)
- func (io IO) SetFontGlobalScale(value float32)
- func (io IO) SetIniFilename(value string)
- func (io IO) SetMouseButtonDown(index int, down bool)
- func (io IO) SetMousePosition(value Vec2)
- func (io IO) WantCaptureKeyboard() bool
- func (io IO) WantCaptureMouse() bool
- func (io IO) WantTextInput() bool
- type InputTextCallback
- type InputTextCallbackData
- func (data InputTextCallbackData) Buffer() []byte
- func (data InputTextCallbackData) CursorPos() int
- func (data InputTextCallbackData) DeleteBytes(offset, count int)
- func (data InputTextCallbackData) EventChar() rune
- func (data InputTextCallbackData) EventFlag() int
- func (data InputTextCallbackData) EventKey() int
- func (data InputTextCallbackData) Flags() int
- func (data InputTextCallbackData) InsertBytes(offset int, bytes []byte)
- func (data InputTextCallbackData) MarkBufferModified()
- func (data InputTextCallbackData) SelectionEnd() int
- func (data InputTextCallbackData) SelectionStart() int
- func (data InputTextCallbackData) SetCursorPos(value int)
- func (data InputTextCallbackData) SetEventChar(value rune)
- func (data InputTextCallbackData) SetSelectionEnd(value int)
- func (data InputTextCallbackData) SetSelectionStart(value int)
- type ListClipper
- type RGBA32Image
- type Style
- type StyleColorID
- type StyleVarID
- type TextureID
- type Vec2
- type Vec4
Constants ¶
const ( // BackendFlagHasGamepad back-end supports gamepad and currently has one connected. BackendFlagHasGamepad = 1 << iota // BackendFlagHasMouseCursors back-end supports honoring MouseCursor() value to change the OS cursor shape. BackendFlagHasMouseCursors // BackendFlagHasSetMousePos back-end supports io.WantSetMousePos requests to reposition the OS mouse position // (only used if ImGuiConfigFlags_NavEnableSetMousePos is set). BackendFlagHasSetMousePos )
const ( // ColumnsFlagsNone default = 0. ColumnsFlagsNone = 0 // ColumnsFlagsNoBorder Disable column dividers. ColumnsFlagsNoBorder = 1 << 0 // ColumnsFlagsNoResize Disable resizing columns when clicking on the dividers. ColumnsFlagsNoResize = 1 << 1 // ColumnsFlagsNoPreserveWidths Disable column width preservation when adjusting columns. ColumnsFlagsNoPreserveWidths = 1 << 2 // ColumnsFlagsNoForceWithinWindow Disable forcing columns to fit within window. ColumnsFlagsNoForceWithinWindow = 1 << 3 // ColumnsFlagsGrowParentContentsSize (WIP) Restore pre-1.51 behavior of extending the parent window contents // size but _without affecting the columns width at all_. Will eventually remove. ColumnsFlagsGrowParentContentsSize = 1 << 4 )
const ( // ComboFlagPopupAlignLeft aligns the popup toward the left by default. ComboFlagPopupAlignLeft = 1 << iota // ComboFlagHeightSmall has max ~4 items visible. // Tip: If you want your combo popup to be a specific size you can use SetNextWindowSizeConstraints() prior to calling BeginCombo(). ComboFlagHeightSmall // ComboFlagHeightRegular has max ~8 items visible (default). ComboFlagHeightRegular // ComboFlagHeightLarge has max ~20 items visible. ComboFlagHeightLarge // ComboFlagHeightLargest has as many fitting items as possible. ComboFlagHeightLargest // ComboFlagNoArrowButton displays on the preview box without the square arrow button. ComboFlagNoArrowButton // ComboFlagNoPreview displays only a square arrow button. ComboFlagNoPreview )
const ( iota // This is mostly to instruct your imgui back-end to fill io.NavInputs[]. Back-end also needs to set ImGuiBackendFlags_HasGamepad. ConfigFlagNavEnableGamepad // May be useful on TV/console systems where moving a virtual mouse is awkward. Will update io.MousePos and set io.WantSetMousePos=true. // If enabled you MUST honor io.WantSetMousePos requests in your binding, otherwise ImGui will react as if the mouse is jumping around back and forth. ConfigFlagNavEnableSetMousePos ConfigFlagNavNoCaptureKeyboard // ConfigFlagNoMouse instruct imgui to clear mouse position/buttons in NewFrame(). This allows ignoring the mouse information set by the back-end. ConfigFlagNoMouse // ConfigFlagNoMouseCursorChange instruct back-end to not alter mouse cursor shape and visibility. // Use if the back-end cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor. // You may want to honor requests from imgui by reading GetMouseCursor() yourself instead. ConfigFlagNoMouseCursorChange // ConfigFlagIsSRGB application is SRGB-aware. ConfigFlagIsSRGB = 1 << 20 // ConfigFlagIsTouchScreen application is using a touch screen instead of a mouse. ConfigFlagIsTouchScreen = 1 << 21 )ConfigFlagNavEnableKeyboard = 1 <<
const ( // HoveredFlagsDefault Return true if directly over the item/window, not obstructed by another window, // not obstructed by an active popup or modal blocking inputs under them. HoveredFlagsDefault = 0 // HoveredFlagsChildWindows IsWindowHovered() only: Return true if any children of the window is hovered. HoveredFlagsChildWindows = 1 << 0 // HoveredFlagsRootWindow IsWindowHovered() only: Test from root window (top most parent of the current hierarchy). HoveredFlagsRootWindow = 1 << 1 // HoveredFlagsAnyWindow IsWindowHovered() only: Return true if any window is hovered. HoveredFlagsAnyWindow = 1 << 2 // HoveredFlagsAllowWhenBlockedByPopup Return true even if a popup window is normally blocking access to this item/window. HoveredFlagsAllowWhenBlockedByPopup = 1 << 3 // HoveredFlagsAllowWhenBlockedByActiveItem Return true even if an active item is blocking access to this item/window. // Useful for Drag and Drop patterns. HoveredFlagsAllowWhenBlockedByActiveItem = 1 << 5 // HoveredFlagsAllowWhenOverlapped Return true even if the position is overlapped by another window HoveredFlagsAllowWhenOverlapped = 1 << 6 )
const ( HoveredFlagsRectOnly = HoveredFlagsAllowWhenBlockedByPopup | HoveredFlagsAllowWhenBlockedByActiveItem | HoveredFlagsAllowWhenOverlapped HoveredFlagsRootAndChildWindows = HoveredFlagsRootWindow | HoveredFlagsChildWindows )
HoveredFlags combinations
const ( // InputTextFlagsNone sets everything default. InputTextFlagsNone = 0 // InputTextFlagsCharsDecimal allows 0123456789.+- InputTextFlagsCharsDecimal = 1 << 0 // InputTextFlagsCharsHexadecimal allow 0123456789ABCDEFabcdef InputTextFlagsCharsHexadecimal = 1 << 1 // InputTextFlagsCharsUppercase turns a..z into A..Z. InputTextFlagsCharsUppercase = 1 << 2 // InputTextFlagsCharsNoBlank filters out spaces, tabs. InputTextFlagsCharsNoBlank = 1 << 3 // InputTextFlagsAutoSelectAll selects entire text when first taking mouse focus. InputTextFlagsAutoSelectAll = 1 << 4 // InputTextFlagsEnterReturnsTrue returns 'true' when Enter is pressed (as opposed to when the value was modified). InputTextFlagsEnterReturnsTrue = 1 << 5 // InputTextFlagsCallbackCompletion for callback on pressing TAB (for completion handling). InputTextFlagsCallbackCompletion = 1 << 6 // InputTextFlagsCallbackHistory for callback on pressing Up/Down arrows (for history handling). InputTextFlagsCallbackHistory = 1 << 7 // InputTextFlagsCallbackAlways for callback on each iteration. User code may query cursor position, modify text buffer. InputTextFlagsCallbackAlways = 1 << 8 // InputTextFlagsCallbackCharFilter for callback on character inputs to replace or discard them. // Modify 'EventChar' to replace or discard, or return 1 in callback to discard. InputTextFlagsCallbackCharFilter = 1 << 9 // InputTextFlagsAllowTabInput when pressing TAB to input a '\t' character into the text field. InputTextFlagsAllowTabInput = 1 << 10 // InputTextFlagsCtrlEnterForNewLine in multi-line mode, unfocus with Enter, add new line with Ctrl+Enter // (default is opposite: unfocus with Ctrl+Enter, add line with Enter). InputTextFlagsCtrlEnterForNewLine = 1 << 11 // InputTextFlagsNoHorizontalScroll disables following the cursor horizontally. InputTextFlagsNoHorizontalScroll = 1 << 12 // InputTextFlagsAlwaysInsertMode sets insert mode. InputTextFlagsAlwaysInsertMode = 1 << 13 // InputTextFlagsReadOnly sets read-only mode. InputTextFlagsReadOnly = 1 << 14 // InputTextFlagsPassword sets password mode, display all characters as '*'. InputTextFlagsPassword = 1 << 15 // InputTextFlagsNoUndoRedo disables undo/redo. Note that input text owns the text data while active, // if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID(). InputTextFlagsNoUndoRedo = 1 << 16 // InputTextFlagsCharsScientific allows 0123456789.+-*/eE (Scientific notation input). InputTextFlagsCharsScientific = 1 << 17 )
const ( // MouseCursorNone no mouse cursor MouseCursorNone = iota - 1 // MouseCursorArrow standard arrow mouse cursor MouseCursorArrow // MouseCursorTextInput when hovering over InputText, etc. MouseCursorTextInput // MouseCursorResizeAll (Unused by imgui functions) MouseCursorResizeAll // MouseCursorResizeNS when hovering over an horizontal border MouseCursorResizeNS // MouseCursorResizeEW when hovering over a vertical border or a column MouseCursorResizeEW // MouseCursorResizeNESW when hovering over the bottom-left corner of a window MouseCursorResizeNESW // MouseCursorResizeNWSE when hovering over the bottom-right corner of a window MouseCursorResizeNWSE // MouseCursorHand (Unused by imgui functions. Use for e.g. hyperlinks) MouseCursorHand MouseCursorCount )
Enumeration for MouseCursor() User code may request binding to display given cursor by calling SetMouseCursor(), which is why we have some cursors that are marked unused here
const ( // SelectableFlagsDontClosePopups makes clicking the selectable not close any parent popup windows. SelectableFlagsDontClosePopups = 1 << 0 // SelectableFlagsSpanAllColumns allows the selectable frame to span all columns (text will still fit in current column). SelectableFlagsSpanAllColumns = 1 << 1 // SelectableFlagsAllowDoubleClick generates press events on double clicks too. SelectableFlagsAllowDoubleClick = 1 << 2 // SelectableFlagsDisabled disallows selection and displays text in a greyed out color. SelectableFlagsDisabled = 1 << 3 )
const ( // TabBarFlagsNone default = 0. TabBarFlagsNone = 0 // TabBarFlagsReorderable Allow manually dragging tabs to re-order them + New // tabs are appended at the end of list TabBarFlagsReorderable = 1 << 0 // TabBarFlagsAutoSelectNewTabs Automatically select new tabs when they appear TabBarFlagsAutoSelectNewTabs = 1 << 1 // TabBarFlagsNoCloseWithMiddleMouseButton Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can // still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false. TabBarFlagsNoCloseWithMiddleMouseButton = 1 << 2 // TabBarFlagsNoTabListPopupButton Undocumented in Dear imGui v1.67 TabBarFlagsNoTabListPopupButton = 1 << 3 // TabBarFlagsNoTabListScrollingButtons Undocumented in Dear imGui v1.67 TabBarFlagsNoTabListScrollingButtons = 1 << 4 // TabBarFlagsNoTooltip Disable tooltips when hovering a tab TabBarFlagsNoTooltip = 1 << 5 // TabBarFlagsFittingPolicyResizeDown Resize tabs when they don't fit TabBarFlagsFittingPolicyResizeDown = 1 << 6 // TabBarFlagsFittingPolicyScroll Add scroll buttons when tabs don't fit TabBarFlagsFittingPolicyScroll = 1 << 7 // TabBarFlagsFittingPolicyMask combines // TabBarFlagsFittingPolicyResizeDown and TabBarFlagsFittingPolicyScroll TabBarFlagsFittingPolicyMask = TabBarFlagsFittingPolicyResizeDown | TabBarFlagsFittingPolicyScroll // TabBarFlagsFittingPolicyDefault alias for TabBarFlagsFittingPolicyResizeDown TabBarFlagsFittingPolicyDefault = TabBarFlagsFittingPolicyResizeDown )
const ( // TabItemFlagsNone default = 0 TabItemFlagsNone = 0 // TabItemFlagsUnsavedDocument Append '*' to title without affecting the ID, // as a convenience to avoid using the ### operator. Also: tab is selected on // closure and closure is deferred by one frame to allow code to undo it without flicker. TabItemFlagsUnsavedDocument = 1 << 0 // TabItemFlagsSetSelected Trigger flag to programatically make the tab selected // when calling BeginTabItem() TabItemFlagsSetSelected = 1 << 1 // TabItemFlagsNoCloseWithMiddleMouseButton Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can // still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false. TabItemFlagsNoCloseWithMiddleMouseButton = 1 << 2 // TabItemFlagsNoPushID Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem() TabItemFlagsNoPushID = 1 << 3 )
const ( // TreeNodeFlagsSelected draws as selected. TreeNodeFlagsSelected = 1 << iota // TreeNodeFlagsFramed draws full colored frame (e.g. for CollapsingHeader). TreeNodeFlagsFramed // TreeNodeFlagsAllowItemOverlap hit testing to allow subsequent widgets to overlap this one. TreeNodeFlagsAllowItemOverlap // TreeNodeFlagsNoTreePushOnOpen doesn't do a TreePush() when open // (e.g. for CollapsingHeader) = no extra indent nor pushing on ID stack. TreeNodeFlagsNoTreePushOnOpen // TreeNodeFlagsNoAutoOpenOnLog doesn't automatically and temporarily open node when Logging is active // (by default logging will automatically open tree nodes). TreeNodeFlagsNoAutoOpenOnLog // TreeNodeFlagsDefaultOpen defaults node to be open. TreeNodeFlagsDefaultOpen // TreeNodeFlagsOpenOnDoubleClick needs double-click to open node. TreeNodeFlagsOpenOnDoubleClick // TreeNodeFlagsOpenOnArrow opens only when clicking on the arrow part. // If TreeNodeFlagsOpenOnDoubleClick is also set, single-click arrow or double-click all box to open. TreeNodeFlagsOpenOnArrow // TreeNodeFlagsLeaf allows no collapsing, no arrow (use as a convenience for leaf nodes). TreeNodeFlagsLeaf // TreeNodeFlagsBullet displays a bullet instead of arrow. TreeNodeFlagsBullet // TreeNodeFlagsFramePadding use FramePadding (even for an unframed text node) to // vertically align text baseline to regular widget height. Equivalent to calling AlignTextToFramePadding(). TreeNodeFlagsFramePadding // from any of its child (items submitted between TreeNode and TreePop). TreeNodeFlagsNavLeftJumpsBackHere // TreeNodeFlagsCollapsingHeader combines TreeNodeFlagsFramed and TreeNodeFlagsNoAutoOpenOnLog. TreeNodeFlagsCollapsingHeader = TreeNodeFlagsFramed | TreeNodeFlagsNoAutoOpenOnLog )
const ( // WindowFlagsNoTitleBar disables the title-bar. WindowFlagsNoTitleBar = 1 << 0 // WindowFlagsNoResize disables user resizing with the lower-right grip. WindowFlagsNoResize = 1 << 1 // WindowFlagsNoMove disables user moving the window. WindowFlagsNoMove = 1 << 2 // WindowFlagsNoScrollbar disables scrollbars (window can still scroll with mouse or programatically). WindowFlagsNoScrollbar = 1 << 3 // WindowFlagsNoScrollWithMouse disables user vertically scrolling with mouse wheel. // On child window, mouse wheel will be forwarded to the parent unless NoScrollbar is also set. WindowFlagsNoScrollWithMouse = 1 << 4 // WindowFlagsNoCollapse disables user collapsing window by double-clicking on it. WindowFlagsNoCollapse = 1 << 5 // WindowFlagsAlwaysAutoResize resizes every window to its content every frame. WindowFlagsAlwaysAutoResize = 1 << 6 // WindowFlagsNoBackground disables drawing background color (WindowBg, etc.) and outside border. WindowFlagsNoBackground = 1 << 7 // WindowFlagsNoSavedSettings prohibits load/save settings in .ini file. WindowFlagsNoSavedSettings = 1 << 8 // WindowFlagsNoInputs disables catching mouse or keyboard inputs, hovering test with pass through. WindowFlagsNoInputs = 1 << 9 // WindowFlagsMenuBar has a menu-bar. WindowFlagsMenuBar = 1 << 10 // WindowFlagsHorizontalScrollbar allows horizontal scrollbar to appear (off by default). // You may use SetNextWindowContentSize(Vec2(width,0.0f)); prior to calling Begin() to specify width. // Read code in imgui_demo in the "Horizontal Scrolling" section. WindowFlagsHorizontalScrollbar = 1 << 11 // WindowFlagsNoFocusOnAppearing disables taking focus when transitioning from hidden to visible state. WindowFlagsNoFocusOnAppearing = 1 << 12 // WindowFlagsNoBringToFrontOnFocus disables bringing window to front when taking focus. // (e.g. clicking on it or programatically giving it focus) WindowFlagsNoBringToFrontOnFocus = 1 << 13 // WindowFlagsAlwaysVerticalScrollbar shows always a vertical scrollbar (even if ContentSize.y < Size.y) WindowFlagsAlwaysVerticalScrollbar = 1 << 14 // WindowFlagsAlwaysHorizontalScrollbar shows always a horizontal scrollbar (even if ContentSize.x < Size.x). WindowFlagsAlwaysHorizontalScrollbar = 1 << 15 // WindowFlagsAlwaysUseWindowPadding ensures child windows without border uses style.WindowPadding. // (ignored by default for non-bordered child windows, because more convenient) WindowFlagsAlwaysUseWindowPadding = 1 << 16 // WindowFlagsResizeFromAnySide [BETA] enables resize from any corners and borders. // Your back-end needs to honor the different values of io.MouseCursor set by imgui. WindowFlagsResizeFromAnySide = 1 << 17 WindowFlagsNoNavInputs = 1 << 18 WindowFlagsNoNavFocus = 1 << 19 WindowFlagsNoNav = WindowFlagsNoNavInputs | WindowFlagsNoNavFocus )
const ( KeyTab = 0 KeyLeftArrow = 1 KeyRightArrow = 2 KeyUpArrow = 3 KeyDownArrow = 4 KeyPageUp = 5 KeyPageDown = 6 KeyHome = 7 KeyEnd = 8 KeyInsert = 9 KeyDelete = 10 KeyBackspace = 11 KeySpace = 12 KeyEnter = 13 KeyEscape = 14 KeyA = 15 // for text edit CTRL+A: select all KeyC = 16 // for text edit CTRL+C: copy KeyV = 17 // for text edit CTRL+V: paste KeyX = 18 // for text edit CTRL+X: cut KeyY = 19 // for text edit CTRL+Y: redo KeyZ = 20 // for text edit CTRL+Z: undo KeyCOUNT = 21 )
User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array
Variables ¶
var ErrContextDestroyed = errors.New("context is destroyed")
ErrContextDestroyed is returned when trying to use an already destroyed context.
var ErrNoContext = errors.New("no current context")
ErrNoContext is used when no context is current.
Functions ¶
func AlignTextToFramePadding ¶ added in v1.7.0
func AlignTextToFramePadding()
AlignTextToFramePadding vertically aligns upcoming text baseline to FramePadding.y so that it will align properly to regularly framed items. Call if you have text on a line before a framed item.
func BeginChild ¶ added in v0.2.0
BeginChild calls BeginChildV(id, Vec2{0,0}, false, 0).
func BeginChildV ¶ added in v0.2.0
BeginChildV pushes a new child to the stack and starts appending to it. flags are the WindowFlags to apply.
func BeginCombo ¶ added in v0.2.0
BeginCombo calls BeginComboV(label, previewValue, 0).
func BeginComboV ¶ added in v0.2.0
BeginComboV creates a combo box with complete control over the content to the user. Call EndCombo() if this function returns true. flags are the ComboFlags to apply.
func BeginGroup ¶ added in v0.2.0
func BeginGroup()
BeginGroup locks horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.)
func BeginMainMenuBar ¶ added in v0.2.0
func BeginMainMenuBar() bool
BeginMainMenuBar creates and appends to a full screen menu-bar. If the return value is true, then EndMainMenuBar() must be called!
func BeginMenuBar ¶ added in v0.2.0
func BeginMenuBar() bool
BeginMenuBar appends to menu-bar of current window. This requires WindowFlagsMenuBar flag set on parent window. If the return value is true, then EndMenuBar() must be called!
func BeginMenuV ¶ added in v0.2.0
BeginMenuV creates a sub-menu entry. If the return value is true, then EndMenu() must be called!
func BeginPopupContextItem ¶ added in v0.5.0
func BeginPopupContextItem() bool
BeginPopupContextItem calls BeginPopupContextItemV("", 1)
func BeginPopupContextItemV ¶ added in v0.5.0
BeginPopupContextItemV returns true if the identified mouse button was pressed while hovering over the last item.
func BeginPopupModal ¶ added in v0.2.0
BeginPopupModal calls BeginPopupModalV(name, nil, 0)
func BeginPopupModalV ¶ added in v0.2.0
BeginPopupModalV creates modal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside).
func BeginTabBar ¶ added in v1.11.0
BeginTabBar calls BeginTabBarV(strId, 0)
func BeginTabBarV ¶ added in v1.11.0
BeginTabBarV create and append into a TabBar
func BeginTabItem ¶ added in v1.11.0
BeginTabItem calls BeginTabItemV(label, nil, 0)
func BeginTabItemV ¶ added in v1.11.0
BeginTabItemV create a Tab. Returns true if the Tab is selected.
func BeginTooltip ¶ added in v0.4.0
func BeginTooltip()
BeginTooltip begins/appends to a tooltip window. Used to create full-featured tooltip (with any kind of contents). Requires a call to EndTooltip().
func BeginV ¶ added in v0.2.0
BeginV pushes a new window to the stack and start appending to it. You may append multiple times to the same window during the same frame. If the open argument is provided, the window can be closed, in which case the value will be false after the call.
Returns false if the window is currently not visible. Regardless of the return value, End() must be called for each call to Begin().
func CalcItemWidth ¶ added in v1.8.0
func CalcItemWidth() float32
CalcItemWidth returns the width of items given pushed settings and current cursor position.
func Checkbox ¶ added in v0.2.0
Checkbox creates a checkbox in the selected state. The return value indicates if the selected state has changed.
func CloseCurrentPopup ¶ added in v0.2.0
func CloseCurrentPopup()
CloseCurrentPopup closes the popup we have begin-ed into. Clicking on a MenuItem or Selectable automatically close the current popup.
func ColumnOffset ¶ added in v1.6.0
func ColumnOffset() float32
ColumnOffset calls ColumnOffsetV(-1)
func ColumnOffsetV ¶ added in v1.6.0
ColumnOffsetV get position of column line (in pixels, from the left side of the contents region). pass -1 to use current column, otherwise 0..GetColumnsCount() inclusive. column 0 is typically 0.0.
func ColumnWidthV ¶ added in v1.6.0
ColumnWidthV get column width (in pixels). pass -1 to use current column.
func ColumnsCount ¶ added in v1.6.0
func ColumnsCount() int
ColumnsCount returns number of current columns.
func ColumnsV ¶ added in v1.6.0
ColumnsV creates a column layout of the specified number of columns.
func CursorPosX ¶ added in v1.8.0
func CursorPosX() float32
CursorPosX returns the x-coordinate of the cursor position in window coordinates.
func CursorPosY ¶ added in v1.8.0
func CursorPosY() float32
CursorPosY returns the y-coordinate of the cursor position in window coordinates.
func DragFloat ¶ added in v1.3.0
DragFloat calls DragFloatV(label, value, 1.0, 0.0, 0.0, "%.3f", 1.0).
func DragFloatV ¶ added in v1.3.0
func DragFloatV(label string, value *float32, speed, min, max float32, format string, power float32) bool
DragFloatV creates a draggable slider for floats.
func End ¶ added in v0.2.0
func End()
End closes the scope for the previously opened window. Every call to Begin() must be matched with a call to End().
func EndChild ¶ added in v0.2.0
func EndChild()
EndChild closes the scope for the previously opened child. Every call to BeginChild() must be matched with a call to EndChild().
func EndCombo ¶ added in v0.2.0
func EndCombo()
EndCombo must be called if BeginComboV() returned true.
func EndFrame ¶
func EndFrame()
EndFrame ends the ImGui frame. Automatically called by Render(), so most likely don't need to ever call that yourself directly. If you don't need to render you may call EndFrame() but you'll have wasted CPU already. If you don't need to render, better to not create any imgui windows instead!
func EndGroup ¶ added in v0.2.0
func EndGroup()
EndGroup must be called for each call to BeginGroup().
func EndMainMenuBar ¶ added in v0.2.0
func EndMainMenuBar()
EndMainMenuBar finishes a main menu bar. Only call EndMainMenuBar() if BeginMainMenuBar() returns true!
func EndMenu ¶ added in v0.2.0
func EndMenu()
EndMenu finishes a sub-menu entry. Only call EndMenu() if BeginMenu() returns true!
func EndMenuBar ¶ added in v0.2.0
func EndMenuBar()
EndMenuBar finishes a menu bar. Only call EndMenuBar() if BeginMenuBar() returns true!
func EndPopup ¶ added in v0.2.0
func EndPopup()
EndPopup finshes a popup. Only call EndPopup() if BeginPopupXXX() returns true!
func EndTabBar ¶ added in v1.11.0
func EndTabBar()
EndTabBar only call EndTabBar() if BeginTabBar() returns true!
func EndTabItem ¶ added in v1.11.0
func EndTabItem()
EndTabItem Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem()
func EndTooltip ¶ added in v0.4.0
func EndTooltip()
EndTooltip closes the previously started tooltip window.
func FontSize ¶ added in v1.8.0
func FontSize() float32
FontSize returns the current font size (= height in pixels) of the current font with the current scale applied.
func Image ¶ added in v0.3.0
Image calls ImageV(id, size, Vec2{0,0}, Vec2{1,1}, Vec4{1,1,1,1}, Vec4{0,0,0,0}).
func ImageButton ¶ added in v0.3.0
ImageButton calls ImageButtonV(id, size, Vec2{0,0}, Vec2{1,1}, -1, Vec4{0,0,0,0}, Vec4{1,1,1,1}).
func ImageButtonV ¶ added in v0.3.0
func ImageButtonV(id TextureID, size Vec2, uv0, uv1 Vec2, framePadding int, bgCol Vec4, tintCol Vec4) bool
ImageButtonV adds a button with an image, based on given texture ID. Refer to TextureID what this represents and how it is drawn. <0 framePadding uses default frame padding settings. 0 for no padding.
func ImageV ¶ added in v0.3.0
ImageV adds an image based on given texture ID. Refer to TextureID what this represents and how it is drawn.
func IndexBufferLayout ¶
func IndexBufferLayout() (entrySize int)
IndexBufferLayout returns the byte size necessary to select fields in an index buffer of DrawList.
func InputTextMultiline ¶ added in v1.6.0
InputTextMultiline calls InputTextMultilineV(label, text, Vec2{0,0}, 0, nil)
func InputTextMultilineV ¶ added in v1.6.0
func InputTextMultilineV(label string, text *string, size Vec2, flags int, cb InputTextCallback) bool
InputTextMultilineV provides a field for dynamic text input of multiple lines.
Contrary to the original library, this wrapper does not limit the maximum number of possible characters. Dynamic resizing of the internal buffer is handled within the wrapper and the user will never be called for such requests.
The provided callback is called for any of the requested InputTextFlagsCallback* flags.
To implement a character limit, provide a callback that drops input characters when the requested length has been reached.
func InputTextV ¶ added in v1.6.0
func InputTextV(label string, text *string, flags int, cb InputTextCallback) bool
InputTextV creates a text field for dynamic text input.
Contrary to the original library, this wrapper does not limit the maximum number of possible characters. Dynamic resizing of the internal buffer is handled within the wrapper and the user will never be called for such requests.
The provided callback is called for any of the requested InputTextFlagsCallback* flags.
To implement a character limit, provide a callback that drops input characters when the requested length has been reached.
func IsAnyItemFocused ¶ added in v1.9.0
func IsAnyItemFocused() bool
IsAnyItemFocused returns true if any item is focused.
func IsAnyMouseDown ¶ added in v1.9.0
func IsAnyMouseDown() bool
IsAnyMouseDown returns true if any mouse button is currently being held down.
func IsItemFocused ¶ added in v1.9.0
func IsItemFocused() bool
IsItemFocused returns true if the last item is focused.
func IsItemHovered ¶ added in v0.4.0
func IsItemHovered() bool
IsItemHovered calls IsItemHoveredV(HoveredFlagsDefault)
func IsItemHoveredV ¶ added in v0.4.0
IsItemHoveredV returns true if the last item is hovered. (and usable, aka not blocked by a popup, etc.). See HoveredFlags for more options.
func IsKeyDown ¶ added in v1.9.0
IsKeyDown returns true if the corresponding key is currently being held down.
func IsKeyPressed ¶ added in v1.4.0
IsKeyPressed calls IsKeyPressedV(key, true).
func IsKeyPressedV ¶ added in v1.9.0
IsKeyPressedV returns true if the corresponding key was pressed (went from !Down to Down). If repeat=true and the key is being held down then the press is repeated using io.KeyRepeatDelay and KeyRepeatRate
func IsKeyReleased ¶ added in v1.9.0
IsKeyReleased returns true if the corresponding key was released (went from Down to !Down).
func IsMouseClicked ¶ added in v1.9.0
IsMouseClicked calls IsMouseClickedV(key, false).
func IsMouseClickedV ¶ added in v1.9.0
IsMouseClickedV returns true if the mouse button was clicked (0=left, 1=right, 2=middle) If repeat=true and the mouse button is being held down then the click is repeated using io.KeyRepeatDelay and KeyRepeatRate
func IsMouseDoubleClicked ¶ added in v1.9.0
IsMouseDoubleClicked returns true if the mouse button was double-clicked (0=left, 1=right, 2=middle).
func IsMouseDown ¶ added in v1.9.0
IsMouseDown returns true if the corresponding mouse button is currently being held down.
func IsMouseReleased ¶ added in v1.9.0
IsMouseReleased returns true if the mouse button was released (went from Down to !Down).
func LabelText ¶ added in v0.3.0
func LabelText(label, text string)
LabelText adds text+label aligned the same way as value+label widgets.
func ListBox ¶ added in v1.4.0
ListBox calls ListBoxV(label, currentItem, items, -1) The function returns true if the selection was changed. The value of currentItem will indicate the new selected item.
func ListBoxV ¶ added in v1.4.0
ListBoxV creates a list of selectables of given items with equal height, enclosed with header and footer. This version accepts a custom item height. The function returns true if the selection was changed. The value of currentItem will indicate the new selected item.
func MenuItemV ¶ added in v0.2.0
MenuItemV adds a menu item with given label. Returns true if the item is selected. If selected is not nil, it will be toggled when true is returned. Shortcuts are displayed for convenience but not processed by ImGui at the moment.
func MouseCursor ¶ added in v1.10.0
func MouseCursor() int
MouseCursor returns desired cursor type, reset in imgui.NewFrame(), this is updated during the frame. Valid before Render(). If you use software rendering by setting io.MouseDrawCursor ImGui will render those for you.
func NewFrame ¶
func NewFrame()
NewFrame starts a new ImGui frame, you can submit any command from this point until Render()/EndFrame().
func NextColumn ¶ added in v1.6.0
func NextColumn()
NextColumn next column, defaults to current row or next row if the current row is finished.
func OpenPopup ¶ added in v0.2.0
func OpenPopup(id string)
OpenPopup marks popup as open (don't call every frame!). Popups are closed when user click outside, or if CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block. By default, Selectable()/MenuItem() are calling CloseCurrentPopup(). Popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level).
func PlotHistogram ¶ added in v1.8.0
PlotHistogram draws an array of floats as a bar graph. It calls PlotHistogramV using no overlay text and automatically calculated scale and graph size.
func PlotHistogramV ¶ added in v1.8.0
func PlotHistogramV(label string, values []float32, valuesOffset int, overlayText string, scaleMin float32, scaleMax float32, graphSize Vec2)
PlotHistogramV draws an array of floats as a bar graph with additional options. valuesOffset specifies an offset into the values array at which to start drawing, wrapping around when the end of the values array is reached. overlayText specifies a string to print on top of the graph. scaleMin and scaleMax define the scale of the y axis, if either is math.MaxFloat32 that value is calculated from the input data. graphSize defines the size of the graph, if either coordinate is zero the default size for that direction is used.
func PlotLines ¶ added in v1.8.0
PlotLines draws an array of floats as a line graph. It calls PlotLinesV using no overlay text and automatically calculated scale and graph size.
func PlotLinesV ¶ added in v1.8.0
func PlotLinesV(label string, values []float32, valuesOffset int, overlayText string, scaleMin float32, scaleMax float32, graphSize Vec2)
PlotLinesV draws an array of floats as a line graph with additional options. valuesOffset specifies an offset into the values array at which to start drawing, wrapping around when the end of the values array is reached. overlayText specifies a string to print on top of the graph. scaleMin and scaleMax define the scale of the y axis, if either is math.MaxFloat32 that value is calculated from the input data. graphSize defines the size of the graph, if either coordinate is zero the default size for that direction is used.
func PopFont ¶ added in v0.3.0
func PopFont()
PopFont removes the previously pushed font from the stack.
func PopID ¶ added in v0.3.0
func PopID()
PopID removes the last pushed identifier from the ID stack.
func PopItemWidth ¶ added in v0.2.0
func PopItemWidth()
PopItemWidth must be called for each call to PushItemWidth().
func PopStyleColorV ¶ added in v0.2.0
func PopStyleColorV(count int)
PopStyleColorV reverts the given amount of style color changes.
func PopStyleVarV ¶ added in v0.2.0
func PopStyleVarV(count int)
PopStyleVarV reverts the given amount of style variable changes.
func PopTextWrapPos ¶ added in v0.2.0
func PopTextWrapPos()
PopTextWrapPos resets the last pushed position.
func ProgressBar ¶ added in v1.7.0
func ProgressBar(fraction float32)
ProgressBar calls ProgressBarV(fraction, Vec2{X: -1, Y: 0}, "").
func ProgressBarV ¶ added in v1.7.0
ProgressBarV creates a progress bar. size (for each axis) < 0.0f: align to end, 0.0f: auto, > 0.0f: specified size
func PushFont ¶ added in v0.3.0
func PushFont(font Font)
PushFont adds the given font on the stack. Use DefaultFont to refer to the default font.
func PushID ¶ added in v0.3.0
func PushID(id string)
PushID pushes the given identifier into the ID stack. IDs are hash of the entire stack!
func PushItemWidth ¶ added in v0.2.0
func PushItemWidth(width float32)
PushItemWidth sets width of items for the common item+label case, in pixels. 0.0f = default to ~2/3 of windows width, >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -1.0f always align width to the right side).
func PushStyleColor ¶ added in v0.2.0
func PushStyleColor(id StyleColorID, color Vec4)
PushStyleColor pushes the current style color for given ID on a stack and sets the given one. To revert to the previous color, call PopStyleColor().
func PushStyleVarFloat ¶ added in v0.2.0
func PushStyleVarFloat(id StyleVarID, value float32)
PushStyleVarFloat pushes a float value on the stack to temporarily modify a style variable.
func PushStyleVarVec2 ¶ added in v0.2.0
func PushStyleVarVec2(id StyleVarID, value Vec2)
PushStyleVarVec2 pushes a Vec2 value on the stack to temporarily modify a style variable.
func PushTextWrapPos ¶ added in v0.2.0
func PushTextWrapPos()
PushTextWrapPos calls PushTextWrapPosV(0.0).
func PushTextWrapPosV ¶ added in v0.2.0
func PushTextWrapPosV(wrapPosX float32)
PushTextWrapPosV defines word-wrapping for Text() commands. < 0.0f: no wrapping; 0.0f: wrap to end of window (or column); > 0.0f: wrap at 'wrapPosX' position in window local space. Requires a matching call to PopTextWrapPos().
func Render ¶
func Render()
Render ends the ImGui frame, finalize the draw data. After this method, call RenderedDrawData to retrieve the draw commands and execute them.
func SameLineV ¶ added in v0.2.0
SameLineV is between widgets or groups to layout them horizontally.
func Selectable ¶ added in v0.2.0
Selectable calls SelectableV(label, false, 0, Vec2{0, 0})
func SelectableV ¶ added in v0.2.0
SelectableV returns true if the user clicked it, so you can modify your selection state. flags are the SelectableFlags to apply. size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height
func Separator ¶ added in v0.2.0
func Separator()
Separator is generally horizontal. Inside a menu bar or in horizontal layout mode, this becomes a vertical separator.
func SetAssertHandler ¶ added in v0.3.0
func SetAssertHandler(handler AssertHandler)
SetAssertHandler registers a handler function for all future assertions. Setting nil will disable special handling. The default handler panics.
func SetColumnOffset ¶ added in v1.6.0
SetColumnOffset set position of column line (in pixels, from the left side of the contents region). pass -1 to use current column.
func SetColumnWidth ¶ added in v1.6.0
SetColumnWidth sets column width (in pixels). pass -1 to use current column.
func SetCursorPos ¶ added in v0.5.0
func SetCursorPos(localPos Vec2)
SetCursorPos sets the cursor relative to the current window.
func SetCursorScreenPos ¶ added in v1.8.0
func SetCursorScreenPos(absPos Vec2)
SetCursorScreenPos sets the cursor position in absolute screen coordinates.
func SetItemDefaultFocus ¶ added in v1.9.0
func SetItemDefaultFocus()
SetItemDefaultFocus makes the last item the default focused item of a window.
func SetMouseCursor ¶ added in v1.10.0
func SetMouseCursor(cursor int)
SetMouseCursor sets desired cursor type.
func SetNextTreeNodeOpen ¶ added in v0.4.0
SetNextTreeNodeOpen sets the open/collapsed state of the following tree node.
func SetNextWindowBgAlpha ¶ added in v0.3.0
func SetNextWindowBgAlpha(value float32)
SetNextWindowBgAlpha sets next window background color alpha. Helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg.
func SetNextWindowContentSize ¶ added in v1.12.0
func SetNextWindowContentSize(size Vec2)
SetNextWindowContentSize sets next window content size (~ enforce the range of scrollbars). Does not include window decorations (title bar, menu bar, etc.). Set one axis to 0.0 to leave it automatic. This function must be called before Begin() to take effect.
func SetNextWindowFocus ¶ added in v0.2.0
func SetNextWindowFocus()
SetNextWindowFocus sets next window to be focused / front-most. Call before Begin().
func SetNextWindowPos ¶ added in v0.2.0
func SetNextWindowPos(pos Vec2)
SetNextWindowPos calls SetNextWindowPosV(pos, 0, Vec{0,0})
func SetNextWindowPosV ¶ added in v0.2.0
SetNextWindowPosV sets next window position. Call before Begin(). Use pivot=(0.5,0.5) to center on given point, etc.
func SetNextWindowSize ¶ added in v0.2.0
func SetNextWindowSize(size Vec2)
SetNextWindowSize calls SetNextWindowSizeV(size, 0)
func SetNextWindowSizeV ¶ added in v0.2.0
SetNextWindowSizeV sets next window size. Set axis to 0.0 to force an auto-fit on this axis. Call before Begin().
func SetScrollHereY ¶ added in v1.7.0
func SetScrollHereY(ratio float32)
SetScrollHereY adjusts scrolling amount to make current cursor position visible. ratio=0.0: top, 0.5: center, 1.0: bottom. When using to make a "default/current item" visible, consider using SetItemDefaultFocus() instead.
func SetTabItemClosed ¶ added in v1.11.0
func SetTabItemClosed(tabOrDockedWindowLabel string)
SetTabItemClosed notify TabBar or Docking system of a closed tab/window ahead (useful to reduce visual flicker on reorderable tab bars). For tab-bar: call after BeginTabBar() and before Tab submissions. Otherwise call with a window name.
func SetTooltip ¶ added in v0.4.0
func SetTooltip(text string)
SetTooltip sets a text tooltip under the mouse-cursor, typically use with IsItemHovered(). Overrides any previous call to SetTooltip().
func ShowDemoWindow ¶
func ShowDemoWindow(open *bool)
ShowDemoWindow creates a demo/test window. Demonstrates most ImGui features. Call this to learn about the library! Try to make it always available in your application!
func ShowUserGuide ¶ added in v0.2.0
func ShowUserGuide()
ShowUserGuide adds basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls).
func SliderFloat ¶ added in v1.3.0
SliderFloat calls SliderIntV(label, value, min, max, "%.3f", 1.0).
func SliderFloat3 ¶ added in v1.4.0
SliderFloat3 calls SliderFloat3V(label, values, min, max, "%.3f", 1,0).
func SliderFloat3V ¶ added in v1.4.0
func SliderFloat3V(label string, values *[3]float32, min, max float32, format string, power float32) bool
SliderFloat3V creates slider for a 3D vector.
func SliderFloatV ¶ added in v1.3.0
func SliderFloatV(label string, value *float32, min, max float32, format string, power float32) bool
SliderFloatV creates a slider for floats.
func SliderIntV ¶ added in v0.2.0
SliderIntV creates a slider for integers.
func Text ¶ added in v0.2.0
func Text(text string)
Text adds formatted text. See PushTextWrapPosV() or PushStyleColorV() for modifying the output. Without any modified style stack, the text is unformatted.
func TextLineHeight ¶ added in v0.2.0
func TextLineHeight() float32
TextLineHeight returns ~ FontSize.
func TextLineHeightWithSpacing ¶ added in v0.2.0
func TextLineHeightWithSpacing() float32
TextLineHeightWithSpacing returns ~ FontSize + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of text).
func TreeNodeToLabelSpacing ¶ added in v1.10.0
func TreeNodeToLabelSpacing() float32
TreeNodeToLabelSpacing returns the horizontal distance preceding label for a regular unframed TreeNode.
func TreeNodeV ¶ added in v0.4.0
TreeNodeV returns true if the tree branch is to be rendered. Call TreePop() in this case.
func TreePop ¶ added in v0.4.0
func TreePop()
TreePop finishes a tree branch. This has to be called for a matching TreeNodeV call returning true.
func VertexBufferLayout ¶
VertexBufferLayout returns the byte sizes necessary to select fields in a vertex buffer of a DrawList.
func WindowHeight ¶ added in v1.8.0
func WindowHeight() float32
WindowHeight returns the height of the current window.
func WindowWidth ¶ added in v1.8.0
func WindowWidth() float32
WindowWidth returns the width of the current window.
Types ¶
type AllocatedGlyphRanges ¶ added in v1.2.0
type AllocatedGlyphRanges struct {
GlyphRanges
}
AllocatedGlyphRanges are GlyphRanges dynamically allocated by the application. Such ranges need to be freed when they are no longer in use to avoid resource leak.
func (*AllocatedGlyphRanges) Free ¶ added in v1.2.0
func (ranges *AllocatedGlyphRanges) Free()
Free releases the underlying memory of the ranges. Call this method when the ranges are no longer in use.
type Alpha8Image ¶
Alpha8Image represents a imgui backed 8-bit alpha value image.
type AssertHandler ¶ added in v0.3.0
AssertHandler is a handler for an assertion that happened in the native part of ImGui.
type Clipboard ¶ added in v1.10.0
type Clipboard interface { // Text returns the current text from the clipboard, if available. Text() (string, error) // SetText sets the text as the current text on the clipboard. SetText(value string) }
Clipboard describes the access to the text clipboard of the window manager.
type Condition ¶ added in v0.2.0
type Condition int
Condition for SetWindow***(), SetNextWindow***(), SetNextTreeNode***() functions. Important: Treat as a regular enum! Do NOT combine multiple values using binary operators! All the functions above treat 0 as a shortcut to ConditionAlways.
const ( // ConditionAlways sets the variable. ConditionAlways Condition = 1 << iota // ConditionOnce sets the variable once per runtime session (only the first call with succeed). ConditionOnce // ConditionFirstUseEver sets the variable if the object/window has no persistently saved data (no entry in .ini file). ConditionFirstUseEver // ConditionAppearing sets the variable if the object/window is appearing after being hidden/inactive (or the first time). ConditionAppearing )
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
Context specifies a scope of ImGui.
All contexts share a same FontAtlas by default. If you want different font atlas, you can create them and overwrite the CurrentIO.Fonts of an ImGui context.
func CreateContext ¶
CreateContext produces a new internal state scope. Passing nil for the fontAtlas creates a default font.
func CurrentContext ¶
CurrentContext returns the currently active state scope. Returns ErrNoContext if no context is available.
func (*Context) Destroy ¶
func (context *Context) Destroy()
Destroy removes the internal state scope. Trying to destroy an already destroyed context does nothing.
func (Context) SetCurrent ¶
SetCurrent activates this context as the currently active state scope.
type DrawCommand ¶
type DrawCommand uintptr
DrawCommand describes one GPU call (or a callback).
func (DrawCommand) CallUserCallback ¶
func (cmd DrawCommand) CallUserCallback(list DrawList)
CallUserCallback calls the user callback instead of rendering the vertices. ClipRect and TextureID will be set normally.
func (DrawCommand) ClipRect ¶
func (cmd DrawCommand) ClipRect() (rect Vec4)
ClipRect defines the clipping rectangle (x1, y1, x2, y2).
func (DrawCommand) ElementCount ¶
func (cmd DrawCommand) ElementCount() int
ElementCount is the number of indices (multiple of 3) to be rendered as triangles. Vertices are stored in the callee DrawList's VertexBuffer, indices in IndexBuffer.
func (DrawCommand) HasUserCallback ¶
func (cmd DrawCommand) HasUserCallback() bool
HasUserCallback returns true if this handle command should be deferred.
func (DrawCommand) TextureID ¶
func (cmd DrawCommand) TextureID() TextureID
TextureID is the user-provided texture ID. Set by user in FontAtlas.SetTextureID() for fonts or passed to Image*() functions. Ignore if never using images or multiple fonts atlas.
type DrawData ¶
type DrawData uintptr
DrawData contains all draw data to render an ImGui frame.
func RenderedDrawData ¶
func RenderedDrawData() DrawData
RenderedDrawData returns the created draw commands, which are valid after Render() and until the next call to NewFrame(). This is what you have to render.
func (DrawData) CommandLists ¶
CommandLists is an array of DrawList to render. The DrawList are owned by the context and only pointed to from here.
func (DrawData) ScaleClipRects ¶
ScaleClipRects is a helper to scale the ClipRect field of each DrawCmd. Use if your final output buffer is at a different scale than ImGui expects, or if there is a difference between your window resolution and framebuffer resolution.
type DrawList ¶
type DrawList uintptr
DrawList is a draw-command list. This is the low-level list of polygons that ImGui functions are filling. At the end of the frame, all command lists are passed to your render function for rendering.
Each ImGui window contains its own DrawList. You can use GetWindowDrawList() to access the current window draw list and draw custom primitives.
You can interleave normal ImGui calls and adding primitives to the current draw list.
All positions are generally in pixel coordinates (top-left at (0,0), bottom-right at io.DisplaySize), however you are totally free to apply whatever transformation matrix to want to the data (if you apply such transformation you'll want to apply it to ClipRect as well)
Important: Primitives are always added to the list and not culled (culling is done at higher-level by ImGui functions), if you use this API a lot consider coarse culling your drawn objects.
func (DrawList) Commands ¶
func (list DrawList) Commands() []DrawCommand
Commands returns the list of draw commands. Typically 1 command = 1 GPU draw call, unless the command is a callback.
func (DrawList) IndexBuffer ¶
IndexBuffer returns the handle information of the whole index buffer. Returned are the handle pointer and the total byte size. The buffer is a packed array of index entries, each consisting of an integer offset. To determine the byte size, call IndexBufferLayout.
func (DrawList) VertexBuffer ¶
VertexBuffer returns the handle information of the whole vertex buffer. Returned are the handle pointer and the total byte size. The buffer is a packed array of vertex entries, each consisting of a 2D position vector, a 2D UV vector, and a 4-byte color value. To determine the byte size and offset values, call VertexBufferLayout.
type Font ¶ added in v0.3.0
type Font uintptr
Font describes one loaded font in an atlas.
const DefaultFont Font = 0
DefaultFont can be used to refer to the default font of the current font atlas without having the actual font reference.
type FontAtlas ¶
type FontAtlas uintptr
FontAtlas contains runtime data for multiple fonts, bake multiple fonts into a single texture, TTF/OTF font loader
func (FontAtlas) AddFontDefault ¶ added in v0.3.0
AddFontDefault adds the default font to the atlas. This is done by default if you do not call any of the AddFont* methods before retrieving the texture data.
func (FontAtlas) AddFontDefaultV ¶ added in v1.7.0
func (atlas FontAtlas) AddFontDefaultV(cfg FontConfig) Font
AddFontDefaultV adds the default font to the atlas using the specified FontConfig.
func (FontAtlas) AddFontFromFileTTF ¶ added in v0.3.0
AddFontFromFileTTF calls AddFontFromFileTTFV(filename, sizePixels, DefaultFontConfig, EmptyGlyphRanges).
func (FontAtlas) AddFontFromFileTTFV ¶ added in v1.2.0
func (atlas FontAtlas) AddFontFromFileTTFV(filename string, sizePixels float32, config FontConfig, glyphRange GlyphRanges) Font
AddFontFromFileTTFV attempts to load a font from given TTF file.
func (FontAtlas) AddFontFromMemoryTTF ¶ added in v1.11.0
AddFontFromMemoryTTF calls AddFontFromMemoryTTFV(fontData, sizePixels, DefaultFontConfig, EmptyGlyphRanges).
func (FontAtlas) AddFontFromMemoryTTFV ¶ added in v1.11.0
func (atlas FontAtlas) AddFontFromMemoryTTFV( fontData []byte, sizePixels float32, config FontConfig, glyphRange GlyphRanges, ) Font
AddFontFromMemoryTTFV attempts to load a font from given TTF byte array.
func (FontAtlas) GlyphRangesChinese ¶ added in v1.2.0
func (atlas FontAtlas) GlyphRangesChinese() GlyphRanges
GlyphRangesChinese calls GlyphRangesChineseFull() for compatibility reasons. Deprecated: This function will be removed with v2.x.x ; Use GlyphRangesChineseFull instead.
func (FontAtlas) GlyphRangesChineseFull ¶ added in v1.5.0
func (atlas FontAtlas) GlyphRangesChineseFull() GlyphRanges
GlyphRangesChineseFull describes Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs.
func (FontAtlas) GlyphRangesChineseSimplifiedCommon ¶ added in v1.5.0
func (atlas FontAtlas) GlyphRangesChineseSimplifiedCommon() GlyphRanges
GlyphRangesChineseSimplifiedCommon describes Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese.
func (FontAtlas) GlyphRangesCyrillic ¶ added in v1.2.0
func (atlas FontAtlas) GlyphRangesCyrillic() GlyphRanges
GlyphRangesCyrillic describes Default + about 400 Cyrillic characters.
func (FontAtlas) GlyphRangesDefault ¶ added in v1.2.0
func (atlas FontAtlas) GlyphRangesDefault() GlyphRanges
GlyphRangesDefault describes Basic Latin, Extended Latin.
func (FontAtlas) GlyphRangesJapanese ¶ added in v1.2.0
func (atlas FontAtlas) GlyphRangesJapanese() GlyphRanges
GlyphRangesJapanese describes Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs.
func (FontAtlas) GlyphRangesKorean ¶ added in v1.2.0
func (atlas FontAtlas) GlyphRangesKorean() GlyphRanges
GlyphRangesKorean describes Default + Korean characters.
func (FontAtlas) GlyphRangesThai ¶ added in v1.2.0
func (atlas FontAtlas) GlyphRangesThai() GlyphRanges
GlyphRangesThai describes Default + Thai characters.
func (FontAtlas) SetTexDesiredWidth ¶ added in v1.2.0
SetTexDesiredWidth registers the width desired by user before building the image. Must be a power-of-two. If have many glyphs your graphics API have texture size restrictions you may want to increase texture width to decrease height. Set to 0 by default, causing auto-calculation.
func (FontAtlas) SetTextureID ¶
SetTextureID sets user data to refer to the texture once it has been uploaded to user's graphic systems. It is passed back to you during rendering via the DrawCommand.
func (FontAtlas) TextureDataAlpha8 ¶
func (atlas FontAtlas) TextureDataAlpha8() *Alpha8Image
TextureDataAlpha8 returns the image in 8-bit alpha values for the font atlas. The returned image is valid as long as the font atlas is.
func (FontAtlas) TextureDataRGBA32 ¶ added in v1.4.0
func (atlas FontAtlas) TextureDataRGBA32() *RGBA32Image
TextureDataRGBA32 returns the image in 32-bit RGBA values for the font atlas. The returned image is valid as long as the font atlas is.
type FontConfig ¶ added in v1.2.0
type FontConfig uintptr
FontConfig describes properties of a single font.
const DefaultFontConfig FontConfig = 0
DefaultFontConfig lets ImGui take default properties as per implementation. The properties of the default configuration cannot be changed using the SetXXX functions.
func NewFontConfig ¶ added in v1.7.0
func NewFontConfig() FontConfig
NewFontConfig creates a new font configuration. Delete must be called on the returned config.
func (*FontConfig) Delete ¶ added in v1.7.0
func (config *FontConfig) Delete()
Delete removes the font configuration and resets it to the DefaultFontConfig.
func (FontConfig) SetGlyphMaxAdvanceX ¶ added in v1.7.0
func (config FontConfig) SetGlyphMaxAdvanceX(value float32)
SetGlyphMaxAdvanceX sets the maximum AdvanceX for glyphs. Set both Min/Max to enforce mono-space font.
func (FontConfig) SetGlyphMinAdvanceX ¶ added in v1.7.0
func (config FontConfig) SetGlyphMinAdvanceX(value float32)
SetGlyphMinAdvanceX sets the minimum AdvanceX for glyphs. Set Min to align font icons, set both Min/Max to enforce mono-space font.
func (FontConfig) SetMergeMode ¶ added in v1.7.0
func (config FontConfig) SetMergeMode(value bool)
SetMergeMode merges the new fonts into the previous font if enabled. This way you can combine multiple input fonts into one (e.g. ASCII font + icons + Japanese glyphs). You may want to use GlyphOffset.y when merge font of different heights.
func (FontConfig) SetOversampleH ¶ added in v1.7.0
func (config FontConfig) SetOversampleH(value int)
SetOversampleH sets the oversampling amount for the X axis. Rasterize at higher quality for sub-pixel positioning. We don't use sub-pixel positions on the Y axis.
func (FontConfig) SetOversampleV ¶ added in v1.7.0
func (config FontConfig) SetOversampleV(value int)
SetOversampleV sets the oversampling amount for the Y axis. Rasterize at higher quality for sub-pixel positioning. We don't use sub-pixel positions on the Y axis.
func (FontConfig) SetPixelSnapH ¶ added in v1.7.0
func (config FontConfig) SetPixelSnapH(value bool)
SetPixelSnapH aligns every glyph to pixel boundary if enabled. Useful e.g. if you are merging a non-pixel aligned font with the default font. If enabled, you can set OversampleH/V to 1.
func (FontConfig) SetSize ¶ added in v1.7.0
func (config FontConfig) SetSize(sizePixels float32)
SetSize sets the size in pixels for rasterizer (more or less maps to the resulting font height).
type GlyphRanges ¶ added in v1.2.0
type GlyphRanges uintptr
GlyphRanges describes a list of Unicode ranges; 2 value per range, values are inclusive. Standard ranges can be queried from FontAtlas.GlyphRanges*() functions.
const EmptyGlyphRanges GlyphRanges = 0
EmptyGlyphRanges is one that does not contain any ranges.
type GlyphRangesBuilder ¶ added in v1.2.0
type GlyphRangesBuilder struct {
// contains filtered or unexported fields
}
GlyphRangesBuilder can be used to create a new, combined, set of ranges.
func (*GlyphRangesBuilder) Add ¶ added in v1.2.0
func (builder *GlyphRangesBuilder) Add(from, to rune)
Add extends the builder with the given range (inclusive). from must be smaller, or equal to, to - otherwise the range is ignored.
func (*GlyphRangesBuilder) AddExisting ¶ added in v1.2.0
func (builder *GlyphRangesBuilder) AddExisting(ranges ...GlyphRanges)
AddExisting adds the given set of ranges to the builder. The provided ranges are immediately extracted.
func (*GlyphRangesBuilder) Build ¶ added in v1.2.0
func (builder *GlyphRangesBuilder) Build() AllocatedGlyphRanges
Build combines all the currently registered ranges and creates a new instance. The returned ranges object needs to be explicitly freed in order to release resources.
type IO ¶
type IO struct {
// contains filtered or unexported fields
}
IO is where your app communicate with ImGui. Access via CurrentIO(). Read 'Programmer guide' section in imgui.cpp file for general usage.
func CurrentIO ¶
func CurrentIO() IO
CurrentIO returns access to the ImGui communication struct for the currently active context.
func (IO) AddInputCharacters ¶ added in v0.4.0
AddInputCharacters adds a new character into InputCharacters[].
func (IO) AddMouseWheelDelta ¶
AddMouseWheelDelta adds the given offsets to the current mouse wheel values. 1 vertical unit scrolls about 5 lines text. Most users don't have a mouse with an horizontal wheel, may not be provided by all back-ends.
func (IO) Fonts ¶
Fonts returns the font atlas to load and assemble one or more fonts into a single tightly packed texture.
func (IO) KeyMap ¶ added in v0.4.0
KeyMap maps a key into the KeysDown array which represents your "native" keyboard state.
func (IO) KeyRelease ¶ added in v0.4.0
KeyRelease clears the KeysDown flag.
func (IO) SetBackendFlags ¶ added in v1.10.0
SetBackendFlags sets back-end capabilities.
func (IO) SetClipboard ¶ added in v1.10.0
SetClipboard registers a clipboard for text copy/paste actions. If no clipboard is set, then a fallback implementation may be used, if available for the OS. To disable clipboard handling overall, pass nil as the Clipboard.
Since ImGui queries the clipboard text via a return value, the wrapper has to hold the current clipboard text as a copy in memory. This memory will be freed at the next clipboard operation.
func (IO) SetConfigFlags ¶ added in v1.10.0
SetConfigFlags sets the gamepad/keyboard navigation options, etc.
func (IO) SetDeltaTime ¶
SetDeltaTime sets the time elapsed since last frame, in seconds.
func (IO) SetDisplaySize ¶
SetDisplaySize sets the size in pixels.
func (IO) SetFontGlobalScale ¶
SetFontGlobalScale sets the global scaling factor for all fonts.
func (IO) SetIniFilename ¶ added in v1.7.0
SetIniFilename changes the filename for the settings. Default: "imgui.ini". Use an empty string to disable the ini from being used.
func (IO) SetMouseButtonDown ¶
SetMouseButtonDown sets whether a specific mouse button is currently pressed. Mouse buttons: left, right, middle + extras. ImGui itself mostly only uses left button (BeginPopupContext** are using right button). Other buttons allows us to track if the mouse is being used by your application + available to user as a convenience via IsMouse** API.
func (IO) SetMousePosition ¶
SetMousePosition sets the mouse position, in pixels. Set to Vec2(-math.MaxFloat32,-mathMaxFloat32) if mouse is unavailable (on another screen, etc.)
func (IO) WantCaptureKeyboard ¶ added in v0.4.0
WantCaptureKeyboard returns true if imgui will use the keyboard inputs. Do not dispatch them to your main game/application (in both cases, always pass keyboard inputs to imgui). (e.g. InputText active, or an imgui window is focused and navigation is enabled, etc.).
func (IO) WantCaptureMouse ¶ added in v0.3.0
WantCaptureMouse returns true if imgui will use the mouse inputs. Do not dispatch them to your main game/application in this case. In either case, always pass on mouse inputs to imgui. (e.g. unclicked mouse is hovering over an imgui window, widget is active, mouse was clicked over an imgui window, etc.)
func (IO) WantTextInput ¶ added in v0.4.0
WantTextInput is true, you may display an on-screen keyboard. This is set by ImGui when it wants textual keyboard input to happen (e.g. when a InputText widget is active).
type InputTextCallback ¶ added in v1.6.0
type InputTextCallback func(InputTextCallbackData) int32
InputTextCallback is called for sharing state of an input field. By default, the callback should return 0.
type InputTextCallbackData ¶ added in v1.6.0
type InputTextCallbackData struct {
// contains filtered or unexported fields
}
InputTextCallbackData represents the shared state of InputText(), passed as an argument to your callback.
func (InputTextCallbackData) Buffer ¶ added in v1.6.0
func (data InputTextCallbackData) Buffer() []byte
Buffer returns a view into the current UTF-8 buffer. Only during the callbacks of [Completion,History,Always] the current buffer is returned. The returned slice is a temporary view into the underlying raw buffer. Do not keep it! The underlying memory allocation may even change through a call to InsertBytes().
You may change the buffer through the following ways: If the new text has a different (encoded) length, use the functions InsertBytes() and/or DeleteBytes(). Otherwise you may keep the buffer as is and modify the bytes. If you change the buffer this way directly, mark the buffer as modified with MarkBufferModified().
func (InputTextCallbackData) CursorPos ¶ added in v1.6.0
func (data InputTextCallbackData) CursorPos() int
CursorPos returns the byte-offset of the cursor within the buffer. Only valid during [Completion,History,Always] callbacks.
func (InputTextCallbackData) DeleteBytes ¶ added in v1.6.0
func (data InputTextCallbackData) DeleteBytes(offset, count int)
DeleteBytes removes the given count of bytes starting at the specified byte offset within the buffer. This function can be called during the [Completion,History,Always] callbacks. Clears the current selection.
This function ignores the deletion beyond the current buffer length. Calling with negative offset or count arguments will panic.
func (InputTextCallbackData) EventChar ¶ added in v1.6.0
func (data InputTextCallbackData) EventChar() rune
EventChar returns the current character input. Only valid during CharFilter callback.
func (InputTextCallbackData) EventFlag ¶ added in v1.6.0
func (data InputTextCallbackData) EventFlag() int
EventFlag returns one of the InputTextFlagsCallback* constants to indicate the nature of the callback.
func (InputTextCallbackData) EventKey ¶ added in v1.6.0
func (data InputTextCallbackData) EventKey() int
EventKey returns the currently pressed key. Valid for completion and history callbacks.
func (InputTextCallbackData) Flags ¶ added in v1.6.0
func (data InputTextCallbackData) Flags() int
Flags returns the set of flags that the user originally passed to InputText.
func (InputTextCallbackData) InsertBytes ¶ added in v1.6.0
func (data InputTextCallbackData) InsertBytes(offset int, bytes []byte)
InsertBytes inserts the given bytes at given byte offset into the buffer. Calling this function may change the underlying buffer allocation.
This function can be called during the [Completion,History,Always] callbacks. Clears the current selection.
Calling with an offset outside of the range of the buffer will panic.
func (InputTextCallbackData) MarkBufferModified ¶ added in v1.6.0
func (data InputTextCallbackData) MarkBufferModified()
MarkBufferModified indicates that the content of the buffer was modified during a callback. Only considered during [Completion,History,Always] callbacks.
func (InputTextCallbackData) SelectionEnd ¶ added in v1.6.0
func (data InputTextCallbackData) SelectionEnd() int
SelectionEnd returns the byte-offset of the selection end within the buffer. Only valid during [Completion,History,Always] callbacks.
func (InputTextCallbackData) SelectionStart ¶ added in v1.6.0
func (data InputTextCallbackData) SelectionStart() int
SelectionStart returns the byte-offset of the selection start within the buffer. Only valid during [Completion,History,Always] callbacks.
func (InputTextCallbackData) SetCursorPos ¶ added in v1.6.0
func (data InputTextCallbackData) SetCursorPos(value int)
SetCursorPos changes the current byte-offset of the cursor within the buffer. Only valid during [Completion,History,Always] callbacks.
func (InputTextCallbackData) SetEventChar ¶ added in v1.6.0
func (data InputTextCallbackData) SetEventChar(value rune)
SetEventChar overrides what the user entered. Set to zero do drop the current input. Returning 1 from the callback also drops the current input. Only valid during CharFilter callback.
Note: The internal representation of characters is based on uint16, so less than rune would provide.
func (InputTextCallbackData) SetSelectionEnd ¶ added in v1.6.0
func (data InputTextCallbackData) SetSelectionEnd(value int)
SetSelectionEnd changes the current byte-offset of the selection end within the buffer. Only valid during [Completion,History,Always] callbacks.
func (InputTextCallbackData) SetSelectionStart ¶ added in v1.6.0
func (data InputTextCallbackData) SetSelectionStart(value int)
SetSelectionStart changes the current byte-offset of the selection start within the buffer. Only valid during [Completion,History,Always] callbacks.
type ListClipper ¶ added in v1.12.0
type ListClipper struct { StartPosY float32 ItemsHeight float32 ItemsCount int StepNo int DisplayStart int DisplayEnd int }
ListClipper is a helper to manually clip large list of items. If you are submitting lots of evenly spaced items and you have a random access to the list, you can perform coarse clipping based on visibility to save yourself from processing those items at all. The clipper calculates the range of visible items and advance the cursor to compensate for the non-visible items we have skipped. ImGui already clips items based on their bounds but it needs to measure text size to do so. Coarse clipping before submission makes this cost and your own data fetching/submission cost null.
Usage
var clipper imgui.ListClipper clipper.Begin(1000) // we have 1000 elements, evenly spaced. for clipper.Step() for i := clipper.DisplayStart; i < clipper.DisplayEnd; i++ imgui.Text(fmt.Sprintf("line number %d", i))
Step 0: the clipper let you process the first element, regardless of it being visible or not, so it can measure the element height (step skipped if user passed a known height at begin).
Step 1: the clipper infers height from first element, calculates the actual range of elements to display, and positions the cursor before the first element.
Step 2: dummy step only required if an explicit itemsHeight was passed to Begin() and user call Step(). Does nothing and switch to Step 3.
Step 3: the clipper validates that we have reached the expected Y position (corresponding to element DisplayEnd), advance the cursor to the end of the list and then returns 'false' to end the loop.
func (*ListClipper) Begin ¶ added in v1.12.0
func (clipper *ListClipper) Begin(itemsCount int)
Begin calls BeginV(itemsCount, -1.0) .
func (*ListClipper) BeginV ¶ added in v1.12.0
func (clipper *ListClipper) BeginV(itemsCount int, itemsHeight float32)
BeginV must be called before stepping. Use an itemCount of math.MaxInt if you don't know how many items you have. In this case the cursor won't be advanced in the final step.
For itemsHeight, use -1.0 to be calculated automatically on first step. Otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing() or GetFrameHeightWithSpacing().
func (*ListClipper) End ¶ added in v1.12.0
func (clipper *ListClipper) End()
End resets the clipper. This function is automatically called on the last call of Step() that returns false.
func (*ListClipper) Step ¶ added in v1.12.0
func (clipper *ListClipper) Step() bool
Step must be called in a loop until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items.
type RGBA32Image ¶ added in v1.4.0
RGBA32Image represents a imgui backed 32-bit RGBA (8 bits per channel) value image.
type Style ¶
type Style uintptr
Style describes the overall graphical representation of the user interface.
func CurrentStyle ¶
func CurrentStyle() Style
CurrentStyle returns the UI Style for the currently active context.
func (Style) ItemInnerSpacing ¶ added in v1.1.0
ItemInnerSpacing is the horizontal and vertical spacing between elements of a composed widget (e.g. a slider and its label).
func (Style) ScaleAllSizes ¶
ScaleAllSizes applies a scaling factor to all sizes. To scale your entire UI (e.g. if you want your app to use High DPI or generally be DPI aware) you may use this helper function. Scaling the fonts is done separately and is up to you.
Important: This operation is lossy because all sizes are rounded to integer. If you need to change your scale multiples, call this over a freshly initialized style rather than scaling multiple times.
func (Style) SetColor ¶ added in v0.2.0
func (style Style) SetColor(id StyleColorID, value Vec4)
SetColor sets a color value of the UI style.
type StyleColorID ¶ added in v0.2.0
type StyleColorID int
StyleColorID identifies a color in the UI style.
const ( StyleColorText StyleColorID = iota StyleColorTextDisabled StyleColorWindowBg StyleColorChildBg StyleColorPopupBg StyleColorBorder StyleColorBorderShadow StyleColorFrameBg StyleColorFrameBgHovered StyleColorFrameBgActive StyleColorTitleBg StyleColorTitleBgActive StyleColorTitleBgCollapsed StyleColorMenuBarBg StyleColorScrollbarBg StyleColorScrollbarGrab StyleColorScrollbarGrabHovered StyleColorScrollbarGrabActive StyleColorCheckMark StyleColorSliderGrab StyleColorSliderGrabActive StyleColorButton StyleColorButtonHovered StyleColorButtonActive StyleColorHeader StyleColorHeaderHovered StyleColorHeaderActive StyleColorSeparator StyleColorSeparatorHovered StyleColorSeparatorActive StyleColorResizeGrip StyleColorResizeGripHovered StyleColorResizeGripActive StyleColorTab StyleColorTabHovered StyleColorTabActive StyleColorTabUnfocused StyleColorTabUnfocusedActive StyleColorPlotLines StyleColorPlotLinesHovered StyleColorPlotHistogram StyleColorPlotHistogramHovered StyleColorTextSelectedBg StyleColorDragDropTarget StyleColorModalWindowDarkening // Darken/colorize entire screen behind a modal window, when one is active )
StyleColor identifier
type StyleVarID ¶ added in v0.2.0
type StyleVarID int
StyleVarID identifies a style variable in the UI style.
const ( // StyleVarAlpha is a float StyleVarAlpha StyleVarID = iota // StyleVarWindowPadding is a Vec2 StyleVarWindowPadding // StyleVarWindowRounding is a float StyleVarWindowRounding // StyleVarWindowBorderSize is a float StyleVarWindowBorderSize // StyleVarWindowMinSize is a Vec2 StyleVarWindowMinSize // StyleVarWindowTitleAlign is a Vec2 StyleVarWindowTitleAlign // StyleVarChildRounding is a float StyleVarChildRounding // StyleVarChildBorderSize is a float StyleVarChildBorderSize // StyleVarPopupRounding is a float StyleVarPopupRounding // StyleVarPopupBorderSize is a float StyleVarPopupBorderSize // StyleVarFramePadding is a Vec2 StyleVarFramePadding // StyleVarFrameRounding is a float StyleVarFrameRounding // StyleVarFrameBorderSize is a float StyleVarFrameBorderSize // StyleVarItemSpacing is a Vec2 StyleVarItemSpacing // StyleVarItemInnerSpacing is a Vec2 StyleVarItemInnerSpacing // StyleVarIndentSpacing is a float StyleVarIndentSpacing // StyleVarScrollbarSize is a float StyleVarScrollbarSize // StyleVarScrollbarRounding is a float StyleVarScrollbarRounding // StyleVarGrabMinSize is a float StyleVarGrabMinSize // StyleVarGrabRounding is a float StyleVarGrabRounding // StyleVarTabRounding is a float StyleVarTabRounding // StyleVarButtonTextAlign is a Vec2 StyleVarButtonTextAlign )
type TextureID ¶
type TextureID uintptr
TextureID is a user data to identify a texture.
TextureID is a uintptr used to pass renderer-agnostic texture references around until it hits your render function. imgui knows nothing about what those bits represent, it just passes them around. It is up to you to decide what you want the value to carry!
It could be an identifier to your OpenGL texture (cast as uint32), a key to your custom engine material, etc. At the end of the chain, your renderer takes this value to cast it back into whatever it needs to select a current texture to render.
To display a custom image/texture within an imgui window, you may use functions such as imgui.Image(). imgui will generate the geometry and draw calls using the TextureID that you passed and which your renderer can use. It is your responsibility to get textures uploaded to your GPU.
Note: Internally, the value is based on a pointer type, so its size is dependent on your architecture. For the most part, this will be 64bits on current systems (in 2018). Beware: This value must never be a Go pointer, because the value escapes the runtime!
type Vec2 ¶
Vec2 represents a two-dimensional vector.
func CalcTextSize ¶ added in v1.11.0
CalcTextSize calculate the size of the text
func ContentRegionAvail ¶ added in v1.8.0
func ContentRegionAvail() Vec2
ContentRegionAvail returns the size of the content region that is available (based on the current cursor position).
func CursorPos ¶ added in v1.8.0
func CursorPos() Vec2
CursorPos returns the cursor position in window coordinates (relative to window position).
func CursorScreenPos ¶ added in v1.8.0
func CursorScreenPos() Vec2
CursorScreenPos returns the cursor position in absolute screen coordinates.
func CursorStartPos ¶ added in v1.8.0
func CursorStartPos() Vec2
CursorStartPos returns the initial cursor position in window coordinates.
func WindowPos ¶ added in v1.8.0
func WindowPos() Vec2
WindowPos returns the current window position in screen space. This is useful if you want to do your own drawing via the DrawList API.
func WindowSize ¶ added in v1.8.0
func WindowSize() Vec2
WindowSize returns the size of the current window.
Source Files ¶
- AllocatedGlyphRanges.go
- Assert.go
- BackendFlags.go
- ColumnFlags.go
- ComboFlags.go
- Conditions.go
- ConfigFlags.go
- Context.go
- DrawCommand.go
- DrawData.go
- DrawList.go
- Font.go
- FontAtlas.go
- FontConfig.go
- GlyphRanges.go
- HoveredFlags.go
- IO.go
- InputText.go
- ListClipper.go
- MouseCursorFlags.go
- SelectableFlags.go
- Style.go
- TabBarFlags.go
- TabItemFlags.go
- TextureID.go
- TreeNodeFlags.go
- Vectors.go
- WindowFlags.go
- WrapperConverter.go
- doc.go
- imgui.go