diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 555b1a2..a82ede6 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-07-29T11:52:44","documenter_version":"1.5.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.4","generation_timestamp":"2024-08-02T22:07:45","documenter_version":"1.5.0"}} \ No newline at end of file diff --git a/dev/_changelog/index.html b/dev/_changelog/index.html index 0590f0d..318cc16 100644 --- a/dev/_changelog/index.html +++ b/dev/_changelog/index.html @@ -1,2 +1,2 @@ -Changelog · CImGui.jl

Changelog

This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.

[v2.1.0] - 2024-07-29

Added

[v2.0.0] - 2024-06-27

Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.

Added

  • A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.
  • The renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.

Changed

  • CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.
  • Breaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.
  • Breaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.
  • Breaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.

Deprecated

[v1.89.1] - 2024-05-19

Fixed

+Changelog · CImGui.jl

Changelog

This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.

[v2.2.0] - 2024-08-02

Added

  • Support for more GLMakie controls, and a tooltip for each figure by default ([#134]).

[v2.1.0] - 2024-07-29

Added

[v2.0.0] - 2024-06-27

Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.

Added

  • A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.
  • The renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.

Changed

  • CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.
  • Breaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.
  • Breaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.
  • Breaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.

Deprecated

[v1.89.1] - 2024-05-19

Fixed

diff --git a/dev/api/index.html b/dev/api/index.html index cf39669..9e6f329 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -1,34 +1,34 @@ -API Reference · CImGui.jl

API Reference

This page documents the wrapper functions we have for the ImGui API. The backends are documented separately in Backends.

You can always get the current ImGui version with:


CImGui.AddCallbackMethod
AddCallback(handle::Ptr{ImDrawList}, callback, callback_data)

Your rendering function must check for UserCallback in ImDrawCmd and call the function instead of rendering triangles.

source
CImGui.AddCircleFunction
AddCircle(handle::Ptr{ImDrawList}, centre, radius, col, num_segments=12, thickness=1.0)
source
CImGui.AddConvexPolyFilledMethod
AddConvexPolyFilled(handle::Ptr{ImDrawList}, points, num_points, col)
Note

Anti-aliased filling requires points to be in clockwise order.

source
CImGui.AddDrawCmdMethod
AddDrawCmd(handle::Ptr{ImDrawList})

This is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible.

source
CImGui.AddFontFromFileTTFFunction
AddFontFromFileTTF(self::Ptr{ImFontAtlas}, filename, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}
source
CImGui.AddFontFromMemoryCompressedBase85TTFFunction
AddFontFromMemoryCompressedBase85TTF(self::Ptr{ImFontAtlas}, compressed_font_data_base85, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}

'compressedfontdata_base85' still owned by caller.

source
CImGui.AddFontFromMemoryCompressedTTFFunction
AddFontFromMemoryCompressedTTF(self::Ptr{ImFontAtlas}, compressed_font_data, compressed_font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}

'compressedfontdata' still owned by caller.

source
CImGui.AddFontFromMemoryTTFFunction
AddFontFromMemoryTTF(self::Ptr{ImFontAtlas}, font_data, font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}
Note

Transfer ownership of 'ttfdata' to ImFontAtlas! Will be deleted after destruction of the atlas. Set `fontcfg.FontDataOwnedByAtlas=false` to keep ownership of your data and it won't be freed.

source
CImGui.AddImageFunction
AddImage(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a=(0,0), uv_b=(1,1), col=0xffffffff)
source
CImGui.AddImageQuadFunction
AddImageQuad(handle::Ptr{ImDrawList}, user_texture_id, a, b, c, d, uv_a=(0,0), uv_b=(1,0), uv_c=(1,1), uv_d=(0,1), col=0xffffffff)
source
CImGui.AddImageRoundedFunction
AddImageRounded(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a, uv_b, col, rounding, rounding_corners=ImDrawFlags_All)
source
CImGui.AddRectFunction
AddRect(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll, thickness=1.0)

Arguments

  • a: upper-left
  • b: lower-right
  • rounding_corners_flags: 4-bits corresponding to which corner to round
source
CImGui.AddRectFilledFunction
AddRectFilled(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)

Arguments

  • a: upper-left
  • b: lower-right
source
CImGui.AddTextFunction
AddText(handle::Ptr{ImDrawList}, font::Ptr{ImFont}, font_size, pos, col, text_begin, text_end=C_NULL, wrap_width=0.0, cpu_fine_clip_rect=C_NULL)
source
CImGui.AddTextFunction
AddText(handle::Ptr{ImDrawList}, pos, col, text_begin, text_end=C_NULL)
source
CImGui.AlignTextToFramePaddingMethod
AlignTextToFramePadding()

Vertically align 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).

source
CImGui.AppendFunction
Append(handle::Ptr{ImGuiTextBuffer}, str, str_end=C_NULL)

Text buffer for logging/accumulating text.

source
CImGui.ArrowButtonMethod
ArrowButton(str_id, dir) -> Bool

Return true when the value has been changed or when pressed/selected. Create a square button with an arrow shape.

source
CImGui.BeginFunction
Begin(name, p_open=C_NULL, flags=0) -> Bool

Push window to the stack and start appending to it.

Usage

  • you may append multiple times to the same window during the same frame.
  • passing p_open != C_NULL shows a window-closing widget in the upper-right corner of the window, which clicking will set the boolean to false when clicked.
  • Begin return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.
Note

Always call a matching End for each Begin call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.

source
CImGui.BeginFunction
Begin(handle::Ptr{ImGuiListClipper}, items_count, items_height=-1.0)

Automatically called by constructor if you passed items_count or by Step in Step 1.

source
CImGui.BeginChildFunction
BeginChild(str_id, size=(0,0), border=false, flags=0) -> Bool
-BeginChild(id::Integer, size=(0,0), border=false, flags=0) -> Bool

Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.

Return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.

For each independent axis of size:

  • x == 0.0: use remaining host window size
  • x > 0.0: fixed size
  • x < 0.0: use remaining window size minus abs(size)

Each axis can use a different mode, e.g. ImVec2(0,400).

Note

Always call a matching EndChild for each BeginChild call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.

source
CImGui.BeginChildFrameFunction
BeginChildFrame(id, size, flags=0) -> Bool

Helper to create a child window / scrolling region that looks like a normal widget frame.

source
CImGui.BeginListBoxFunction
BeginListBox(label, size=(0,0))

Use if you want to reimplement ListBox will custom data or interactions. If the function return true, you can output elements then call EndListBox afterwards.

source
CImGui.BeginMenuFunction
BeginMenu(label, enabled=true) -> Bool

Create a sub-menu entry. only call EndMenu() if this returns true!

source
CImGui.BeginMenuBarMethod
BeginMenuBar() -> Bool

Append to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window).

source
CImGui.BeginPopupContextItemFunction
BeginPopupContextItem(str_id=C_NULL, flags=1) -> Bool

Helper to open and begin popup when clicked on last item. if you can pass a CNULL strid only if the previous item had an id. If you want to use that on a non-interactive item such as Text you need to pass in an explicit ID here.

source
CImGui.BeginPopupContextVoidFunction
BeginPopupContextVoid(str_id=C_NULL, popup_flags=1) -> Bool

Helper to open and begin popup when clicked in void (where there are no imgui windows).

source
CImGui.BeginPopupModalFunction
BeginPopupModal(name, p_open=C_NULL, flags=0) -> Bool

Modal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside).

source
CImGui.BeginTabBarFunction
igBeginTabBar(str_id, flags=ImGuiTabBarFlags_(0)) -> Bool

Create and append into a TabBar.

BETA API

API may evolve!

source
CImGui.BeginTabItemFunction
BeginTabItem(label, p_open=C_NULL, flags=ImGuiTabItemFlags_(0)) -> Bool
BETA API

API may evolve!

source
CImGui.BeginTableFunction
BeginTable(str_id, columns_count, flags = ImGuiTableFlags_(0), outer_size = ImVec2(0,0), inner_width = 0.0) -> Bool

Begin a table entry.

source
CImGui.BeginTooltipMethod
BeginTooltip()

Begin/append a tooltip window to create full-featured tooltip (with any kind of items).

source
CImGui.BuildMethod
Build(self::Ptr{ImFontAtlas}) -> Bool

Build pixels data. This is called automatically for you by the GetTexData*** functions.

source
CImGui.BulletMethod
Bullet()

Draw a small circle and keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses

source
CImGui.BulletTextMethod
BulletText(formatted_text)

Shortcut for Bullet+Text.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.ButtonFunction
Button(label) -> Bool
-Button(label, size) -> Bool

Return true when the value has been changed or when pressed/selected.

source
CImGui.CalcItemWidthMethod
CalcItemWidth() -> Cfloat

Return width of item given pushed settings and current cursor position.

source
CImGui.CalcTextSizeFunction
CalcTextSize(text, text_end=C_NULL, hide_text_after_double_hash=false, wrap_width=-1) -> ImVec2
source
CImGui.ChannelsMergeMethod
ChannelsMerge(handle::Ptr{ImDrawList})
Tip
  • Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)
source
CImGui.ChannelsSetCurrentMethod
ChannelsSetCurrent(handle::Ptr{ImDrawList}, channel_index)
Tip
  • Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)
source
CImGui.ChannelsSplitMethod
ChannelsSplit(handle::Ptr{ImDrawList}, channels_count)
Tip
  • Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)
source
CImGui.CheckboxMethod
Checkbox(label, v) -> Bool

Return true when the value has been changed or when pressed/selected.

source
CImGui.CheckboxFlagsMethod
CheckboxFlags(label, flags, flags_value) -> Bool

Return true when the value has been changed or when pressed/selected.

source
CImGui.ClearFontsMethod
ClearFonts(self::Ptr{ImFontAtlas})

Clear output font data (glyphs storage, UV coordinates).

source
CImGui.ClearInputDataMethod
ClearInputData(self::Ptr{ImFontAtlas})

Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts.

source
CImGui.ClearTexDataMethod
ClearTexData(self::Ptr{ImFontAtlas})

Clear output texture data (CPU side). Saves RAM once the texture has been copied to graphics memory.

source
CImGui.ClipperMethod
Clipper() -> Ptr{ImGuiListClipper}

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.

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 clip 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.

Example

clipper = CImGui.Clipper()
+API Reference · CImGui.jl        
         
 

API Reference

This page documents the wrapper functions we have for the ImGui API. The backends are documented separately in Backends.

You can always get the current ImGui version with:


CImGui.AddCallbackMethod
AddCallback(handle::Ptr{ImDrawList}, callback, callback_data)

Your rendering function must check for UserCallback in ImDrawCmd and call the function instead of rendering triangles.

source
CImGui.AddCircleFunction
AddCircle(handle::Ptr{ImDrawList}, centre, radius, col, num_segments=12, thickness=1.0)
source
CImGui.AddConvexPolyFilledMethod
AddConvexPolyFilled(handle::Ptr{ImDrawList}, points, num_points, col)
Note

Anti-aliased filling requires points to be in clockwise order.

source
CImGui.AddDrawCmdMethod
AddDrawCmd(handle::Ptr{ImDrawList})

This is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible.

source
CImGui.AddFontFromFileTTFFunction
AddFontFromFileTTF(self::Ptr{ImFontAtlas}, filename, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}
source
CImGui.AddFontFromMemoryCompressedBase85TTFFunction
AddFontFromMemoryCompressedBase85TTF(self::Ptr{ImFontAtlas}, compressed_font_data_base85, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}

'compressedfontdata_base85' still owned by caller.

source
CImGui.AddFontFromMemoryCompressedTTFFunction
AddFontFromMemoryCompressedTTF(self::Ptr{ImFontAtlas}, compressed_font_data, compressed_font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}

'compressedfontdata' still owned by caller.

source
CImGui.AddFontFromMemoryTTFFunction
AddFontFromMemoryTTF(self::Ptr{ImFontAtlas}, font_data, font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}
Note

Transfer ownership of 'ttfdata' to ImFontAtlas! Will be deleted after destruction of the atlas. Set `fontcfg.FontDataOwnedByAtlas=false` to keep ownership of your data and it won't be freed.

source
CImGui.AddImageFunction
AddImage(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a=(0,0), uv_b=(1,1), col=0xffffffff)
source
CImGui.AddImageQuadFunction
AddImageQuad(handle::Ptr{ImDrawList}, user_texture_id, a, b, c, d, uv_a=(0,0), uv_b=(1,0), uv_c=(1,1), uv_d=(0,1), col=0xffffffff)
source
CImGui.AddImageRoundedFunction
AddImageRounded(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a, uv_b, col, rounding, rounding_corners=ImDrawFlags_All)
source
CImGui.AddRectFunction
AddRect(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll, thickness=1.0)

Arguments

  • a: upper-left
  • b: lower-right
  • rounding_corners_flags: 4-bits corresponding to which corner to round
source
CImGui.AddRectFilledFunction
AddRectFilled(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)

Arguments

  • a: upper-left
  • b: lower-right
source
CImGui.AddTextFunction
AddText(handle::Ptr{ImDrawList}, pos, col, text_begin, text_end=C_NULL)
source
CImGui.AddTextFunction
AddText(handle::Ptr{ImDrawList}, font::Ptr{ImFont}, font_size, pos, col, text_begin, text_end=C_NULL, wrap_width=0.0, cpu_fine_clip_rect=C_NULL)
source
CImGui.AlignTextToFramePaddingMethod
AlignTextToFramePadding()

Vertically align 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).

source
CImGui.AppendFunction
Append(handle::Ptr{ImGuiTextBuffer}, str, str_end=C_NULL)

Text buffer for logging/accumulating text.

source
CImGui.ArrowButtonMethod
ArrowButton(str_id, dir) -> Bool

Return true when the value has been changed or when pressed/selected. Create a square button with an arrow shape.

source
CImGui.BeginFunction
Begin(handle::Ptr{ImGuiListClipper}, items_count, items_height=-1.0)

Automatically called by constructor if you passed items_count or by Step in Step 1.

source
CImGui.BeginFunction
Begin(name, p_open=C_NULL, flags=0) -> Bool

Push window to the stack and start appending to it.

Usage

  • you may append multiple times to the same window during the same frame.
  • passing p_open != C_NULL shows a window-closing widget in the upper-right corner of the window, which clicking will set the boolean to false when clicked.
  • Begin return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.
Note

Always call a matching End for each Begin call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.

source
CImGui.BeginChildFunction
BeginChild(str_id, size=(0,0), border=false, flags=0) -> Bool
+BeginChild(id::Integer, size=(0,0), border=false, flags=0) -> Bool

Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.

Return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.

For each independent axis of size:

  • x == 0.0: use remaining host window size
  • x > 0.0: fixed size
  • x < 0.0: use remaining window size minus abs(size)

Each axis can use a different mode, e.g. ImVec2(0,400).

Note

Always call a matching EndChild for each BeginChild call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.

source
CImGui.BeginChildFrameFunction
BeginChildFrame(id, size, flags=0) -> Bool

Helper to create a child window / scrolling region that looks like a normal widget frame.

source
CImGui.BeginListBoxFunction
BeginListBox(label, size=(0,0))

Use if you want to reimplement ListBox will custom data or interactions. If the function return true, you can output elements then call EndListBox afterwards.

source
CImGui.BeginMenuFunction
BeginMenu(label, enabled=true) -> Bool

Create a sub-menu entry. only call EndMenu() if this returns true!

source
CImGui.BeginMenuBarMethod
BeginMenuBar() -> Bool

Append to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window).

source
CImGui.BeginPopupContextItemFunction
BeginPopupContextItem(str_id=C_NULL, flags=1) -> Bool

Helper to open and begin popup when clicked on last item. if you can pass a CNULL strid only if the previous item had an id. If you want to use that on a non-interactive item such as Text you need to pass in an explicit ID here.

source
CImGui.BeginPopupContextVoidFunction
BeginPopupContextVoid(str_id=C_NULL, popup_flags=1) -> Bool

Helper to open and begin popup when clicked in void (where there are no imgui windows).

source
CImGui.BeginPopupModalFunction
BeginPopupModal(name, p_open=C_NULL, flags=0) -> Bool

Modal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside).

source
CImGui.BeginTabBarFunction
igBeginTabBar(str_id, flags=ImGuiTabBarFlags_(0)) -> Bool

Create and append into a TabBar.

BETA API

API may evolve!

source
CImGui.BeginTabItemFunction
BeginTabItem(label, p_open=C_NULL, flags=ImGuiTabItemFlags_(0)) -> Bool
BETA API

API may evolve!

source
CImGui.BeginTableFunction
BeginTable(str_id, columns_count, flags = ImGuiTableFlags_(0), outer_size = ImVec2(0,0), inner_width = 0.0) -> Bool

Begin a table entry.

source
CImGui.BeginTooltipMethod
BeginTooltip()

Begin/append a tooltip window to create full-featured tooltip (with any kind of items).

source
CImGui.BuildMethod
Build(self::Ptr{ImFontAtlas}) -> Bool

Build pixels data. This is called automatically for you by the GetTexData*** functions.

source
CImGui.BulletMethod
Bullet()

Draw a small circle and keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses

source
CImGui.BulletTextMethod
BulletText(formatted_text)

Shortcut for Bullet+Text.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.ButtonFunction
Button(label) -> Bool
+Button(label, size) -> Bool

Return true when the value has been changed or when pressed/selected.

source
CImGui.CalcItemWidthMethod
CalcItemWidth() -> Cfloat

Return width of item given pushed settings and current cursor position.

source
CImGui.CalcTextSizeFunction
CalcTextSize(text, text_end=C_NULL, hide_text_after_double_hash=false, wrap_width=-1) -> ImVec2
source
CImGui.ChannelsMergeMethod
ChannelsMerge(handle::Ptr{ImDrawList})
Tip
  • Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)
source
CImGui.ChannelsSetCurrentMethod
ChannelsSetCurrent(handle::Ptr{ImDrawList}, channel_index)
Tip
  • Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)
source
CImGui.ChannelsSplitMethod
ChannelsSplit(handle::Ptr{ImDrawList}, channels_count)
Tip
  • Use to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)
source
CImGui.CheckboxMethod
Checkbox(label, v) -> Bool

Return true when the value has been changed or when pressed/selected.

source
CImGui.CheckboxFlagsMethod
CheckboxFlags(label, flags, flags_value) -> Bool

Return true when the value has been changed or when pressed/selected.

source
CImGui.ClearFontsMethod
ClearFonts(self::Ptr{ImFontAtlas})

Clear output font data (glyphs storage, UV coordinates).

source
CImGui.ClearInputDataMethod
ClearInputData(self::Ptr{ImFontAtlas})

Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts.

source
CImGui.ClearTexDataMethod
ClearTexData(self::Ptr{ImFontAtlas})

Clear output texture data (CPU side). Saves RAM once the texture has been copied to graphics memory.

source
CImGui.ClipperMethod
Clipper() -> Ptr{ImGuiListClipper}

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.

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 clip 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.

Example

clipper = CImGui.Clipper()
 Begin(clipper, 1000)  # we have 1000 elements, evenly spaced.
 while CImGui.Step()
     dis_start = CImGui.Get(clipper, :DisplayStart)
     dis_end = CImGui.Get(clipper, :DisplayEnd)-1
     foreach(i->CImGui.Text("line number $i"), dis_start:dis_end)
-end
  • Step 0: the clipper let you process the first element, regardless of it being visible or not, so we can measure the element height (step skipped if we passed a known height as second arg to constructor).
  • Step 1: the clipper infer height from first element, calculate the actual range of elements to display, and position the cursor before the first element.
  • (Step 2: dummy step only required if an explicit items_height was passed to constructor or Begin and user call Step. Does nothing and switch to Step 3.)
  • Step 3: the clipper validate 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.

Arguments

  • items_count: use -1 to ignore (you can call Begin later). use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step).
  • items_height: use -1.0 to be calculated automatically on first step. otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing or GetFrameHeightWithSpacing. If you don't specify an items_height, you NEED to call Step. If you specify items_height you may call the old Begin/End api directly, but prefer calling Step.
source
CImGui.CloneOutputMethod
CloneOutput(handle::Ptr{ImDrawList}) -> Ptr{ImDrawList}

Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer.

source
CImGui.CloseCurrentPopupMethod
CloseCurrentPopup()

Close the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup.

source
CImGui.CollapsingHeaderFunction
CollapsingHeader(label, p_open::Ref, flags=ImGuiTreeNodeFlags_(0)) -> Bool

When p_open isn't C_NULL, display an additional small close button on upper right of the header.

source
CImGui.CollapsingHeaderFunction
CollapsingHeader(label, flags=ImGuiTreeNodeFlags_(0)) -> Bool

If returning true the header is open. Doesn't indent nor push on ID stack. User doesn't have to call TreePop.

source
CImGui.ColorButtonFunction
ColorButton(desc_id, col, flags=0, size=(0,0))

Display a colored square/button, hover for details, return true when pressed.

source
CImGui.ColorEdit3Function
ColorEdit3(label, col, flags=0) -> Bool
Tip

this function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.

source
CImGui.ColorEdit4Function
ColorEdit4(label, col, flags=0) -> Bool
Tip

this function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.

source
CImGui.ColumnsFunction
Columns(count=1, id=C_NULL, border=true)
Work in progress!

You can also use SameLine(pos_x) for simplified columns. The columns API is work-in-progress and rather lacking (columns are arguably the worst part of dear imgui at the moment!)

source
CImGui.ComboFunction
Combo(label, current_item, items::Vector, items_count, popup_max_height_in_items=-1) -> Bool

The old Combo api are helpers over BeginCombo/EndCombo which are kept available for convenience purpose.

source
CImGui.ComboFunction
Combo(label, current_item, items_getter::Union{Ptr,Base.CFunction}, data, items_count, popup_max_height_in_items=-1) -> Bool
source
CImGui.ComboFunction
Combo(label, current_item, items_separated_by_zeros, popup_max_height_in_items=-1) -> Bool

Separate items with within a string, end item-list with . e.g. OneTwoThree

source
CImGui.CreateContextMethod
CreateContext() -> Ptr{ImGuiContext}
-CreateContext(shared_font_atlas::Ptr{ImFontAtlas}) -> Ptr{ImGuiContext}

Return a handle of ImGuiContext.

source
CImGui.DestroyContextMethod
DestroyContext()
-DestroyContext(ctx::Ptr{ImGuiContext})

Destroy ImGuiContext. DestroyContext() will destroy current context.

source
CImGui.DragFloatFunction
DragFloat(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

If v_min >= v_max we have no bound.

source
CImGui.DragFloat2Function
DragFloat2(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.DragFloat3Function
DragFloat3(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.DragFloat4Function
DragFloat4(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.DragFloatRange2Function
DragFloatRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", format_max=C_NULL, flag=0) -> Bool
source
CImGui.DragIntFunction
DragInt(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)
source
CImGui.DragInt2Function
DragInt2(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)

The expected number of elements to be accessible in v is 2.

source
CImGui.DragInt3Function
DragInt3(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)

The expected number of elements to be accessible in v is 3.

source
CImGui.DragInt4Function
DragInt4(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)

The expected number of elements to be accessible in v is 4.

source
CImGui.DragIntRange2Function
DragIntRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0, v_max=0, format="%d", format_max=C_NULL, flag=0)
source
CImGui.DragScalarFunction
DragScalar(label, data_type, v, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flags=0)
source
CImGui.DragScalarNFunction
DragScalarN(label, data_type, v, components, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flag=0)
source
CImGui.EndMethod
End(handle::Ptr{ImGuiListClipper})

Automatically called on the last call of Step that returns false.

source
CImGui.EndFrameMethod
EndFrame()

Calling this function ends the ImGui frame. This function is automatically called by Render, so you likely don't need to call it yourself directly. If you don't need to render data (skipping rendering), 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 and not call NewFrame at all!

source
CImGui.GetBackgroundDrawListMethod
GetBackgroundDrawList() -> Ptr{ImDrawList}

This draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents.

source
CImGui.GetColorU32Function
GetColorU32(r, g, b, a) -> ImU32
+end
  • Step 0: the clipper let you process the first element, regardless of it being visible or not, so we can measure the element height (step skipped if we passed a known height as second arg to constructor).
  • Step 1: the clipper infer height from first element, calculate the actual range of elements to display, and position the cursor before the first element.
  • (Step 2: dummy step only required if an explicit items_height was passed to constructor or Begin and user call Step. Does nothing and switch to Step 3.)
  • Step 3: the clipper validate 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.

Arguments

  • items_count: use -1 to ignore (you can call Begin later). use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step).
  • items_height: use -1.0 to be calculated automatically on first step. otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing or GetFrameHeightWithSpacing. If you don't specify an items_height, you NEED to call Step. If you specify items_height you may call the old Begin/End api directly, but prefer calling Step.
source
CImGui.CloneOutputMethod
CloneOutput(handle::Ptr{ImDrawList}) -> Ptr{ImDrawList}

Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer.

source
CImGui.CloseCurrentPopupMethod
CloseCurrentPopup()

Close the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup.

source
CImGui.CollapsingHeaderFunction
CollapsingHeader(label, p_open::Ref, flags=ImGuiTreeNodeFlags_(0)) -> Bool

When p_open isn't C_NULL, display an additional small close button on upper right of the header.

source
CImGui.CollapsingHeaderFunction
CollapsingHeader(label, flags=ImGuiTreeNodeFlags_(0)) -> Bool

If returning true the header is open. Doesn't indent nor push on ID stack. User doesn't have to call TreePop.

source
CImGui.ColorButtonFunction
ColorButton(desc_id, col, flags=0, size=(0,0))

Display a colored square/button, hover for details, return true when pressed.

source
CImGui.ColorEdit3Function
ColorEdit3(label, col, flags=0) -> Bool
Tip

this function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.

source
CImGui.ColorEdit4Function
ColorEdit4(label, col, flags=0) -> Bool
Tip

this function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.

source
CImGui.ColumnsFunction
Columns(count=1, id=C_NULL, border=true)
Work in progress!

You can also use SameLine(pos_x) for simplified columns. The columns API is work-in-progress and rather lacking (columns are arguably the worst part of dear imgui at the moment!)

source
CImGui.ComboFunction
Combo(label, current_item, items::Vector, items_count, popup_max_height_in_items=-1) -> Bool

The old Combo api are helpers over BeginCombo/EndCombo which are kept available for convenience purpose.

source
CImGui.ComboFunction
Combo(label, current_item, items_getter::Union{Ptr,Base.CFunction}, data, items_count, popup_max_height_in_items=-1) -> Bool
source
CImGui.ComboFunction
Combo(label, current_item, items_separated_by_zeros, popup_max_height_in_items=-1) -> Bool

Separate items with within a string, end item-list with . e.g. OneTwoThree

source
CImGui.CreateContextMethod
CreateContext() -> Ptr{ImGuiContext}
+CreateContext(shared_font_atlas::Ptr{ImFontAtlas}) -> Ptr{ImGuiContext}

Return a handle of ImGuiContext.

source
CImGui.DestroyContextMethod
DestroyContext()
+DestroyContext(ctx::Ptr{ImGuiContext})

Destroy ImGuiContext. DestroyContext() will destroy current context.

source
CImGui.DragFloatFunction
DragFloat(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

If v_min >= v_max we have no bound.

source
CImGui.DragFloat2Function
DragFloat2(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.DragFloat3Function
DragFloat3(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.DragFloat4Function
DragFloat4(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.DragFloatRange2Function
DragFloatRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0.0, v_max=0.0, format="%.3f", format_max=C_NULL, flag=0) -> Bool
source
CImGui.DragIntFunction
DragInt(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)
source
CImGui.DragInt2Function
DragInt2(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)

The expected number of elements to be accessible in v is 2.

source
CImGui.DragInt3Function
DragInt3(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)

The expected number of elements to be accessible in v is 3.

source
CImGui.DragInt4Function
DragInt4(label, v, v_speed=1.0, v_min=0, v_max=0, format="%d", flag=0)

The expected number of elements to be accessible in v is 4.

source
CImGui.DragIntRange2Function
DragIntRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0, v_max=0, format="%d", format_max=C_NULL, flag=0)
source
CImGui.DragScalarFunction
DragScalar(label, data_type, v, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flags=0)
source
CImGui.DragScalarNFunction
DragScalarN(label, data_type, v, components, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flag=0)
source
CImGui.EndMethod
End(handle::Ptr{ImGuiListClipper})

Automatically called on the last call of Step that returns false.

source
CImGui.EndFrameMethod
EndFrame()

Calling this function ends the ImGui frame. This function is automatically called by Render, so you likely don't need to call it yourself directly. If you don't need to render data (skipping rendering), 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 and not call NewFrame at all!

source
CImGui.GetBackgroundDrawListMethod
GetBackgroundDrawList() -> Ptr{ImDrawList}

This draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents.

source
CImGui.GetColorU32Function
GetColorU32(r, g, b, a) -> ImU32
 GetColorU32(col::ImVec4) -> ImU32
 GetColorU32(col::ImU32) -> ImU32
-GetColorU32(idx::Integer, alpha_mul=1.0) -> ImU32

Retrieve given style color with style alpha applied and optional extra alpha multiplier.

source
CImGui.GetColumnOffsetFunction
GetColumnOffset(column_index=-1) -> Cfloat

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.

source
CImGui.GetColumnWidthFunction
GetColumnWidth(column_index=-1) -> Cfloat

Return column width (in pixels). Pass -1 to use current column.

source
CImGui.GetContentRegionMaxMethod
GetContentRegionMax() -> ImVec2

Return current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates.

source
CImGui.GetCursorScreenPosMethod
GetCursorScreenPos() -> ImVec2

Return cursor position in absolute screen coordinates [0..io.DisplaySize]. This is useful to work with ImDrawList API.

source
CImGui.GetDragDropPayloadMethod
GetDragDropPayload() -> Ptr{ImGuiPayload}

Peek directly into the current payload from anywhere. May return C_NULL.

BETA API

Missing Demo code. API may evolve.

source
CImGui.GetDrawDataMethod
GetDrawData() -> Ptr{ImDrawData}

Return a handle of ImDrawData which is valid after Render and until the next call to NewFrame. This is what you have to render.

Obsolete

This used to be passed to your ImGuiIO.RenderDrawListsFn function.

source
CImGui.GetFontSizeMethod
GetFontSize() -> Cfloat

Get current font size (= height in pixels) of current font with current scale applied.

source
CImGui.GetForegroundDrawListMethod
GetForegroundDrawList() -> Ptr{ImDrawList}

this draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents.

source
CImGui.GetFrameHeightWithSpacingMethod
GetFrameHeightWithSpacing() -> Cfloat

Return FontSize + ImGuiStyle.FramePadding.y * 2 + ImGuiStyle.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets).

source
CImGui.GetGlyphRangesChineseFullMethod
GetGlyphRangesChineseFull(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}

Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs.

source
CImGui.GetGlyphRangesChineseSimplifiedCommonMethod
GetGlyphRangesChineseSimplifiedCommon(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}

Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese.

source
CImGui.GetGlyphRangesJapaneseMethod
GetGlyphRangesJapanese(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}

Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs.

source
CImGui.GetIDMethod
GetID(str_id::AbstractString) -> ImGuiID
+GetColorU32(idx::Integer, alpha_mul=1.0) -> ImU32

Retrieve given style color with style alpha applied and optional extra alpha multiplier.

source
CImGui.GetColumnOffsetFunction
GetColumnOffset(column_index=-1) -> Cfloat

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.

source
CImGui.GetColumnWidthFunction
GetColumnWidth(column_index=-1) -> Cfloat

Return column width (in pixels). Pass -1 to use current column.

source
CImGui.GetContentRegionMaxMethod
GetContentRegionMax() -> ImVec2

Return current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates.

source
CImGui.GetCursorScreenPosMethod
GetCursorScreenPos() -> ImVec2

Return cursor position in absolute screen coordinates [0..io.DisplaySize]. This is useful to work with ImDrawList API.

source
CImGui.GetDragDropPayloadMethod
GetDragDropPayload() -> Ptr{ImGuiPayload}

Peek directly into the current payload from anywhere. May return C_NULL.

BETA API

Missing Demo code. API may evolve.

source
CImGui.GetDrawDataMethod
GetDrawData() -> Ptr{ImDrawData}

Return a handle of ImDrawData which is valid after Render and until the next call to NewFrame. This is what you have to render.

Obsolete

This used to be passed to your ImGuiIO.RenderDrawListsFn function.

source
CImGui.GetFontSizeMethod
GetFontSize() -> Cfloat

Get current font size (= height in pixels) of current font with current scale applied.

source
CImGui.GetForegroundDrawListMethod
GetForegroundDrawList() -> Ptr{ImDrawList}

this draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents.

source
CImGui.GetFrameHeightWithSpacingMethod
GetFrameHeightWithSpacing() -> Cfloat

Return FontSize + ImGuiStyle.FramePadding.y * 2 + ImGuiStyle.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets).

source
CImGui.GetGlyphRangesChineseFullMethod
GetGlyphRangesChineseFull(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}

Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs.

source
CImGui.GetGlyphRangesChineseSimplifiedCommonMethod
GetGlyphRangesChineseSimplifiedCommon(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}

Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese.

source
CImGui.GetGlyphRangesJapaneseMethod
GetGlyphRangesJapanese(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}

Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs.

source
CImGui.GetIDMethod
GetID(str_id::AbstractString) -> ImGuiID
 GetID(str_id_begin::AbstractString, str_id_end::AbstractString) -> ImGuiID
-GetID(ptr_id::Ptr) -> ImGuiID

Calculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself.

source
CImGui.GetIOMethod
GetIO() -> Ptr{ImGuiIO}

Return a handle of ImGuiIO which is for accessing the IO structure:

  • mouse/keyboard/gamepad inputs
  • time
  • various configuration options/flags
source
CImGui.GetItemRectMaxMethod
GetItemRectMax() -> ImVec2

Return bounding rectangle of last item, in screen space. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.GetItemRectMinMethod
GetItemRectMin() -> ImVec2

Return bounding rectangle of last item, in screen space. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.GetItemRectSizeMethod
GetItemRectSize() -> ImVec2

Return size of last item, in screen space. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.GetKeyPressedAmountMethod
GetKeyPressedAmount(key_index, repeat_delay, rate) -> Cint

Uses provided repeat rate/delay. Return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate

source
CImGui.GetMouseCursorMethod
GetMouseCursor() -> ImGuiMouseCursor

Get 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.

source
CImGui.GetMouseDragDeltaFunction
GetMouseDragDelta(button=0, lock_threshold=-1.0) -> ImVec2

Dragging amount since clicking. if lock_threshold < -1.0f uses io.MouseDraggingThreshold.

source
CImGui.GetMousePosMethod
GetMousePos() -> ImVec2

Shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls.

source
CImGui.GetTexDataAsAlpha8Function
GetTexDataAsAlpha8(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)

1 byte per-pixel.

source
CImGui.GetTexDataAsRGBA32Function
GetTexDataAsRGBA32(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)

4 bytes-per-pixel.

source
CImGui.GetTreeNodeToLabelSpacingMethod
GetTreeNodeToLabelSpacing()

Horizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode.

source
CImGui.GetWindowDrawListMethod
GetWindowDrawList() -> Ptr{ImDrawList}

Return draw list associated to the window, to append your own drawing primitives.

source
CImGui.GetWindowPosMethod
GetWindowPos() -> ImVec2

Return current window position in screen space (useful if you want to do your own drawing via the ImDrawList API.

source
CImGui.ImageFunction
Image(user_texture_id, size, uv0=(0,0), uv1=(1,1), tint_col=(1,1,1,1), border_col=(0,0,0,0))
source
CImGui.ImageButtonFunction
ImageButton(str_id, user_texture_id, size, uv0=(0,0), uv1=(1,1), bg_col=(0,0,0,0), tint_col=(1,1,1,1)) -> Bool
source
CImGui.IndentFunction
Indent()
-Indent(indent_w)

Move content position toward the right, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.

source
CImGui.InputFloat2Function
InputFloat2(label, v, format="%.3f", flags=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.InputFloat3Function
InputFloat3(label, v, format="%.3f", flags=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.InputFloat4Function
InputFloat4(label, v, format="%.3f", flags=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.InputInt2Function
InputInt2(label, v, flags=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.InputInt3Function
InputInt3(label, v, flags=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.InputInt4Function
InputInt4(label, v, flags=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.InputScalarFunction
InputScalar(label, data_type, v, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool
source
CImGui.InputScalarNFunction
InputScalarN(label, data_type, v, components, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool
source
CImGui.InputTextFunction
InputText(label, buf, buf_size, flags=0, callback=C_NULL, user_data=C_NULL) -> Bool
source
CImGui.InvisibleButtonFunction
InvisibleButton(str_id, size, flag = 0) -> Bool

Return true when the value has been changed or when pressed/selected. Flexible button behavior without the visuals, frequently useful to build custom behaviors using the public api along with IsItemActive, IsItemHovered, etc.

source
CImGui.IsAnyItemActiveMethod
IsAnyItemActive() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsAnyItemFocusedMethod
 IsAnyItemFocused() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsAnyItemHoveredMethod
IsAnyItemHovered() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemActiveMethod
IsItemActive() -> Bool

Is the last item active? (e.g. button being held, text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return false) See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemClickedFunction
IsItemClicked() -> Bool
-IsItemClicked(mouse_button=0) -> Bool

Is the last item clicked? (e.g. button/node just clicked on) == IsMouseClicked(mouse_button) && IsItemHovered. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemDeactivatedMethod
IsItemDeactivated() -> Bool

Was the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that requires continuous editing. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemDeactivatedAfterEditMethod
IsItemDeactivatedAfterEdit() -> Bool

Was the last item just made inactive and made a value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that requires continuous editing. Note that you may get false positives (some widgets such as Combo/ListBox/Selectable will return true even when clicking an already selected item). See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemEditedMethod
IsItemEdited() -> Bool

Did the last item modify its underlying value this frame? or was pressed? This is generally the same as the "bool" return value of many widgets. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemFocusedMethod
IsItemFocused() -> Bool

Is the last item focused for keyboard/gamepad navigation? See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemHoveredFunction
IsItemHovered(flags=ImGuiHoveredFlags_(0)) -> Bool

Is the last item hovered? (and usable, aka not blocked by a popup, etc.). See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:

using CImGui, Markdown
-CImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemToggledOpenMethod
IsItemToggledOpen() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemVisibleMethod
IsItemVisible() -> Bool

Is the last item visible? (items may be out of sight because of clipping/scrolling). See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsKeyDownMethod
IsKeyDown(user_key_index) -> Bool

Is key being held. == io.KeysDown[userkeyindex]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]!

source
CImGui.IsKeyPressedFunction
IsKeyPressed(user_key_index, repeat=true) -> Bool

Was key pressed (went from !Down to Down). If repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate.

source
CImGui.IsMouseClickedFunction
IsMouseClicked(button, repeat=false) -> Bool

Did mouse button clicked (went from !Down to Down) (0=left, 1=right, 2=middle)

source
CImGui.IsMouseDraggingFunction
IsMouseDragging(button=0, lock_threshold=-1.0) -> Bool

Is mouse dragging. If lock_threshold < -1.0f uses io.MouseDraggingThreshold.

source
CImGui.IsMouseHoveringRectFunction
IsMouseHoveringRect(r_min, r_max, clip=true) -> Bool

Is mouse hovering given bounding rect (in screen space). Clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block.

source
CImGui.IsRectVisibleMethod
IsRectVisible(size) -> Bool
-IsRectVisible(x, y) -> Bool

Test if rectangle (of given size, starting from cursor position) is visible / not clipped.

source
CImGui.IsRectVisibleVec2Method
IsRectVisibleVec2(rect_min::ImVec2, rect_max::ImVec2) -> Bool
-IsRectVisibleVec2(rect_min::NTuple{2}, rect_max::NTuple{2}) -> Bool

Test if rectangle (in screen space) is visible / not clipped. to perform coarse clipping on user's side.

source
CImGui.IsWindowFocusedFunction
IsWindowFocused(flags=0) -> Bool

Is current window focused? or its root/child, depending on flags. See the output of CImGui.GetFlags(CImGui.ImGuiFocusedFlags_) for options:

using CImGui, Markdown
-CImGui.ShowFlags(CImGui.ImGuiFocusedFlags_) |> Markdown.parse
source
CImGui.IsWindowHoveredFunction
IsWindowHovered(flags=0) -> Bool

Is current window hovered (and typically: not blocked by a popup/modal)? See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:

using CImGui, Markdown
+GetID(ptr_id::Ptr) -> ImGuiID

Calculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself.

source
CImGui.GetIOMethod
GetIO() -> Ptr{ImGuiIO}

Return a handle of ImGuiIO which is for accessing the IO structure:

  • mouse/keyboard/gamepad inputs
  • time
  • various configuration options/flags
source
CImGui.GetItemRectMaxMethod
GetItemRectMax() -> ImVec2

Return bounding rectangle of last item, in screen space. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.GetItemRectMinMethod
GetItemRectMin() -> ImVec2

Return bounding rectangle of last item, in screen space. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.GetItemRectSizeMethod
GetItemRectSize() -> ImVec2

Return size of last item, in screen space. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.GetKeyPressedAmountMethod
GetKeyPressedAmount(key_index, repeat_delay, rate) -> Cint

Uses provided repeat rate/delay. Return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate

source
CImGui.GetMouseCursorMethod
GetMouseCursor() -> ImGuiMouseCursor

Get 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.

source
CImGui.GetMouseDragDeltaFunction
GetMouseDragDelta(button=0, lock_threshold=-1.0) -> ImVec2

Dragging amount since clicking. if lock_threshold < -1.0f uses io.MouseDraggingThreshold.

source
CImGui.GetMousePosMethod
GetMousePos() -> ImVec2

Shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls.

source
CImGui.GetTexDataAsAlpha8Function
GetTexDataAsAlpha8(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)

1 byte per-pixel.

source
CImGui.GetTexDataAsRGBA32Function
GetTexDataAsRGBA32(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)

4 bytes-per-pixel.

source
CImGui.GetTreeNodeToLabelSpacingMethod
GetTreeNodeToLabelSpacing()

Horizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode.

source
CImGui.GetWindowDrawListMethod
GetWindowDrawList() -> Ptr{ImDrawList}

Return draw list associated to the window, to append your own drawing primitives.

source
CImGui.GetWindowPosMethod
GetWindowPos() -> ImVec2

Return current window position in screen space (useful if you want to do your own drawing via the ImDrawList API.

source
CImGui.ImageFunction
Image(user_texture_id, size, uv0=(0,0), uv1=(1,1), tint_col=(1,1,1,1), border_col=(0,0,0,0))
source
CImGui.ImageButtonFunction
ImageButton(str_id, user_texture_id, size, uv0=(0,0), uv1=(1,1), bg_col=(0,0,0,0), tint_col=(1,1,1,1)) -> Bool
source
CImGui.IndentFunction
Indent()
+Indent(indent_w)

Move content position toward the right, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.

source
CImGui.InputFloat2Function
InputFloat2(label, v, format="%.3f", flags=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.InputFloat3Function
InputFloat3(label, v, format="%.3f", flags=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.InputFloat4Function
InputFloat4(label, v, format="%.3f", flags=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.InputInt2Function
InputInt2(label, v, flags=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.InputInt3Function
InputInt3(label, v, flags=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.InputInt4Function
InputInt4(label, v, flags=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.InputScalarFunction
InputScalar(label, data_type, v, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool
source
CImGui.InputScalarNFunction
InputScalarN(label, data_type, v, components, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool
source
CImGui.InputTextFunction
InputText(label, buf, buf_size, flags=0, callback=C_NULL, user_data=C_NULL) -> Bool
source
CImGui.InvisibleButtonFunction
InvisibleButton(str_id, size, flag = 0) -> Bool

Return true when the value has been changed or when pressed/selected. Flexible button behavior without the visuals, frequently useful to build custom behaviors using the public api along with IsItemActive, IsItemHovered, etc.

source
CImGui.IsAnyItemActiveMethod
IsAnyItemActive() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsAnyItemFocusedMethod
 IsAnyItemFocused() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsAnyItemHoveredMethod
IsAnyItemHovered() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemActiveMethod
IsItemActive() -> Bool

Is the last item active? (e.g. button being held, text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return false) See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemClickedFunction
IsItemClicked() -> Bool
+IsItemClicked(mouse_button=0) -> Bool

Is the last item clicked? (e.g. button/node just clicked on) == IsMouseClicked(mouse_button) && IsItemHovered. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemDeactivatedMethod
IsItemDeactivated() -> Bool

Was the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that requires continuous editing. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemDeactivatedAfterEditMethod
IsItemDeactivatedAfterEdit() -> Bool

Was the last item just made inactive and made a value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that requires continuous editing. Note that you may get false positives (some widgets such as Combo/ListBox/Selectable will return true even when clicking an already selected item). See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemEditedMethod
IsItemEdited() -> Bool

Did the last item modify its underlying value this frame? or was pressed? This is generally the same as the "bool" return value of many widgets. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemFocusedMethod
IsItemFocused() -> Bool

Is the last item focused for keyboard/gamepad navigation? See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemHoveredFunction
IsItemHovered(flags=ImGuiHoveredFlags_(0)) -> Bool

Is the last item hovered? (and usable, aka not blocked by a popup, etc.). See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:

using CImGui, Markdown
+CImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemToggledOpenMethod
IsItemToggledOpen() -> Bool

See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsItemVisibleMethod
IsItemVisible() -> Bool

Is the last item visible? (items may be out of sight because of clipping/scrolling). See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.IsKeyDownMethod
IsKeyDown(user_key_index) -> Bool

Is key being held. == io.KeysDown[userkeyindex]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]!

source
CImGui.IsKeyPressedFunction
IsKeyPressed(user_key_index, repeat=true) -> Bool

Was key pressed (went from !Down to Down). If repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate.

source
CImGui.IsMouseClickedFunction
IsMouseClicked(button, repeat=false) -> Bool

Did mouse button clicked (went from !Down to Down) (0=left, 1=right, 2=middle)

source
CImGui.IsMouseDraggingFunction
IsMouseDragging(button=0, lock_threshold=-1.0) -> Bool

Is mouse dragging. If lock_threshold < -1.0f uses io.MouseDraggingThreshold.

source
CImGui.IsMouseHoveringRectFunction
IsMouseHoveringRect(r_min, r_max, clip=true) -> Bool

Is mouse hovering given bounding rect (in screen space). Clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block.

source
CImGui.IsRectVisibleMethod
IsRectVisible(size) -> Bool
+IsRectVisible(x, y) -> Bool

Test if rectangle (of given size, starting from cursor position) is visible / not clipped.

source
CImGui.IsRectVisibleVec2Method
IsRectVisibleVec2(rect_min::ImVec2, rect_max::ImVec2) -> Bool
+IsRectVisibleVec2(rect_min::NTuple{2}, rect_max::NTuple{2}) -> Bool

Test if rectangle (in screen space) is visible / not clipped. to perform coarse clipping on user's side.

source
CImGui.IsWindowFocusedFunction
IsWindowFocused(flags=0) -> Bool

Is current window focused? or its root/child, depending on flags. See the output of CImGui.GetFlags(CImGui.ImGuiFocusedFlags_) for options:

using CImGui, Markdown
+CImGui.ShowFlags(CImGui.ImGuiFocusedFlags_) |> Markdown.parse
source
CImGui.IsWindowHoveredFunction
IsWindowHovered(flags=0) -> Bool

Is current window hovered (and typically: not blocked by a popup/modal)? See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:

using CImGui, Markdown
 CImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse
Note

If you are trying to check whether your mouse should be dispatched to imgui or to your app, you should use the ImGuiIO.WantCaptureMouse boolean for that! Please read the FAQ!

FAQ

Q: How can I tell whether to dispatch mouse/keyboard to imgui or to my application?

A: You can read the ImGuiIO.WantCaptureMouse, ImGuiIO.WantCaptureKeyboard and ImGuiIO.WantTextInput flags from the ImGuiIO structure, for example:

if CImGui.Get_WantCaptureMouse(CImGui.GetIO())
     # ...
-end
  • When ImGuiIO.WantCaptureMouse is set, imgui wants to use your mouse state, and you may want to discard/hide the inputs from the rest of your application.
  • When ImGuiIO.WantCaptureKeyboard is set, imgui wants to use your keyboard state, and you may want to discard/hide the inputs from the rest of your application.
  • When ImGuiIO.WantTextInput is set to may want to notify your OS to popup an on-screen keyboard, if available (e.g. on a mobile phone, or console OS).
Note
  1. You should always pass your mouse/keyboard inputs to imgui, even when the ImGuiIO.WantCaptureXXX flag are set false. This is because imgui needs to detect that you clicked in the void to unfocus its own windows.
  2. The ImGuiIO.WantCaptureMouse is more accurate that any attempt to "check if the mouse is hovering a window" (don't do that!). It handle mouse dragging correctly (both dragging that started over your application or over an imgui window) and handle e.g. modal windows blocking inputs. Those flags are updated by NewFrame. Preferably read the flags after calling NewFrame if you can afford it, but reading them before is also perfectly fine, as the bool toggle fairly rarely. If you have on a touch device, you might find use for an early call to UpdateHoveredWindowAndCaptureFlags().
  3. Text input widget releases focus on "Return KeyDown", so the subsequent "Return KeyUp" event that your application receive will typically have ImGuiIO.WantCaptureKeyboard=false. Depending on your application logic it may or not be inconvenient. You might want to track which key-downs were targeted for Dear ImGui, e.g. with an array of bool, and filter out the corresponding key-ups.)
source
CImGui.LabelTextMethod
LabelText(label, formatted_text)

Display text+label aligned the same way as value+label widgets.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.ListBoxFunction
ListBox(label, current_item, items, items_count, height_in_items=-1)
-ListBox(label, current_item, items_getter::Ptr{Cvoid}, data::Ptr{Cvoid}, items_count, height_in_items=-1)
source
CImGui.LoadIniSettingsFromDiskMethod
LoadIniSettingsFromDisk(ini_filename)

Call after CreateContext and before the first call to NewFrame. NewFrame automatically calls LoadIniSettingsFromDisk(ImGuiIO.IniFilename).

Tip

The disk functions are automatically called if ImGuiIO.IniFilename != CNULL (default is "imgui.ini"). Set ImGuiIO.IniFilename to CNULL to load/save manually. Read ImGuiIO.WantSaveIniSettings description about handling .ini saving manually.

source
CImGui.LogTextMethod
LogText(formatted_text)

Pass text data straight to log without being displayed.

source
CImGui.LogToClipboardFunction
LogToClipboard(max_depth=-1)

Start logging to OS clipboard.

All text output from interface is captured to clipboard. By default, tree nodes are automatically opened during logging.

source
CImGui.LogToFileFunction
LogToFile(max_depth=-1, filename=C_NULL)

Start logging to file.

All text output from interface is captured to file. By default, tree nodes are automatically opened during logging.

source
CImGui.LogToTTYFunction
LogToTTY(max_depth=-1)

Start logging to tty.

All text output from interface is captured to tty. By default, tree nodes are automatically opened during logging.

source
CImGui.MenuItemFunction
MenuItem(label, shortcut=C_NULL, selected::Bool=false, enabled::Bool=true) -> Bool
-MenuItem(label, shortcut, selected::Ref, enabled::Bool=true) -> Bool

Return true when activated. Shortcuts are displayed for convenience but not processed by ImGui at the moment.

source
CImGui.NextColumnMethod
NextColumn()

Next column, defaults to current row or next row if the current row is finished.

source
CImGui.OpenPopupOnItemClickFunction
OpenPopupOnItemClick(str_id=C_NULL, mouse_button=1) -> Nothing

Helper to open popup when clicked on last item (note: actually triggers on the mouse released event to be consistent with popup behaviors).

source
CImGui.PathFillConvexMethod
PathFillConvex(handle::Ptr{ImDrawList}, col)
Note

Anti-aliased filling requires points to be in clockwise order.

source
CImGui.PathRectFunction
PathRect(handle::Ptr{ImDrawList}, rect_min, rect_max, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)

Stateful path API, add points then finish with PathFillConvex or PathStroke.

source
CImGui.PlotHistogramFunction
PlotHistogram(label, values, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))
-PlotHistogram(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=ImVec2(0,0))
source
CImGui.PlotLinesFunction
PlotLines(label, values, values_count::Integer, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))
-PlotLines(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0))
source
CImGui.PrimQuadUVMethod
PrimQuadUV(handle::Ptr{ImDrawList}, a, b, c, d, uv_a, uv_b, uv_c, uv_d, col)
Note

All primitives needs to be reserved via PrimReserve beforehand!

source
CImGui.PrimRectMethod
PrimRect(handle::Ptr{ImDrawList}, a, b, col)

Axis aligned rectangle (composed of two triangles).

Note

All primitives needs to be reserved via PrimReserve beforehand!

source
CImGui.PushButtonRepeatMethod
PushButtonRepeat(repeat)

In "repeat" mode, Button*() functions return repeated true in a typematic manner (using ImGuiIO.KeyRepeatDelay/ImGuiIO.KeyRepeatRate setting). Note that you can call IsItemActive after any Button() to tell if the button is held in the current frame.

source
CImGui.PushClipRectMethod
PushClipRect(handle::Ptr{ImDrawList}, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect)

Render-level scissoring. This is passed down to your render function but not used for CPU-side coarse clipping. Prefer using higher-level PushClipRect to affect logic (hit-testing and widget culling).

source
CImGui.PushIDMethod
PushID(ptr_id::Ptr)
+end
  • When ImGuiIO.WantCaptureMouse is set, imgui wants to use your mouse state, and you may want to discard/hide the inputs from the rest of your application.
  • When ImGuiIO.WantCaptureKeyboard is set, imgui wants to use your keyboard state, and you may want to discard/hide the inputs from the rest of your application.
  • When ImGuiIO.WantTextInput is set to may want to notify your OS to popup an on-screen keyboard, if available (e.g. on a mobile phone, or console OS).
Note
  1. You should always pass your mouse/keyboard inputs to imgui, even when the ImGuiIO.WantCaptureXXX flag are set false. This is because imgui needs to detect that you clicked in the void to unfocus its own windows.
  2. The ImGuiIO.WantCaptureMouse is more accurate that any attempt to "check if the mouse is hovering a window" (don't do that!). It handle mouse dragging correctly (both dragging that started over your application or over an imgui window) and handle e.g. modal windows blocking inputs. Those flags are updated by NewFrame. Preferably read the flags after calling NewFrame if you can afford it, but reading them before is also perfectly fine, as the bool toggle fairly rarely. If you have on a touch device, you might find use for an early call to UpdateHoveredWindowAndCaptureFlags().
  3. Text input widget releases focus on "Return KeyDown", so the subsequent "Return KeyUp" event that your application receive will typically have ImGuiIO.WantCaptureKeyboard=false. Depending on your application logic it may or not be inconvenient. You might want to track which key-downs were targeted for Dear ImGui, e.g. with an array of bool, and filter out the corresponding key-ups.)
source
CImGui.LabelTextMethod
LabelText(label, formatted_text)

Display text+label aligned the same way as value+label widgets.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.ListBoxFunction
ListBox(label, current_item, items, items_count, height_in_items=-1)
+ListBox(label, current_item, items_getter::Ptr{Cvoid}, data::Ptr{Cvoid}, items_count, height_in_items=-1)
source
CImGui.LoadIniSettingsFromDiskMethod
LoadIniSettingsFromDisk(ini_filename)

Call after CreateContext and before the first call to NewFrame. NewFrame automatically calls LoadIniSettingsFromDisk(ImGuiIO.IniFilename).

Tip

The disk functions are automatically called if ImGuiIO.IniFilename != CNULL (default is "imgui.ini"). Set ImGuiIO.IniFilename to CNULL to load/save manually. Read ImGuiIO.WantSaveIniSettings description about handling .ini saving manually.

source
CImGui.LogTextMethod
LogText(formatted_text)

Pass text data straight to log without being displayed.

source
CImGui.LogToClipboardFunction
LogToClipboard(max_depth=-1)

Start logging to OS clipboard.

All text output from interface is captured to clipboard. By default, tree nodes are automatically opened during logging.

source
CImGui.LogToFileFunction
LogToFile(max_depth=-1, filename=C_NULL)

Start logging to file.

All text output from interface is captured to file. By default, tree nodes are automatically opened during logging.

source
CImGui.LogToTTYFunction
LogToTTY(max_depth=-1)

Start logging to tty.

All text output from interface is captured to tty. By default, tree nodes are automatically opened during logging.

source
CImGui.MenuItemFunction
MenuItem(label, shortcut=C_NULL, selected::Bool=false, enabled::Bool=true) -> Bool
+MenuItem(label, shortcut, selected::Ref, enabled::Bool=true) -> Bool

Return true when activated. Shortcuts are displayed for convenience but not processed by ImGui at the moment.

source
CImGui.NextColumnMethod
NextColumn()

Next column, defaults to current row or next row if the current row is finished.

source
CImGui.OpenPopupOnItemClickFunction
OpenPopupOnItemClick(str_id=C_NULL, mouse_button=1) -> Nothing

Helper to open popup when clicked on last item (note: actually triggers on the mouse released event to be consistent with popup behaviors).

source
CImGui.PathFillConvexMethod
PathFillConvex(handle::Ptr{ImDrawList}, col)
Note

Anti-aliased filling requires points to be in clockwise order.

source
CImGui.PathRectFunction
PathRect(handle::Ptr{ImDrawList}, rect_min, rect_max, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)

Stateful path API, add points then finish with PathFillConvex or PathStroke.

source
CImGui.PlotHistogramFunction
PlotHistogram(label, values, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))
+PlotHistogram(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=ImVec2(0,0))
source
CImGui.PlotLinesFunction
PlotLines(label, values, values_count::Integer, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))
+PlotLines(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0))
source
CImGui.PrimQuadUVMethod
PrimQuadUV(handle::Ptr{ImDrawList}, a, b, c, d, uv_a, uv_b, uv_c, uv_d, col)
Note

All primitives needs to be reserved via PrimReserve beforehand!

source
CImGui.PrimRectMethod
PrimRect(handle::Ptr{ImDrawList}, a, b, col)

Axis aligned rectangle (composed of two triangles).

Note

All primitives needs to be reserved via PrimReserve beforehand!

source
CImGui.PushButtonRepeatMethod
PushButtonRepeat(repeat)

In "repeat" mode, Button*() functions return repeated true in a typematic manner (using ImGuiIO.KeyRepeatDelay/ImGuiIO.KeyRepeatRate setting). Note that you can call IsItemActive after any Button() to tell if the button is held in the current frame.

source
CImGui.PushClipRectMethod
PushClipRect(handle::Ptr{ImDrawList}, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect)

Render-level scissoring. This is passed down to your render function but not used for CPU-side coarse clipping. Prefer using higher-level PushClipRect to affect logic (hit-testing and widget culling).

source
CImGui.PushIDMethod
PushID(ptr_id::Ptr)
 PushID(int_id::Integer)
 PushID(str_id::AbstractString)
 PushID(str_id_begin::AbstractString, str_id_end::AbstractString)

Push identifier into the ID stack. IDs are hash of the entire stack!

Note

Read the FAQ for more details about how ID are handled in dear imgui. If you are creating widgets in a loop you most likely want to push a unique identifier (e.g. object pointer, loop index) to uniquely differentiate them. You can also use the "##foobar" syntax within widget label to distinguish them from each others.

FAQ

Q: How can I have multiple widgets with the same label or without a label?

Q: I have multiple widgets with the same label, and only the first one works. Why is that?

A: A primer on labels and the ID Stack...

Dear ImGui internally need to uniquely identify UI elements. Elements that are typically not clickable (such as calls to the Text functions) don't need an ID. Interactive widgets (such as calls to Button buttons) need a unique ID. Unique ID are used internally to track active widgets and occasionally associate state to widgets. Unique ID are implicitly built from the hash of multiple elements that identify the "path" to the UI element.

  • Unique ID are often derived from a string label:
CImGui.Button("OK")          # Label = "OK",     ID = hash of (..., "OK")
@@ -58,20 +58,20 @@
 if CImGui.TreeNode("node")
     CImGui.Button("Click") # Label = "Click",  ID = hash of (..., "node", "Click")
     CImGui.TreePop()
-end
  • When working with trees, ID are used to preserve the open/close state of each tree node. Depending on your use cases you may want to use strings, indices or pointers as ID.
    • e.g. when following a single pointer that may change over time, using a static string as ID will preserve your node open/closed state when the targeted object change.
    • e.g. when displaying a list of objects, using indices or pointers as ID will preserve the node open/closed state differently. See what makes more sense in your situation!
source
CImGui.PushItemWidthMethod
PushItemWidth(item_width)

Push width of items for the common item+label case, pixels:

  • item_width == 0: default to ~2/3 of windows width
  • item_width > 0: width in pixels
  • item_width < 0: align xx pixels to the right of window (so -1.0 always align width to the right side)
source
CImGui.PushTabStopMethod
PushTabStop(allow_keyboard_focus)

Allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets.

source
CImGui.PushTextWrapPosFunction
PushTextWrapPos(wrap_pos_x=0.0)

Word-wrapping for Text*() commands:

  • wrap_pos_x < 0: no wrapping
  • wrap_pos_x == 0: wrap to end of window (or column)
  • wrap_pos_x > 0: wrap at wrap_pos_x position in window local space
source
CImGui.RadioButtonMethod
RadioButton(label, active::Bool) -> Bool
+end
  • When working with trees, ID are used to preserve the open/close state of each tree node. Depending on your use cases you may want to use strings, indices or pointers as ID.
    • e.g. when following a single pointer that may change over time, using a static string as ID will preserve your node open/closed state when the targeted object change.
    • e.g. when displaying a list of objects, using indices or pointers as ID will preserve the node open/closed state differently. See what makes more sense in your situation!
source
CImGui.PushItemWidthMethod
PushItemWidth(item_width)

Push width of items for the common item+label case, pixels:

  • item_width == 0: default to ~2/3 of windows width
  • item_width > 0: width in pixels
  • item_width < 0: align xx pixels to the right of window (so -1.0 always align width to the right side)
source
CImGui.PushStyleColorMethod
PushStyleColor(idx, col)
+PushStyleColor(idx, col::Integer)

See also GetStyleColorVec4, TextColored, TextDisabled.

source
CImGui.PushStyleVarMethod
PushStyleVar(idx, val)
+PushStyleVar(idx, val::Real)

See also GetStyle.

source
CImGui.PushTabStopMethod
PushTabStop(allow_keyboard_focus)

Allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets.

source
CImGui.PushTextWrapPosFunction
PushTextWrapPos(wrap_pos_x=0.0)

Word-wrapping for Text*() commands:

  • wrap_pos_x < 0: no wrapping
  • wrap_pos_x == 0: wrap to end of window (or column)
  • wrap_pos_x > 0: wrap at wrap_pos_x position in window local space
source
CImGui.PushTextureIDMethod
PushTextureID(handle::Ptr{ImDrawList}, texture_id)
source
CImGui.RadioButtonMethod
RadioButton(label, active::Bool) -> Bool
 RadioButton(label, v::Ref, v_button::Integer) -> Bool

Return true when the value has been changed or when pressed/selected.

Example

if RadioButton("one", my_value==1)
     my_value = 1
-end
source
CImGui.RenderMethod
Render()

Calling this function ends the ImGui frame. This function finalizes the draw data.

Obsolete

Optionally call ImGuiIO.RenderDrawListsFn if set. Nowadays, prefer calling your render function yourself.

source
CImGui.ReserveMethod
Reserve(handle::Ptr{ImGuiTextBuffer})
source
CImGui.ResetMouseDragDeltaFunction
ResetMouseDragDelta(button=0)
source
CImGui.SameLineFunction
SameLine(local_pos_x=0.0, spacing_w=-1.0)

Call this function between widgets or groups to layout them horizontally.

source
CImGui.SaveIniSettingsToDiskMethod
SaveIniSettingsToDisk(ini_filename)
source
CImGui.SaveIniSettingsToMemoryFunction
SaveIniSettingsToMemory(out_ini_size=C_NULL)

Return a zero-terminated string with the .ini data which you can save by your own mean. Call when ImGuiIO.WantSaveIniSettings is set, then save data by your own mean and clear ImGuiIO.WantSaveIniSettings.

source
CImGui.SelectableFunction
Selectable(label, selected::Bool=false, flags=0, size=(0,0)) -> Bool
-Selectable(label, p_selected::Ref, flags=0, sizeImVec2(0,0)) -> Bool

Return true if is clicked, so you can modify your selection state:

  • 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
source
CImGui.SeparatorMethod
Separator()

Separator, generally horizontal. But inside a menu bar or in horizontal layout mode, it becomes a vertical separator.

source
CImGui.SetClipboardTextMethod
SetClipboardText(text)
source
CImGui.SetColorEditOptionsMethod
SetColorEditOptions(flags)

Initialize current options (generally on application startup) if you want to select a default format, picker type, etc. User will be able to change many settings, unless you pass the _NoOptions flag to your calls.

source
CImGui.SetColumnOffsetMethod
SetColumnOffset(column_index, offset_x)

Set position of column line (in pixels, from the left side of the contents region). Pass -1 to use current column.

source
CImGui.SetColumnWidthMethod
SetColumnWidth(column_index, width)

Set column width (in pixels). Pass -1 to use current column.

source
CImGui.SetCurrentContextMethod
SetCurrentContext(ctx::Ptr{ImGuiContext})

Set current context to ctx.

source
CImGui.SetCursorPosMethod
SetCursorPos(x, y)
-SetCursorPos(local_pos)
source
CImGui.SetCursorPosXMethod
SetCursorPosX(local_x)
source
CImGui.SetCursorPosYMethod
SetCursorPosX(local_y)
source
CImGui.SetCursorScreenPosMethod
SetCursorScreenPos(pos)
-SetCursorScreenPos(x, y)

Set cursor position in absolute screen coordinates [0..io.DisplaySize].

source
CImGui.SetDragDropPayloadFunction
SetDragDropPayload(type, data, size, cond=ImGuiCond_(1)) -> bool

type is a user defined string of maximum 32 characters. Strings starting with '_' are reserved for dear imgui internal types. Data is copied and held by imgui.

BETA API

Missing Demo code. API may evolve.

source
CImGui.SetItemAllowOverlapMethod
SetItemAllowOverlap()

Allow last item to be overlapped by a subsequent item. Sometimes useful with invisible buttons, selectables, etc. to catch unused area. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.SetItemDefaultFocusMethod
SetItemDefaultFocus()

Make last item the default focused item of a window.

Tip

Prefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify "this is the default item").

source
CImGui.SetKeyboardFocusHereFunction
SetKeyboardFocusHere(offset=0)

Focus keyboard on the next widget. Use positive offset to access sub components of a multiple component widget. Use -1 to access previous widget.

Tip

Prefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify "this is the default item").

source
CImGui.SetMouseCursorMethod
SetMouseCursor(type)

Set desired cursor type.

source
CImGui.SetNextFrameWantCaptureKeyboardFunction
SetNextFrameWantCaptureKeyboard(capture=true)

Manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle). e.g. force capture keyboard when your widget is being hovered.

source
CImGui.SetNextFrameWantCaptureMouseFunction
CaptureMouseFromApp(capture=true)

Manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle).

source
CImGui.SetNextItemOpenFunction
SetNextItemOpen(is_open, cond=0)

Set next TreeNode/CollapsingHeader open state.

source
CImGui.SetNextItemWidthMethod
SetNextItemWidth(item_width)

Set width of the next common large "item+label" widget.

  • item_width > 0.0: width in pixels
  • item_width < 0.0: align xx pixels to the right of window (so -1.0 always align width to the right side)
source
CImGui.SetNextWindowBgAlphaMethod
SetNextWindowBgAlpha(alpha)

Set next window background color alpha. Helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. You may also use ImGuiWindowFlags_NoBackground.

source
CImGui.SetNextWindowCollapsedFunction
SetNextWindowCollapsed(collapsed, cond=0)

Set next window collapsed state. Call before Begin.

source
CImGui.SetNextWindowContentSizeMethod
SetNextWindowContentSize(size)
-SetNextWindowContentSize(x, y)

Set next window content size (~ enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.). Set an axis to 0.0 to leave it automatic. Call before Begin.

source
CImGui.SetNextWindowFocusMethod
SetNextWindowFocus()

Set next window to be focused / front-most. Call before Begin.

source
CImGui.SetNextWindowPosFunction
SetNextWindowPos(pos, cond=0, pivot=(0,0))

Set next window position. Call before Begin. use pivot=(0.5,0.5) to center on given point, etc.

source
CImGui.SetNextWindowSizeFunction
SetNextWindowSize(size, cond=0)

Set next window size. Set axis to 0.0 to force an auto-fit on this axis. Call before Begin.

source
CImGui.SetNextWindowSizeConstraintsFunction
SetNextWindowSizeConstraints(size_min, size_max, custom_callback=C_NULL, custom_callback_data=C_NULL)

Set next window size limits. Use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints.

source
CImGui.SetScrollFromPosXFunction
SetScrollFromPosX(local_y, center_y_ratio=0.5)

Adjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.

source
CImGui.SetScrollFromPosYFunction
SetScrollFromPosY(local_y, center_y_ratio=0.5)

Adjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.

source
CImGui.SetScrollHereYFunction
SetScrollHereY(center_y_ratio=0.5)

Adjust scrolling amount to make current cursor position visible.

  • center_y_ratio == 0.0: top
  • center_y_ratio == 0.5: center
  • center_y_ratio == 1.0: bottom

When using to make a "default/current item" visible, consider using SetItemDefaultFocus instead.

source
CImGui.SetScrollXMethod
SetScrollX(scroll_x)

Set scrolling amount [0..GetScrollMaxX()].

source
CImGui.SetScrollYMethod
SetScrollY(scroll_y)

Set scrolling amount [0..GetScrollMaxY()].

source
CImGui.SetStateStorageMethod
SetStateStorage(storage)

Replace current window storage with our own (if you want to manipulate it yourself, typically clear subsection of it)

source
CImGui.SetTabItemClosedMethod
SetTabItemClosed(tab_or_docked_window_label)

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.

BETA API

API may evolve!

source
CImGui.SetTexIDMethod
SetTexID(self::Ptr{ImFontAtlas}, id)
source
CImGui.SetTooltipMethod
SetTooltip(formatted_text)

Set a text-only tooltip, typically use with IsItemHovered. Overidde any previous call to SetTooltip.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.SetWindowCollapsedFunction
SetWindowCollapsed(name::AbstractString, collapsed, cond=0)

Set named window collapsed state.

source
CImGui.SetWindowCollapsedFunction
SetWindowCollapsedBool(collapsed, cond=0)

Set current window collapsed state.

Not recommended!

This function is not recommended! Prefer using SetNextWindowCollapsed.

source
CImGui.SetWindowFocusMethod
SetWindowFocus(name::Ptr{Cvoid})
-SetWindowFocus(name::AbstractString)

Set named window to be focused / front-most. Use C_NULL to remove focus.

source
CImGui.SetWindowFocusMethod
SetWindowFocus()

Set current window to be focused / top-most.

Not recommended!

This function is not recommended! Prefer using SetNextWindowFocus.

source
CImGui.SetWindowFontScaleMethod
SetWindowFontScale(scale)

Set font scale. Adjust ImGuiIO.FontGlobalScale if you want to scale all windows.

source
CImGui.SetWindowPosFunction
SetWindowPosStr(name::AbstractString, pos, cond=0)

Set named window position.

source
CImGui.SetWindowPosFunction
SetWindowPos(pos, cond=0)

Set current window position - call within Begin/End.

Not recommended!

This function is not recommended! Prefer using SetNextWindowPos, as this may incur tearing and side-effects.

source
CImGui.SetWindowSizeFunction
SetWindowSizeStr(name::AbstractString, size, cond=0)

Set named window size. Set axis to 0.0 to force an auto-fit on this axis.

source
CImGui.SetWindowSizeFunction
SetWindowSize(size, cond=0)

Set current window size - call within Begin/End. Set to (0,0) to force an auto-fit.

Not recommended!

This function is not recommended! Prefer using SetNextWindowSize, as this may incur tearing and minor side-effects.

source
CImGui.ShowAboutWindowFunction
ShowAboutWindow()
-ShowAboutWindow(p_open=C_NULL)

Create about window. Display Dear ImGui version, credits and build/system information.

source
CImGui.ShowDemoWindowFunction
ShowDemoWindow()
-ShowDemoWindow(p_open=C_NULL)

Create demo/test window. Demonstrate most ImGui features.

source
CImGui.ShowFontSelectorMethod
ShowFontSelector(label)

Add font selector block (not a window), essentially a combo listing the loaded fonts.

source
CImGui.ShowMetricsWindowFunction
ShowMetricsWindow()
-ShowMetricsWindow(p_open=C_NULL)

Create metrics window. Display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.

source
CImGui.ShowStyleEditorFunction
ShowStyleEditor()
-ShowStyleEditor(ref=C_NULL)

Add style editor block (not a window). You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style).

source
CImGui.ShowStyleSelectorMethod
ShowStyleSelector()
-ShowStyleSelector(label)

Add style selector block (not a window), essentially a combo listing the default styles.

source
CImGui.ShowUserGuideMethod
ShowUserGuide()

Add basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls).

source
CImGui.SizeMethod
Size(handle::Ptr{ImGuiTextBuffer}) -> Cint
source
CImGui.SliderAngleFunction
SliderAngle(label, v_rad, v_degrees_min=-360.0, v_degrees_max=360.0, format="%.0f deg", flags=0) -> Bool
source
CImGui.SliderFloatFunction
SliderFloat(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

Create a slider widget.

Tip

ctrl+click on a slider to input with keyboard. manually input values aren't clamped, can go off-bounds.

Arguments

  • format: adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display
    • "%.3f" -> 1.234
    • "%5.2f secs" -> 01.23 secs
    • "Biscuit: %.0f" -> Biscuit: 1
source
CImGui.SliderFloat2Function
SliderFloat2(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.SliderFloat3Function
SliderFloat3(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.SliderFloat4Function
SliderFloat4(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.SliderIntFunction
SliderInt(label, v, v_min, v_max, format="%d", flags=0) -> Bool
source
CImGui.SliderInt2Function
SliderInt2(label, v, v_min, v_max, format="%d", flags=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.SliderInt3Function
SliderInt3(label, v, v_min, v_max, format="%d", flags=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.SliderInt4Function
SliderInt4(label, v, v_min, v_max, format="%d", flags=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.SliderScalarFunction
SliderScalar(label, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool
source
CImGui.SliderScalarNFunction
SliderScalarN(label, data_type, v, components, v_min, v_max, format=C_NULL, flag=0) -> Bool
source
CImGui.SmallButtonMethod
SmallButton(label) -> Bool

Return true when the value has been changed or when pressed/selected. It creates a button with FramePadding=(0,0) to easily embed within text.

source
CImGui.SpacingMethod
Spacing()

Add vertical spacing.

source
CImGui.StepMethod
Step(handle::Ptr{ImGuiListClipper}) -> Bool

Call until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items.

source
CImGui.StyleColorsClassicMethod
StyleColorsClassic()

Use the classic imgui style.

source
CImGui.StyleColorsDarkMethod
StyleColorsDark()

Use the new, recommended style. This is also the default style.

source
CImGui.StyleColorsLightMethod
StyleColorsLight()

This style is best used with borders and a custom, thicker font.

source
CImGui.TableGetColumnCountMethod
TableGetColumnCount() -> CInt

return number of columns (value passed to BeginTable)

source
CImGui.TableGetColumnFlagsFunction
TableGetColumnFlags(column_n = -1) -> ImGuiTableColumnFlags

Return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.

source
CImGui.TableGetColumnIndexMethod
TableGetColumnIndex() -> CInt

Return current column index

source
CImGui.TableGetColumnNameFunction
TableGetColumnName(column_n = -1) -> String

return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.

source
CImGui.TableGetRowIndexMethod
TableGetRowIndex() -> CInt

Return current row index.

source
CImGui.TableGetSortSpecsMethod
TableGetSortSpecs() -> Ptr{ImGuiTableSortSpecs}

get latest sort specs for the table (NULL if not sorting).

source
CImGui.TableHeaderMethod
TableHeader(label)

Submit one header cell manually (rarely used)

source
CImGui.TableHeadersRowMethod
TableHeadersRow()

Submit all headers cells based on data provided to TableSetupColumn() + submit context menu

source
CImGui.TableNextColumnMethod
TableNextColumn() -> Bool

Append into the next column (or first column of next row if currently in last column). Return true when column is visible.

source
CImGui.TableNextRowFunction
TableNextRow(row_flags = ImGuiTableRowFlags_(0), min_row_height = 0.0)

Append into the first cell of a new row.

source
CImGui.TableSetBgColorFunction
TableSetBgColor(bg_target, color, column_n = -1)

Change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.

source
CImGui.TableSetColumnIndexMethod
TableSetColumnIndex(column_n) -> Bool

Append into the specified column. Return true when column is visible.

source
CImGui.TableSetupColumnFunction
TableSetupColumn(label, flags = ImGuiTableColumnFlags_(0), init_width_or_weight = 0.0, user_id = ImGuiID(0))

Specify label, resizing policy, default width/weight, id, various other flags etc.

source
CImGui.TableSetupScrollFreezeMethod
TableSetupScrollFreeze(cols, rows)

Lock columns/rows so they stay visible when scrolled.

source
CImGui.TextMethod
Text(formatted_text)

Create a text widget.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TextBufferMethod
TextBuffer() -> Ptr{ImGuiTextBuffer}

Helper: Growable text buffer for logging/accumulating text

source
CImGui.TextColoredMethod
TextColored(col, formatted_text)

Shortcut for PushStyleColor(ImGuiCol_Text, col); Text(text); PopStyleColor();.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TextDisabledMethod
TextDisabled(formatted_text)

Shortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(text); PopStyleColor();.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TextUnformattedFunction
TextUnformatted(text, text_end=C_NULL)

Raw text without formatting. Roughly equivalent to Text("%s", text) but:

  1. doesn't require null terminated string if text_end is specified;
  2. it's faster, no memory copy is done, no buffer size limits, recommended for long chunks of text.
source
CImGui.TextWrappedMethod
TextWrapped(formatted_text)

Shortcut for PushTextWrapPos(0.0f); Text(text); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using SetNextWindowSize.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeMethod
TreeNode(label::AbstractString) -> Bool

TreeNode functions return true when the node is open, in which case you need to also call TreePop when you are finished displaying the tree node contents.

source
CImGui.TreeNodeMethod
TreeNode(str_id, formatted_text) -> Bool

Helper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeMethod
TreeNodePtr(ptr_id::Ptr, formatted_text) -> Bool

Helper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeExFunction
TreeNodeEx(label, flags=0) -> Bool
source
CImGui.TreeNodeExMethod
TreeNodeEx(str_id, flags, formatted_text) -> Bool
Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeExMethod
TreeNodeEx(ptr_id::Ptr, flags, formatted_text) -> Bool
Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreePopMethod
TreePop()

Unindent + PopID.

source
CImGui.TreePushFunction
TreePush(ptr_id::Ptr=C_NULL)

Indent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.

source
CImGui.TreePushMethod
TreePush(str_id)

Indent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.

source
CImGui.UnindentFunction
Unindent()
-Unindent(indent_w)

Move content position back to the left, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.

source
CImGui.VSliderFloatFunction
VSliderFloat(label, size, v, v_min, v_max, format="%.3f", flag=0) -> Bool
source
CImGui.VSliderIntFunction
VSliderInt(label, size, v, v_min, v_max, format="%d", flag=0) -> Bool
source
CImGui.VSliderScalarFunction
VSliderScalar(label, size, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool
source
CImGui.ValueBoolMethod
ValueBool(prefix, b)

Output single value in "name: value" format.

source
CImGui.ValueFloatFunction
ValueFloat(prefix, v, float_format=C_NULL)

Output single value in "name: value" format.

source
CImGui.ValueIntMethod
ValueInt(prefix, v)

Output single value in "name: value" format.

source
CImGui.ValueUintMethod
ValueUint(prefix, v)

Output single value in "name: value" format.

source
+end
source
CImGui.RenderMethod
Render()

Calling this function ends the ImGui frame. This function finalizes the draw data.

Obsolete

Optionally call ImGuiIO.RenderDrawListsFn if set. Nowadays, prefer calling your render function yourself.

source
CImGui.ReserveMethod
Reserve(handle::Ptr{ImGuiTextBuffer})
source
CImGui.ResetMouseDragDeltaFunction
ResetMouseDragDelta(button=0)
source
CImGui.SameLineFunction
SameLine(local_pos_x=0.0, spacing_w=-1.0)

Call this function between widgets or groups to layout them horizontally.

source
CImGui.SaveIniSettingsToDiskMethod
SaveIniSettingsToDisk(ini_filename)
source
CImGui.SaveIniSettingsToMemoryFunction
SaveIniSettingsToMemory(out_ini_size=C_NULL)

Return a zero-terminated string with the .ini data which you can save by your own mean. Call when ImGuiIO.WantSaveIniSettings is set, then save data by your own mean and clear ImGuiIO.WantSaveIniSettings.

source
CImGui.SelectableFunction
Selectable(label, selected::Bool=false, flags=0, size=(0,0)) -> Bool
+Selectable(label, p_selected::Ref, flags=0, sizeImVec2(0,0)) -> Bool

Return true if is clicked, so you can modify your selection state:

  • 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
source
CImGui.SeparatorMethod
Separator()

Separator, generally horizontal. But inside a menu bar or in horizontal layout mode, it becomes a vertical separator.

source
CImGui.SetClipboardTextMethod
SetClipboardText(text)
source
CImGui.SetColorEditOptionsMethod
SetColorEditOptions(flags)

Initialize current options (generally on application startup) if you want to select a default format, picker type, etc. User will be able to change many settings, unless you pass the _NoOptions flag to your calls.

source
CImGui.SetColumnOffsetMethod
SetColumnOffset(column_index, offset_x)

Set position of column line (in pixels, from the left side of the contents region). Pass -1 to use current column.

source
CImGui.SetColumnWidthMethod
SetColumnWidth(column_index, width)

Set column width (in pixels). Pass -1 to use current column.

source
CImGui.SetCurrentContextMethod
SetCurrentContext(ctx::Ptr{ImGuiContext})

Set current context to ctx.

source
CImGui.SetCursorPosMethod
SetCursorPos(x, y)
+SetCursorPos(local_pos)
source
CImGui.SetCursorPosXMethod
SetCursorPosX(local_x)
source
CImGui.SetCursorPosYMethod
SetCursorPosX(local_y)
source
CImGui.SetCursorScreenPosMethod
SetCursorScreenPos(pos)
+SetCursorScreenPos(x, y)

Set cursor position in absolute screen coordinates [0..io.DisplaySize].

source
CImGui.SetDragDropPayloadFunction
SetDragDropPayload(type, data, size, cond=ImGuiCond_(1)) -> bool

type is a user defined string of maximum 32 characters. Strings starting with '_' are reserved for dear imgui internal types. Data is copied and held by imgui.

BETA API

Missing Demo code. API may evolve.

source
CImGui.SetItemAllowOverlapMethod
SetItemAllowOverlap()

Allow last item to be overlapped by a subsequent item. Sometimes useful with invisible buttons, selectables, etc. to catch unused area. See Demo Window under "Widgets->Querying Status" for an interactive visualization of many of those functions.

source
CImGui.SetItemDefaultFocusMethod
SetItemDefaultFocus()

Make last item the default focused item of a window.

Tip

Prefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify "this is the default item").

source
CImGui.SetKeyboardFocusHereFunction
SetKeyboardFocusHere(offset=0)

Focus keyboard on the next widget. Use positive offset to access sub components of a multiple component widget. Use -1 to access previous widget.

Tip

Prefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify "this is the default item").

source
CImGui.SetMouseCursorMethod
SetMouseCursor(type)

Set desired cursor type.

source
CImGui.SetNextFrameWantCaptureKeyboardFunction
SetNextFrameWantCaptureKeyboard(capture=true)

Manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle). e.g. force capture keyboard when your widget is being hovered.

source
CImGui.SetNextFrameWantCaptureMouseFunction
CaptureMouseFromApp(capture=true)

Manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle).

source
CImGui.SetNextItemOpenFunction
SetNextItemOpen(is_open, cond=0)

Set next TreeNode/CollapsingHeader open state.

source
CImGui.SetNextItemWidthMethod
SetNextItemWidth(item_width)

Set width of the next common large "item+label" widget.

  • item_width > 0.0: width in pixels
  • item_width < 0.0: align xx pixels to the right of window (so -1.0 always align width to the right side)
source
CImGui.SetNextWindowBgAlphaMethod
SetNextWindowBgAlpha(alpha)

Set next window background color alpha. Helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. You may also use ImGuiWindowFlags_NoBackground.

source
CImGui.SetNextWindowCollapsedFunction
SetNextWindowCollapsed(collapsed, cond=0)

Set next window collapsed state. Call before Begin.

source
CImGui.SetNextWindowContentSizeMethod
SetNextWindowContentSize(size)
+SetNextWindowContentSize(x, y)

Set next window content size (~ enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.). Set an axis to 0.0 to leave it automatic. Call before Begin.

source
CImGui.SetNextWindowFocusMethod
SetNextWindowFocus()

Set next window to be focused / front-most. Call before Begin.

source
CImGui.SetNextWindowPosFunction
SetNextWindowPos(pos, cond=0, pivot=(0,0))

Set next window position. Call before Begin. use pivot=(0.5,0.5) to center on given point, etc.

source
CImGui.SetNextWindowSizeFunction
SetNextWindowSize(size, cond=0)

Set next window size. Set axis to 0.0 to force an auto-fit on this axis. Call before Begin.

source
CImGui.SetNextWindowSizeConstraintsFunction
SetNextWindowSizeConstraints(size_min, size_max, custom_callback=C_NULL, custom_callback_data=C_NULL)

Set next window size limits. Use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints.

source
CImGui.SetScrollFromPosXFunction
SetScrollFromPosX(local_y, center_y_ratio=0.5)

Adjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.

source
CImGui.SetScrollFromPosYFunction
SetScrollFromPosY(local_y, center_y_ratio=0.5)

Adjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.

source
CImGui.SetScrollHereYFunction
SetScrollHereY(center_y_ratio=0.5)

Adjust scrolling amount to make current cursor position visible.

  • center_y_ratio == 0.0: top
  • center_y_ratio == 0.5: center
  • center_y_ratio == 1.0: bottom

When using to make a "default/current item" visible, consider using SetItemDefaultFocus instead.

source
CImGui.SetScrollXMethod
SetScrollX(scroll_x)

Set scrolling amount [0..GetScrollMaxX()].

source
CImGui.SetScrollYMethod
SetScrollY(scroll_y)

Set scrolling amount [0..GetScrollMaxY()].

source
CImGui.SetStateStorageMethod
SetStateStorage(storage)

Replace current window storage with our own (if you want to manipulate it yourself, typically clear subsection of it)

source
CImGui.SetTabItemClosedMethod
SetTabItemClosed(tab_or_docked_window_label)

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.

BETA API

API may evolve!

source
CImGui.SetTexIDMethod
SetTexID(self::Ptr{ImFontAtlas}, id)
source
CImGui.SetTooltipMethod
SetTooltip(formatted_text)

Set a text-only tooltip, typically use with IsItemHovered. Overidde any previous call to SetTooltip.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.SetWindowCollapsedFunction
SetWindowCollapsed(name::AbstractString, collapsed, cond=0)

Set named window collapsed state.

source
CImGui.SetWindowCollapsedFunction
SetWindowCollapsedBool(collapsed, cond=0)

Set current window collapsed state.

Not recommended!

This function is not recommended! Prefer using SetNextWindowCollapsed.

source
CImGui.SetWindowFocusMethod
SetWindowFocus(name::Ptr{Cvoid})
+SetWindowFocus(name::AbstractString)

Set named window to be focused / front-most. Use C_NULL to remove focus.

source
CImGui.SetWindowFocusMethod
SetWindowFocus()

Set current window to be focused / top-most.

Not recommended!

This function is not recommended! Prefer using SetNextWindowFocus.

source
CImGui.SetWindowFontScaleMethod
SetWindowFontScale(scale)

Set font scale. Adjust ImGuiIO.FontGlobalScale if you want to scale all windows.

source
CImGui.SetWindowPosFunction
SetWindowPosStr(name::AbstractString, pos, cond=0)

Set named window position.

source
CImGui.SetWindowPosFunction
SetWindowPos(pos, cond=0)

Set current window position - call within Begin/End.

Not recommended!

This function is not recommended! Prefer using SetNextWindowPos, as this may incur tearing and side-effects.

source
CImGui.SetWindowSizeFunction
SetWindowSizeStr(name::AbstractString, size, cond=0)

Set named window size. Set axis to 0.0 to force an auto-fit on this axis.

source
CImGui.SetWindowSizeFunction
SetWindowSize(size, cond=0)

Set current window size - call within Begin/End. Set to (0,0) to force an auto-fit.

Not recommended!

This function is not recommended! Prefer using SetNextWindowSize, as this may incur tearing and minor side-effects.

source
CImGui.ShowAboutWindowFunction
ShowAboutWindow()
+ShowAboutWindow(p_open=C_NULL)

Create about window. Display Dear ImGui version, credits and build/system information.

source
CImGui.ShowDemoWindowFunction
ShowDemoWindow()
+ShowDemoWindow(p_open=C_NULL)

Create demo/test window. Demonstrate most ImGui features.

source
CImGui.ShowFontSelectorMethod
ShowFontSelector(label)

Add font selector block (not a window), essentially a combo listing the loaded fonts.

source
CImGui.ShowMetricsWindowFunction
ShowMetricsWindow()
+ShowMetricsWindow(p_open=C_NULL)

Create metrics window. Display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.

source
CImGui.ShowStyleEditorFunction
ShowStyleEditor()
+ShowStyleEditor(ref=C_NULL)

Add style editor block (not a window). You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style).

source
CImGui.ShowStyleSelectorMethod
ShowStyleSelector()
+ShowStyleSelector(label)

Add style selector block (not a window), essentially a combo listing the default styles.

source
CImGui.ShowUserGuideMethod
ShowUserGuide()

Add basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls).

source
CImGui.SizeMethod
Size(handle::Ptr{ImGuiTextBuffer}) -> Cint
source
CImGui.SliderAngleFunction
SliderAngle(label, v_rad, v_degrees_min=-360.0, v_degrees_max=360.0, format="%.0f deg", flags=0) -> Bool
source
CImGui.SliderFloatFunction
SliderFloat(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

Create a slider widget.

Tip

ctrl+click on a slider to input with keyboard. manually input values aren't clamped, can go off-bounds.

Arguments

  • format: adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display
    • "%.3f" -> 1.234
    • "%5.2f secs" -> 01.23 secs
    • "Biscuit: %.0f" -> Biscuit: 1
source
CImGui.SliderFloat2Function
SliderFloat2(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.SliderFloat3Function
SliderFloat3(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.SliderFloat4Function
SliderFloat4(label, v, v_min, v_max, format="%.3f", flag=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.SliderIntFunction
SliderInt(label, v, v_min, v_max, format="%d", flags=0) -> Bool
source
CImGui.SliderInt2Function
SliderInt2(label, v, v_min, v_max, format="%d", flags=0) -> Bool

The expected number of elements to be accessible in v is 2.

source
CImGui.SliderInt3Function
SliderInt3(label, v, v_min, v_max, format="%d", flags=0) -> Bool

The expected number of elements to be accessible in v is 3.

source
CImGui.SliderInt4Function
SliderInt4(label, v, v_min, v_max, format="%d", flags=0) -> Bool

The expected number of elements to be accessible in v is 4.

source
CImGui.SliderScalarFunction
SliderScalar(label, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool
source
CImGui.SliderScalarNFunction
SliderScalarN(label, data_type, v, components, v_min, v_max, format=C_NULL, flag=0) -> Bool
source
CImGui.SmallButtonMethod
SmallButton(label) -> Bool

Return true when the value has been changed or when pressed/selected. It creates a button with FramePadding=(0,0) to easily embed within text.

source
CImGui.SpacingMethod
Spacing()

Add vertical spacing.

source
CImGui.StepMethod
Step(handle::Ptr{ImGuiListClipper}) -> Bool

Call until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items.

source
CImGui.StyleColorsClassicMethod
StyleColorsClassic()

Use the classic imgui style.

source
CImGui.StyleColorsDarkMethod
StyleColorsDark()

Use the new, recommended style. This is also the default style.

source
CImGui.StyleColorsLightMethod
StyleColorsLight()

This style is best used with borders and a custom, thicker font.

source
CImGui.TableGetColumnCountMethod
TableGetColumnCount() -> CInt

return number of columns (value passed to BeginTable)

source
CImGui.TableGetColumnFlagsFunction
TableGetColumnFlags(column_n = -1) -> ImGuiTableColumnFlags

Return column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.

source
CImGui.TableGetColumnIndexMethod
TableGetColumnIndex() -> CInt

Return current column index

source
CImGui.TableGetColumnNameFunction
TableGetColumnName(column_n = -1) -> String

return "" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.

source
CImGui.TableGetRowIndexMethod
TableGetRowIndex() -> CInt

Return current row index.

source
CImGui.TableGetSortSpecsMethod
TableGetSortSpecs() -> Ptr{ImGuiTableSortSpecs}

get latest sort specs for the table (NULL if not sorting).

source
CImGui.TableHeaderMethod
TableHeader(label)

Submit one header cell manually (rarely used)

source
CImGui.TableHeadersRowMethod
TableHeadersRow()

Submit all headers cells based on data provided to TableSetupColumn() + submit context menu

source
CImGui.TableNextColumnMethod
TableNextColumn() -> Bool

Append into the next column (or first column of next row if currently in last column). Return true when column is visible.

source
CImGui.TableNextRowFunction
TableNextRow(row_flags = ImGuiTableRowFlags_(0), min_row_height = 0.0)

Append into the first cell of a new row.

source
CImGui.TableSetBgColorFunction
TableSetBgColor(bg_target, color, column_n = -1)

Change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.

source
CImGui.TableSetColumnIndexMethod
TableSetColumnIndex(column_n) -> Bool

Append into the specified column. Return true when column is visible.

source
CImGui.TableSetupColumnFunction
TableSetupColumn(label, flags = ImGuiTableColumnFlags_(0), init_width_or_weight = 0.0, user_id = ImGuiID(0))

Specify label, resizing policy, default width/weight, id, various other flags etc.

source
CImGui.TableSetupScrollFreezeMethod
TableSetupScrollFreeze(cols, rows)

Lock columns/rows so they stay visible when scrolled.

source
CImGui.TextMethod
Text(formatted_text)

Create a text widget.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TextBufferMethod
TextBuffer() -> Ptr{ImGuiTextBuffer}

Helper: Growable text buffer for logging/accumulating text

source
CImGui.TextColoredMethod
TextColored(col, formatted_text)

Shortcut for PushStyleColor(ImGuiCol_Text, col); Text(text); PopStyleColor();.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TextDisabledMethod
TextDisabled(formatted_text)

Shortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(text); PopStyleColor();.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TextUnformattedFunction
TextUnformatted(text, text_end=C_NULL)

Raw text without formatting. Roughly equivalent to Text("%s", text) but:

  1. doesn't require null terminated string if text_end is specified;
  2. it's faster, no memory copy is done, no buffer size limits, recommended for long chunks of text.
source
CImGui.TextWrappedMethod
TextWrapped(formatted_text)

Shortcut for PushTextWrapPos(0.0f); Text(text); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using SetNextWindowSize.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeMethod
TreeNode(label::AbstractString) -> Bool

TreeNode functions return true when the node is open, in which case you need to also call TreePop when you are finished displaying the tree node contents.

source
CImGui.TreeNodeMethod
TreeNode(str_id, formatted_text) -> Bool

Helper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeMethod
TreeNodePtr(ptr_id::Ptr, formatted_text) -> Bool

Helper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.

Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeExFunction
TreeNodeEx(label, flags=0) -> Bool
source
CImGui.TreeNodeExMethod
TreeNodeEx(str_id, flags, formatted_text) -> Bool
Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreeNodeExMethod
TreeNodeEx(ptr_id::Ptr, flags, formatted_text) -> Bool
Limited support

Formatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.

source
CImGui.TreePopMethod
TreePop()

Unindent + PopID.

source
CImGui.TreePushFunction
TreePush(ptr_id::Ptr=C_NULL)

Indent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.

source
CImGui.TreePushMethod
TreePush(str_id)

Indent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.

source
CImGui.UnindentFunction
Unindent()
+Unindent(indent_w)

Move content position back to the left, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.

source
CImGui.VSliderFloatFunction
VSliderFloat(label, size, v, v_min, v_max, format="%.3f", flag=0) -> Bool
source
CImGui.VSliderIntFunction
VSliderInt(label, size, v, v_min, v_max, format="%d", flag=0) -> Bool
source
CImGui.VSliderScalarFunction
VSliderScalar(label, size, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool
source
CImGui.ValueBoolMethod
ValueBool(prefix, b)

Output single value in "name: value" format.

source
CImGui.ValueFloatFunction
ValueFloat(prefix, v, float_format=C_NULL)

Output single value in "name: value" format.

source
CImGui.ValueIntMethod
ValueInt(prefix, v)

Output single value in "name: value" format.

source
CImGui.ValueUintMethod
ValueUint(prefix, v)

Output single value in "name: value" format.

source
diff --git a/dev/backends/index.html b/dev/backends/index.html index 709a48e..12bd60b 100644 --- a/dev/backends/index.html +++ b/dev/backends/index.html @@ -1,2 +1,2 @@ -Backends · CImGui.jl

Backends

ImGui is a very embeddable library because it abstracts things like drawing to the screen and creating windows to its backends. There are many official backends, but currently CImGui.jl only supports the GLFW/OpenGL3 backend.

CImGui.set_backendFunction
set_backend(backend::Symbol)

Set the backend to use. Currently supported backends are:

  • :GlfwOpenGL3 (GLFW/OpenGL3, requires ModernGL.jl and GLFW.jl)
source
CImGui.renderFunction
render(ui::Function, ctx::Ptr{lib.ImGuiContext}; kwargs...)

Top-level function to call a renderloop implemented by the backend selected by set_backend(). This function will not return until the program exits, either by the user closing the window or ui() returning :imgui_exit_loop. It will also not yield the loop, though you may explicitly call yield() in ui().

Arguments

Positional arguments:

  • ui: The function to execute in the renderloop. This where all the GUI code with calls to CImGui should go.
  • ctx: The ImGui context to use. Note that DestroyContext() will automatically be called on it at the end of the renderloop, so it will be unusable afterwards.

Keyword arguments:

  • hotloading=true: Enable calling the latest version of ui() using @invokelatest. This is handy when using Revise.jl.
  • on_exit::Union{Function, Nothing}=nothing: A destructor/finalizer function that will be called before destroying ctx. This might be useful if you're using some external library that needs to be cleaned up in a certain order.
  • clear_color=Cfloat[0.45, 0.55, 0.60, 1.00]: The color of the window background. This can also be a Ref{Vector{Cfloat}} if you want to control the color dynamically (see the official demo for an example).
  • window_size=(1280, 720): The initial size of the window.
  • window_title="CImGui": The window title.
  • engine=nothing: An optional ImGuiTestEngine.Engine instance. If there are any tests registered with the test engine they will be queued and run automatically.
  • opengl_version::VersionNumber=v"3.2": The OpenGL version to use.
source
+Backends · CImGui.jl

Backends

ImGui is a very embeddable library because it abstracts things like drawing to the screen and creating windows to its backends. There are many official backends, but currently CImGui.jl only supports the GLFW/OpenGL3 backend.

CImGui.set_backendFunction
set_backend(backend::Symbol)

Set the backend to use. Currently supported backends are:

  • :GlfwOpenGL3 (GLFW/OpenGL3, requires ModernGL.jl and GLFW.jl)
source
CImGui.renderFunction
render(ui::Function, ctx::Ptr{lib.ImGuiContext}; kwargs...)

Top-level function to call a renderloop implemented by the backend selected by set_backend(). This function will not return until the program exits, either by the user closing the window or ui() returning :imgui_exit_loop. It will also not yield the loop, though you may explicitly call yield() in ui().

Arguments

Positional arguments:

  • ui: The function to execute in the renderloop. This where all the GUI code with calls to CImGui should go.
  • ctx: The ImGui context to use. Note that DestroyContext() will automatically be called on it at the end of the renderloop, so it will be unusable afterwards.

Keyword arguments:

  • hotloading=true: Enable calling the latest version of ui() using @invokelatest. This is handy when using Revise.jl.
  • on_exit::Union{Function, Nothing}=nothing: A destructor/finalizer function that will be called before destroying ctx. This might be useful if you're using some external library that needs to be cleaned up in a certain order.
  • clear_color=Cfloat[0.45, 0.55, 0.60, 1.00]: The color of the window background. This can also be a Ref{Vector{Cfloat}} if you want to control the color dynamically (see the official demo for an example).
  • window_size=(1280, 720): The initial size of the window.
  • window_title="CImGui": The window title.
  • engine=nothing: An optional ImGuiTestEngine.Engine instance. If there are any tests registered with the test engine they will be queued and run automatically.
  • opengl_version::VersionNumber=v"3.2": The OpenGL version to use.
source
diff --git a/dev/changelog/index.html b/dev/changelog/index.html index de5b910..c1ba1f4 100644 --- a/dev/changelog/index.html +++ b/dev/changelog/index.html @@ -1,2 +1,2 @@ -Changelog · CImGui.jl

Changelog

This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.

v2.1.0 - 2024-07-29

Added

v2.0.0 - 2024-06-27

Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.

Added

  • A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.
  • The renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.

Changed

  • CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.
  • Breaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.
  • Breaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.
  • Breaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.

Deprecated

v1.89.1 - 2024-05-19

Fixed

+Changelog · CImGui.jl

Changelog

This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.

v2.2.0 - 2024-08-02

Added

  • Support for more GLMakie controls, and a tooltip for each figure by default (#134).

v2.1.0 - 2024-07-29

Added

v2.0.0 - 2024-06-27

Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.

Added

  • A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.
  • The renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.

Changed

  • CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.
  • Breaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.
  • Breaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.
  • Breaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.

Deprecated

v1.89.1 - 2024-05-19

Fixed

diff --git a/dev/index.html b/dev/index.html index 08c41dd..a18056b 100644 --- a/dev/index.html +++ b/dev/index.html @@ -17,4 +17,4 @@ end ig.End() end

Note that neither ImGui nor OpenGL are thread-safe, be aware of this if you start Julia with multiple threads using --threads. If you need to use multiple threads in an application, one option is to use the threadpools introduced in Julia 1.9:

# Have an arbitrary number in the default pool, and 1 thread in the :interactive pool
-$ julia --threads=auto,1

Then start the render loop on the :interactive thread with Threads.@spawn :interactive and ensure that none of the other threads call GUI functions or modify the program state while your GUI code is being executing.

Usage

The API provided in this package is as close as possible to the original C++ API. When translating C++ code to Julia, please follow the tips below:

As mentioned before, this package aims to provide the same user experience as the original C++ API, so any high-level abstraction should go into a more high-level package. Redux.jl might be of interest to you if you're looking for state management frameworks.

Backend

The default backend is based on ModernGL and GLFW which are stable and under actively maintained. Other popular backends like SFML and SDL could be added in the future if someone should invest time to make these packages work in post Julia 1.0 era.

+$ julia --threads=auto,1

Then start the render loop on the :interactive thread with Threads.@spawn :interactive and ensure that none of the other threads call GUI functions or modify the program state while your GUI code is being executing.

Usage

The API provided in this package is as close as possible to the original C++ API. When translating C++ code to Julia, please follow the tips below:

As mentioned before, this package aims to provide the same user experience as the original C++ API, so any high-level abstraction should go into a more high-level package. Redux.jl might be of interest to you if you're looking for state management frameworks.

Backend

The default backend is based on ModernGL and GLFW which are stable and under actively maintained. Other popular backends like SFML and SDL could be added in the future if someone should invest time to make these packages work in post Julia 1.0 era.

diff --git a/dev/makie/index.html b/dev/makie/index.html index e94e2f9..a0d0833 100644 --- a/dev/makie/index.html +++ b/dev/makie/index.html @@ -1,2 +1,2 @@ -Makie integration · CImGui.jl

Makie integration

We currently have very experimental Makie support through GLMakie. GLMakie mostly works around a Screen{T} object to display a scene, where T is some OpenGL-supporting window. GLMakie sets this to a GLFW.Window, but we've made a custom window type to represent a single Figure to be drawn in ImGui. What we get from GLMakie is a framebuffer with a color image texture attachment, and that's displayed by us as an image.

CImGui.MakieFigureFunction
MakieFigure(id::String, f::GLMakie.Figure; auto_resize_x=true, auto_resize_y=false)

Display a Makie figure in ImGui. See examples/makie_demo.jl for an example of how to use it. This supports all the interaction features in GLMakie:

  • Scrolling to zoom
  • Rectangle select to zoom
  • RMB to pan

Note that scrolling to zoom will also cause the ImGui window to scroll, which can be annoying. This may be fixed in the future by using some other key combination for scrolling to zoom.

These are the interaction events that are wired up and can be used:

  • hasfocus
  • entered_window
  • mousebutton
  • mouseposition

Known issues:

  • Changing tick labels don't trigger the scene to be re-layouted, causing them to be clipped if the labels change width. See examples/makie_demo.jl for an example workaround using Makie.tight_ticklabel_spacing!().
  • The theming doesn't match the ImGui theme so plots look quite out of place by default.
  • Mouse events aren't delivered unless the mouse is hovered over the figure, so dragging the mouse from within the figure to somewhere outside the figure will keep the old mouse state. e.g. if you're RMB panning and the mouse goes outside the figure, when it enters the figure again panning will resume even the RMB was released.
Warning

This is very experimental, you will almost definitely encounter bugs (and if so please submit an issue/PR). We don't consider this covered under semver yet so there may be breaking changes in minor releases.

source
+Makie integration · CImGui.jl

Makie integration

We currently have very experimental Makie support through GLMakie. GLMakie mostly works around a Screen{T} object to display a scene, where T is some OpenGL-supporting window. GLMakie sets this to a GLFW.Window, but we've made a custom window type to represent a single Figure to be drawn in ImGui. What we get from GLMakie is a framebuffer with a color image texture attachment, and that's displayed by us as an image.

CImGui.MakieFigureFunction
MakieFigure(id::String, f::GLMakie.Figure; auto_resize_x=true, auto_resize_y=false, tooltip=true)

Display a Makie figure in ImGui. See examples/makie_demo.jl for an example of how to use it. This supports all the interaction features in GLMakie:

  • Scroll to zoom
  • Click and drag to rectangle select a region to zoom to
  • Right click and drag to pan
  • Shift + {x/y} and scroll to zoom along the X/Y axes
  • Ctrl + left click to reset the limits

Note that scrolling to zoom will also cause the ImGui window to scroll, which can be annoying. This may be fixed in the future by using some other key combination for scrolling to zoom.

These are the interaction events that are wired up and can be used:

  • hasfocus
  • entered_window
  • mousebutton
  • mouseposition

Known issues:

  • Changing tick labels don't trigger the scene to be re-layouted, causing them to be clipped if the labels change width. See examples/makie_demo.jl for an example workaround using Makie.tight_ticklabel_spacing!().
  • The theming doesn't match the ImGui theme so plots look quite out of place by default.
  • Mouse events aren't delivered unless the mouse is hovered over the figure, so dragging the mouse from within the figure to somewhere outside the figure will keep the old mouse state. e.g. if you're RMB panning and the mouse goes outside the figure, when it enters the figure again panning will resume even the RMB was released.
  • Drawing can be a bit janky, occasionally the image will not be drawn for a frame or two and you'll see an empty black square instead.
Warning

This is very experimental, you will almost definitely encounter bugs (and if so please submit an issue/PR). We don't consider this covered under semver yet so there may be breaking changes in minor releases.

source
diff --git a/dev/objects.inv b/dev/objects.inv index e038499..6759cfa 100644 Binary files a/dev/objects.inv and b/dev/objects.inv differ diff --git a/dev/search_index.js b/dev/search_index.js index 90f6c69..f8c2c63 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"api/","page":"API Reference","title":"API Reference","text":"CurrentModule = CImGui\nCollapsedDocStrings = true","category":"page"},{"location":"api/#API-Reference","page":"API Reference","title":"API Reference","text":"","category":"section"},{"location":"api/","page":"API Reference","title":"API Reference","text":"This page documents the wrapper functions we have for the ImGui API. The backends are documented separately in Backends.","category":"page"},{"location":"api/","page":"API Reference","title":"API Reference","text":"You can always get the current ImGui version with:","category":"page"},{"location":"api/","page":"API Reference","title":"API Reference","text":"imgui_version","category":"page"},{"location":"api/#CImGui.imgui_version","page":"API Reference","title":"CImGui.imgui_version","text":"imgui_version()::VersionNumber\n\nReturn the upstream ImGui version.\n\n\n\n\n\n","category":"function"},{"location":"api/","page":"API Reference","title":"API Reference","text":"","category":"page"},{"location":"api/","page":"API Reference","title":"API Reference","text":"Modules = [CImGui]\nOrder = [:constant, :function, :type]\nFilter = t -> nameof(t) ∉ (:imgui_version, :render, :set_backend, :MakieFigure)","category":"page"},{"location":"api/#CImGui.AcceptDragDropPayload","page":"API Reference","title":"CImGui.AcceptDragDropPayload","text":"AcceptDragDropPayload(type, flags=ImGuiDragDropFlags_(0)) -> Ptr{ImGuiPayload}\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddBezierCubic","page":"API Reference","title":"CImGui.AddBezierCubic","text":"AddBezierCubic(handle::Ptr{ImDrawList}, pos0, cp0, cp1, pos1, col, thickness, num_segments=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddCallback-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any}","page":"API Reference","title":"CImGui.AddCallback","text":"AddCallback(handle::Ptr{ImDrawList}, callback, callback_data)\n\nYour rendering function must check for UserCallback in ImDrawCmd and call the function instead of rendering triangles.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddCircle","page":"API Reference","title":"CImGui.AddCircle","text":"AddCircle(handle::Ptr{ImDrawList}, centre, radius, col, num_segments=12, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddCircleFilled","page":"API Reference","title":"CImGui.AddCircleFilled","text":"AddCircleFilled(handle::Ptr{ImDrawList}, centre, radius, col, num_segments=12)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddConvexPolyFilled-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.AddConvexPolyFilled","text":"AddConvexPolyFilled(handle::Ptr{ImDrawList}, points, num_points, col)\n\nnote: Note\nAnti-aliased filling requires points to be in clockwise order.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddDrawCmd-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.AddDrawCmd","text":"AddDrawCmd(handle::Ptr{ImDrawList})\n\nThis is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddFont-Tuple{Ptr{CImGui.lib.ImFontAtlas}, Any}","page":"API Reference","title":"CImGui.AddFont","text":"AddFont(self::Ptr{ImFontAtlas}, font_cfg) -> Ptr{ImFont}\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddFontDefault","page":"API Reference","title":"CImGui.AddFontDefault","text":"AddFontDefault(self::Ptr{ImFontAtlas}, font_cfg=C_NULL) -> Ptr{ImFont}\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromFileTTF","page":"API Reference","title":"CImGui.AddFontFromFileTTF","text":"AddFontFromFileTTF(self::Ptr{ImFontAtlas}, filename, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromMemoryCompressedBase85TTF","page":"API Reference","title":"CImGui.AddFontFromMemoryCompressedBase85TTF","text":"AddFontFromMemoryCompressedBase85TTF(self::Ptr{ImFontAtlas}, compressed_font_data_base85, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\n'compressedfontdata_base85' still owned by caller.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromMemoryCompressedTTF","page":"API Reference","title":"CImGui.AddFontFromMemoryCompressedTTF","text":"AddFontFromMemoryCompressedTTF(self::Ptr{ImFontAtlas}, compressed_font_data, compressed_font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\n'compressedfontdata' still owned by caller.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromMemoryTTF","page":"API Reference","title":"CImGui.AddFontFromMemoryTTF","text":"AddFontFromMemoryTTF(self::Ptr{ImFontAtlas}, font_data, font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\nnote: Note\nTransfer ownership of 'ttfdata' to ImFontAtlas! Will be deleted after destruction of the atlas. Set `fontcfg.FontDataOwnedByAtlas=false` to keep ownership of your data and it won't be freed.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddImage","page":"API Reference","title":"CImGui.AddImage","text":"AddImage(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a=(0,0), uv_b=(1,1), col=0xffffffff)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddImageQuad","page":"API Reference","title":"CImGui.AddImageQuad","text":"AddImageQuad(handle::Ptr{ImDrawList}, user_texture_id, a, b, c, d, uv_a=(0,0), uv_b=(1,0), uv_c=(1,1), uv_d=(0,1), col=0xffffffff)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddImageRounded","page":"API Reference","title":"CImGui.AddImageRounded","text":"AddImageRounded(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a, uv_b, col, rounding, rounding_corners=ImDrawFlags_All)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddInputCharacter-Tuple{Ptr{CImGui.lib.ImGuiIO}, Any}","page":"API Reference","title":"CImGui.AddInputCharacter","text":"AddInputCharacter(io::Ptr{ImGuiIO}, c)\n\nAdd new character into InputCharacters[].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddInputCharactersUTF8-Tuple{Ptr{CImGui.lib.ImGuiIO}, Any}","page":"API Reference","title":"CImGui.AddInputCharactersUTF8","text":"AddInputCharactersUTF8(io::Ptr{ImGuiIO}, utf8_chars)\n\nAdd new characters into InputCharacters[] from an UTF-8 string.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddLine","page":"API Reference","title":"CImGui.AddLine","text":"AddLine(handle::Ptr{ImDrawList}, a, b, col, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddPolyline-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 5}}","page":"API Reference","title":"CImGui.AddPolyline","text":"AddPolyline(handle::Ptr{ImDrawList}, points, num_points, col, closed, thickness)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddQuad","page":"API Reference","title":"CImGui.AddQuad","text":"AddQuad(handle::Ptr{ImDrawList}, a, b, c, d, col, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddQuadFilled-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 5}}","page":"API Reference","title":"CImGui.AddQuadFilled","text":"AddQuadFilled(handle::Ptr{ImDrawList}, a, b, c, d, col)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddRect","page":"API Reference","title":"CImGui.AddRect","text":"AddRect(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll, thickness=1.0)\n\nArguments\n\na: upper-left\nb: lower-right\nrounding_corners_flags: 4-bits corresponding to which corner to round\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddRectFilled","page":"API Reference","title":"CImGui.AddRectFilled","text":"AddRectFilled(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)\n\nArguments\n\na: upper-left\nb: lower-right\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddRectFilledMultiColor-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 6}}","page":"API Reference","title":"CImGui.AddRectFilledMultiColor","text":"AddRectFilledMultiColor(handle::Ptr{ImDrawList}, a, b, col_upr_left, col_upr_right, col_bot_right, col_bot_left)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddText","page":"API Reference","title":"CImGui.AddText","text":"AddText(handle::Ptr{ImDrawList}, font::Ptr{ImFont}, font_size, pos, col, text_begin, text_end=C_NULL, wrap_width=0.0, cpu_fine_clip_rect=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddText-2","page":"API Reference","title":"CImGui.AddText","text":"AddText(handle::Ptr{ImDrawList}, pos, col, text_begin, text_end=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddTriangle","page":"API Reference","title":"CImGui.AddTriangle","text":"AddTriangle(handle::Ptr{ImDrawList}, a, b, c, col, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddTriangleFilled-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 4}}","page":"API Reference","title":"CImGui.AddTriangleFilled","text":"AddTriangleFilled(handle::Ptr{ImDrawList}, a, b, c, col)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AlignTextToFramePadding-Tuple{}","page":"API Reference","title":"CImGui.AlignTextToFramePadding","text":"AlignTextToFramePadding()\n\nVertically align 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).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Append","page":"API Reference","title":"CImGui.Append","text":"Append(handle::Ptr{ImGuiTextBuffer}, str, str_end=C_NULL)\n\nText buffer for logging/accumulating text.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ArrowButton-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ArrowButton","text":"ArrowButton(str_id, dir) -> Bool\n\nReturn true when the value has been changed or when pressed/selected. Create a square button with an arrow shape.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Begin","page":"API Reference","title":"CImGui.Begin","text":"Begin(name, p_open=C_NULL, flags=0) -> Bool\n\nPush window to the stack and start appending to it.\n\nUsage\n\nyou may append multiple times to the same window during the same frame.\npassing p_open != C_NULL shows a window-closing widget in the upper-right corner of the window, which clicking will set the boolean to false when clicked.\nBegin return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.\n\nnote: Note\nAlways call a matching End for each Begin call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Begin-2","page":"API Reference","title":"CImGui.Begin","text":"Begin(handle::Ptr{ImGuiListClipper}, items_count, items_height=-1.0)\n\nAutomatically called by constructor if you passed items_count or by Step in Step 1.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Begin-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Begin","text":"Begin(handle::Ptr{ImGuiTextBuffer}) -> Cstring\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginChild","page":"API Reference","title":"CImGui.BeginChild","text":"BeginChild(str_id, size=(0,0), border=false, flags=0) -> Bool\nBeginChild(id::Integer, size=(0,0), border=false, flags=0) -> Bool\n\nUse child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.\n\nReturn false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.\n\nFor each independent axis of size:\n\nx == 0.0: use remaining host window size\nx > 0.0: fixed size\nx < 0.0: use remaining window size minus abs(size)\n\nEach axis can use a different mode, e.g. ImVec2(0,400).\n\nnote: Note\nAlways call a matching EndChild for each BeginChild call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginChildFrame","page":"API Reference","title":"CImGui.BeginChildFrame","text":"BeginChildFrame(id, size, flags=0) -> Bool\n\nHelper to create a child window / scrolling region that looks like a normal widget frame.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginCombo","page":"API Reference","title":"CImGui.BeginCombo","text":"BeginCombo(label, preview_value, flags=0) -> Bool\n\nThe new BeginCombo/EndCombo api allows you to manage your contents and selection state however you want it, by creating e.g. Selectable items.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginDragDropSource","page":"API Reference","title":"CImGui.BeginDragDropSource","text":"BeginDragDropSource(flags=ImGuiDragDropFlags_(0)) -> bool\n\nCall when the current item is active. If this return true, you can call SetDragDropPayload + EndDragDropSource.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginDragDropTarget-Tuple{}","page":"API Reference","title":"CImGui.BeginDragDropTarget","text":"BeginDragDropTarget() -> bool\n\nCall after submitting an item that may receive a payload. If this returns true, you can call AcceptDragDropPayload + EndDragDropTarget.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginGroup-Tuple{}","page":"API Reference","title":"CImGui.BeginGroup","text":"BeginGroup()\n\nLock 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.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginListBox","page":"API Reference","title":"CImGui.BeginListBox","text":"BeginListBox(label, size=(0,0))\n\nUse if you want to reimplement ListBox will custom data or interactions. If the function return true, you can output elements then call EndListBox afterwards.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginMainMenuBar-Tuple{}","page":"API Reference","title":"CImGui.BeginMainMenuBar","text":"BeginMainMenuBar() -> Bool\n\nCreate and append to a full screen menu-bar.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginMenu","page":"API Reference","title":"CImGui.BeginMenu","text":"BeginMenu(label, enabled=true) -> Bool\n\nCreate a sub-menu entry. only call EndMenu() if this returns true!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginMenuBar-Tuple{}","page":"API Reference","title":"CImGui.BeginMenuBar","text":"BeginMenuBar() -> Bool\n\nAppend to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginPopup","page":"API Reference","title":"CImGui.BeginPopup","text":"BeginPopup(str_id, flags=0) -> Bool\n\nReturn true if the popup is open, and you can start outputting to it.\n\nnote: Note\nOnly call EndPopup if BeginPopup returns true!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupContextItem","page":"API Reference","title":"CImGui.BeginPopupContextItem","text":"BeginPopupContextItem(str_id=C_NULL, flags=1) -> Bool\n\nHelper to open and begin popup when clicked on last item. if you can pass a CNULL strid only if the previous item had an id. If you want to use that on a non-interactive item such as Text you need to pass in an explicit ID here.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupContextVoid","page":"API Reference","title":"CImGui.BeginPopupContextVoid","text":"BeginPopupContextVoid(str_id=C_NULL, popup_flags=1) -> Bool\n\nHelper to open and begin popup when clicked in void (where there are no imgui windows).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupContextWindow","page":"API Reference","title":"CImGui.BeginPopupContextWindow","text":"BeginPopupContextWindow(str_id=C_NULL, popup_flags=1) -> Bool\n\nHelper to open and begin popup when clicked on current window.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupModal","page":"API Reference","title":"CImGui.BeginPopupModal","text":"BeginPopupModal(name, p_open=C_NULL, flags=0) -> Bool\n\nModal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTabBar","page":"API Reference","title":"CImGui.BeginTabBar","text":"igBeginTabBar(str_id, flags=ImGuiTabBarFlags_(0)) -> Bool\n\nCreate and append into a TabBar.\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTabItem","page":"API Reference","title":"CImGui.BeginTabItem","text":"BeginTabItem(label, p_open=C_NULL, flags=ImGuiTabItemFlags_(0)) -> Bool\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTable","page":"API Reference","title":"CImGui.BeginTable","text":"BeginTable(str_id, columns_count, flags = ImGuiTableFlags_(0), outer_size = ImVec2(0,0), inner_width = 0.0) -> Bool\n\nBegin a table entry.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTooltip-Tuple{}","page":"API Reference","title":"CImGui.BeginTooltip","text":"BeginTooltip()\n\nBegin/append a tooltip window to create full-featured tooltip (with any kind of items).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Build-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.Build","text":"Build(self::Ptr{ImFontAtlas}) -> Bool\n\nBuild pixels data. This is called automatically for you by the GetTexData*** functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Bullet-Tuple{}","page":"API Reference","title":"CImGui.Bullet","text":"Bullet()\n\nDraw a small circle and keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BulletText-Tuple{Any}","page":"API Reference","title":"CImGui.BulletText","text":"BulletText(formatted_text)\n\nShortcut for Bullet+Text.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Button","page":"API Reference","title":"CImGui.Button","text":"Button(label) -> Bool\nButton(label, size) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.C_str-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.C_str","text":"C_str(handle::Ptr{ImGuiTextBuffer}) -> Cstring\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CalcItemWidth-Tuple{}","page":"API Reference","title":"CImGui.CalcItemWidth","text":"CalcItemWidth() -> Cfloat\n\nReturn width of item given pushed settings and current cursor position.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CalcTextSize","page":"API Reference","title":"CImGui.CalcTextSize","text":"CalcTextSize(text, text_end=C_NULL, hide_text_after_double_hash=false, wrap_width=-1) -> ImVec2\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ChannelsMerge-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.ChannelsMerge","text":"ChannelsMerge(handle::Ptr{ImDrawList})\n\ntip: Tip\nUse to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)\nUse to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ChannelsSetCurrent-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.ChannelsSetCurrent","text":"ChannelsSetCurrent(handle::Ptr{ImDrawList}, channel_index)\n\ntip: Tip\nUse to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)\nUse to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ChannelsSplit-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.ChannelsSplit","text":"ChannelsSplit(handle::Ptr{ImDrawList}, channels_count)\n\ntip: Tip\nUse to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)\nUse to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Checkbox-Tuple{Any, Any}","page":"API Reference","title":"CImGui.Checkbox","text":"Checkbox(label, v) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CheckboxFlags-Tuple{Any, Ref{Int32}, Any}","page":"API Reference","title":"CImGui.CheckboxFlags","text":"CheckboxFlags(label, flags, flags_value) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Clear-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.Clear","text":"Clear(self::Ptr{ImFontAtlas})\n\nClear all input and output.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Clear-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Clear","text":"Clear(handle::Ptr{ImGuiTextBuffer})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearFonts-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.ClearFonts","text":"ClearFonts(self::Ptr{ImFontAtlas})\n\nClear output font data (glyphs storage, UV coordinates).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearInputCharacters-Tuple{Any}","page":"API Reference","title":"CImGui.ClearInputCharacters","text":"ClearInputCharacters(io)\n\nClear the text input buffer manually.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearInputData-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.ClearInputData","text":"ClearInputData(self::Ptr{ImFontAtlas})\n\nClear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearTexData-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.ClearTexData","text":"ClearTexData(self::Ptr{ImFontAtlas})\n\nClear output texture data (CPU side). Saves RAM once the texture has been copied to graphics memory.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Clipper-Tuple{}","page":"API Reference","title":"CImGui.Clipper","text":"Clipper() -> Ptr{ImGuiListClipper}\n\nManually clip large list of items.\n\nIf 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.\n\nIf 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.\n\nThe clipper calculates the range of visible items and advance the cursor to compensate for the non-visible items we have skipped. ImGui already clip 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.\n\nExample\n\nclipper = CImGui.Clipper()\nBegin(clipper, 1000) # we have 1000 elements, evenly spaced.\nwhile CImGui.Step()\n dis_start = CImGui.Get(clipper, :DisplayStart)\n dis_end = CImGui.Get(clipper, :DisplayEnd)-1\n foreach(i->CImGui.Text(\"line number $i\"), dis_start:dis_end)\nend\n\nStep 0: the clipper let you process the first element, regardless of it being visible or not, so we can measure the element height (step skipped if we passed a known height as second arg to constructor).\nStep 1: the clipper infer height from first element, calculate the actual range of elements to display, and position the cursor before the first element.\n(Step 2: dummy step only required if an explicit items_height was passed to constructor or Begin and user call Step. Does nothing and switch to Step 3.)\nStep 3: the clipper validate 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.\n\nArguments\n\nitems_count: use -1 to ignore (you can call Begin later). use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step).\nitems_height: use -1.0 to be calculated automatically on first step. otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing or GetFrameHeightWithSpacing. If you don't specify an items_height, you NEED to call Step. If you specify items_height you may call the old Begin/End api directly, but prefer calling Step.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CloneOutput-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.CloneOutput","text":"CloneOutput(handle::Ptr{ImDrawList}) -> Ptr{ImDrawList}\n\nCreate a clone of the CmdBuffer/IdxBuffer/VtxBuffer.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CloseCurrentPopup-Tuple{}","page":"API Reference","title":"CImGui.CloseCurrentPopup","text":"CloseCurrentPopup()\n\nClose the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CollapsingHeader","page":"API Reference","title":"CImGui.CollapsingHeader","text":"CollapsingHeader(label, p_open::Ref, flags=ImGuiTreeNodeFlags_(0)) -> Bool\n\nWhen p_open isn't C_NULL, display an additional small close button on upper right of the header.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.CollapsingHeader-2","page":"API Reference","title":"CImGui.CollapsingHeader","text":"CollapsingHeader(label, flags=ImGuiTreeNodeFlags_(0)) -> Bool\n\nIf returning true the header is open. Doesn't indent nor push on ID stack. User doesn't have to call TreePop.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorButton","page":"API Reference","title":"CImGui.ColorButton","text":"ColorButton(desc_id, col, flags=0, size=(0,0))\n\nDisplay a colored square/button, hover for details, return true when pressed.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorConvertFloat4ToU32-Tuple{Any}","page":"API Reference","title":"CImGui.ColorConvertFloat4ToU32","text":"ColorConvertFloat4ToU32(in) -> ImU32\n\nConvert ImVec4 color to ImU32. You could use Base.convert(::Type{ImU32}, x::ImVec4) instead.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ColorConvertU32ToFloat4-Tuple{Any}","page":"API Reference","title":"CImGui.ColorConvertU32ToFloat4","text":"ColorConvertU32ToFloat4(in) -> ImVec4\n\nConvert ImU32 color to ImVec4. You could use Base.convert(::Type{ImVec4}, x::ImU32) instead.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ColorEdit3","page":"API Reference","title":"CImGui.ColorEdit3","text":"ColorEdit3(label, col, flags=0) -> Bool\n\ntip: Tip\nthis function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorEdit4","page":"API Reference","title":"CImGui.ColorEdit4","text":"ColorEdit4(label, col, flags=0) -> Bool\n\ntip: Tip\nthis function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorPicker3","page":"API Reference","title":"CImGui.ColorPicker3","text":"ColorPicker3(label, col, flags=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorPicker4","page":"API Reference","title":"CImGui.ColorPicker4","text":"ColorPicker4(label, col, flags=0, ref_col=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Columns","page":"API Reference","title":"CImGui.Columns","text":"Columns(count=1, id=C_NULL, border=true)\n\nwarning: Work in progress!\nYou can also use SameLine(pos_x) for simplified columns. The columns API is work-in-progress and rather lacking (columns are arguably the worst part of dear imgui at the moment!)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Combo","page":"API Reference","title":"CImGui.Combo","text":"Combo(label, current_item, items::Vector, items_count, popup_max_height_in_items=-1) -> Bool\n\nThe old Combo api are helpers over BeginCombo/EndCombo which are kept available for convenience purpose.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Combo-2","page":"API Reference","title":"CImGui.Combo","text":"Combo(label, current_item, items_getter::Union{Ptr,Base.CFunction}, data, items_count, popup_max_height_in_items=-1) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Combo-3","page":"API Reference","title":"CImGui.Combo","text":"Combo(label, current_item, items_separated_by_zeros, popup_max_height_in_items=-1) -> Bool\n\nSeparate items with \u0000 within a string, end item-list with \u0000\u0000. e.g. One\u0000Two\u0000Three\u0000\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.CreateContext-Tuple{}","page":"API Reference","title":"CImGui.CreateContext","text":"CreateContext() -> Ptr{ImGuiContext}\nCreateContext(shared_font_atlas::Ptr{ImFontAtlas}) -> Ptr{ImGuiContext}\n\nReturn a handle of ImGuiContext.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Destroy-Tuple{Ptr{CImGui.lib.ImGuiListClipper}}","page":"API Reference","title":"CImGui.Destroy","text":"Destroy(handle::Ptr{ImGuiListClipper})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Destroy-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Destroy","text":"Destroy(handle::Ptr{ImGuiTextBuffer})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.DestroyContext-Tuple{}","page":"API Reference","title":"CImGui.DestroyContext","text":"DestroyContext()\nDestroyContext(ctx::Ptr{ImGuiContext})\n\nDestroy ImGuiContext. DestroyContext() will destroy current context.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.DragFloat","page":"API Reference","title":"CImGui.DragFloat","text":"DragFloat(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nIf v_min >= v_max we have no bound.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloat2","page":"API Reference","title":"CImGui.DragFloat2","text":"DragFloat2(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloat3","page":"API Reference","title":"CImGui.DragFloat3","text":"DragFloat3(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloat4","page":"API Reference","title":"CImGui.DragFloat4","text":"DragFloat4(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloatRange2","page":"API Reference","title":"CImGui.DragFloatRange2","text":"DragFloatRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", format_max=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt","page":"API Reference","title":"CImGui.DragInt","text":"DragInt(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt2","page":"API Reference","title":"CImGui.DragInt2","text":"DragInt2(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt3","page":"API Reference","title":"CImGui.DragInt3","text":"DragInt3(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt4","page":"API Reference","title":"CImGui.DragInt4","text":"DragInt4(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragIntRange2","page":"API Reference","title":"CImGui.DragIntRange2","text":"DragIntRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", format_max=C_NULL, flag=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragScalar","page":"API Reference","title":"CImGui.DragScalar","text":"DragScalar(label, data_type, v, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flags=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragScalarN","page":"API Reference","title":"CImGui.DragScalarN","text":"DragScalarN(label, data_type, v, components, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flag=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Dummy-Tuple{Any}","page":"API Reference","title":"CImGui.Dummy","text":"Dummy(size)\nDummy(x, y)\n\nAdd a dummy item of given size.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Empty-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Empty","text":"Empty(handle::Ptr{ImGuiTextBuffer}) -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.End-Tuple{Ptr{CImGui.lib.ImGuiListClipper}}","page":"API Reference","title":"CImGui.End","text":"End(handle::Ptr{ImGuiListClipper})\n\nAutomatically called on the last call of Step that returns false.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.End-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.End","text":"End(handle::Ptr{ImGuiTextBuffer}) -> Cstring\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.End-Tuple{}","page":"API Reference","title":"CImGui.End","text":"End()\n\nPop window from the stack. See also Begin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndChild-Tuple{}","page":"API Reference","title":"CImGui.EndChild","text":"EndChild()\n\nSee also BeginChild.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndChildFrame-Tuple{}","page":"API Reference","title":"CImGui.EndChildFrame","text":"EndChildFrame()\n\nnote: Note\nAlways call EndChildFrame() regardless of BeginChildFrame return values which indicates a collapsed/clipped window.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndCombo-Tuple{}","page":"API Reference","title":"CImGui.EndCombo","text":"EndCombo()\n\nnote: Note\nOnly call EndCombo if BeginCombo returns true!\n\nSee also BeginCombo.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndDragDropSource-Tuple{}","page":"API Reference","title":"CImGui.EndDragDropSource","text":"EndDragDropSource()\n\nnote: Note\nOnly call EndDragDropSource() if BeginDragDropSource returns true!\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndDragDropTarget-Tuple{}","page":"API Reference","title":"CImGui.EndDragDropTarget","text":"EndDragDropTarget()\n\nnote: Note\nOnly call EndDragDropTarget if BeginDragDropTarget returns true!\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndFrame-Tuple{}","page":"API Reference","title":"CImGui.EndFrame","text":"EndFrame()\n\nCalling this function ends the ImGui frame. This function is automatically called by Render, so you likely don't need to call it yourself directly. If you don't need to render data (skipping rendering), 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 and not call NewFrame at all!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndGroup-Tuple{}","page":"API Reference","title":"CImGui.EndGroup","text":"EndGroup()\n\nSee BeginGroup.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndListBox-Tuple{}","page":"API Reference","title":"CImGui.EndListBox","text":"EndListBox()\n\nTerminate the scrolling region.\n\nnote: Note\nOnly call EndListBox() if BeginListBox returned true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndMainMenuBar-Tuple{}","page":"API Reference","title":"CImGui.EndMainMenuBar","text":"EndMainMenuBar()\n\nnote: Note\nOnly call EndMainMenuBar if BeginMainMenuBar returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndMenu-Tuple{}","page":"API Reference","title":"CImGui.EndMenu","text":"EndMenu()\n\nnote: Note\nOnly call EndMenu if BeginMenu returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndMenuBar-Tuple{}","page":"API Reference","title":"CImGui.EndMenuBar","text":"EndMenuBar()\n\nnote: Note\nOnly call EndMenuBar if BeginMenuBar returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndPopup-Tuple{}","page":"API Reference","title":"CImGui.EndPopup","text":"EndPopup()\n\nSee BeginPopup, BeginPopupContextItem, BeginPopupContextWindow, BeginPopupContextVoid, BeginPopupModal.\n\nnote: Note\nOnly call EndPopup if BeginPopupXXX() returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTabBar-Tuple{}","page":"API Reference","title":"CImGui.EndTabBar","text":"EndTabBar()\n\nOnly call EndTabBar if BeginTabBar returns true!\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTabItem-Tuple{}","page":"API Reference","title":"CImGui.EndTabItem","text":"EndTabItem()\n\nOnly call EndTabItem if BeginTabItem returns true!\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTable-Tuple{}","page":"API Reference","title":"CImGui.EndTable","text":"EndTable()\n\nOnly call EndTable if BeginTable returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTooltip-Tuple{}","page":"API Reference","title":"CImGui.EndTooltip","text":"EndTooltip()\n\nSee BeginTooltip.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetBackgroundDrawList-Tuple{}","page":"API Reference","title":"CImGui.GetBackgroundDrawList","text":"GetBackgroundDrawList() -> Ptr{ImDrawList}\n\nThis draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetClipRectMax-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.GetClipRectMax","text":"GetClipRectMax(handle::Ptr{ImDrawList}) -> ImVec2\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetClipRectMin-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.GetClipRectMin","text":"GetClipRectMin(handle::Ptr{ImDrawList}) -> ImVec2\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetClipboardText-Tuple{}","page":"API Reference","title":"CImGui.GetClipboardText","text":"GetClipboardText() -> String\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetColorU32","page":"API Reference","title":"CImGui.GetColorU32","text":"GetColorU32(r, g, b, a) -> ImU32\nGetColorU32(col::ImVec4) -> ImU32\nGetColorU32(col::ImU32) -> ImU32\nGetColorU32(idx::Integer, alpha_mul=1.0) -> ImU32\n\nRetrieve given style color with style alpha applied and optional extra alpha multiplier.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetColumnIndex-Tuple{}","page":"API Reference","title":"CImGui.GetColumnIndex","text":"GetColumnIndex() -> Cint\n\nReturn current column index.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetColumnOffset","page":"API Reference","title":"CImGui.GetColumnOffset","text":"GetColumnOffset(column_index=-1) -> Cfloat\n\nGet 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.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetColumnWidth","page":"API Reference","title":"CImGui.GetColumnWidth","text":"GetColumnWidth(column_index=-1) -> Cfloat\n\nReturn column width (in pixels). Pass -1 to use current column.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetColumnsCount-Tuple{}","page":"API Reference","title":"CImGui.GetColumnsCount","text":"GetColumnsCount() -> Cint\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetContentRegionAvail-Tuple{}","page":"API Reference","title":"CImGui.GetContentRegionAvail","text":"GetContentRegionAvail() -> ImVec2\n\nReturn GetContentRegionMax - GetCursorPos.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetContentRegionMax-Tuple{}","page":"API Reference","title":"CImGui.GetContentRegionMax","text":"GetContentRegionMax() -> ImVec2\n\nReturn current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCurrentContext-Tuple{}","page":"API Reference","title":"CImGui.GetCurrentContext","text":"GetCurrentContext() -> Ptr{ImGuiContext}\n\nReturn a handle of the current context.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorPos-Tuple{}","page":"API Reference","title":"CImGui.GetCursorPos","text":"GetCursorPos() -> ImVec2\n\nReturn cursor position which is relative to window position.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorPosX-Tuple{}","page":"API Reference","title":"CImGui.GetCursorPosX","text":"GetCursorPosX() -> Cfloat\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorPosY-Tuple{}","page":"API Reference","title":"CImGui.GetCursorPosY","text":"GetCursorPosY() -> Cfloat\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorScreenPos-Tuple{}","page":"API Reference","title":"CImGui.GetCursorScreenPos","text":"GetCursorScreenPos() -> ImVec2\n\nReturn cursor position in absolute screen coordinates [0..io.DisplaySize]. This is useful to work with ImDrawList API.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorStartPos-Tuple{}","page":"API Reference","title":"CImGui.GetCursorStartPos","text":"GetCursorStartPos() -> ImVec2\n\nReturn initial cursor position in window coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetDragDropPayload-Tuple{}","page":"API Reference","title":"CImGui.GetDragDropPayload","text":"GetDragDropPayload() -> Ptr{ImGuiPayload}\n\nPeek directly into the current payload from anywhere. May return C_NULL.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetDrawData-Tuple{}","page":"API Reference","title":"CImGui.GetDrawData","text":"GetDrawData() -> Ptr{ImDrawData}\n\nReturn a handle of ImDrawData which is valid after Render and until the next call to NewFrame. This is what you have to render.\n\nwarning: Obsolete\nThis used to be passed to your ImGuiIO.RenderDrawListsFn function.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetDrawListSharedData-Tuple{}","page":"API Reference","title":"CImGui.GetDrawListSharedData","text":"GetDrawListSharedData() -> Ptr{ImDrawListSharedData}\n\nThis function might be used when creating your own ImDrawList instances.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFont-Tuple{}","page":"API Reference","title":"CImGui.GetFont","text":"GetFont() -> Ptr{ImFont}\n\nGet current font.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFontSize-Tuple{}","page":"API Reference","title":"CImGui.GetFontSize","text":"GetFontSize() -> Cfloat\n\nGet current font size (= height in pixels) of current font with current scale applied.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFontTexUvWhitePixel-Tuple{}","page":"API Reference","title":"CImGui.GetFontTexUvWhitePixel","text":"GetFontTexUvWhitePixel() -> ImVec2\n\nGet UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetForegroundDrawList-Tuple{}","page":"API Reference","title":"CImGui.GetForegroundDrawList","text":"GetForegroundDrawList() -> Ptr{ImDrawList}\n\nthis draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFrameCount-Tuple{}","page":"API Reference","title":"CImGui.GetFrameCount","text":"GetFrameCount() -> Cint\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFrameHeight-Tuple{}","page":"API Reference","title":"CImGui.GetFrameHeight","text":"GetFrameHeight() -> Cfloat\n\nReturn FontSize + ImGuiStyle.FramePadding.y * 2.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFrameHeightWithSpacing-Tuple{}","page":"API Reference","title":"CImGui.GetFrameHeightWithSpacing","text":"GetFrameHeightWithSpacing() -> Cfloat\n\nReturn FontSize + ImGuiStyle.FramePadding.y * 2 + ImGuiStyle.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesChineseFull-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesChineseFull","text":"GetGlyphRangesChineseFull(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesChineseSimplifiedCommon-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesChineseSimplifiedCommon","text":"GetGlyphRangesChineseSimplifiedCommon(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesCyrillic-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesCyrillic","text":"GetGlyphRangesCyrillic(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + about 400 Cyrillic characters.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesDefault-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesDefault","text":"GetGlyphRangesDefault(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nBasic Latin, Extended Latin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesJapanese-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesJapanese","text":"GetGlyphRangesJapanese(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesKorean-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesKorean","text":"GetGlyphRangesKorean(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Korean characters.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesThai-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesThai","text":"GetGlyphRangesThai(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Thai characters.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetID-Tuple{AbstractString}","page":"API Reference","title":"CImGui.GetID","text":"GetID(str_id::AbstractString) -> ImGuiID\nGetID(str_id_begin::AbstractString, str_id_end::AbstractString) -> ImGuiID\nGetID(ptr_id::Ptr) -> ImGuiID\n\nCalculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetIO-Tuple{}","page":"API Reference","title":"CImGui.GetIO","text":"GetIO() -> Ptr{ImGuiIO}\n\nReturn a handle of ImGuiIO which is for accessing the IO structure:\n\nmouse/keyboard/gamepad inputs\ntime\nvarious configuration options/flags\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetItemRectMax-Tuple{}","page":"API Reference","title":"CImGui.GetItemRectMax","text":"GetItemRectMax() -> ImVec2\n\nReturn bounding rectangle of last item, in screen space. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetItemRectMin-Tuple{}","page":"API Reference","title":"CImGui.GetItemRectMin","text":"GetItemRectMin() -> ImVec2\n\nReturn bounding rectangle of last item, in screen space. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetItemRectSize-Tuple{}","page":"API Reference","title":"CImGui.GetItemRectSize","text":"GetItemRectSize() -> ImVec2\n\nReturn size of last item, in screen space. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetKeyData-Tuple{Any}","page":"API Reference","title":"CImGui.GetKeyData","text":"GetKeyData(imgui_key) -> Ptr{ImGuiKeyData}\n\nGet the key data for a specific key.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetKeyPressedAmount-Tuple{Any, Any, Any}","page":"API Reference","title":"CImGui.GetKeyPressedAmount","text":"GetKeyPressedAmount(key_index, repeat_delay, rate) -> Cint\n\nUses provided repeat rate/delay. Return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetMouseCursor-Tuple{}","page":"API Reference","title":"CImGui.GetMouseCursor","text":"GetMouseCursor() -> ImGuiMouseCursor\n\nGet 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.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetMouseDragDelta","page":"API Reference","title":"CImGui.GetMouseDragDelta","text":"GetMouseDragDelta(button=0, lock_threshold=-1.0) -> ImVec2\n\nDragging amount since clicking. if lock_threshold < -1.0f uses io.MouseDraggingThreshold.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetMousePos-Tuple{}","page":"API Reference","title":"CImGui.GetMousePos","text":"GetMousePos() -> ImVec2\n\nShortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetMousePosOnOpeningCurrentPopup-Tuple{}","page":"API Reference","title":"CImGui.GetMousePosOnOpeningCurrentPopup","text":"GetMousePosOnOpeningCurrentPopup() -> ImVec2\n\nRetrieve backup of mouse position at the time of opening popup we have BeginPopup into.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollMaxX-Tuple{}","page":"API Reference","title":"CImGui.GetScrollMaxX","text":"GetScrollMaxX() -> Cfloat\n\nReturn maximum scrolling amount ~~ ContentSize.X - WindowSize.X.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollMaxY-Tuple{}","page":"API Reference","title":"CImGui.GetScrollMaxY","text":"GetScrollMaxY() -> Cfloat\n\nReturn maximum scrolling amount ~~ ContentSize.Y - WindowSize.Y.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollX-Tuple{}","page":"API Reference","title":"CImGui.GetScrollX","text":"GetScrollX() -> Cfloat\n\nReturn scrolling amount [0..GetScrollMaxX()]. See also GetScrollMaxX.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollY-Tuple{}","page":"API Reference","title":"CImGui.GetScrollY","text":"GetScrollY() -> Cfloat\n\nReturn scrolling amount [0..GetScrollMaxY()].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStateStorage-Tuple{}","page":"API Reference","title":"CImGui.GetStateStorage","text":"GetStateStorage()\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStyle-Tuple{}","page":"API Reference","title":"CImGui.GetStyle","text":"GetStyle() -> Ptr{ImGuiStyle}\n\nReturn a handle of ImGuiStyle which is for accessing the Style structure (colors, sizes).\n\nnote: Note\nAlways use PushStyleColor, PushStyleVar to modify style mid-frame.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStyleColorName-Tuple{Integer}","page":"API Reference","title":"CImGui.GetStyleColorName","text":"GetStyleColorName(idx::Integer) -> String\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStyleColorVec4-Tuple{Any}","page":"API Reference","title":"CImGui.GetStyleColorVec4","text":"GetStyleColorVec4(idx) -> ImVec4\n\nRetrieve style color as stored in [ImGuiStyle] structure. Use to feed back into PushStyleColor, otherwise use GetColorU32 to get style color with style alpha baked in.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTexDataAsAlpha8","page":"API Reference","title":"CImGui.GetTexDataAsAlpha8","text":"GetTexDataAsAlpha8(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)\n\n1 byte per-pixel.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetTexDataAsRGBA32","page":"API Reference","title":"CImGui.GetTexDataAsRGBA32","text":"GetTexDataAsRGBA32(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)\n\n4 bytes-per-pixel.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetTextLineHeight-Tuple{}","page":"API Reference","title":"CImGui.GetTextLineHeight","text":"GetTextLineHeight() -> Cfloat\n\nReturn FontSize.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTextLineHeightWithSpacing-Tuple{}","page":"API Reference","title":"CImGui.GetTextLineHeightWithSpacing","text":"GetTextLineHeightWithSpacing() -> Cfloat\n\nReturn FontSize + ImGuiStyle.ItemSpacing.y (distance in pixels between 2 consecutive lines of text).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTime-Tuple{}","page":"API Reference","title":"CImGui.GetTime","text":"GetTime() -> Cdouble\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTreeNodeToLabelSpacing-Tuple{}","page":"API Reference","title":"CImGui.GetTreeNodeToLabelSpacing","text":"GetTreeNodeToLabelSpacing()\n\nHorizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetVersion-Tuple{}","page":"API Reference","title":"CImGui.GetVersion","text":"GetVersion() -> Cstring\n\nGet the compiled version string e.g. \"1.23\"\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowContentRegionMax-Tuple{}","page":"API Reference","title":"CImGui.GetWindowContentRegionMax","text":"GetWindowContentRegionMax() -> ImVec2\n\nReturn content boundaries max (roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize, in window coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowContentRegionMin-Tuple{}","page":"API Reference","title":"CImGui.GetWindowContentRegionMin","text":"GetWindowContentRegionMin() -> ImVec2\n\nReturn content boundaries min (roughly (0,0)-Scroll), in window coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowContentRegionWidth-Tuple{}","page":"API Reference","title":"CImGui.GetWindowContentRegionWidth","text":"GetWindowContentRegionWidth() -> ImVec2\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowDrawList-Tuple{}","page":"API Reference","title":"CImGui.GetWindowDrawList","text":"GetWindowDrawList() -> Ptr{ImDrawList}\n\nReturn draw list associated to the window, to append your own drawing primitives.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowHeight-Tuple{}","page":"API Reference","title":"CImGui.GetWindowHeight","text":"GetWindowHeight() -> Cfloat\n\nReturn current window height (shortcut for GetWindowSize().y).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowPos-Tuple{}","page":"API Reference","title":"CImGui.GetWindowPos","text":"GetWindowPos() -> ImVec2\n\nReturn current window position in screen space (useful if you want to do your own drawing via the ImDrawList API.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowSize-Tuple{}","page":"API Reference","title":"CImGui.GetWindowSize","text":"GetWindowSize() -> ImVec2\n\nReturn current window size.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowWidth-Tuple{}","page":"API Reference","title":"CImGui.GetWindowWidth","text":"GetWindowWidth() -> Cfloat\n\nReturn current window width (shortcut for GetWindowSize().x).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.HSV","page":"API Reference","title":"CImGui.HSV","text":"HSV(h, s, v, a=1.0) -> ImVec4\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Image","page":"API Reference","title":"CImGui.Image","text":"Image(user_texture_id, size, uv0=(0,0), uv1=(1,1), tint_col=(1,1,1,1), border_col=(0,0,0,0))\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ImageButton","page":"API Reference","title":"CImGui.ImageButton","text":"ImageButton(str_id, user_texture_id, size, uv0=(0,0), uv1=(1,1), bg_col=(0,0,0,0), tint_col=(1,1,1,1)) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Indent","page":"API Reference","title":"CImGui.Indent","text":"Indent()\nIndent(indent_w)\n\nMove content position toward the right, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputDouble","page":"API Reference","title":"CImGui.InputDouble","text":"InputDouble(label, v, step=0.0, step_fast=0.0, format=\"%.6f\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat","page":"API Reference","title":"CImGui.InputFloat","text":"InputFloat(label, v, step=0, step_fast=0, format=\"%.3f\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat2","page":"API Reference","title":"CImGui.InputFloat2","text":"InputFloat2(label, v, format=\"%.3f\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat3","page":"API Reference","title":"CImGui.InputFloat3","text":"InputFloat3(label, v, format=\"%.3f\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat4","page":"API Reference","title":"CImGui.InputFloat4","text":"InputFloat4(label, v, format=\"%.3f\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt","page":"API Reference","title":"CImGui.InputInt","text":"InputInt(label, v, step=1, step_fast=100, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt2","page":"API Reference","title":"CImGui.InputInt2","text":"InputInt2(label, v, flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt3","page":"API Reference","title":"CImGui.InputInt3","text":"InputInt3(label, v, flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt4","page":"API Reference","title":"CImGui.InputInt4","text":"InputInt4(label, v, flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputScalar","page":"API Reference","title":"CImGui.InputScalar","text":"InputScalar(label, data_type, v, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputScalarN","page":"API Reference","title":"CImGui.InputScalarN","text":"InputScalarN(label, data_type, v, components, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputText","page":"API Reference","title":"CImGui.InputText","text":"InputText(label, buf, buf_size, flags=0, callback=C_NULL, user_data=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputTextMultiline","page":"API Reference","title":"CImGui.InputTextMultiline","text":"InputTextMultiline(label, buf, buf_size, size=(0,0), flags=0, callback=C_NULL, user_data=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputTextWithHint","page":"API Reference","title":"CImGui.InputTextWithHint","text":"InputTextWithHint(label, hint, buf, buf_size, flags=0, callback=C_NULL, user_data=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InvisibleButton","page":"API Reference","title":"CImGui.InvisibleButton","text":"InvisibleButton(str_id, size, flag = 0) -> Bool\n\nReturn true when the value has been changed or when pressed/selected. Flexible button behavior without the visuals, frequently useful to build custom behaviors using the public api along with IsItemActive, IsItemHovered, etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsAnyItemActive-Tuple{}","page":"API Reference","title":"CImGui.IsAnyItemActive","text":"IsAnyItemActive() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsAnyItemFocused-Tuple{}","page":"API Reference","title":"CImGui.IsAnyItemFocused","text":" IsAnyItemFocused() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsAnyItemHovered-Tuple{}","page":"API Reference","title":"CImGui.IsAnyItemHovered","text":"IsAnyItemHovered() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsAnyMouseDown-Tuple{}","page":"API Reference","title":"CImGui.IsAnyMouseDown","text":"IsAnyMouseDown() -> Bool\n\nIs any mouse button held.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsBuilt-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.IsBuilt","text":"IsBuilt(self::Ptr{ImFontAtlas}) -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemActivated-Tuple{}","page":"API Reference","title":"CImGui.IsItemActivated","text":"IsItemActivated() -> Bool\n\nWas the last item just made active (item was previously inactive).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemActive-Tuple{}","page":"API Reference","title":"CImGui.IsItemActive","text":"IsItemActive() -> Bool\n\nIs the last item active? (e.g. button being held, text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return false) See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemClicked","page":"API Reference","title":"CImGui.IsItemClicked","text":"IsItemClicked() -> Bool\nIsItemClicked(mouse_button=0) -> Bool\n\nIs the last item clicked? (e.g. button/node just clicked on) == IsMouseClicked(mouse_button) && IsItemHovered. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsItemDeactivated-Tuple{}","page":"API Reference","title":"CImGui.IsItemDeactivated","text":"IsItemDeactivated() -> Bool\n\nWas the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that requires continuous editing. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemDeactivatedAfterEdit-Tuple{}","page":"API Reference","title":"CImGui.IsItemDeactivatedAfterEdit","text":"IsItemDeactivatedAfterEdit() -> Bool\n\nWas the last item just made inactive and made a value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that requires continuous editing. Note that you may get false positives (some widgets such as Combo/ListBox/Selectable will return true even when clicking an already selected item). See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemEdited-Tuple{}","page":"API Reference","title":"CImGui.IsItemEdited","text":"IsItemEdited() -> Bool\n\nDid the last item modify its underlying value this frame? or was pressed? This is generally the same as the \"bool\" return value of many widgets. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemFocused-Tuple{}","page":"API Reference","title":"CImGui.IsItemFocused","text":"IsItemFocused() -> Bool\n\nIs the last item focused for keyboard/gamepad navigation? See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemHovered","page":"API Reference","title":"CImGui.IsItemHovered","text":"IsItemHovered(flags=ImGuiHoveredFlags_(0)) -> Bool\n\nIs the last item hovered? (and usable, aka not blocked by a popup, etc.). See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:\n\nusing CImGui, Markdown\nCImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsItemToggledOpen-Tuple{}","page":"API Reference","title":"CImGui.IsItemToggledOpen","text":"IsItemToggledOpen() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemVisible-Tuple{}","page":"API Reference","title":"CImGui.IsItemVisible","text":"IsItemVisible() -> Bool\n\nIs the last item visible? (items may be out of sight because of clipping/scrolling). See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsKeyDown-Tuple{Any}","page":"API Reference","title":"CImGui.IsKeyDown","text":"IsKeyDown(user_key_index) -> Bool\n\nIs key being held. == io.KeysDown[userkeyindex]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsKeyPressed","page":"API Reference","title":"CImGui.IsKeyPressed","text":"IsKeyPressed(user_key_index, repeat=true) -> Bool\n\nWas key pressed (went from !Down to Down). If repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsKeyReleased-Tuple{Any}","page":"API Reference","title":"CImGui.IsKeyReleased","text":"IsKeyReleased(user_key_index) -> Bool\n\nWas key released (went from Down to !Down).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsMouseClicked","page":"API Reference","title":"CImGui.IsMouseClicked","text":"IsMouseClicked(button, repeat=false) -> Bool\n\nDid mouse button clicked (went from !Down to Down) (0=left, 1=right, 2=middle)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMouseDoubleClicked-Tuple{Any}","page":"API Reference","title":"CImGui.IsMouseDoubleClicked","text":"IsMouseDoubleClicked(button) -> Bool\n\nDid mouse button double-clicked. Uses io.MouseDoubleClickTime.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsMouseDown-Tuple{Any}","page":"API Reference","title":"CImGui.IsMouseDown","text":"IsMouseDown(button) -> Bool\n\nIs mouse button held (0=left, 1=right, 2=middle).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsMouseDragging","page":"API Reference","title":"CImGui.IsMouseDragging","text":"IsMouseDragging(button=0, lock_threshold=-1.0) -> Bool\n\nIs mouse dragging. If lock_threshold < -1.0f uses io.MouseDraggingThreshold.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMouseHoveringRect","page":"API Reference","title":"CImGui.IsMouseHoveringRect","text":"IsMouseHoveringRect(r_min, r_max, clip=true) -> Bool\n\nIs mouse hovering given bounding rect (in screen space). Clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMousePosValid","page":"API Reference","title":"CImGui.IsMousePosValid","text":"IsMousePosValid(mouse_pos=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMouseReleased-Tuple{Any}","page":"API Reference","title":"CImGui.IsMouseReleased","text":"IsMouseReleased(button) -> Bool\n\nDid mouse button released (went from Down to !Down).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsPopupOpen-Tuple{Any}","page":"API Reference","title":"CImGui.IsPopupOpen","text":"IsPopupOpen(str_id) -> Bool\n\nReturn true if the popup is open.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsRectVisible-Tuple{Any}","page":"API Reference","title":"CImGui.IsRectVisible","text":"IsRectVisible(size) -> Bool\nIsRectVisible(x, y) -> Bool\n\nTest if rectangle (of given size, starting from cursor position) is visible / not clipped.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsRectVisibleVec2-Tuple{Any, Any}","page":"API Reference","title":"CImGui.IsRectVisibleVec2","text":"IsRectVisibleVec2(rect_min::ImVec2, rect_max::ImVec2) -> Bool\nIsRectVisibleVec2(rect_min::NTuple{2}, rect_max::NTuple{2}) -> Bool\n\nTest if rectangle (in screen space) is visible / not clipped. to perform coarse clipping on user's side.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsWindowAppearing-Tuple{}","page":"API Reference","title":"CImGui.IsWindowAppearing","text":"IsWindowAppearing() -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsWindowCollapsed-Tuple{}","page":"API Reference","title":"CImGui.IsWindowCollapsed","text":"IsWindowCollapsed() -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsWindowFocused","page":"API Reference","title":"CImGui.IsWindowFocused","text":"IsWindowFocused(flags=0) -> Bool\n\nIs current window focused? or its root/child, depending on flags. See the output of CImGui.GetFlags(CImGui.ImGuiFocusedFlags_) for options:\n\nusing CImGui, Markdown\nCImGui.ShowFlags(CImGui.ImGuiFocusedFlags_) |> Markdown.parse\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsWindowHovered","page":"API Reference","title":"CImGui.IsWindowHovered","text":"IsWindowHovered(flags=0) -> Bool\n\nIs current window hovered (and typically: not blocked by a popup/modal)? See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:\n\nusing CImGui, Markdown\nCImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse\n\nnote: Note\nIf you are trying to check whether your mouse should be dispatched to imgui or to your app, you should use the ImGuiIO.WantCaptureMouse boolean for that! Please read the FAQ!\n\ntip: FAQ\nQ: How can I tell whether to dispatch mouse/keyboard to imgui or to my application?A: You can read the ImGuiIO.WantCaptureMouse, ImGuiIO.WantCaptureKeyboard and ImGuiIO.WantTextInput flags from the ImGuiIO structure, for example:if CImGui.Get_WantCaptureMouse(CImGui.GetIO())\n # ...\nendWhen ImGuiIO.WantCaptureMouse is set, imgui wants to use your mouse state, and you may want to discard/hide the inputs from the rest of your application.\nWhen ImGuiIO.WantCaptureKeyboard is set, imgui wants to use your keyboard state, and you may want to discard/hide the inputs from the rest of your application.\nWhen ImGuiIO.WantTextInput is set to may want to notify your OS to popup an on-screen keyboard, if available (e.g. on a mobile phone, or console OS).\n\nnote: Note\nYou should always pass your mouse/keyboard inputs to imgui, even when the ImGuiIO.WantCaptureXXX flag are set false. This is because imgui needs to detect that you clicked in the void to unfocus its own windows.\nThe ImGuiIO.WantCaptureMouse is more accurate that any attempt to \"check if the mouse is hovering a window\" (don't do that!). It handle mouse dragging correctly (both dragging that started over your application or over an imgui window) and handle e.g. modal windows blocking inputs. Those flags are updated by NewFrame. Preferably read the flags after calling NewFrame if you can afford it, but reading them before is also perfectly fine, as the bool toggle fairly rarely. If you have on a touch device, you might find use for an early call to UpdateHoveredWindowAndCaptureFlags().\nText input widget releases focus on \"Return KeyDown\", so the subsequent \"Return KeyUp\" event that your application receive will typically have ImGuiIO.WantCaptureKeyboard=false. Depending on your application logic it may or not be inconvenient. You might want to track which key-downs were targeted for Dear ImGui, e.g. with an array of bool, and filter out the corresponding key-ups.)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LabelText-Tuple{Any, Any}","page":"API Reference","title":"CImGui.LabelText","text":"LabelText(label, formatted_text)\n\nDisplay text+label aligned the same way as value+label widgets.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ListBox","page":"API Reference","title":"CImGui.ListBox","text":"ListBox(label, current_item, items, items_count, height_in_items=-1)\nListBox(label, current_item, items_getter::Ptr{Cvoid}, data::Ptr{Cvoid}, items_count, height_in_items=-1)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LoadIniSettingsFromDisk-Tuple{Any}","page":"API Reference","title":"CImGui.LoadIniSettingsFromDisk","text":"LoadIniSettingsFromDisk(ini_filename)\n\nCall after CreateContext and before the first call to NewFrame. NewFrame automatically calls LoadIniSettingsFromDisk(ImGuiIO.IniFilename).\n\ntip: Tip\nThe disk functions are automatically called if ImGuiIO.IniFilename != CNULL (default is \"imgui.ini\"). Set ImGuiIO.IniFilename to CNULL to load/save manually. Read ImGuiIO.WantSaveIniSettings description about handling .ini saving manually.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LoadIniSettingsFromMemory","page":"API Reference","title":"CImGui.LoadIniSettingsFromMemory","text":"LoadIniSettingsFromMemory(ini_data, ini_size=0)\n\nCall after CreateContext and before the first call to NewFrame to provide .ini data from your own data source.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LogButtons-Tuple{}","page":"API Reference","title":"CImGui.LogButtons","text":"LogButtons()\n\nDisplay buttons for logging to tty/file/clipboard.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LogFinish-Tuple{}","page":"API Reference","title":"CImGui.LogFinish","text":"LogFinish()\n\nStop logging (close file, etc.)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LogText-Tuple{Any}","page":"API Reference","title":"CImGui.LogText","text":"LogText(formatted_text)\n\nPass text data straight to log without being displayed.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LogToClipboard","page":"API Reference","title":"CImGui.LogToClipboard","text":"LogToClipboard(max_depth=-1)\n\nStart logging to OS clipboard.\n\nAll text output from interface is captured to clipboard. By default, tree nodes are automatically opened during logging.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LogToFile","page":"API Reference","title":"CImGui.LogToFile","text":"LogToFile(max_depth=-1, filename=C_NULL)\n\nStart logging to file.\n\nAll text output from interface is captured to file. By default, tree nodes are automatically opened during logging.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LogToTTY","page":"API Reference","title":"CImGui.LogToTTY","text":"LogToTTY(max_depth=-1)\n\nStart logging to tty.\n\nAll text output from interface is captured to tty. By default, tree nodes are automatically opened during logging.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.MenuItem","page":"API Reference","title":"CImGui.MenuItem","text":"MenuItem(label, shortcut=C_NULL, selected::Bool=false, enabled::Bool=true) -> Bool\nMenuItem(label, shortcut, selected::Ref, enabled::Bool=true) -> Bool\n\nReturn true when activated. Shortcuts are displayed for convenience but not processed by ImGui at the moment.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.NewFrame-Tuple{}","page":"API Reference","title":"CImGui.NewFrame","text":"NewFrame()\n\nStart a new ImGui frame. You can submit any command from this point until Render or EndFrame.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.NewLine-Tuple{}","page":"API Reference","title":"CImGui.NewLine","text":"NewLine()\n\nUndo a SameLine.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.NextColumn-Tuple{}","page":"API Reference","title":"CImGui.NextColumn","text":"NextColumn()\n\nNext column, defaults to current row or next row if the current row is finished.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.OpenPopup","page":"API Reference","title":"CImGui.OpenPopup","text":"OpenPopup(str_id)\n\nCall to mark 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).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.OpenPopupOnItemClick","page":"API Reference","title":"CImGui.OpenPopupOnItemClick","text":"OpenPopupOnItemClick(str_id=C_NULL, mouse_button=1) -> Nothing\n\nHelper to open popup when clicked on last item (note: actually triggers on the mouse released event to be consistent with popup behaviors).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathArcTo","page":"API Reference","title":"CImGui.PathArcTo","text":"PathArcTo(handle::Ptr{ImDrawList}, centre, radius, a_min, a_max, num_segments=10)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathArcToFast-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 4}}","page":"API Reference","title":"CImGui.PathArcToFast","text":"PathArcToFast(handle::Ptr{ImDrawList}, centre, radius, a_min_of_12, a_max_of_12)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathBezierCubicTo","page":"API Reference","title":"CImGui.PathBezierCubicTo","text":"PathBezierCurveTo(handle::Ptr{ImDrawList}, p1, p2, p3, num_segments=0)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathClear-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PathClear","text":"PathClear(handle::Ptr{ImDrawList})\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathFillConvex-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PathFillConvex","text":"PathFillConvex(handle::Ptr{ImDrawList}, col)\n\nnote: Note\nAnti-aliased filling requires points to be in clockwise order.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathLineTo-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PathLineTo","text":"PathLineTo(handle::Ptr{ImDrawList}, pos)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathLineToMergeDuplicate-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PathLineToMergeDuplicate","text":"PathLineToMergeDuplicate(handle::Ptr{ImDrawList}, pos)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathRect","page":"API Reference","title":"CImGui.PathRect","text":"PathRect(handle::Ptr{ImDrawList}, rect_min, rect_max, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathStroke","page":"API Reference","title":"CImGui.PathStroke","text":"PathStroke(handle::Ptr{ImDrawList}, col, closed, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PlotHistogram","page":"API Reference","title":"CImGui.PlotHistogram","text":"PlotHistogram(label, values, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))\nPlotHistogram(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=ImVec2(0,0))\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PlotLines","page":"API Reference","title":"CImGui.PlotLines","text":"PlotLines(label, values, values_count::Integer, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))\nPlotLines(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0))\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PopButtonRepeat-Tuple{}","page":"API Reference","title":"CImGui.PopButtonRepeat","text":"PopButtonRepeat()\n\nSee PushButtonRepeat.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopClipRect-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PopClipRect","text":"PopClipRect(handle::Ptr{ImDrawList})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopClipRect-Tuple{}","page":"API Reference","title":"CImGui.PopClipRect","text":"PopClipRect()\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopFont-Tuple{}","page":"API Reference","title":"CImGui.PopFont","text":"PopFont()\n\nSee PushFont.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopID-Tuple{}","page":"API Reference","title":"CImGui.PopID","text":"PopID()\n\nSee PushID.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopItemWidth-Tuple{}","page":"API Reference","title":"CImGui.PopItemWidth","text":"PopItemWidth()\n\nSee PushItemWidth.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopStyleColor","page":"API Reference","title":"CImGui.PopStyleColor","text":"PopStyleColor(count=1)\n\nSee PushStyleColor.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PopStyleVar","page":"API Reference","title":"CImGui.PopStyleVar","text":"PopStyleVar(count=1)\n\nSee PushStyleVar.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PopTabStop-Tuple{}","page":"API Reference","title":"CImGui.PopTabStop","text":"PopTabStop()\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopTextWrapPos-Tuple{}","page":"API Reference","title":"CImGui.PopTextWrapPos","text":"PopTextWrapPos()\n\nSee PushTextWrapPos.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopTextureID-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PopTextureID","text":"PopTextureID(handle::Ptr{ImDrawList})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimQuadUV-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 9}}","page":"API Reference","title":"CImGui.PrimQuadUV","text":"PrimQuadUV(handle::Ptr{ImDrawList}, a, b, c, d, uv_a, uv_b, uv_c, uv_d, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimRect-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PrimRect","text":"PrimRect(handle::Ptr{ImDrawList}, a, b, col)\n\nAxis aligned rectangle (composed of two triangles).\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimRectUV-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 5}}","page":"API Reference","title":"CImGui.PrimRectUV","text":"PrimRectUV(handle::Ptr{ImDrawList}, a, b, uv_a, uv_b, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimReserve-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any}","page":"API Reference","title":"CImGui.PrimReserve","text":"PrimReserve(handle::Ptr{ImDrawList}, idx_count, vtx_count)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimVtx-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PrimVtx","text":"PrimVtx(handle::Ptr{ImDrawList}, pos, uv, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimWriteIdx-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PrimWriteIdx","text":"PrimWriteIdx(handle::Ptr{ImDrawList}, idx)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimWriteVtx-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PrimWriteVtx","text":"PrimWriteVtx(handle::Ptr{ImDrawList}, pos, uv, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ProgressBar","page":"API Reference","title":"CImGui.ProgressBar","text":"ProgressBar(fraction, size_arg=(-1,0), overlay=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PushButtonRepeat-Tuple{Any}","page":"API Reference","title":"CImGui.PushButtonRepeat","text":"PushButtonRepeat(repeat)\n\nIn \"repeat\" mode, Button*() functions return repeated true in a typematic manner (using ImGuiIO.KeyRepeatDelay/ImGuiIO.KeyRepeatRate setting). Note that you can call IsItemActive after any Button() to tell if the button is held in the current frame.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushClipRect-Tuple{Any, Any, Any}","page":"API Reference","title":"CImGui.PushClipRect","text":"PushClipRect(clip_rect_min, clip_rect_max, intersect_with_current_clip_rect)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushClipRect-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PushClipRect","text":"PushClipRect(handle::Ptr{ImDrawList}, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect)\n\nRender-level scissoring. This is passed down to your render function but not used for CPU-side coarse clipping. Prefer using higher-level PushClipRect to affect logic (hit-testing and widget culling).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushClipRectFullScreen-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PushClipRectFullScreen","text":"PushClipRectFullScreen(handle::Ptr{ImDrawList})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushFont-Tuple{Any}","page":"API Reference","title":"CImGui.PushFont","text":"PushFont(font)\n\nUse C_NULL as a shortcut to push default font.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushID-Tuple{AbstractString}","page":"API Reference","title":"CImGui.PushID","text":"PushID(ptr_id::Ptr)\nPushID(int_id::Integer)\nPushID(str_id::AbstractString)\nPushID(str_id_begin::AbstractString, str_id_end::AbstractString)\n\nPush identifier into the ID stack. IDs are hash of the entire stack!\n\nnote: Note\nRead the FAQ for more details about how ID are handled in dear imgui. If you are creating widgets in a loop you most likely want to push a unique identifier (e.g. object pointer, loop index) to uniquely differentiate them. You can also use the \"##foobar\" syntax within widget label to distinguish them from each others.\n\ntip: FAQ\nQ: How can I have multiple widgets with the same label or without a label?Q: I have multiple widgets with the same label, and only the first one works. Why is that?A: A primer on labels and the ID Stack...Dear ImGui internally need to uniquely identify UI elements. Elements that are typically not clickable (such as calls to the Text functions) don't need an ID. Interactive widgets (such as calls to Button buttons) need a unique ID. Unique ID are used internally to track active widgets and occasionally associate state to widgets. Unique ID are implicitly built from the hash of multiple elements that identify the \"path\" to the UI element.Unique ID are often derived from a string label:CImGui.Button(\"OK\") # Label = \"OK\", ID = hash of (..., \"OK\")\nCImGui.Button(\"Cancel\") # Label = \"Cancel\", ID = hash of (..., \"Cancel\")ID are uniquely scoped within windows, tree nodes, etc. which all pushes to the ID stack. Having two buttons labeled \"OK\" in different windows or different tree locations is fine. We used \"...\" above to signify whatever was already pushed to the ID stack previously:CImGui.Begin(\"MyWindow\")\nCImGui.Button(\"OK\") # Label = \"OK\", ID = hash of (\"MyWindow\", \"OK\")\nCImGui.End()If you have a same ID twice in the same location, you'll have a conflict:CImGui.Button(\"OK\")\nCImGui.Button(\"OK\") # ID collision! Interacting with either button will trigger the first one.Fear not! this is easy to solve and there are many ways to solve it!Solving ID conflict in a simple/local context: When passing a label you can optionally specify extra ID information within string itself. Use ## to pass a complement to the ID that won't be visible to the end-user. This helps solving the simple collision cases when you know e.g. at compilation time which items are going to be created:CImGui.Begin(\"MyWindow\")\nCImGui.Button(\"Play\") # Label = \"Play\", ID = hash of (\"MyWindow\", \"Play\")\nCImGui.Button(\"Play##foo1\") # Label = \"Play\", ID = hash of (\"MyWindow\", \"Play##foo1\") # Different from above\nCImGui.Button(\"Play##foo2\") # Label = \"Play\", ID = hash of (\"MyWindow\", \"Play##foo2\") # Different from above\nCImGui.End()If you want to completely hide the label, but still need an ID:CImGui.Checkbox(\"##On\", &b) # Label = \"\", ID = hash of (..., \"##On\") # No visible label, just a checkbox!Occasionally/rarely you might want change a label while preserving a constant ID. This allowsyou to animate labels. For example you may want to include varying information in a window title bar, but windows are uniquely identified by their ID. Use ### to pass a label that isn't part of ID:CImGui.Button(\"Hello###ID\") # Label = \"Hello\", ID = hash of (..., \"ID\")\nCImGui.Button(\"World###ID\") # Label = \"World\", ID = hash of (..., \"ID\") # Same as above, even though the label looks different\nbuf = @sprintf(\"My game (%f FPS)###MyGame\", fps)\nCImGui.Begin(buf) # Variable title, ID = hash of \"MyGame\"Solving ID conflict in a more general manner:Use PushID() / PopID() to create scopes and manipulate the ID stack, as to avoid ID conflicts within the same window. This is the most convenient way of distinguishing ID when iterating and creating many UI elements programmatically. You can push a pointer, a string or an integer value into the ID stack. Remember that ID are formed from the concatenation of everything in the ID stack!CImGui.Begin(\"Window\")\nfor i = 0:100-1\n CImGui.PushID(i) # Push i to the id tack\n CImGui.Button(\"Click\") # Label = \"Click\", ID = Hash of (\"Window\", i, \"Click\")\n CImGui.PopID()\nend\nEnd()More example showing that you can stack multiple prefixes into the ID stack:CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"Click\")\nCImGui.PushID(\"node\")\nCImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"node\", \"Click\")\n CImGui.PushID(my_ptr)\n CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"node\", my_ptr, \"Click\")\n CImGui.PopID()\nCImGui.PopID()Tree nodes implicitly creates a scope for you by calling PushID().CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"Click\")\nif CImGui.TreeNode(\"node\")\n CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"node\", \"Click\")\n CImGui.TreePop()\nendWhen working with trees, ID are used to preserve the open/close state of each tree node. Depending on your use cases you may want to use strings, indices or pointers as ID.\ne.g. when following a single pointer that may change over time, using a static string as ID will preserve your node open/closed state when the targeted object change.\ne.g. when displaying a list of objects, using indices or pointers as ID will preserve the node open/closed state differently. See what makes more sense in your situation!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushItemWidth-Tuple{Any}","page":"API Reference","title":"CImGui.PushItemWidth","text":"PushItemWidth(item_width)\n\nPush width of items for the common item+label case, pixels:\n\nitem_width == 0: default to ~2/3 of windows width\nitem_width > 0: width in pixels\nitem_width < 0: align xx pixels to the right of window (so -1.0 always align width to the right side)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushStyleColor-Tuple{Any, Any}","page":"API Reference","title":"CImGui.PushStyleColor","text":"PushStyleColor(idx, col)\nPushStyleColor(idx, col::Integer)\n\nSee also GetStyleColorVec4, TextColored, TextDisabled.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushStyleVar-Tuple{Any, Any}","page":"API Reference","title":"CImGui.PushStyleVar","text":"PushStyleVar(idx, val)\nPushStyleVar(idx, val::Real)\n\nSee also GetStyle.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushTabStop-Tuple{Any}","page":"API Reference","title":"CImGui.PushTabStop","text":"PushTabStop(allow_keyboard_focus)\n\nAllow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushTextWrapPos","page":"API Reference","title":"CImGui.PushTextWrapPos","text":"PushTextWrapPos(wrap_pos_x=0.0)\n\nWord-wrapping for Text*() commands:\n\nwrap_pos_x < 0: no wrapping\nwrap_pos_x == 0: wrap to end of window (or column)\nwrap_pos_x > 0: wrap at wrap_pos_x position in window local space\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PushTextureID-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PushTextureID","text":"PushTextureID(handle::Ptr{ImDrawList}, texture_id)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.RadioButton-Tuple{Any, Bool}","page":"API Reference","title":"CImGui.RadioButton","text":"RadioButton(label, active::Bool) -> Bool\nRadioButton(label, v::Ref, v_button::Integer) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\nExample\n\nif RadioButton(\"one\", my_value==1)\n my_value = 1\nend\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Render-Tuple{}","page":"API Reference","title":"CImGui.Render","text":"Render()\n\nCalling this function ends the ImGui frame. This function finalizes the draw data.\n\nwarning: Obsolete\nOptionally call ImGuiIO.RenderDrawListsFn if set. Nowadays, prefer calling your render function yourself.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Reserve-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Reserve","text":"Reserve(handle::Ptr{ImGuiTextBuffer})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ResetMouseDragDelta","page":"API Reference","title":"CImGui.ResetMouseDragDelta","text":"ResetMouseDragDelta(button=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SameLine","page":"API Reference","title":"CImGui.SameLine","text":"SameLine(local_pos_x=0.0, spacing_w=-1.0)\n\nCall this function between widgets or groups to layout them horizontally.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SaveIniSettingsToDisk-Tuple{Any}","page":"API Reference","title":"CImGui.SaveIniSettingsToDisk","text":"SaveIniSettingsToDisk(ini_filename)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SaveIniSettingsToMemory","page":"API Reference","title":"CImGui.SaveIniSettingsToMemory","text":"SaveIniSettingsToMemory(out_ini_size=C_NULL)\n\nReturn a zero-terminated string with the .ini data which you can save by your own mean. Call when ImGuiIO.WantSaveIniSettings is set, then save data by your own mean and clear ImGuiIO.WantSaveIniSettings.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Selectable","page":"API Reference","title":"CImGui.Selectable","text":"Selectable(label, selected::Bool=false, flags=0, size=(0,0)) -> Bool\nSelectable(label, p_selected::Ref, flags=0, sizeImVec2(0,0)) -> Bool\n\nReturn true if is clicked, so you can modify your selection state:\n\nsize.x == 0.0: use remaining width\nsize.x > 0.0: specify width\nsize.y == 0.0: use label height\nsize.y > 0.0: specify height\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Separator-Tuple{}","page":"API Reference","title":"CImGui.Separator","text":"Separator()\n\nSeparator, generally horizontal. But inside a menu bar or in horizontal layout mode, it becomes a vertical separator.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetClipboardText-Tuple{Any}","page":"API Reference","title":"CImGui.SetClipboardText","text":"SetClipboardText(text)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetColorEditOptions-Tuple{Any}","page":"API Reference","title":"CImGui.SetColorEditOptions","text":"SetColorEditOptions(flags)\n\nInitialize current options (generally on application startup) if you want to select a default format, picker type, etc. User will be able to change many settings, unless you pass the _NoOptions flag to your calls.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetColumnOffset-Tuple{Any, Any}","page":"API Reference","title":"CImGui.SetColumnOffset","text":"SetColumnOffset(column_index, offset_x)\n\nSet position of column line (in pixels, from the left side of the contents region). Pass -1 to use current column.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetColumnWidth-Tuple{Any, Any}","page":"API Reference","title":"CImGui.SetColumnWidth","text":"SetColumnWidth(column_index, width)\n\nSet column width (in pixels). Pass -1 to use current column.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCurrentContext-Tuple{Ptr{CImGui.lib.ImGuiContext}}","page":"API Reference","title":"CImGui.SetCurrentContext","text":"SetCurrentContext(ctx::Ptr{ImGuiContext})\n\nSet current context to ctx.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorPos-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorPos","text":"SetCursorPos(x, y)\nSetCursorPos(local_pos)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorPosX-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorPosX","text":"SetCursorPosX(local_x)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorPosY-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorPosY","text":"SetCursorPosX(local_y)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorScreenPos-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorScreenPos","text":"SetCursorScreenPos(pos)\nSetCursorScreenPos(x, y)\n\nSet cursor position in absolute screen coordinates [0..io.DisplaySize].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetDragDropPayload","page":"API Reference","title":"CImGui.SetDragDropPayload","text":"SetDragDropPayload(type, data, size, cond=ImGuiCond_(1)) -> bool\n\ntype is a user defined string of maximum 32 characters. Strings starting with '_' are reserved for dear imgui internal types. Data is copied and held by imgui.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetItemAllowOverlap-Tuple{}","page":"API Reference","title":"CImGui.SetItemAllowOverlap","text":"SetItemAllowOverlap()\n\nAllow last item to be overlapped by a subsequent item. Sometimes useful with invisible buttons, selectables, etc. to catch unused area. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetItemDefaultFocus-Tuple{}","page":"API Reference","title":"CImGui.SetItemDefaultFocus","text":"SetItemDefaultFocus()\n\nMake last item the default focused item of a window.\n\ntip: Tip\nPrefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify \"this is the default item\").\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetKeyboardFocusHere","page":"API Reference","title":"CImGui.SetKeyboardFocusHere","text":"SetKeyboardFocusHere(offset=0)\n\nFocus keyboard on the next widget. Use positive offset to access sub components of a multiple component widget. Use -1 to access previous widget.\n\ntip: Tip\nPrefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify \"this is the default item\").\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetMouseCursor-Tuple{Any}","page":"API Reference","title":"CImGui.SetMouseCursor","text":"SetMouseCursor(type)\n\nSet desired cursor type.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextFrameWantCaptureKeyboard","page":"API Reference","title":"CImGui.SetNextFrameWantCaptureKeyboard","text":"SetNextFrameWantCaptureKeyboard(capture=true)\n\nManually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle). e.g. force capture keyboard when your widget is being hovered.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextFrameWantCaptureMouse","page":"API Reference","title":"CImGui.SetNextFrameWantCaptureMouse","text":"CaptureMouseFromApp(capture=true)\n\nManually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextItemOpen","page":"API Reference","title":"CImGui.SetNextItemOpen","text":"SetNextItemOpen(is_open, cond=0)\n\nSet next TreeNode/CollapsingHeader open state.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextItemWidth-Tuple{Any}","page":"API Reference","title":"CImGui.SetNextItemWidth","text":"SetNextItemWidth(item_width)\n\nSet width of the next common large \"item+label\" widget.\n\nitem_width > 0.0: width in pixels\nitem_width < 0.0: align xx pixels to the right of window (so -1.0 always align width to the right side)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowBgAlpha-Tuple{Any}","page":"API Reference","title":"CImGui.SetNextWindowBgAlpha","text":"SetNextWindowBgAlpha(alpha)\n\nSet next window background color alpha. Helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. You may also use ImGuiWindowFlags_NoBackground.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowCollapsed","page":"API Reference","title":"CImGui.SetNextWindowCollapsed","text":"SetNextWindowCollapsed(collapsed, cond=0)\n\nSet next window collapsed state. Call before Begin.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextWindowContentSize-Tuple{Any}","page":"API Reference","title":"CImGui.SetNextWindowContentSize","text":"SetNextWindowContentSize(size)\nSetNextWindowContentSize(x, y)\n\nSet next window content size (~ enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.). Set an axis to 0.0 to leave it automatic. Call before Begin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowFocus-Tuple{}","page":"API Reference","title":"CImGui.SetNextWindowFocus","text":"SetNextWindowFocus()\n\nSet next window to be focused / front-most. Call before Begin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowPos","page":"API Reference","title":"CImGui.SetNextWindowPos","text":"SetNextWindowPos(pos, cond=0, pivot=(0,0))\n\nSet next window position. Call before Begin. use pivot=(0.5,0.5) to center on given point, etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextWindowSize","page":"API Reference","title":"CImGui.SetNextWindowSize","text":"SetNextWindowSize(size, cond=0)\n\nSet next window size. Set axis to 0.0 to force an auto-fit on this axis. Call before Begin.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextWindowSizeConstraints","page":"API Reference","title":"CImGui.SetNextWindowSizeConstraints","text":"SetNextWindowSizeConstraints(size_min, size_max, custom_callback=C_NULL, custom_callback_data=C_NULL)\n\nSet next window size limits. Use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollFromPosX","page":"API Reference","title":"CImGui.SetScrollFromPosX","text":"SetScrollFromPosX(local_y, center_y_ratio=0.5)\n\nAdjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollFromPosY","page":"API Reference","title":"CImGui.SetScrollFromPosY","text":"SetScrollFromPosY(local_y, center_y_ratio=0.5)\n\nAdjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollHereY","page":"API Reference","title":"CImGui.SetScrollHereY","text":"SetScrollHereY(center_y_ratio=0.5)\n\nAdjust scrolling amount to make current cursor position visible.\n\ncenter_y_ratio == 0.0: top\ncenter_y_ratio == 0.5: center\ncenter_y_ratio == 1.0: bottom\n\nWhen using to make a \"default/current item\" visible, consider using SetItemDefaultFocus instead.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollX-Tuple{Any}","page":"API Reference","title":"CImGui.SetScrollX","text":"SetScrollX(scroll_x)\n\nSet scrolling amount [0..GetScrollMaxX()].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetScrollY-Tuple{Any}","page":"API Reference","title":"CImGui.SetScrollY","text":"SetScrollY(scroll_y)\n\nSet scrolling amount [0..GetScrollMaxY()].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetStateStorage-Tuple{Any}","page":"API Reference","title":"CImGui.SetStateStorage","text":"SetStateStorage(storage)\n\nReplace current window storage with our own (if you want to manipulate it yourself, typically clear subsection of it)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetTabItemClosed-Tuple{Any}","page":"API Reference","title":"CImGui.SetTabItemClosed","text":"SetTabItemClosed(tab_or_docked_window_label)\n\nNotify 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.\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetTexID-Tuple{Ptr{CImGui.lib.ImFontAtlas}, Any}","page":"API Reference","title":"CImGui.SetTexID","text":"SetTexID(self::Ptr{ImFontAtlas}, id)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetTooltip-Tuple{Any}","page":"API Reference","title":"CImGui.SetTooltip","text":"SetTooltip(formatted_text)\n\nSet a text-only tooltip, typically use with IsItemHovered. Overidde any previous call to SetTooltip.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowCollapsed","page":"API Reference","title":"CImGui.SetWindowCollapsed","text":"SetWindowCollapsed(name::AbstractString, collapsed, cond=0)\n\nSet named window collapsed state.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowCollapsed-2","page":"API Reference","title":"CImGui.SetWindowCollapsed","text":"SetWindowCollapsedBool(collapsed, cond=0)\n\nSet current window collapsed state.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowCollapsed.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowFocus-Tuple{Ptr{Nothing}}","page":"API Reference","title":"CImGui.SetWindowFocus","text":"SetWindowFocus(name::Ptr{Cvoid})\nSetWindowFocus(name::AbstractString)\n\nSet named window to be focused / front-most. Use C_NULL to remove focus.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowFocus-Tuple{}","page":"API Reference","title":"CImGui.SetWindowFocus","text":"SetWindowFocus()\n\nSet current window to be focused / top-most.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowFocus.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowFontScale-Tuple{Any}","page":"API Reference","title":"CImGui.SetWindowFontScale","text":"SetWindowFontScale(scale)\n\nSet font scale. Adjust ImGuiIO.FontGlobalScale if you want to scale all windows.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowPos","page":"API Reference","title":"CImGui.SetWindowPos","text":"SetWindowPosStr(name::AbstractString, pos, cond=0)\n\nSet named window position.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowPos-2","page":"API Reference","title":"CImGui.SetWindowPos","text":"SetWindowPos(pos, cond=0)\n\nSet current window position - call within Begin/End.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowPos, as this may incur tearing and side-effects.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowSize","page":"API Reference","title":"CImGui.SetWindowSize","text":"SetWindowSizeStr(name::AbstractString, size, cond=0)\n\nSet named window size. Set axis to 0.0 to force an auto-fit on this axis.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowSize-2","page":"API Reference","title":"CImGui.SetWindowSize","text":"SetWindowSize(size, cond=0)\n\nSet current window size - call within Begin/End. Set to (0,0) to force an auto-fit.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowSize, as this may incur tearing and minor side-effects.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowAboutWindow","page":"API Reference","title":"CImGui.ShowAboutWindow","text":"ShowAboutWindow()\nShowAboutWindow(p_open=C_NULL)\n\nCreate about window. Display Dear ImGui version, credits and build/system information.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowDemoWindow","page":"API Reference","title":"CImGui.ShowDemoWindow","text":"ShowDemoWindow()\nShowDemoWindow(p_open=C_NULL)\n\nCreate demo/test window. Demonstrate most ImGui features.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowFontSelector-Tuple{Any}","page":"API Reference","title":"CImGui.ShowFontSelector","text":"ShowFontSelector(label)\n\nAdd font selector block (not a window), essentially a combo listing the loaded fonts.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ShowMetricsWindow","page":"API Reference","title":"CImGui.ShowMetricsWindow","text":"ShowMetricsWindow()\nShowMetricsWindow(p_open=C_NULL)\n\nCreate metrics window. Display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowStyleEditor","page":"API Reference","title":"CImGui.ShowStyleEditor","text":"ShowStyleEditor()\nShowStyleEditor(ref=C_NULL)\n\nAdd style editor block (not a window). You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowStyleSelector-Tuple{Any}","page":"API Reference","title":"CImGui.ShowStyleSelector","text":"ShowStyleSelector()\nShowStyleSelector(label)\n\nAdd style selector block (not a window), essentially a combo listing the default styles.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ShowUserGuide-Tuple{}","page":"API Reference","title":"CImGui.ShowUserGuide","text":"ShowUserGuide()\n\nAdd basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Size-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Size","text":"Size(handle::Ptr{ImGuiTextBuffer}) -> Cint\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SliderAngle","page":"API Reference","title":"CImGui.SliderAngle","text":"SliderAngle(label, v_rad, v_degrees_min=-360.0, v_degrees_max=360.0, format=\"%.0f deg\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat","page":"API Reference","title":"CImGui.SliderFloat","text":"SliderFloat(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nCreate a slider widget.\n\ntip: Tip\nctrl+click on a slider to input with keyboard. manually input values aren't clamped, can go off-bounds.\n\nArguments\n\nformat: adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display\n\"%.3f\" -> 1.234\n\"%5.2f secs\" -> 01.23 secs\n\"Biscuit: %.0f\" -> Biscuit: 1\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat2","page":"API Reference","title":"CImGui.SliderFloat2","text":"SliderFloat2(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat3","page":"API Reference","title":"CImGui.SliderFloat3","text":"SliderFloat3(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat4","page":"API Reference","title":"CImGui.SliderFloat4","text":"SliderFloat4(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt","page":"API Reference","title":"CImGui.SliderInt","text":"SliderInt(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt2","page":"API Reference","title":"CImGui.SliderInt2","text":"SliderInt2(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt3","page":"API Reference","title":"CImGui.SliderInt3","text":"SliderInt3(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt4","page":"API Reference","title":"CImGui.SliderInt4","text":"SliderInt4(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderScalar","page":"API Reference","title":"CImGui.SliderScalar","text":"SliderScalar(label, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderScalarN","page":"API Reference","title":"CImGui.SliderScalarN","text":"SliderScalarN(label, data_type, v, components, v_min, v_max, format=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SmallButton-Tuple{Any}","page":"API Reference","title":"CImGui.SmallButton","text":"SmallButton(label) -> Bool\n\nReturn true when the value has been changed or when pressed/selected. It creates a button with FramePadding=(0,0) to easily embed within text.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Spacing-Tuple{}","page":"API Reference","title":"CImGui.Spacing","text":"Spacing()\n\nAdd vertical spacing.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Step-Tuple{Ptr{CImGui.lib.ImGuiListClipper}}","page":"API Reference","title":"CImGui.Step","text":"Step(handle::Ptr{ImGuiListClipper}) -> Bool\n\nCall until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.StyleColorsClassic-Tuple{}","page":"API Reference","title":"CImGui.StyleColorsClassic","text":"StyleColorsClassic()\n\nUse the classic imgui style.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.StyleColorsDark-Tuple{}","page":"API Reference","title":"CImGui.StyleColorsDark","text":"StyleColorsDark()\n\nUse the new, recommended style. This is also the default style.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.StyleColorsLight-Tuple{}","page":"API Reference","title":"CImGui.StyleColorsLight","text":"StyleColorsLight()\n\nThis style is best used with borders and a custom, thicker font.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetColumnCount-Tuple{}","page":"API Reference","title":"CImGui.TableGetColumnCount","text":"TableGetColumnCount() -> CInt\n\nreturn number of columns (value passed to BeginTable)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetColumnFlags","page":"API Reference","title":"CImGui.TableGetColumnFlags","text":"TableGetColumnFlags(column_n = -1) -> ImGuiTableColumnFlags\n\nReturn column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableGetColumnIndex-Tuple{}","page":"API Reference","title":"CImGui.TableGetColumnIndex","text":"TableGetColumnIndex() -> CInt\n\nReturn current column index\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetColumnName","page":"API Reference","title":"CImGui.TableGetColumnName","text":"TableGetColumnName(column_n = -1) -> String\n\nreturn \"\" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableGetRowIndex-Tuple{}","page":"API Reference","title":"CImGui.TableGetRowIndex","text":"TableGetRowIndex() -> CInt\n\nReturn current row index.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetSortSpecs-Tuple{}","page":"API Reference","title":"CImGui.TableGetSortSpecs","text":"TableGetSortSpecs() -> Ptr{ImGuiTableSortSpecs}\n\nget latest sort specs for the table (NULL if not sorting).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableHeader-Tuple{Any}","page":"API Reference","title":"CImGui.TableHeader","text":"TableHeader(label)\n\nSubmit one header cell manually (rarely used)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableHeadersRow-Tuple{}","page":"API Reference","title":"CImGui.TableHeadersRow","text":"TableHeadersRow()\n\nSubmit all headers cells based on data provided to TableSetupColumn() + submit context menu\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableNextColumn-Tuple{}","page":"API Reference","title":"CImGui.TableNextColumn","text":"TableNextColumn() -> Bool\n\nAppend into the next column (or first column of next row if currently in last column). Return true when column is visible.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableNextRow","page":"API Reference","title":"CImGui.TableNextRow","text":"TableNextRow(row_flags = ImGuiTableRowFlags_(0), min_row_height = 0.0)\n\nAppend into the first cell of a new row.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableSetBgColor","page":"API Reference","title":"CImGui.TableSetBgColor","text":"TableSetBgColor(bg_target, color, column_n = -1)\n\nChange the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableSetColumnIndex-Tuple{Any}","page":"API Reference","title":"CImGui.TableSetColumnIndex","text":"TableSetColumnIndex(column_n) -> Bool\n\nAppend into the specified column. Return true when column is visible.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableSetupColumn","page":"API Reference","title":"CImGui.TableSetupColumn","text":"TableSetupColumn(label, flags = ImGuiTableColumnFlags_(0), init_width_or_weight = 0.0, user_id = ImGuiID(0))\n\nSpecify label, resizing policy, default width/weight, id, various other flags etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableSetupScrollFreeze-Tuple{Any, Any}","page":"API Reference","title":"CImGui.TableSetupScrollFreeze","text":"TableSetupScrollFreeze(cols, rows)\n\nLock columns/rows so they stay visible when scrolled.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Text-Tuple{Any}","page":"API Reference","title":"CImGui.Text","text":"Text(formatted_text)\n\nCreate a text widget.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextBuffer-Tuple{}","page":"API Reference","title":"CImGui.TextBuffer","text":"TextBuffer() -> Ptr{ImGuiTextBuffer}\n\nHelper: Growable text buffer for logging/accumulating text\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextColored-Tuple{Any, Any}","page":"API Reference","title":"CImGui.TextColored","text":"TextColored(col, formatted_text)\n\nShortcut for PushStyleColor(ImGuiCol_Text, col); Text(text); PopStyleColor();.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextDisabled-Tuple{Any}","page":"API Reference","title":"CImGui.TextDisabled","text":"TextDisabled(formatted_text)\n\nShortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(text); PopStyleColor();.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextUnformatted","page":"API Reference","title":"CImGui.TextUnformatted","text":"TextUnformatted(text, text_end=C_NULL)\n\nRaw text without formatting. Roughly equivalent to Text(\"%s\", text) but:\n\ndoesn't require null terminated string if text_end is specified;\nit's faster, no memory copy is done, no buffer size limits, recommended for long chunks of text.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TextWrapped-Tuple{Any}","page":"API Reference","title":"CImGui.TextWrapped","text":"TextWrapped(formatted_text)\n\nShortcut for PushTextWrapPos(0.0f); Text(text); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using SetNextWindowSize.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNode-Tuple{AbstractString}","page":"API Reference","title":"CImGui.TreeNode","text":"TreeNode(label::AbstractString) -> Bool\n\nTreeNode functions return true when the node is open, in which case you need to also call TreePop when you are finished displaying the tree node contents.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNode-Tuple{Any, Any}","page":"API Reference","title":"CImGui.TreeNode","text":"TreeNode(str_id, formatted_text) -> Bool\n\nHelper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNode-Tuple{Ptr, Any}","page":"API Reference","title":"CImGui.TreeNode","text":"TreeNodePtr(ptr_id::Ptr, formatted_text) -> Bool\n\nHelper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNodeEx","page":"API Reference","title":"CImGui.TreeNodeEx","text":"TreeNodeEx(label, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TreeNodeEx-Tuple{Any, Any, Any}","page":"API Reference","title":"CImGui.TreeNodeEx","text":"TreeNodeEx(str_id, flags, formatted_text) -> Bool\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNodeEx-Tuple{Ptr, Any, Any}","page":"API Reference","title":"CImGui.TreeNodeEx","text":"TreeNodeEx(ptr_id::Ptr, flags, formatted_text) -> Bool\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreePop-Tuple{}","page":"API Reference","title":"CImGui.TreePop","text":"TreePop()\n\nUnindent + PopID.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreePush","page":"API Reference","title":"CImGui.TreePush","text":"TreePush(ptr_id::Ptr=C_NULL)\n\nIndent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TreePush-Tuple{Any}","page":"API Reference","title":"CImGui.TreePush","text":"TreePush(str_id)\n\nIndent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Unindent","page":"API Reference","title":"CImGui.Unindent","text":"Unindent()\nUnindent(indent_w)\n\nMove content position back to the left, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.VSliderFloat","page":"API Reference","title":"CImGui.VSliderFloat","text":"VSliderFloat(label, size, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.VSliderInt","page":"API Reference","title":"CImGui.VSliderInt","text":"VSliderInt(label, size, v, v_min, v_max, format=\"%d\", flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.VSliderScalar","page":"API Reference","title":"CImGui.VSliderScalar","text":"VSliderScalar(label, size, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ValueBool-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ValueBool","text":"ValueBool(prefix, b)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ValueFloat","page":"API Reference","title":"CImGui.ValueFloat","text":"ValueFloat(prefix, v, float_format=C_NULL)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ValueInt-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ValueInt","text":"ValueInt(prefix, v)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ValueUint-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ValueUint","text":"ValueUint(prefix, v)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"method"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"CurrentModule = CImGui","category":"page"},{"location":"_changelog/#Changelog","page":"Changelog","title":"Changelog","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.","category":"page"},{"location":"_changelog/#[v2.1.0]-2024-07-29","page":"Changelog","title":"[v2.1.0] - 2024-07-29","text":"","category":"section"},{"location":"_changelog/#Added","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"The OpenGL version can now be set with render().\nExperimental Makie integration ([#133]).","category":"page"},{"location":"_changelog/#[v2.0.0]-2024-06-27","page":"Changelog","title":"[v2.0.0] - 2024-06-27","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.","category":"page"},{"location":"_changelog/#Added-2","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.\nThe renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.","category":"page"},{"location":"_changelog/#Changed","page":"Changelog","title":"Changed","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.\nBreaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.\nBreaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.\nBreaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.","category":"page"},{"location":"_changelog/#Deprecated","page":"Changelog","title":"Deprecated","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"GetKeyIndex() has been deprecated upstream. It will be removed in a future release.","category":"page"},{"location":"_changelog/#[v1.89.1]-2024-05-19","page":"Changelog","title":"[v1.89.1] - 2024-05-19","text":"","category":"section"},{"location":"_changelog/#Fixed","page":"Changelog","title":"Fixed","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"Fixed the implementations of SetScrollX() and SetScrollY() ([#115]).","category":"page"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"EditURL = \"https://github.com/Gnimuc/CImGui.jl/blob/master/CHANGELOG.md\"","category":"page"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"CurrentModule = CImGui","category":"page"},{"location":"changelog/#Changelog","page":"Changelog","title":"Changelog","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.","category":"page"},{"location":"changelog/#[v2.1.0](https://github.com/Gnimuc/CImGui.jl/releases/tag/v2.1.0)-2024-07-29","page":"Changelog","title":"v2.1.0 - 2024-07-29","text":"","category":"section"},{"location":"changelog/#Added","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"The OpenGL version can now be set with render().\nExperimental Makie integration (#133).","category":"page"},{"location":"changelog/#[v2.0.0](https://github.com/Gnimuc/CImGui.jl/releases/tag/v2.0.0)-2024-06-27","page":"Changelog","title":"v2.0.0 - 2024-06-27","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.","category":"page"},{"location":"changelog/#Added-2","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.\nThe renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.","category":"page"},{"location":"changelog/#Changed","page":"Changelog","title":"Changed","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.\nBreaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.\nBreaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.\nBreaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.","category":"page"},{"location":"changelog/#Deprecated","page":"Changelog","title":"Deprecated","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"GetKeyIndex() has been deprecated upstream. It will be removed in a future release.","category":"page"},{"location":"changelog/#[v1.89.1](https://github.com/Gnimuc/CImGui.jl/releases/tag/v1.89.1)-2024-05-19","page":"Changelog","title":"v1.89.1 - 2024-05-19","text":"","category":"section"},{"location":"changelog/#Fixed","page":"Changelog","title":"Fixed","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"Fixed the implementations of SetScrollX() and SetScrollY() (#115).","category":"page"},{"location":"makie/","page":"Makie integration","title":"Makie integration","text":"CurrentModule = CImGui","category":"page"},{"location":"makie/#Makie-integration","page":"Makie integration","title":"Makie integration","text":"","category":"section"},{"location":"makie/","page":"Makie integration","title":"Makie integration","text":"We currently have very experimental Makie support through GLMakie. GLMakie mostly works around a Screen{T} object to display a scene, where T is some OpenGL-supporting window. GLMakie sets this to a GLFW.Window, but we've made a custom window type to represent a single Figure to be drawn in ImGui. What we get from GLMakie is a framebuffer with a color image texture attachment, and that's displayed by us as an image.","category":"page"},{"location":"makie/","page":"Makie integration","title":"Makie integration","text":"MakieFigure","category":"page"},{"location":"makie/#CImGui.MakieFigure","page":"Makie integration","title":"CImGui.MakieFigure","text":"MakieFigure(id::String, f::GLMakie.Figure; auto_resize_x=true, auto_resize_y=false)\n\nDisplay a Makie figure in ImGui. See examples/makie_demo.jl for an example of how to use it. This supports all the interaction features in GLMakie:\n\nScrolling to zoom\nRectangle select to zoom\nRMB to pan\n\nNote that scrolling to zoom will also cause the ImGui window to scroll, which can be annoying. This may be fixed in the future by using some other key combination for scrolling to zoom.\n\nThese are the interaction events that are wired up and can be used:\n\nhasfocus\nentered_window\nmousebutton\nmouseposition\n\nKnown issues:\n\nChanging tick labels don't trigger the scene to be re-layouted, causing them to be clipped if the labels change width. See examples/makie_demo.jl for an example workaround using Makie.tight_ticklabel_spacing!().\nThe theming doesn't match the ImGui theme so plots look quite out of place by default.\nMouse events aren't delivered unless the mouse is hovered over the figure, so dragging the mouse from within the figure to somewhere outside the figure will keep the old mouse state. e.g. if you're RMB panning and the mouse goes outside the figure, when it enters the figure again panning will resume even the RMB was released.\n\nwarning: Warning\nThis is very experimental, you will almost definitely encounter bugs (and if so please submit an issue/PR). We don't consider this covered under semver yet so there may be breaking changes in minor releases.\n\n\n\n\n\n","category":"function"},{"location":"backends/","page":"Backends","title":"Backends","text":"CurrentModule = CImGui","category":"page"},{"location":"backends/#Backends","page":"Backends","title":"Backends","text":"","category":"section"},{"location":"backends/","page":"Backends","title":"Backends","text":"ImGui is a very embeddable library because it abstracts things like drawing to the screen and creating windows to its backends. There are many official backends, but currently CImGui.jl only supports the GLFW/OpenGL3 backend.","category":"page"},{"location":"backends/","page":"Backends","title":"Backends","text":"set_backend\nrender","category":"page"},{"location":"backends/#CImGui.set_backend","page":"Backends","title":"CImGui.set_backend","text":"set_backend(backend::Symbol)\n\nSet the backend to use. Currently supported backends are:\n\n:GlfwOpenGL3 (GLFW/OpenGL3, requires ModernGL.jl and GLFW.jl)\n\n\n\n\n\n","category":"function"},{"location":"backends/#CImGui.render","page":"Backends","title":"CImGui.render","text":"render(ui::Function, ctx::Ptr{lib.ImGuiContext}; kwargs...)\n\nTop-level function to call a renderloop implemented by the backend selected by set_backend(). This function will not return until the program exits, either by the user closing the window or ui() returning :imgui_exit_loop. It will also not yield the loop, though you may explicitly call yield() in ui().\n\nArguments\n\nPositional arguments:\n\nui: The function to execute in the renderloop. This where all the GUI code with calls to CImGui should go.\nctx: The ImGui context to use. Note that DestroyContext() will automatically be called on it at the end of the renderloop, so it will be unusable afterwards.\n\nKeyword arguments:\n\nhotloading=true: Enable calling the latest version of ui() using @invokelatest. This is handy when using Revise.jl.\non_exit::Union{Function, Nothing}=nothing: A destructor/finalizer function that will be called before destroying ctx. This might be useful if you're using some external library that needs to be cleaned up in a certain order.\nclear_color=Cfloat[0.45, 0.55, 0.60, 1.00]: The color of the window background. This can also be a Ref{Vector{Cfloat}} if you want to control the color dynamically (see the official demo for an example).\nwindow_size=(1280, 720): The initial size of the window.\nwindow_title=\"CImGui\": The window title.\nengine=nothing: An optional ImGuiTestEngine.Engine instance. If there are any tests registered with the test engine they will be queued and run automatically.\nopengl_version::VersionNumber=v\"3.2\": The OpenGL version to use.\n\n\n\n\n\n","category":"function"},{"location":"#CImGui","page":"CImGui","title":"CImGui","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"This package provides a Julia language wrapper for cimgui: a thin c-api wrapper programmatically generated for the excellent C++ immediate mode gui Dear ImGui. Dear ImGui is mainly for creating content creation tools and visualization / debug tools. You could browse Gallery to get an idea of its use cases.","category":"page"},{"location":"#Installation","page":"CImGui","title":"Installation","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"pkg> add CImGui","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"You will probably also want to add the necessary packages for one of the backends. Currently we only support OpenGL3/GFLW, so you'd need:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"pkg> add ModernGL, GLFW","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Note that you don't have to explicitly use these packages, but they must be installed and loaded because the backend renderloop is a package extension that requires them.","category":"page"},{"location":"#How-to-start","page":"CImGui","title":"How to start","text":"","category":"section"},{"location":"#1.-Run-demo/demo.jl-to-test-whether-the-official-demo-works-at-all","page":"CImGui","title":"1. Run demo/demo.jl to test whether the official demo works at all","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"julia> import CImGui, ModernGL, GLFW\njulia> include(joinpath(pathof(CImGui), \"..\", \"..\", \"demo\", \"demo.jl\"))\njulia> official_demo()","category":"page"},{"location":"#2.-Run-examples/demo.jl-and-browse-demos-in-the-examples-folder-to-learn-how-to-use-the-API","page":"CImGui","title":"2. Run examples/demo.jl and browse demos in the examples folder to learn how to use the API","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"julia> import CImGui, ModernGL, GLFW\njulia> include(joinpath(pathof(CImGui), \"..\", \"..\", \"examples\", \"demo.jl\"))\njulia> julia_demo()","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"All of these examples are one-to-one ported from Dear ImGui's C++ examples and there is an interactive manual for quickly locating the code. You could also run ? CImGui.xxx to retrieve docs:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"help?> CImGui.Button\n Button(label) -> Bool\n Button(label, size) -> Bool\n\n Return true when the value has been changed or when pressed/selected.","category":"page"},{"location":"#3.-Your-first-GUI-\\o/","page":"CImGui","title":"3. Your first GUI \\o/","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"Note that all ImGui widgets should run within CImGui.Begin()...CImGui.End(), if not, a crash is waiting for you. For example, directly running CImGui.Button(\"My button\") in REPL will crash Julia. That being said, here's how a quick example of how to use the default backend to draw a little GUI:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"julia> import CImGui as ig, ModernGL, GLFW\njulia> ig.set_backend(:GlfwOpenGL3)\njulia> ctx = ig.CreateContext()\njulia> ig.render(ctx; window_size=(360, 480), window_title=\"ImGui Window\") do\n ig.Begin(\"Hello ImGui\")\n if ig.Button(\"My Button\")\n @info \"Triggered\"\n end\n ig.End()\n end","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Note that neither ImGui nor OpenGL are thread-safe, be aware of this if you start Julia with multiple threads using --threads. If you need to use multiple threads in an application, one option is to use the threadpools introduced in Julia 1.9:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"# Have an arbitrary number in the default pool, and 1 thread in the :interactive pool\n$ julia --threads=auto,1","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Then start the render loop on the :interactive thread with Threads.@spawn :interactive and ensure that none of the other threads call GUI functions or modify the program state while your GUI code is being executing.","category":"page"},{"location":"#Usage","page":"CImGui","title":"Usage","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"The API provided in this package is as close as possible to the original C++ API. When translating C++ code to Julia, please follow the tips below:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Replace ImGui:: to CImGui. (or ig. if you've run import CImGui as ig).\nusing CImGui.lib to import all of the ImGuiXXX types into the current namespace.\nMember function calling should be translated in Julia style: fonts.AddFont(cfg) => ig.AddFont(fonts, cfg).\n[using CImGui.CSyntax] provides two useful macros: @c for translating C's & operator on immutables and @cstatic-block for emulating C's static keyword.","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"As mentioned before, this package aims to provide the same user experience as the original C++ API, so any high-level abstraction should go into a more high-level package. Redux.jl might be of interest to you if you're looking for state management frameworks.","category":"page"},{"location":"#Backend","page":"CImGui","title":"Backend","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"The default backend is based on ModernGL and GLFW which are stable and under actively maintained. Other popular backends like SFML and SDL could be added in the future if someone should invest time to make these packages work in post Julia 1.0 era.","category":"page"}] +[{"location":"api/","page":"API Reference","title":"API Reference","text":"CurrentModule = CImGui\nCollapsedDocStrings = true","category":"page"},{"location":"api/#API-Reference","page":"API Reference","title":"API Reference","text":"","category":"section"},{"location":"api/","page":"API Reference","title":"API Reference","text":"This page documents the wrapper functions we have for the ImGui API. The backends are documented separately in Backends.","category":"page"},{"location":"api/","page":"API Reference","title":"API Reference","text":"You can always get the current ImGui version with:","category":"page"},{"location":"api/","page":"API Reference","title":"API Reference","text":"imgui_version","category":"page"},{"location":"api/#CImGui.imgui_version","page":"API Reference","title":"CImGui.imgui_version","text":"imgui_version()::VersionNumber\n\nReturn the upstream ImGui version.\n\n\n\n\n\n","category":"function"},{"location":"api/","page":"API Reference","title":"API Reference","text":"","category":"page"},{"location":"api/","page":"API Reference","title":"API Reference","text":"Modules = [CImGui]\nOrder = [:constant, :function, :type]\nFilter = t -> nameof(t) ∉ (:imgui_version, :render, :set_backend, :MakieFigure)","category":"page"},{"location":"api/#CImGui.AcceptDragDropPayload","page":"API Reference","title":"CImGui.AcceptDragDropPayload","text":"AcceptDragDropPayload(type, flags=ImGuiDragDropFlags_(0)) -> Ptr{ImGuiPayload}\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddBezierCubic","page":"API Reference","title":"CImGui.AddBezierCubic","text":"AddBezierCubic(handle::Ptr{ImDrawList}, pos0, cp0, cp1, pos1, col, thickness, num_segments=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddCallback-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any}","page":"API Reference","title":"CImGui.AddCallback","text":"AddCallback(handle::Ptr{ImDrawList}, callback, callback_data)\n\nYour rendering function must check for UserCallback in ImDrawCmd and call the function instead of rendering triangles.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddCircle","page":"API Reference","title":"CImGui.AddCircle","text":"AddCircle(handle::Ptr{ImDrawList}, centre, radius, col, num_segments=12, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddCircleFilled","page":"API Reference","title":"CImGui.AddCircleFilled","text":"AddCircleFilled(handle::Ptr{ImDrawList}, centre, radius, col, num_segments=12)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddConvexPolyFilled-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.AddConvexPolyFilled","text":"AddConvexPolyFilled(handle::Ptr{ImDrawList}, points, num_points, col)\n\nnote: Note\nAnti-aliased filling requires points to be in clockwise order.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddDrawCmd-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.AddDrawCmd","text":"AddDrawCmd(handle::Ptr{ImDrawList})\n\nThis is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddFont-Tuple{Ptr{CImGui.lib.ImFontAtlas}, Any}","page":"API Reference","title":"CImGui.AddFont","text":"AddFont(self::Ptr{ImFontAtlas}, font_cfg) -> Ptr{ImFont}\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddFontDefault","page":"API Reference","title":"CImGui.AddFontDefault","text":"AddFontDefault(self::Ptr{ImFontAtlas}, font_cfg=C_NULL) -> Ptr{ImFont}\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromFileTTF","page":"API Reference","title":"CImGui.AddFontFromFileTTF","text":"AddFontFromFileTTF(self::Ptr{ImFontAtlas}, filename, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromMemoryCompressedBase85TTF","page":"API Reference","title":"CImGui.AddFontFromMemoryCompressedBase85TTF","text":"AddFontFromMemoryCompressedBase85TTF(self::Ptr{ImFontAtlas}, compressed_font_data_base85, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\n'compressedfontdata_base85' still owned by caller.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromMemoryCompressedTTF","page":"API Reference","title":"CImGui.AddFontFromMemoryCompressedTTF","text":"AddFontFromMemoryCompressedTTF(self::Ptr{ImFontAtlas}, compressed_font_data, compressed_font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\n'compressedfontdata' still owned by caller.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddFontFromMemoryTTF","page":"API Reference","title":"CImGui.AddFontFromMemoryTTF","text":"AddFontFromMemoryTTF(self::Ptr{ImFontAtlas}, font_data, font_size, size_pixels, font_cfg=C_NULL, glyph_ranges=C_NULL) -> Ptr{ImFont}\n\nnote: Note\nTransfer ownership of 'ttfdata' to ImFontAtlas! Will be deleted after destruction of the atlas. Set `fontcfg.FontDataOwnedByAtlas=false` to keep ownership of your data and it won't be freed.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddImage","page":"API Reference","title":"CImGui.AddImage","text":"AddImage(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a=(0,0), uv_b=(1,1), col=0xffffffff)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddImageQuad","page":"API Reference","title":"CImGui.AddImageQuad","text":"AddImageQuad(handle::Ptr{ImDrawList}, user_texture_id, a, b, c, d, uv_a=(0,0), uv_b=(1,0), uv_c=(1,1), uv_d=(0,1), col=0xffffffff)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddImageRounded","page":"API Reference","title":"CImGui.AddImageRounded","text":"AddImageRounded(handle::Ptr{ImDrawList}, user_texture_id, a, b, uv_a, uv_b, col, rounding, rounding_corners=ImDrawFlags_All)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddInputCharacter-Tuple{Ptr{CImGui.lib.ImGuiIO}, Any}","page":"API Reference","title":"CImGui.AddInputCharacter","text":"AddInputCharacter(io::Ptr{ImGuiIO}, c)\n\nAdd new character into InputCharacters[].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddInputCharactersUTF8-Tuple{Ptr{CImGui.lib.ImGuiIO}, Any}","page":"API Reference","title":"CImGui.AddInputCharactersUTF8","text":"AddInputCharactersUTF8(io::Ptr{ImGuiIO}, utf8_chars)\n\nAdd new characters into InputCharacters[] from an UTF-8 string.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddLine","page":"API Reference","title":"CImGui.AddLine","text":"AddLine(handle::Ptr{ImDrawList}, a, b, col, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddPolyline-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 5}}","page":"API Reference","title":"CImGui.AddPolyline","text":"AddPolyline(handle::Ptr{ImDrawList}, points, num_points, col, closed, thickness)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddQuad","page":"API Reference","title":"CImGui.AddQuad","text":"AddQuad(handle::Ptr{ImDrawList}, a, b, c, d, col, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddQuadFilled-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 5}}","page":"API Reference","title":"CImGui.AddQuadFilled","text":"AddQuadFilled(handle::Ptr{ImDrawList}, a, b, c, d, col)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddRect","page":"API Reference","title":"CImGui.AddRect","text":"AddRect(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll, thickness=1.0)\n\nArguments\n\na: upper-left\nb: lower-right\nrounding_corners_flags: 4-bits corresponding to which corner to round\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddRectFilled","page":"API Reference","title":"CImGui.AddRectFilled","text":"AddRectFilled(handle::Ptr{ImDrawList}, a, b, col, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)\n\nArguments\n\na: upper-left\nb: lower-right\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddRectFilledMultiColor-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 6}}","page":"API Reference","title":"CImGui.AddRectFilledMultiColor","text":"AddRectFilledMultiColor(handle::Ptr{ImDrawList}, a, b, col_upr_left, col_upr_right, col_bot_right, col_bot_left)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AddText","page":"API Reference","title":"CImGui.AddText","text":"AddText(handle::Ptr{ImDrawList}, pos, col, text_begin, text_end=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddText-2","page":"API Reference","title":"CImGui.AddText","text":"AddText(handle::Ptr{ImDrawList}, font::Ptr{ImFont}, font_size, pos, col, text_begin, text_end=C_NULL, wrap_width=0.0, cpu_fine_clip_rect=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddTriangle","page":"API Reference","title":"CImGui.AddTriangle","text":"AddTriangle(handle::Ptr{ImDrawList}, a, b, c, col, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.AddTriangleFilled-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 4}}","page":"API Reference","title":"CImGui.AddTriangleFilled","text":"AddTriangleFilled(handle::Ptr{ImDrawList}, a, b, c, col)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.AlignTextToFramePadding-Tuple{}","page":"API Reference","title":"CImGui.AlignTextToFramePadding","text":"AlignTextToFramePadding()\n\nVertically align 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).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Append","page":"API Reference","title":"CImGui.Append","text":"Append(handle::Ptr{ImGuiTextBuffer}, str, str_end=C_NULL)\n\nText buffer for logging/accumulating text.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ArrowButton-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ArrowButton","text":"ArrowButton(str_id, dir) -> Bool\n\nReturn true when the value has been changed or when pressed/selected. Create a square button with an arrow shape.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Begin","page":"API Reference","title":"CImGui.Begin","text":"Begin(handle::Ptr{ImGuiListClipper}, items_count, items_height=-1.0)\n\nAutomatically called by constructor if you passed items_count or by Step in Step 1.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Begin-2","page":"API Reference","title":"CImGui.Begin","text":"Begin(name, p_open=C_NULL, flags=0) -> Bool\n\nPush window to the stack and start appending to it.\n\nUsage\n\nyou may append multiple times to the same window during the same frame.\npassing p_open != C_NULL shows a window-closing widget in the upper-right corner of the window, which clicking will set the boolean to false when clicked.\nBegin return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.\n\nnote: Note\nAlways call a matching End for each Begin call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Begin-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Begin","text":"Begin(handle::Ptr{ImGuiTextBuffer}) -> Cstring\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginChild","page":"API Reference","title":"CImGui.BeginChild","text":"BeginChild(str_id, size=(0,0), border=false, flags=0) -> Bool\nBeginChild(id::Integer, size=(0,0), border=false, flags=0) -> Bool\n\nUse child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.\n\nReturn false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.\n\nFor each independent axis of size:\n\nx == 0.0: use remaining host window size\nx > 0.0: fixed size\nx < 0.0: use remaining window size minus abs(size)\n\nEach axis can use a different mode, e.g. ImVec2(0,400).\n\nnote: Note\nAlways call a matching EndChild for each BeginChild call, regardless of its return value. This is due to legacy reason and is inconsistent with most other functions (such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc.) where the EndXXX call should only be called if the corresponding BeginXXX function returned true.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginChildFrame","page":"API Reference","title":"CImGui.BeginChildFrame","text":"BeginChildFrame(id, size, flags=0) -> Bool\n\nHelper to create a child window / scrolling region that looks like a normal widget frame.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginCombo","page":"API Reference","title":"CImGui.BeginCombo","text":"BeginCombo(label, preview_value, flags=0) -> Bool\n\nThe new BeginCombo/EndCombo api allows you to manage your contents and selection state however you want it, by creating e.g. Selectable items.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginDragDropSource","page":"API Reference","title":"CImGui.BeginDragDropSource","text":"BeginDragDropSource(flags=ImGuiDragDropFlags_(0)) -> bool\n\nCall when the current item is active. If this return true, you can call SetDragDropPayload + EndDragDropSource.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginDragDropTarget-Tuple{}","page":"API Reference","title":"CImGui.BeginDragDropTarget","text":"BeginDragDropTarget() -> bool\n\nCall after submitting an item that may receive a payload. If this returns true, you can call AcceptDragDropPayload + EndDragDropTarget.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginGroup-Tuple{}","page":"API Reference","title":"CImGui.BeginGroup","text":"BeginGroup()\n\nLock 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.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginListBox","page":"API Reference","title":"CImGui.BeginListBox","text":"BeginListBox(label, size=(0,0))\n\nUse if you want to reimplement ListBox will custom data or interactions. If the function return true, you can output elements then call EndListBox afterwards.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginMainMenuBar-Tuple{}","page":"API Reference","title":"CImGui.BeginMainMenuBar","text":"BeginMainMenuBar() -> Bool\n\nCreate and append to a full screen menu-bar.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginMenu","page":"API Reference","title":"CImGui.BeginMenu","text":"BeginMenu(label, enabled=true) -> Bool\n\nCreate a sub-menu entry. only call EndMenu() if this returns true!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginMenuBar-Tuple{}","page":"API Reference","title":"CImGui.BeginMenuBar","text":"BeginMenuBar() -> Bool\n\nAppend to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BeginPopup","page":"API Reference","title":"CImGui.BeginPopup","text":"BeginPopup(str_id, flags=0) -> Bool\n\nReturn true if the popup is open, and you can start outputting to it.\n\nnote: Note\nOnly call EndPopup if BeginPopup returns true!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupContextItem","page":"API Reference","title":"CImGui.BeginPopupContextItem","text":"BeginPopupContextItem(str_id=C_NULL, flags=1) -> Bool\n\nHelper to open and begin popup when clicked on last item. if you can pass a CNULL strid only if the previous item had an id. If you want to use that on a non-interactive item such as Text you need to pass in an explicit ID here.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupContextVoid","page":"API Reference","title":"CImGui.BeginPopupContextVoid","text":"BeginPopupContextVoid(str_id=C_NULL, popup_flags=1) -> Bool\n\nHelper to open and begin popup when clicked in void (where there are no imgui windows).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupContextWindow","page":"API Reference","title":"CImGui.BeginPopupContextWindow","text":"BeginPopupContextWindow(str_id=C_NULL, popup_flags=1) -> Bool\n\nHelper to open and begin popup when clicked on current window.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginPopupModal","page":"API Reference","title":"CImGui.BeginPopupModal","text":"BeginPopupModal(name, p_open=C_NULL, flags=0) -> Bool\n\nModal dialog (regular window with title bar, block interactions behind the modal window, can't close the modal window by clicking outside).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTabBar","page":"API Reference","title":"CImGui.BeginTabBar","text":"igBeginTabBar(str_id, flags=ImGuiTabBarFlags_(0)) -> Bool\n\nCreate and append into a TabBar.\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTabItem","page":"API Reference","title":"CImGui.BeginTabItem","text":"BeginTabItem(label, p_open=C_NULL, flags=ImGuiTabItemFlags_(0)) -> Bool\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTable","page":"API Reference","title":"CImGui.BeginTable","text":"BeginTable(str_id, columns_count, flags = ImGuiTableFlags_(0), outer_size = ImVec2(0,0), inner_width = 0.0) -> Bool\n\nBegin a table entry.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.BeginTooltip-Tuple{}","page":"API Reference","title":"CImGui.BeginTooltip","text":"BeginTooltip()\n\nBegin/append a tooltip window to create full-featured tooltip (with any kind of items).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Build-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.Build","text":"Build(self::Ptr{ImFontAtlas}) -> Bool\n\nBuild pixels data. This is called automatically for you by the GetTexData*** functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Bullet-Tuple{}","page":"API Reference","title":"CImGui.Bullet","text":"Bullet()\n\nDraw a small circle and keep the cursor on the same line. advance cursor x position by GetTreeNodeToLabelSpacing(), same distance that TreeNode() uses\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.BulletText-Tuple{Any}","page":"API Reference","title":"CImGui.BulletText","text":"BulletText(formatted_text)\n\nShortcut for Bullet+Text.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Button","page":"API Reference","title":"CImGui.Button","text":"Button(label) -> Bool\nButton(label, size) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.C_str-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.C_str","text":"C_str(handle::Ptr{ImGuiTextBuffer}) -> Cstring\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CalcItemWidth-Tuple{}","page":"API Reference","title":"CImGui.CalcItemWidth","text":"CalcItemWidth() -> Cfloat\n\nReturn width of item given pushed settings and current cursor position.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CalcTextSize","page":"API Reference","title":"CImGui.CalcTextSize","text":"CalcTextSize(text, text_end=C_NULL, hide_text_after_double_hash=false, wrap_width=-1) -> ImVec2\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ChannelsMerge-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.ChannelsMerge","text":"ChannelsMerge(handle::Ptr{ImDrawList})\n\ntip: Tip\nUse to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)\nUse to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ChannelsSetCurrent-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.ChannelsSetCurrent","text":"ChannelsSetCurrent(handle::Ptr{ImDrawList}, channel_index)\n\ntip: Tip\nUse to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)\nUse to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ChannelsSplit-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.ChannelsSplit","text":"ChannelsSplit(handle::Ptr{ImDrawList}, channels_count)\n\ntip: Tip\nUse to simulate layers. By switching channels to can render out-of-order (e.g. submit foreground primitives before background primitives)\nUse to minimize draw calls (e.g. if going back-and-forth between multiple non-overlapping clipping rectangles, prefer to append into separate channels then merge at the end)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Checkbox-Tuple{Any, Any}","page":"API Reference","title":"CImGui.Checkbox","text":"Checkbox(label, v) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CheckboxFlags-Tuple{Any, Ref{Int32}, Any}","page":"API Reference","title":"CImGui.CheckboxFlags","text":"CheckboxFlags(label, flags, flags_value) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Clear-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.Clear","text":"Clear(self::Ptr{ImFontAtlas})\n\nClear all input and output.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Clear-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Clear","text":"Clear(handle::Ptr{ImGuiTextBuffer})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearFonts-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.ClearFonts","text":"ClearFonts(self::Ptr{ImFontAtlas})\n\nClear output font data (glyphs storage, UV coordinates).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearInputCharacters-Tuple{Any}","page":"API Reference","title":"CImGui.ClearInputCharacters","text":"ClearInputCharacters(io)\n\nClear the text input buffer manually.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearInputData-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.ClearInputData","text":"ClearInputData(self::Ptr{ImFontAtlas})\n\nClear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ClearTexData-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.ClearTexData","text":"ClearTexData(self::Ptr{ImFontAtlas})\n\nClear output texture data (CPU side). Saves RAM once the texture has been copied to graphics memory.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Clipper-Tuple{}","page":"API Reference","title":"CImGui.Clipper","text":"Clipper() -> Ptr{ImGuiListClipper}\n\nManually clip large list of items.\n\nIf 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.\n\nIf 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.\n\nThe clipper calculates the range of visible items and advance the cursor to compensate for the non-visible items we have skipped. ImGui already clip 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.\n\nExample\n\nclipper = CImGui.Clipper()\nBegin(clipper, 1000) # we have 1000 elements, evenly spaced.\nwhile CImGui.Step()\n dis_start = CImGui.Get(clipper, :DisplayStart)\n dis_end = CImGui.Get(clipper, :DisplayEnd)-1\n foreach(i->CImGui.Text(\"line number $i\"), dis_start:dis_end)\nend\n\nStep 0: the clipper let you process the first element, regardless of it being visible or not, so we can measure the element height (step skipped if we passed a known height as second arg to constructor).\nStep 1: the clipper infer height from first element, calculate the actual range of elements to display, and position the cursor before the first element.\n(Step 2: dummy step only required if an explicit items_height was passed to constructor or Begin and user call Step. Does nothing and switch to Step 3.)\nStep 3: the clipper validate 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.\n\nArguments\n\nitems_count: use -1 to ignore (you can call Begin later). use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step).\nitems_height: use -1.0 to be calculated automatically on first step. otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing or GetFrameHeightWithSpacing. If you don't specify an items_height, you NEED to call Step. If you specify items_height you may call the old Begin/End api directly, but prefer calling Step.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CloneOutput-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.CloneOutput","text":"CloneOutput(handle::Ptr{ImDrawList}) -> Ptr{ImDrawList}\n\nCreate a clone of the CmdBuffer/IdxBuffer/VtxBuffer.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CloseCurrentPopup-Tuple{}","page":"API Reference","title":"CImGui.CloseCurrentPopup","text":"CloseCurrentPopup()\n\nClose the popup we have begin-ed into. clicking on a MenuItem or Selectable automatically close the current popup.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.CollapsingHeader","page":"API Reference","title":"CImGui.CollapsingHeader","text":"CollapsingHeader(label, p_open::Ref, flags=ImGuiTreeNodeFlags_(0)) -> Bool\n\nWhen p_open isn't C_NULL, display an additional small close button on upper right of the header.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.CollapsingHeader-2","page":"API Reference","title":"CImGui.CollapsingHeader","text":"CollapsingHeader(label, flags=ImGuiTreeNodeFlags_(0)) -> Bool\n\nIf returning true the header is open. Doesn't indent nor push on ID stack. User doesn't have to call TreePop.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorButton","page":"API Reference","title":"CImGui.ColorButton","text":"ColorButton(desc_id, col, flags=0, size=(0,0))\n\nDisplay a colored square/button, hover for details, return true when pressed.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorConvertFloat4ToU32-Tuple{Any}","page":"API Reference","title":"CImGui.ColorConvertFloat4ToU32","text":"ColorConvertFloat4ToU32(in) -> ImU32\n\nConvert ImVec4 color to ImU32. You could use Base.convert(::Type{ImU32}, x::ImVec4) instead.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ColorConvertU32ToFloat4-Tuple{Any}","page":"API Reference","title":"CImGui.ColorConvertU32ToFloat4","text":"ColorConvertU32ToFloat4(in) -> ImVec4\n\nConvert ImU32 color to ImVec4. You could use Base.convert(::Type{ImVec4}, x::ImU32) instead.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ColorEdit3","page":"API Reference","title":"CImGui.ColorEdit3","text":"ColorEdit3(label, col, flags=0) -> Bool\n\ntip: Tip\nthis function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorEdit4","page":"API Reference","title":"CImGui.ColorEdit4","text":"ColorEdit4(label, col, flags=0) -> Bool\n\ntip: Tip\nthis function has a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorPicker3","page":"API Reference","title":"CImGui.ColorPicker3","text":"ColorPicker3(label, col, flags=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ColorPicker4","page":"API Reference","title":"CImGui.ColorPicker4","text":"ColorPicker4(label, col, flags=0, ref_col=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Columns","page":"API Reference","title":"CImGui.Columns","text":"Columns(count=1, id=C_NULL, border=true)\n\nwarning: Work in progress!\nYou can also use SameLine(pos_x) for simplified columns. The columns API is work-in-progress and rather lacking (columns are arguably the worst part of dear imgui at the moment!)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Combo","page":"API Reference","title":"CImGui.Combo","text":"Combo(label, current_item, items::Vector, items_count, popup_max_height_in_items=-1) -> Bool\n\nThe old Combo api are helpers over BeginCombo/EndCombo which are kept available for convenience purpose.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Combo-2","page":"API Reference","title":"CImGui.Combo","text":"Combo(label, current_item, items_getter::Union{Ptr,Base.CFunction}, data, items_count, popup_max_height_in_items=-1) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Combo-3","page":"API Reference","title":"CImGui.Combo","text":"Combo(label, current_item, items_separated_by_zeros, popup_max_height_in_items=-1) -> Bool\n\nSeparate items with \u0000 within a string, end item-list with \u0000\u0000. e.g. One\u0000Two\u0000Three\u0000\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.CreateContext-Tuple{}","page":"API Reference","title":"CImGui.CreateContext","text":"CreateContext() -> Ptr{ImGuiContext}\nCreateContext(shared_font_atlas::Ptr{ImFontAtlas}) -> Ptr{ImGuiContext}\n\nReturn a handle of ImGuiContext.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Destroy-Tuple{Ptr{CImGui.lib.ImGuiListClipper}}","page":"API Reference","title":"CImGui.Destroy","text":"Destroy(handle::Ptr{ImGuiListClipper})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Destroy-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Destroy","text":"Destroy(handle::Ptr{ImGuiTextBuffer})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.DestroyContext-Tuple{}","page":"API Reference","title":"CImGui.DestroyContext","text":"DestroyContext()\nDestroyContext(ctx::Ptr{ImGuiContext})\n\nDestroy ImGuiContext. DestroyContext() will destroy current context.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.DragFloat","page":"API Reference","title":"CImGui.DragFloat","text":"DragFloat(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nIf v_min >= v_max we have no bound.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloat2","page":"API Reference","title":"CImGui.DragFloat2","text":"DragFloat2(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloat3","page":"API Reference","title":"CImGui.DragFloat3","text":"DragFloat3(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloat4","page":"API Reference","title":"CImGui.DragFloat4","text":"DragFloat4(label, v, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragFloatRange2","page":"API Reference","title":"CImGui.DragFloatRange2","text":"DragFloatRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0.0, v_max=0.0, format=\"%.3f\", format_max=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt","page":"API Reference","title":"CImGui.DragInt","text":"DragInt(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt2","page":"API Reference","title":"CImGui.DragInt2","text":"DragInt2(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt3","page":"API Reference","title":"CImGui.DragInt3","text":"DragInt3(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragInt4","page":"API Reference","title":"CImGui.DragInt4","text":"DragInt4(label, v, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", flag=0)\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragIntRange2","page":"API Reference","title":"CImGui.DragIntRange2","text":"DragIntRange2(label, v_current_min, v_current_max, v_speed=1.0, v_min=0, v_max=0, format=\"%d\", format_max=C_NULL, flag=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragScalar","page":"API Reference","title":"CImGui.DragScalar","text":"DragScalar(label, data_type, v, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flags=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.DragScalarN","page":"API Reference","title":"CImGui.DragScalarN","text":"DragScalarN(label, data_type, v, components, v_speed, v_min=C_NULL, v_max=C_NULL, format=C_NULL, flag=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Dummy-Tuple{Any}","page":"API Reference","title":"CImGui.Dummy","text":"Dummy(size)\nDummy(x, y)\n\nAdd a dummy item of given size.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Empty-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Empty","text":"Empty(handle::Ptr{ImGuiTextBuffer}) -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.End-Tuple{Ptr{CImGui.lib.ImGuiListClipper}}","page":"API Reference","title":"CImGui.End","text":"End(handle::Ptr{ImGuiListClipper})\n\nAutomatically called on the last call of Step that returns false.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.End-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.End","text":"End(handle::Ptr{ImGuiTextBuffer}) -> Cstring\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.End-Tuple{}","page":"API Reference","title":"CImGui.End","text":"End()\n\nPop window from the stack. See also Begin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndChild-Tuple{}","page":"API Reference","title":"CImGui.EndChild","text":"EndChild()\n\nSee also BeginChild.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndChildFrame-Tuple{}","page":"API Reference","title":"CImGui.EndChildFrame","text":"EndChildFrame()\n\nnote: Note\nAlways call EndChildFrame() regardless of BeginChildFrame return values which indicates a collapsed/clipped window.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndCombo-Tuple{}","page":"API Reference","title":"CImGui.EndCombo","text":"EndCombo()\n\nnote: Note\nOnly call EndCombo if BeginCombo returns true!\n\nSee also BeginCombo.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndDragDropSource-Tuple{}","page":"API Reference","title":"CImGui.EndDragDropSource","text":"EndDragDropSource()\n\nnote: Note\nOnly call EndDragDropSource() if BeginDragDropSource returns true!\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndDragDropTarget-Tuple{}","page":"API Reference","title":"CImGui.EndDragDropTarget","text":"EndDragDropTarget()\n\nnote: Note\nOnly call EndDragDropTarget if BeginDragDropTarget returns true!\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndFrame-Tuple{}","page":"API Reference","title":"CImGui.EndFrame","text":"EndFrame()\n\nCalling this function ends the ImGui frame. This function is automatically called by Render, so you likely don't need to call it yourself directly. If you don't need to render data (skipping rendering), 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 and not call NewFrame at all!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndGroup-Tuple{}","page":"API Reference","title":"CImGui.EndGroup","text":"EndGroup()\n\nSee BeginGroup.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndListBox-Tuple{}","page":"API Reference","title":"CImGui.EndListBox","text":"EndListBox()\n\nTerminate the scrolling region.\n\nnote: Note\nOnly call EndListBox() if BeginListBox returned true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndMainMenuBar-Tuple{}","page":"API Reference","title":"CImGui.EndMainMenuBar","text":"EndMainMenuBar()\n\nnote: Note\nOnly call EndMainMenuBar if BeginMainMenuBar returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndMenu-Tuple{}","page":"API Reference","title":"CImGui.EndMenu","text":"EndMenu()\n\nnote: Note\nOnly call EndMenu if BeginMenu returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndMenuBar-Tuple{}","page":"API Reference","title":"CImGui.EndMenuBar","text":"EndMenuBar()\n\nnote: Note\nOnly call EndMenuBar if BeginMenuBar returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndPopup-Tuple{}","page":"API Reference","title":"CImGui.EndPopup","text":"EndPopup()\n\nSee BeginPopup, BeginPopupContextItem, BeginPopupContextWindow, BeginPopupContextVoid, BeginPopupModal.\n\nnote: Note\nOnly call EndPopup if BeginPopupXXX() returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTabBar-Tuple{}","page":"API Reference","title":"CImGui.EndTabBar","text":"EndTabBar()\n\nOnly call EndTabBar if BeginTabBar returns true!\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTabItem-Tuple{}","page":"API Reference","title":"CImGui.EndTabItem","text":"EndTabItem()\n\nOnly call EndTabItem if BeginTabItem returns true!\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTable-Tuple{}","page":"API Reference","title":"CImGui.EndTable","text":"EndTable()\n\nOnly call EndTable if BeginTable returns true!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.EndTooltip-Tuple{}","page":"API Reference","title":"CImGui.EndTooltip","text":"EndTooltip()\n\nSee BeginTooltip.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetBackgroundDrawList-Tuple{}","page":"API Reference","title":"CImGui.GetBackgroundDrawList","text":"GetBackgroundDrawList() -> Ptr{ImDrawList}\n\nThis draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetClipRectMax-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.GetClipRectMax","text":"GetClipRectMax(handle::Ptr{ImDrawList}) -> ImVec2\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetClipRectMin-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.GetClipRectMin","text":"GetClipRectMin(handle::Ptr{ImDrawList}) -> ImVec2\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetClipboardText-Tuple{}","page":"API Reference","title":"CImGui.GetClipboardText","text":"GetClipboardText() -> String\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetColorU32","page":"API Reference","title":"CImGui.GetColorU32","text":"GetColorU32(r, g, b, a) -> ImU32\nGetColorU32(col::ImVec4) -> ImU32\nGetColorU32(col::ImU32) -> ImU32\nGetColorU32(idx::Integer, alpha_mul=1.0) -> ImU32\n\nRetrieve given style color with style alpha applied and optional extra alpha multiplier.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetColumnIndex-Tuple{}","page":"API Reference","title":"CImGui.GetColumnIndex","text":"GetColumnIndex() -> Cint\n\nReturn current column index.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetColumnOffset","page":"API Reference","title":"CImGui.GetColumnOffset","text":"GetColumnOffset(column_index=-1) -> Cfloat\n\nGet 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.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetColumnWidth","page":"API Reference","title":"CImGui.GetColumnWidth","text":"GetColumnWidth(column_index=-1) -> Cfloat\n\nReturn column width (in pixels). Pass -1 to use current column.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetColumnsCount-Tuple{}","page":"API Reference","title":"CImGui.GetColumnsCount","text":"GetColumnsCount() -> Cint\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetContentRegionAvail-Tuple{}","page":"API Reference","title":"CImGui.GetContentRegionAvail","text":"GetContentRegionAvail() -> ImVec2\n\nReturn GetContentRegionMax - GetCursorPos.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetContentRegionMax-Tuple{}","page":"API Reference","title":"CImGui.GetContentRegionMax","text":"GetContentRegionMax() -> ImVec2\n\nReturn current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCurrentContext-Tuple{}","page":"API Reference","title":"CImGui.GetCurrentContext","text":"GetCurrentContext() -> Ptr{ImGuiContext}\n\nReturn a handle of the current context.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorPos-Tuple{}","page":"API Reference","title":"CImGui.GetCursorPos","text":"GetCursorPos() -> ImVec2\n\nReturn cursor position which is relative to window position.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorPosX-Tuple{}","page":"API Reference","title":"CImGui.GetCursorPosX","text":"GetCursorPosX() -> Cfloat\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorPosY-Tuple{}","page":"API Reference","title":"CImGui.GetCursorPosY","text":"GetCursorPosY() -> Cfloat\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorScreenPos-Tuple{}","page":"API Reference","title":"CImGui.GetCursorScreenPos","text":"GetCursorScreenPos() -> ImVec2\n\nReturn cursor position in absolute screen coordinates [0..io.DisplaySize]. This is useful to work with ImDrawList API.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetCursorStartPos-Tuple{}","page":"API Reference","title":"CImGui.GetCursorStartPos","text":"GetCursorStartPos() -> ImVec2\n\nReturn initial cursor position in window coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetDragDropPayload-Tuple{}","page":"API Reference","title":"CImGui.GetDragDropPayload","text":"GetDragDropPayload() -> Ptr{ImGuiPayload}\n\nPeek directly into the current payload from anywhere. May return C_NULL.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetDrawData-Tuple{}","page":"API Reference","title":"CImGui.GetDrawData","text":"GetDrawData() -> Ptr{ImDrawData}\n\nReturn a handle of ImDrawData which is valid after Render and until the next call to NewFrame. This is what you have to render.\n\nwarning: Obsolete\nThis used to be passed to your ImGuiIO.RenderDrawListsFn function.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetDrawListSharedData-Tuple{}","page":"API Reference","title":"CImGui.GetDrawListSharedData","text":"GetDrawListSharedData() -> Ptr{ImDrawListSharedData}\n\nThis function might be used when creating your own ImDrawList instances.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFont-Tuple{}","page":"API Reference","title":"CImGui.GetFont","text":"GetFont() -> Ptr{ImFont}\n\nGet current font.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFontSize-Tuple{}","page":"API Reference","title":"CImGui.GetFontSize","text":"GetFontSize() -> Cfloat\n\nGet current font size (= height in pixels) of current font with current scale applied.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFontTexUvWhitePixel-Tuple{}","page":"API Reference","title":"CImGui.GetFontTexUvWhitePixel","text":"GetFontTexUvWhitePixel() -> ImVec2\n\nGet UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetForegroundDrawList-Tuple{}","page":"API Reference","title":"CImGui.GetForegroundDrawList","text":"GetForegroundDrawList() -> Ptr{ImDrawList}\n\nthis draw list will be the last rendered one. Useful to quickly draw shapes/text over dear imgui contents.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFrameCount-Tuple{}","page":"API Reference","title":"CImGui.GetFrameCount","text":"GetFrameCount() -> Cint\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFrameHeight-Tuple{}","page":"API Reference","title":"CImGui.GetFrameHeight","text":"GetFrameHeight() -> Cfloat\n\nReturn FontSize + ImGuiStyle.FramePadding.y * 2.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetFrameHeightWithSpacing-Tuple{}","page":"API Reference","title":"CImGui.GetFrameHeightWithSpacing","text":"GetFrameHeightWithSpacing() -> Cfloat\n\nReturn FontSize + ImGuiStyle.FramePadding.y * 2 + ImGuiStyle.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesChineseFull-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesChineseFull","text":"GetGlyphRangesChineseFull(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesChineseSimplifiedCommon-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesChineseSimplifiedCommon","text":"GetGlyphRangesChineseSimplifiedCommon(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesCyrillic-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesCyrillic","text":"GetGlyphRangesCyrillic(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + about 400 Cyrillic characters.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesDefault-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesDefault","text":"GetGlyphRangesDefault(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nBasic Latin, Extended Latin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesJapanese-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesJapanese","text":"GetGlyphRangesJapanese(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesKorean-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesKorean","text":"GetGlyphRangesKorean(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Korean characters.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetGlyphRangesThai-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.GetGlyphRangesThai","text":"GetGlyphRangesThai(self::Ptr{ImFontAtlas}) -> Ptr{ImWchar}\n\nDefault + Thai characters.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetID-Tuple{AbstractString}","page":"API Reference","title":"CImGui.GetID","text":"GetID(str_id::AbstractString) -> ImGuiID\nGetID(str_id_begin::AbstractString, str_id_end::AbstractString) -> ImGuiID\nGetID(ptr_id::Ptr) -> ImGuiID\n\nCalculate unique ID (hash of whole ID stack + given parameter). e.g. if you want to query into ImGuiStorage yourself.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetIO-Tuple{}","page":"API Reference","title":"CImGui.GetIO","text":"GetIO() -> Ptr{ImGuiIO}\n\nReturn a handle of ImGuiIO which is for accessing the IO structure:\n\nmouse/keyboard/gamepad inputs\ntime\nvarious configuration options/flags\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetItemRectMax-Tuple{}","page":"API Reference","title":"CImGui.GetItemRectMax","text":"GetItemRectMax() -> ImVec2\n\nReturn bounding rectangle of last item, in screen space. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetItemRectMin-Tuple{}","page":"API Reference","title":"CImGui.GetItemRectMin","text":"GetItemRectMin() -> ImVec2\n\nReturn bounding rectangle of last item, in screen space. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetItemRectSize-Tuple{}","page":"API Reference","title":"CImGui.GetItemRectSize","text":"GetItemRectSize() -> ImVec2\n\nReturn size of last item, in screen space. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetKeyData-Tuple{Any}","page":"API Reference","title":"CImGui.GetKeyData","text":"GetKeyData(imgui_key) -> Ptr{ImGuiKeyData}\n\nGet the key data for a specific key.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetKeyPressedAmount-Tuple{Any, Any, Any}","page":"API Reference","title":"CImGui.GetKeyPressedAmount","text":"GetKeyPressedAmount(key_index, repeat_delay, rate) -> Cint\n\nUses provided repeat rate/delay. Return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetMouseCursor-Tuple{}","page":"API Reference","title":"CImGui.GetMouseCursor","text":"GetMouseCursor() -> ImGuiMouseCursor\n\nGet 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.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetMouseDragDelta","page":"API Reference","title":"CImGui.GetMouseDragDelta","text":"GetMouseDragDelta(button=0, lock_threshold=-1.0) -> ImVec2\n\nDragging amount since clicking. if lock_threshold < -1.0f uses io.MouseDraggingThreshold.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetMousePos-Tuple{}","page":"API Reference","title":"CImGui.GetMousePos","text":"GetMousePos() -> ImVec2\n\nShortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetMousePosOnOpeningCurrentPopup-Tuple{}","page":"API Reference","title":"CImGui.GetMousePosOnOpeningCurrentPopup","text":"GetMousePosOnOpeningCurrentPopup() -> ImVec2\n\nRetrieve backup of mouse position at the time of opening popup we have BeginPopup into.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollMaxX-Tuple{}","page":"API Reference","title":"CImGui.GetScrollMaxX","text":"GetScrollMaxX() -> Cfloat\n\nReturn maximum scrolling amount ~~ ContentSize.X - WindowSize.X.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollMaxY-Tuple{}","page":"API Reference","title":"CImGui.GetScrollMaxY","text":"GetScrollMaxY() -> Cfloat\n\nReturn maximum scrolling amount ~~ ContentSize.Y - WindowSize.Y.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollX-Tuple{}","page":"API Reference","title":"CImGui.GetScrollX","text":"GetScrollX() -> Cfloat\n\nReturn scrolling amount [0..GetScrollMaxX()]. See also GetScrollMaxX.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetScrollY-Tuple{}","page":"API Reference","title":"CImGui.GetScrollY","text":"GetScrollY() -> Cfloat\n\nReturn scrolling amount [0..GetScrollMaxY()].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStateStorage-Tuple{}","page":"API Reference","title":"CImGui.GetStateStorage","text":"GetStateStorage()\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStyle-Tuple{}","page":"API Reference","title":"CImGui.GetStyle","text":"GetStyle() -> Ptr{ImGuiStyle}\n\nReturn a handle of ImGuiStyle which is for accessing the Style structure (colors, sizes).\n\nnote: Note\nAlways use PushStyleColor, PushStyleVar to modify style mid-frame.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStyleColorName-Tuple{Integer}","page":"API Reference","title":"CImGui.GetStyleColorName","text":"GetStyleColorName(idx::Integer) -> String\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetStyleColorVec4-Tuple{Any}","page":"API Reference","title":"CImGui.GetStyleColorVec4","text":"GetStyleColorVec4(idx) -> ImVec4\n\nRetrieve style color as stored in [ImGuiStyle] structure. Use to feed back into PushStyleColor, otherwise use GetColorU32 to get style color with style alpha baked in.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTexDataAsAlpha8","page":"API Reference","title":"CImGui.GetTexDataAsAlpha8","text":"GetTexDataAsAlpha8(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)\n\n1 byte per-pixel.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetTexDataAsRGBA32","page":"API Reference","title":"CImGui.GetTexDataAsRGBA32","text":"GetTexDataAsRGBA32(self::Ptr{ImFontAtlas}, out_pixels, out_width, out_height, out_bytes_per_pixel=C_NULL)\n\n4 bytes-per-pixel.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.GetTextLineHeight-Tuple{}","page":"API Reference","title":"CImGui.GetTextLineHeight","text":"GetTextLineHeight() -> Cfloat\n\nReturn FontSize.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTextLineHeightWithSpacing-Tuple{}","page":"API Reference","title":"CImGui.GetTextLineHeightWithSpacing","text":"GetTextLineHeightWithSpacing() -> Cfloat\n\nReturn FontSize + ImGuiStyle.ItemSpacing.y (distance in pixels between 2 consecutive lines of text).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTime-Tuple{}","page":"API Reference","title":"CImGui.GetTime","text":"GetTime() -> Cdouble\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetTreeNodeToLabelSpacing-Tuple{}","page":"API Reference","title":"CImGui.GetTreeNodeToLabelSpacing","text":"GetTreeNodeToLabelSpacing()\n\nHorizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetVersion-Tuple{}","page":"API Reference","title":"CImGui.GetVersion","text":"GetVersion() -> Cstring\n\nGet the compiled version string e.g. \"1.23\"\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowContentRegionMax-Tuple{}","page":"API Reference","title":"CImGui.GetWindowContentRegionMax","text":"GetWindowContentRegionMax() -> ImVec2\n\nReturn content boundaries max (roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize, in window coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowContentRegionMin-Tuple{}","page":"API Reference","title":"CImGui.GetWindowContentRegionMin","text":"GetWindowContentRegionMin() -> ImVec2\n\nReturn content boundaries min (roughly (0,0)-Scroll), in window coordinates.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowContentRegionWidth-Tuple{}","page":"API Reference","title":"CImGui.GetWindowContentRegionWidth","text":"GetWindowContentRegionWidth() -> ImVec2\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowDrawList-Tuple{}","page":"API Reference","title":"CImGui.GetWindowDrawList","text":"GetWindowDrawList() -> Ptr{ImDrawList}\n\nReturn draw list associated to the window, to append your own drawing primitives.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowHeight-Tuple{}","page":"API Reference","title":"CImGui.GetWindowHeight","text":"GetWindowHeight() -> Cfloat\n\nReturn current window height (shortcut for GetWindowSize().y).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowPos-Tuple{}","page":"API Reference","title":"CImGui.GetWindowPos","text":"GetWindowPos() -> ImVec2\n\nReturn current window position in screen space (useful if you want to do your own drawing via the ImDrawList API.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowSize-Tuple{}","page":"API Reference","title":"CImGui.GetWindowSize","text":"GetWindowSize() -> ImVec2\n\nReturn current window size.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.GetWindowWidth-Tuple{}","page":"API Reference","title":"CImGui.GetWindowWidth","text":"GetWindowWidth() -> Cfloat\n\nReturn current window width (shortcut for GetWindowSize().x).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.HSV","page":"API Reference","title":"CImGui.HSV","text":"HSV(h, s, v, a=1.0) -> ImVec4\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Image","page":"API Reference","title":"CImGui.Image","text":"Image(user_texture_id, size, uv0=(0,0), uv1=(1,1), tint_col=(1,1,1,1), border_col=(0,0,0,0))\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ImageButton","page":"API Reference","title":"CImGui.ImageButton","text":"ImageButton(str_id, user_texture_id, size, uv0=(0,0), uv1=(1,1), bg_col=(0,0,0,0), tint_col=(1,1,1,1)) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Indent","page":"API Reference","title":"CImGui.Indent","text":"Indent()\nIndent(indent_w)\n\nMove content position toward the right, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputDouble","page":"API Reference","title":"CImGui.InputDouble","text":"InputDouble(label, v, step=0.0, step_fast=0.0, format=\"%.6f\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat","page":"API Reference","title":"CImGui.InputFloat","text":"InputFloat(label, v, step=0, step_fast=0, format=\"%.3f\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat2","page":"API Reference","title":"CImGui.InputFloat2","text":"InputFloat2(label, v, format=\"%.3f\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat3","page":"API Reference","title":"CImGui.InputFloat3","text":"InputFloat3(label, v, format=\"%.3f\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputFloat4","page":"API Reference","title":"CImGui.InputFloat4","text":"InputFloat4(label, v, format=\"%.3f\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt","page":"API Reference","title":"CImGui.InputInt","text":"InputInt(label, v, step=1, step_fast=100, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt2","page":"API Reference","title":"CImGui.InputInt2","text":"InputInt2(label, v, flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt3","page":"API Reference","title":"CImGui.InputInt3","text":"InputInt3(label, v, flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputInt4","page":"API Reference","title":"CImGui.InputInt4","text":"InputInt4(label, v, flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputScalar","page":"API Reference","title":"CImGui.InputScalar","text":"InputScalar(label, data_type, v, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputScalarN","page":"API Reference","title":"CImGui.InputScalarN","text":"InputScalarN(label, data_type, v, components, step=C_NULL, step_fast=C_NULL, format=C_NULL, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputText","page":"API Reference","title":"CImGui.InputText","text":"InputText(label, buf, buf_size, flags=0, callback=C_NULL, user_data=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputTextMultiline","page":"API Reference","title":"CImGui.InputTextMultiline","text":"InputTextMultiline(label, buf, buf_size, size=(0,0), flags=0, callback=C_NULL, user_data=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InputTextWithHint","page":"API Reference","title":"CImGui.InputTextWithHint","text":"InputTextWithHint(label, hint, buf, buf_size, flags=0, callback=C_NULL, user_data=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.InvisibleButton","page":"API Reference","title":"CImGui.InvisibleButton","text":"InvisibleButton(str_id, size, flag = 0) -> Bool\n\nReturn true when the value has been changed or when pressed/selected. Flexible button behavior without the visuals, frequently useful to build custom behaviors using the public api along with IsItemActive, IsItemHovered, etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsAnyItemActive-Tuple{}","page":"API Reference","title":"CImGui.IsAnyItemActive","text":"IsAnyItemActive() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsAnyItemFocused-Tuple{}","page":"API Reference","title":"CImGui.IsAnyItemFocused","text":" IsAnyItemFocused() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsAnyItemHovered-Tuple{}","page":"API Reference","title":"CImGui.IsAnyItemHovered","text":"IsAnyItemHovered() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsAnyMouseDown-Tuple{}","page":"API Reference","title":"CImGui.IsAnyMouseDown","text":"IsAnyMouseDown() -> Bool\n\nIs any mouse button held.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsBuilt-Tuple{Ptr{CImGui.lib.ImFontAtlas}}","page":"API Reference","title":"CImGui.IsBuilt","text":"IsBuilt(self::Ptr{ImFontAtlas}) -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemActivated-Tuple{}","page":"API Reference","title":"CImGui.IsItemActivated","text":"IsItemActivated() -> Bool\n\nWas the last item just made active (item was previously inactive).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemActive-Tuple{}","page":"API Reference","title":"CImGui.IsItemActive","text":"IsItemActive() -> Bool\n\nIs the last item active? (e.g. button being held, text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return false) See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemClicked","page":"API Reference","title":"CImGui.IsItemClicked","text":"IsItemClicked() -> Bool\nIsItemClicked(mouse_button=0) -> Bool\n\nIs the last item clicked? (e.g. button/node just clicked on) == IsMouseClicked(mouse_button) && IsItemHovered. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsItemDeactivated-Tuple{}","page":"API Reference","title":"CImGui.IsItemDeactivated","text":"IsItemDeactivated() -> Bool\n\nWas the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that requires continuous editing. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemDeactivatedAfterEdit-Tuple{}","page":"API Reference","title":"CImGui.IsItemDeactivatedAfterEdit","text":"IsItemDeactivatedAfterEdit() -> Bool\n\nWas the last item just made inactive and made a value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that requires continuous editing. Note that you may get false positives (some widgets such as Combo/ListBox/Selectable will return true even when clicking an already selected item). See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemEdited-Tuple{}","page":"API Reference","title":"CImGui.IsItemEdited","text":"IsItemEdited() -> Bool\n\nDid the last item modify its underlying value this frame? or was pressed? This is generally the same as the \"bool\" return value of many widgets. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemFocused-Tuple{}","page":"API Reference","title":"CImGui.IsItemFocused","text":"IsItemFocused() -> Bool\n\nIs the last item focused for keyboard/gamepad navigation? See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemHovered","page":"API Reference","title":"CImGui.IsItemHovered","text":"IsItemHovered(flags=ImGuiHoveredFlags_(0)) -> Bool\n\nIs the last item hovered? (and usable, aka not blocked by a popup, etc.). See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:\n\nusing CImGui, Markdown\nCImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsItemToggledOpen-Tuple{}","page":"API Reference","title":"CImGui.IsItemToggledOpen","text":"IsItemToggledOpen() -> Bool\n\nSee Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsItemVisible-Tuple{}","page":"API Reference","title":"CImGui.IsItemVisible","text":"IsItemVisible() -> Bool\n\nIs the last item visible? (items may be out of sight because of clipping/scrolling). See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsKeyDown-Tuple{Any}","page":"API Reference","title":"CImGui.IsKeyDown","text":"IsKeyDown(user_key_index) -> Bool\n\nIs key being held. == io.KeysDown[userkeyindex]. note that imgui doesn't know the semantic of each entry of io.KeysDown[]. Use your own indices/enums according to how your backend/engine stored them into io.KeysDown[]!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsKeyPressed","page":"API Reference","title":"CImGui.IsKeyPressed","text":"IsKeyPressed(user_key_index, repeat=true) -> Bool\n\nWas key pressed (went from !Down to Down). If repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsKeyReleased-Tuple{Any}","page":"API Reference","title":"CImGui.IsKeyReleased","text":"IsKeyReleased(user_key_index) -> Bool\n\nWas key released (went from Down to !Down).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsMouseClicked","page":"API Reference","title":"CImGui.IsMouseClicked","text":"IsMouseClicked(button, repeat=false) -> Bool\n\nDid mouse button clicked (went from !Down to Down) (0=left, 1=right, 2=middle)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMouseDoubleClicked-Tuple{Any}","page":"API Reference","title":"CImGui.IsMouseDoubleClicked","text":"IsMouseDoubleClicked(button) -> Bool\n\nDid mouse button double-clicked. Uses io.MouseDoubleClickTime.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsMouseDown-Tuple{Any}","page":"API Reference","title":"CImGui.IsMouseDown","text":"IsMouseDown(button) -> Bool\n\nIs mouse button held (0=left, 1=right, 2=middle).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsMouseDragging","page":"API Reference","title":"CImGui.IsMouseDragging","text":"IsMouseDragging(button=0, lock_threshold=-1.0) -> Bool\n\nIs mouse dragging. If lock_threshold < -1.0f uses io.MouseDraggingThreshold.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMouseHoveringRect","page":"API Reference","title":"CImGui.IsMouseHoveringRect","text":"IsMouseHoveringRect(r_min, r_max, clip=true) -> Bool\n\nIs mouse hovering given bounding rect (in screen space). Clipped by current clipping settings, but disregarding of other consideration of focus/window ordering/popup-block.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMousePosValid","page":"API Reference","title":"CImGui.IsMousePosValid","text":"IsMousePosValid(mouse_pos=C_NULL) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsMouseReleased-Tuple{Any}","page":"API Reference","title":"CImGui.IsMouseReleased","text":"IsMouseReleased(button) -> Bool\n\nDid mouse button released (went from Down to !Down).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsPopupOpen-Tuple{Any}","page":"API Reference","title":"CImGui.IsPopupOpen","text":"IsPopupOpen(str_id) -> Bool\n\nReturn true if the popup is open.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsRectVisible-Tuple{Any}","page":"API Reference","title":"CImGui.IsRectVisible","text":"IsRectVisible(size) -> Bool\nIsRectVisible(x, y) -> Bool\n\nTest if rectangle (of given size, starting from cursor position) is visible / not clipped.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsRectVisibleVec2-Tuple{Any, Any}","page":"API Reference","title":"CImGui.IsRectVisibleVec2","text":"IsRectVisibleVec2(rect_min::ImVec2, rect_max::ImVec2) -> Bool\nIsRectVisibleVec2(rect_min::NTuple{2}, rect_max::NTuple{2}) -> Bool\n\nTest if rectangle (in screen space) is visible / not clipped. to perform coarse clipping on user's side.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsWindowAppearing-Tuple{}","page":"API Reference","title":"CImGui.IsWindowAppearing","text":"IsWindowAppearing() -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsWindowCollapsed-Tuple{}","page":"API Reference","title":"CImGui.IsWindowCollapsed","text":"IsWindowCollapsed() -> Bool\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.IsWindowFocused","page":"API Reference","title":"CImGui.IsWindowFocused","text":"IsWindowFocused(flags=0) -> Bool\n\nIs current window focused? or its root/child, depending on flags. See the output of CImGui.GetFlags(CImGui.ImGuiFocusedFlags_) for options:\n\nusing CImGui, Markdown\nCImGui.ShowFlags(CImGui.ImGuiFocusedFlags_) |> Markdown.parse\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.IsWindowHovered","page":"API Reference","title":"CImGui.IsWindowHovered","text":"IsWindowHovered(flags=0) -> Bool\n\nIs current window hovered (and typically: not blocked by a popup/modal)? See the output of CImGui.GetFlags(CImGui.ImGuiHoveredFlags_) for options:\n\nusing CImGui, Markdown\nCImGui.ShowFlags(CImGui.ImGuiHoveredFlags_) |> Markdown.parse\n\nnote: Note\nIf you are trying to check whether your mouse should be dispatched to imgui or to your app, you should use the ImGuiIO.WantCaptureMouse boolean for that! Please read the FAQ!\n\ntip: FAQ\nQ: How can I tell whether to dispatch mouse/keyboard to imgui or to my application?A: You can read the ImGuiIO.WantCaptureMouse, ImGuiIO.WantCaptureKeyboard and ImGuiIO.WantTextInput flags from the ImGuiIO structure, for example:if CImGui.Get_WantCaptureMouse(CImGui.GetIO())\n # ...\nendWhen ImGuiIO.WantCaptureMouse is set, imgui wants to use your mouse state, and you may want to discard/hide the inputs from the rest of your application.\nWhen ImGuiIO.WantCaptureKeyboard is set, imgui wants to use your keyboard state, and you may want to discard/hide the inputs from the rest of your application.\nWhen ImGuiIO.WantTextInput is set to may want to notify your OS to popup an on-screen keyboard, if available (e.g. on a mobile phone, or console OS).\n\nnote: Note\nYou should always pass your mouse/keyboard inputs to imgui, even when the ImGuiIO.WantCaptureXXX flag are set false. This is because imgui needs to detect that you clicked in the void to unfocus its own windows.\nThe ImGuiIO.WantCaptureMouse is more accurate that any attempt to \"check if the mouse is hovering a window\" (don't do that!). It handle mouse dragging correctly (both dragging that started over your application or over an imgui window) and handle e.g. modal windows blocking inputs. Those flags are updated by NewFrame. Preferably read the flags after calling NewFrame if you can afford it, but reading them before is also perfectly fine, as the bool toggle fairly rarely. If you have on a touch device, you might find use for an early call to UpdateHoveredWindowAndCaptureFlags().\nText input widget releases focus on \"Return KeyDown\", so the subsequent \"Return KeyUp\" event that your application receive will typically have ImGuiIO.WantCaptureKeyboard=false. Depending on your application logic it may or not be inconvenient. You might want to track which key-downs were targeted for Dear ImGui, e.g. with an array of bool, and filter out the corresponding key-ups.)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LabelText-Tuple{Any, Any}","page":"API Reference","title":"CImGui.LabelText","text":"LabelText(label, formatted_text)\n\nDisplay text+label aligned the same way as value+label widgets.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ListBox","page":"API Reference","title":"CImGui.ListBox","text":"ListBox(label, current_item, items, items_count, height_in_items=-1)\nListBox(label, current_item, items_getter::Ptr{Cvoid}, data::Ptr{Cvoid}, items_count, height_in_items=-1)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LoadIniSettingsFromDisk-Tuple{Any}","page":"API Reference","title":"CImGui.LoadIniSettingsFromDisk","text":"LoadIniSettingsFromDisk(ini_filename)\n\nCall after CreateContext and before the first call to NewFrame. NewFrame automatically calls LoadIniSettingsFromDisk(ImGuiIO.IniFilename).\n\ntip: Tip\nThe disk functions are automatically called if ImGuiIO.IniFilename != CNULL (default is \"imgui.ini\"). Set ImGuiIO.IniFilename to CNULL to load/save manually. Read ImGuiIO.WantSaveIniSettings description about handling .ini saving manually.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LoadIniSettingsFromMemory","page":"API Reference","title":"CImGui.LoadIniSettingsFromMemory","text":"LoadIniSettingsFromMemory(ini_data, ini_size=0)\n\nCall after CreateContext and before the first call to NewFrame to provide .ini data from your own data source.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LogButtons-Tuple{}","page":"API Reference","title":"CImGui.LogButtons","text":"LogButtons()\n\nDisplay buttons for logging to tty/file/clipboard.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LogFinish-Tuple{}","page":"API Reference","title":"CImGui.LogFinish","text":"LogFinish()\n\nStop logging (close file, etc.)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LogText-Tuple{Any}","page":"API Reference","title":"CImGui.LogText","text":"LogText(formatted_text)\n\nPass text data straight to log without being displayed.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.LogToClipboard","page":"API Reference","title":"CImGui.LogToClipboard","text":"LogToClipboard(max_depth=-1)\n\nStart logging to OS clipboard.\n\nAll text output from interface is captured to clipboard. By default, tree nodes are automatically opened during logging.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LogToFile","page":"API Reference","title":"CImGui.LogToFile","text":"LogToFile(max_depth=-1, filename=C_NULL)\n\nStart logging to file.\n\nAll text output from interface is captured to file. By default, tree nodes are automatically opened during logging.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.LogToTTY","page":"API Reference","title":"CImGui.LogToTTY","text":"LogToTTY(max_depth=-1)\n\nStart logging to tty.\n\nAll text output from interface is captured to tty. By default, tree nodes are automatically opened during logging.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.MenuItem","page":"API Reference","title":"CImGui.MenuItem","text":"MenuItem(label, shortcut=C_NULL, selected::Bool=false, enabled::Bool=true) -> Bool\nMenuItem(label, shortcut, selected::Ref, enabled::Bool=true) -> Bool\n\nReturn true when activated. Shortcuts are displayed for convenience but not processed by ImGui at the moment.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.NewFrame-Tuple{}","page":"API Reference","title":"CImGui.NewFrame","text":"NewFrame()\n\nStart a new ImGui frame. You can submit any command from this point until Render or EndFrame.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.NewLine-Tuple{}","page":"API Reference","title":"CImGui.NewLine","text":"NewLine()\n\nUndo a SameLine.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.NextColumn-Tuple{}","page":"API Reference","title":"CImGui.NextColumn","text":"NextColumn()\n\nNext column, defaults to current row or next row if the current row is finished.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.OpenPopup","page":"API Reference","title":"CImGui.OpenPopup","text":"OpenPopup(str_id)\n\nCall to mark 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).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.OpenPopupOnItemClick","page":"API Reference","title":"CImGui.OpenPopupOnItemClick","text":"OpenPopupOnItemClick(str_id=C_NULL, mouse_button=1) -> Nothing\n\nHelper to open popup when clicked on last item (note: actually triggers on the mouse released event to be consistent with popup behaviors).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathArcTo","page":"API Reference","title":"CImGui.PathArcTo","text":"PathArcTo(handle::Ptr{ImDrawList}, centre, radius, a_min, a_max, num_segments=10)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathArcToFast-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 4}}","page":"API Reference","title":"CImGui.PathArcToFast","text":"PathArcToFast(handle::Ptr{ImDrawList}, centre, radius, a_min_of_12, a_max_of_12)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathBezierCubicTo","page":"API Reference","title":"CImGui.PathBezierCubicTo","text":"PathBezierCurveTo(handle::Ptr{ImDrawList}, p1, p2, p3, num_segments=0)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathClear-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PathClear","text":"PathClear(handle::Ptr{ImDrawList})\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathFillConvex-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PathFillConvex","text":"PathFillConvex(handle::Ptr{ImDrawList}, col)\n\nnote: Note\nAnti-aliased filling requires points to be in clockwise order.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathLineTo-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PathLineTo","text":"PathLineTo(handle::Ptr{ImDrawList}, pos)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathLineToMergeDuplicate-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PathLineToMergeDuplicate","text":"PathLineToMergeDuplicate(handle::Ptr{ImDrawList}, pos)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PathRect","page":"API Reference","title":"CImGui.PathRect","text":"PathRect(handle::Ptr{ImDrawList}, rect_min, rect_max, rounding=0.0, rounding_corners_flags=ImDrawFlags_RoundCornersAll)\n\nStateful path API, add points then finish with PathFillConvex or PathStroke.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PathStroke","page":"API Reference","title":"CImGui.PathStroke","text":"PathStroke(handle::Ptr{ImDrawList}, col, closed, thickness=1.0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PlotHistogram","page":"API Reference","title":"CImGui.PlotHistogram","text":"PlotHistogram(label, values, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))\nPlotHistogram(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=ImVec2(0,0))\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PlotLines","page":"API Reference","title":"CImGui.PlotLines","text":"PlotLines(label, values, values_count::Integer, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))\nPlotLines(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0))\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PopButtonRepeat-Tuple{}","page":"API Reference","title":"CImGui.PopButtonRepeat","text":"PopButtonRepeat()\n\nSee PushButtonRepeat.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopClipRect-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PopClipRect","text":"PopClipRect(handle::Ptr{ImDrawList})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopClipRect-Tuple{}","page":"API Reference","title":"CImGui.PopClipRect","text":"PopClipRect()\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopFont-Tuple{}","page":"API Reference","title":"CImGui.PopFont","text":"PopFont()\n\nSee PushFont.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopID-Tuple{}","page":"API Reference","title":"CImGui.PopID","text":"PopID()\n\nSee PushID.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopItemWidth-Tuple{}","page":"API Reference","title":"CImGui.PopItemWidth","text":"PopItemWidth()\n\nSee PushItemWidth.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopStyleColor","page":"API Reference","title":"CImGui.PopStyleColor","text":"PopStyleColor(count=1)\n\nSee PushStyleColor.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PopStyleVar","page":"API Reference","title":"CImGui.PopStyleVar","text":"PopStyleVar(count=1)\n\nSee PushStyleVar.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PopTabStop-Tuple{}","page":"API Reference","title":"CImGui.PopTabStop","text":"PopTabStop()\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopTextWrapPos-Tuple{}","page":"API Reference","title":"CImGui.PopTextWrapPos","text":"PopTextWrapPos()\n\nSee PushTextWrapPos.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PopTextureID-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PopTextureID","text":"PopTextureID(handle::Ptr{ImDrawList})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimQuadUV-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 9}}","page":"API Reference","title":"CImGui.PrimQuadUV","text":"PrimQuadUV(handle::Ptr{ImDrawList}, a, b, c, d, uv_a, uv_b, uv_c, uv_d, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimRect-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PrimRect","text":"PrimRect(handle::Ptr{ImDrawList}, a, b, col)\n\nAxis aligned rectangle (composed of two triangles).\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimRectUV-Tuple{Ptr{CImGui.lib.ImDrawList}, Vararg{Any, 5}}","page":"API Reference","title":"CImGui.PrimRectUV","text":"PrimRectUV(handle::Ptr{ImDrawList}, a, b, uv_a, uv_b, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimReserve-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any}","page":"API Reference","title":"CImGui.PrimReserve","text":"PrimReserve(handle::Ptr{ImDrawList}, idx_count, vtx_count)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimVtx-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PrimVtx","text":"PrimVtx(handle::Ptr{ImDrawList}, pos, uv, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimWriteIdx-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PrimWriteIdx","text":"PrimWriteIdx(handle::Ptr{ImDrawList}, idx)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PrimWriteVtx-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PrimWriteVtx","text":"PrimWriteVtx(handle::Ptr{ImDrawList}, pos, uv, col)\n\nnote: Note\nAll primitives needs to be reserved via PrimReserve beforehand!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ProgressBar","page":"API Reference","title":"CImGui.ProgressBar","text":"ProgressBar(fraction, size_arg=(-1,0), overlay=C_NULL)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PushButtonRepeat-Tuple{Any}","page":"API Reference","title":"CImGui.PushButtonRepeat","text":"PushButtonRepeat(repeat)\n\nIn \"repeat\" mode, Button*() functions return repeated true in a typematic manner (using ImGuiIO.KeyRepeatDelay/ImGuiIO.KeyRepeatRate setting). Note that you can call IsItemActive after any Button() to tell if the button is held in the current frame.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushClipRect-Tuple{Any, Any, Any}","page":"API Reference","title":"CImGui.PushClipRect","text":"PushClipRect(clip_rect_min, clip_rect_max, intersect_with_current_clip_rect)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushClipRect-Tuple{Ptr{CImGui.lib.ImDrawList}, Any, Any, Any}","page":"API Reference","title":"CImGui.PushClipRect","text":"PushClipRect(handle::Ptr{ImDrawList}, clip_rect_min, clip_rect_max, intersect_with_current_clip_rect)\n\nRender-level scissoring. This is passed down to your render function but not used for CPU-side coarse clipping. Prefer using higher-level PushClipRect to affect logic (hit-testing and widget culling).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushClipRectFullScreen-Tuple{Ptr{CImGui.lib.ImDrawList}}","page":"API Reference","title":"CImGui.PushClipRectFullScreen","text":"PushClipRectFullScreen(handle::Ptr{ImDrawList})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushFont-Tuple{Any}","page":"API Reference","title":"CImGui.PushFont","text":"PushFont(font)\n\nUse C_NULL as a shortcut to push default font.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushID-Tuple{AbstractString}","page":"API Reference","title":"CImGui.PushID","text":"PushID(ptr_id::Ptr)\nPushID(int_id::Integer)\nPushID(str_id::AbstractString)\nPushID(str_id_begin::AbstractString, str_id_end::AbstractString)\n\nPush identifier into the ID stack. IDs are hash of the entire stack!\n\nnote: Note\nRead the FAQ for more details about how ID are handled in dear imgui. If you are creating widgets in a loop you most likely want to push a unique identifier (e.g. object pointer, loop index) to uniquely differentiate them. You can also use the \"##foobar\" syntax within widget label to distinguish them from each others.\n\ntip: FAQ\nQ: How can I have multiple widgets with the same label or without a label?Q: I have multiple widgets with the same label, and only the first one works. Why is that?A: A primer on labels and the ID Stack...Dear ImGui internally need to uniquely identify UI elements. Elements that are typically not clickable (such as calls to the Text functions) don't need an ID. Interactive widgets (such as calls to Button buttons) need a unique ID. Unique ID are used internally to track active widgets and occasionally associate state to widgets. Unique ID are implicitly built from the hash of multiple elements that identify the \"path\" to the UI element.Unique ID are often derived from a string label:CImGui.Button(\"OK\") # Label = \"OK\", ID = hash of (..., \"OK\")\nCImGui.Button(\"Cancel\") # Label = \"Cancel\", ID = hash of (..., \"Cancel\")ID are uniquely scoped within windows, tree nodes, etc. which all pushes to the ID stack. Having two buttons labeled \"OK\" in different windows or different tree locations is fine. We used \"...\" above to signify whatever was already pushed to the ID stack previously:CImGui.Begin(\"MyWindow\")\nCImGui.Button(\"OK\") # Label = \"OK\", ID = hash of (\"MyWindow\", \"OK\")\nCImGui.End()If you have a same ID twice in the same location, you'll have a conflict:CImGui.Button(\"OK\")\nCImGui.Button(\"OK\") # ID collision! Interacting with either button will trigger the first one.Fear not! this is easy to solve and there are many ways to solve it!Solving ID conflict in a simple/local context: When passing a label you can optionally specify extra ID information within string itself. Use ## to pass a complement to the ID that won't be visible to the end-user. This helps solving the simple collision cases when you know e.g. at compilation time which items are going to be created:CImGui.Begin(\"MyWindow\")\nCImGui.Button(\"Play\") # Label = \"Play\", ID = hash of (\"MyWindow\", \"Play\")\nCImGui.Button(\"Play##foo1\") # Label = \"Play\", ID = hash of (\"MyWindow\", \"Play##foo1\") # Different from above\nCImGui.Button(\"Play##foo2\") # Label = \"Play\", ID = hash of (\"MyWindow\", \"Play##foo2\") # Different from above\nCImGui.End()If you want to completely hide the label, but still need an ID:CImGui.Checkbox(\"##On\", &b) # Label = \"\", ID = hash of (..., \"##On\") # No visible label, just a checkbox!Occasionally/rarely you might want change a label while preserving a constant ID. This allowsyou to animate labels. For example you may want to include varying information in a window title bar, but windows are uniquely identified by their ID. Use ### to pass a label that isn't part of ID:CImGui.Button(\"Hello###ID\") # Label = \"Hello\", ID = hash of (..., \"ID\")\nCImGui.Button(\"World###ID\") # Label = \"World\", ID = hash of (..., \"ID\") # Same as above, even though the label looks different\nbuf = @sprintf(\"My game (%f FPS)###MyGame\", fps)\nCImGui.Begin(buf) # Variable title, ID = hash of \"MyGame\"Solving ID conflict in a more general manner:Use PushID() / PopID() to create scopes and manipulate the ID stack, as to avoid ID conflicts within the same window. This is the most convenient way of distinguishing ID when iterating and creating many UI elements programmatically. You can push a pointer, a string or an integer value into the ID stack. Remember that ID are formed from the concatenation of everything in the ID stack!CImGui.Begin(\"Window\")\nfor i = 0:100-1\n CImGui.PushID(i) # Push i to the id tack\n CImGui.Button(\"Click\") # Label = \"Click\", ID = Hash of (\"Window\", i, \"Click\")\n CImGui.PopID()\nend\nEnd()More example showing that you can stack multiple prefixes into the ID stack:CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"Click\")\nCImGui.PushID(\"node\")\nCImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"node\", \"Click\")\n CImGui.PushID(my_ptr)\n CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"node\", my_ptr, \"Click\")\n CImGui.PopID()\nCImGui.PopID()Tree nodes implicitly creates a scope for you by calling PushID().CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"Click\")\nif CImGui.TreeNode(\"node\")\n CImGui.Button(\"Click\") # Label = \"Click\", ID = hash of (..., \"node\", \"Click\")\n CImGui.TreePop()\nendWhen working with trees, ID are used to preserve the open/close state of each tree node. Depending on your use cases you may want to use strings, indices or pointers as ID.\ne.g. when following a single pointer that may change over time, using a static string as ID will preserve your node open/closed state when the targeted object change.\ne.g. when displaying a list of objects, using indices or pointers as ID will preserve the node open/closed state differently. See what makes more sense in your situation!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushItemWidth-Tuple{Any}","page":"API Reference","title":"CImGui.PushItemWidth","text":"PushItemWidth(item_width)\n\nPush width of items for the common item+label case, pixels:\n\nitem_width == 0: default to ~2/3 of windows width\nitem_width > 0: width in pixels\nitem_width < 0: align xx pixels to the right of window (so -1.0 always align width to the right side)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushStyleColor-Tuple{Any, Any}","page":"API Reference","title":"CImGui.PushStyleColor","text":"PushStyleColor(idx, col)\nPushStyleColor(idx, col::Integer)\n\nSee also GetStyleColorVec4, TextColored, TextDisabled.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushStyleVar-Tuple{Any, Any}","page":"API Reference","title":"CImGui.PushStyleVar","text":"PushStyleVar(idx, val)\nPushStyleVar(idx, val::Real)\n\nSee also GetStyle.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushTabStop-Tuple{Any}","page":"API Reference","title":"CImGui.PushTabStop","text":"PushTabStop(allow_keyboard_focus)\n\nAllow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.PushTextWrapPos","page":"API Reference","title":"CImGui.PushTextWrapPos","text":"PushTextWrapPos(wrap_pos_x=0.0)\n\nWord-wrapping for Text*() commands:\n\nwrap_pos_x < 0: no wrapping\nwrap_pos_x == 0: wrap to end of window (or column)\nwrap_pos_x > 0: wrap at wrap_pos_x position in window local space\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.PushTextureID-Tuple{Ptr{CImGui.lib.ImDrawList}, Any}","page":"API Reference","title":"CImGui.PushTextureID","text":"PushTextureID(handle::Ptr{ImDrawList}, texture_id)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.RadioButton-Tuple{Any, Bool}","page":"API Reference","title":"CImGui.RadioButton","text":"RadioButton(label, active::Bool) -> Bool\nRadioButton(label, v::Ref, v_button::Integer) -> Bool\n\nReturn true when the value has been changed or when pressed/selected.\n\nExample\n\nif RadioButton(\"one\", my_value==1)\n my_value = 1\nend\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Render-Tuple{}","page":"API Reference","title":"CImGui.Render","text":"Render()\n\nCalling this function ends the ImGui frame. This function finalizes the draw data.\n\nwarning: Obsolete\nOptionally call ImGuiIO.RenderDrawListsFn if set. Nowadays, prefer calling your render function yourself.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Reserve-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Reserve","text":"Reserve(handle::Ptr{ImGuiTextBuffer})\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ResetMouseDragDelta","page":"API Reference","title":"CImGui.ResetMouseDragDelta","text":"ResetMouseDragDelta(button=0)\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SameLine","page":"API Reference","title":"CImGui.SameLine","text":"SameLine(local_pos_x=0.0, spacing_w=-1.0)\n\nCall this function between widgets or groups to layout them horizontally.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SaveIniSettingsToDisk-Tuple{Any}","page":"API Reference","title":"CImGui.SaveIniSettingsToDisk","text":"SaveIniSettingsToDisk(ini_filename)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SaveIniSettingsToMemory","page":"API Reference","title":"CImGui.SaveIniSettingsToMemory","text":"SaveIniSettingsToMemory(out_ini_size=C_NULL)\n\nReturn a zero-terminated string with the .ini data which you can save by your own mean. Call when ImGuiIO.WantSaveIniSettings is set, then save data by your own mean and clear ImGuiIO.WantSaveIniSettings.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Selectable","page":"API Reference","title":"CImGui.Selectable","text":"Selectable(label, selected::Bool=false, flags=0, size=(0,0)) -> Bool\nSelectable(label, p_selected::Ref, flags=0, sizeImVec2(0,0)) -> Bool\n\nReturn true if is clicked, so you can modify your selection state:\n\nsize.x == 0.0: use remaining width\nsize.x > 0.0: specify width\nsize.y == 0.0: use label height\nsize.y > 0.0: specify height\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.Separator-Tuple{}","page":"API Reference","title":"CImGui.Separator","text":"Separator()\n\nSeparator, generally horizontal. But inside a menu bar or in horizontal layout mode, it becomes a vertical separator.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetClipboardText-Tuple{Any}","page":"API Reference","title":"CImGui.SetClipboardText","text":"SetClipboardText(text)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetColorEditOptions-Tuple{Any}","page":"API Reference","title":"CImGui.SetColorEditOptions","text":"SetColorEditOptions(flags)\n\nInitialize current options (generally on application startup) if you want to select a default format, picker type, etc. User will be able to change many settings, unless you pass the _NoOptions flag to your calls.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetColumnOffset-Tuple{Any, Any}","page":"API Reference","title":"CImGui.SetColumnOffset","text":"SetColumnOffset(column_index, offset_x)\n\nSet position of column line (in pixels, from the left side of the contents region). Pass -1 to use current column.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetColumnWidth-Tuple{Any, Any}","page":"API Reference","title":"CImGui.SetColumnWidth","text":"SetColumnWidth(column_index, width)\n\nSet column width (in pixels). Pass -1 to use current column.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCurrentContext-Tuple{Ptr{CImGui.lib.ImGuiContext}}","page":"API Reference","title":"CImGui.SetCurrentContext","text":"SetCurrentContext(ctx::Ptr{ImGuiContext})\n\nSet current context to ctx.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorPos-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorPos","text":"SetCursorPos(x, y)\nSetCursorPos(local_pos)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorPosX-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorPosX","text":"SetCursorPosX(local_x)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorPosY-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorPosY","text":"SetCursorPosX(local_y)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetCursorScreenPos-Tuple{Any}","page":"API Reference","title":"CImGui.SetCursorScreenPos","text":"SetCursorScreenPos(pos)\nSetCursorScreenPos(x, y)\n\nSet cursor position in absolute screen coordinates [0..io.DisplaySize].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetDragDropPayload","page":"API Reference","title":"CImGui.SetDragDropPayload","text":"SetDragDropPayload(type, data, size, cond=ImGuiCond_(1)) -> bool\n\ntype is a user defined string of maximum 32 characters. Strings starting with '_' are reserved for dear imgui internal types. Data is copied and held by imgui.\n\nnote: BETA API\nMissing Demo code. API may evolve.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetItemAllowOverlap-Tuple{}","page":"API Reference","title":"CImGui.SetItemAllowOverlap","text":"SetItemAllowOverlap()\n\nAllow last item to be overlapped by a subsequent item. Sometimes useful with invisible buttons, selectables, etc. to catch unused area. See Demo Window under \"Widgets->Querying Status\" for an interactive visualization of many of those functions.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetItemDefaultFocus-Tuple{}","page":"API Reference","title":"CImGui.SetItemDefaultFocus","text":"SetItemDefaultFocus()\n\nMake last item the default focused item of a window.\n\ntip: Tip\nPrefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify \"this is the default item\").\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetKeyboardFocusHere","page":"API Reference","title":"CImGui.SetKeyboardFocusHere","text":"SetKeyboardFocusHere(offset=0)\n\nFocus keyboard on the next widget. Use positive offset to access sub components of a multiple component widget. Use -1 to access previous widget.\n\ntip: Tip\nPrefer using SetItemDefaultFocus over if (IsWindowAppearing()) SetScrollHereY() when applicable to signify \"this is the default item\").\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetMouseCursor-Tuple{Any}","page":"API Reference","title":"CImGui.SetMouseCursor","text":"SetMouseCursor(type)\n\nSet desired cursor type.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextFrameWantCaptureKeyboard","page":"API Reference","title":"CImGui.SetNextFrameWantCaptureKeyboard","text":"SetNextFrameWantCaptureKeyboard(capture=true)\n\nManually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle). e.g. force capture keyboard when your widget is being hovered.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextFrameWantCaptureMouse","page":"API Reference","title":"CImGui.SetNextFrameWantCaptureMouse","text":"CaptureMouseFromApp(capture=true)\n\nManually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextItemOpen","page":"API Reference","title":"CImGui.SetNextItemOpen","text":"SetNextItemOpen(is_open, cond=0)\n\nSet next TreeNode/CollapsingHeader open state.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextItemWidth-Tuple{Any}","page":"API Reference","title":"CImGui.SetNextItemWidth","text":"SetNextItemWidth(item_width)\n\nSet width of the next common large \"item+label\" widget.\n\nitem_width > 0.0: width in pixels\nitem_width < 0.0: align xx pixels to the right of window (so -1.0 always align width to the right side)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowBgAlpha-Tuple{Any}","page":"API Reference","title":"CImGui.SetNextWindowBgAlpha","text":"SetNextWindowBgAlpha(alpha)\n\nSet next window background color alpha. Helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg. You may also use ImGuiWindowFlags_NoBackground.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowCollapsed","page":"API Reference","title":"CImGui.SetNextWindowCollapsed","text":"SetNextWindowCollapsed(collapsed, cond=0)\n\nSet next window collapsed state. Call before Begin.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextWindowContentSize-Tuple{Any}","page":"API Reference","title":"CImGui.SetNextWindowContentSize","text":"SetNextWindowContentSize(size)\nSetNextWindowContentSize(x, y)\n\nSet next window content size (~ enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.). Set an axis to 0.0 to leave it automatic. Call before Begin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowFocus-Tuple{}","page":"API Reference","title":"CImGui.SetNextWindowFocus","text":"SetNextWindowFocus()\n\nSet next window to be focused / front-most. Call before Begin.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetNextWindowPos","page":"API Reference","title":"CImGui.SetNextWindowPos","text":"SetNextWindowPos(pos, cond=0, pivot=(0,0))\n\nSet next window position. Call before Begin. use pivot=(0.5,0.5) to center on given point, etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextWindowSize","page":"API Reference","title":"CImGui.SetNextWindowSize","text":"SetNextWindowSize(size, cond=0)\n\nSet next window size. Set axis to 0.0 to force an auto-fit on this axis. Call before Begin.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetNextWindowSizeConstraints","page":"API Reference","title":"CImGui.SetNextWindowSizeConstraints","text":"SetNextWindowSizeConstraints(size_min, size_max, custom_callback=C_NULL, custom_callback_data=C_NULL)\n\nSet next window size limits. Use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollFromPosX","page":"API Reference","title":"CImGui.SetScrollFromPosX","text":"SetScrollFromPosX(local_y, center_y_ratio=0.5)\n\nAdjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollFromPosY","page":"API Reference","title":"CImGui.SetScrollFromPosY","text":"SetScrollFromPosY(local_y, center_y_ratio=0.5)\n\nAdjust scrolling amount to make given position visible. Generally GetCursorStartPos + offset to compute a valid position.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollHereY","page":"API Reference","title":"CImGui.SetScrollHereY","text":"SetScrollHereY(center_y_ratio=0.5)\n\nAdjust scrolling amount to make current cursor position visible.\n\ncenter_y_ratio == 0.0: top\ncenter_y_ratio == 0.5: center\ncenter_y_ratio == 1.0: bottom\n\nWhen using to make a \"default/current item\" visible, consider using SetItemDefaultFocus instead.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetScrollX-Tuple{Any}","page":"API Reference","title":"CImGui.SetScrollX","text":"SetScrollX(scroll_x)\n\nSet scrolling amount [0..GetScrollMaxX()].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetScrollY-Tuple{Any}","page":"API Reference","title":"CImGui.SetScrollY","text":"SetScrollY(scroll_y)\n\nSet scrolling amount [0..GetScrollMaxY()].\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetStateStorage-Tuple{Any}","page":"API Reference","title":"CImGui.SetStateStorage","text":"SetStateStorage(storage)\n\nReplace current window storage with our own (if you want to manipulate it yourself, typically clear subsection of it)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetTabItemClosed-Tuple{Any}","page":"API Reference","title":"CImGui.SetTabItemClosed","text":"SetTabItemClosed(tab_or_docked_window_label)\n\nNotify 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.\n\nnote: BETA API\nAPI may evolve!\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetTexID-Tuple{Ptr{CImGui.lib.ImFontAtlas}, Any}","page":"API Reference","title":"CImGui.SetTexID","text":"SetTexID(self::Ptr{ImFontAtlas}, id)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetTooltip-Tuple{Any}","page":"API Reference","title":"CImGui.SetTooltip","text":"SetTooltip(formatted_text)\n\nSet a text-only tooltip, typically use with IsItemHovered. Overidde any previous call to SetTooltip.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowCollapsed","page":"API Reference","title":"CImGui.SetWindowCollapsed","text":"SetWindowCollapsed(name::AbstractString, collapsed, cond=0)\n\nSet named window collapsed state.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowCollapsed-2","page":"API Reference","title":"CImGui.SetWindowCollapsed","text":"SetWindowCollapsedBool(collapsed, cond=0)\n\nSet current window collapsed state.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowCollapsed.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowFocus-Tuple{Ptr{Nothing}}","page":"API Reference","title":"CImGui.SetWindowFocus","text":"SetWindowFocus(name::Ptr{Cvoid})\nSetWindowFocus(name::AbstractString)\n\nSet named window to be focused / front-most. Use C_NULL to remove focus.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowFocus-Tuple{}","page":"API Reference","title":"CImGui.SetWindowFocus","text":"SetWindowFocus()\n\nSet current window to be focused / top-most.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowFocus.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowFontScale-Tuple{Any}","page":"API Reference","title":"CImGui.SetWindowFontScale","text":"SetWindowFontScale(scale)\n\nSet font scale. Adjust ImGuiIO.FontGlobalScale if you want to scale all windows.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SetWindowPos","page":"API Reference","title":"CImGui.SetWindowPos","text":"SetWindowPosStr(name::AbstractString, pos, cond=0)\n\nSet named window position.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowPos-2","page":"API Reference","title":"CImGui.SetWindowPos","text":"SetWindowPos(pos, cond=0)\n\nSet current window position - call within Begin/End.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowPos, as this may incur tearing and side-effects.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowSize","page":"API Reference","title":"CImGui.SetWindowSize","text":"SetWindowSizeStr(name::AbstractString, size, cond=0)\n\nSet named window size. Set axis to 0.0 to force an auto-fit on this axis.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SetWindowSize-2","page":"API Reference","title":"CImGui.SetWindowSize","text":"SetWindowSize(size, cond=0)\n\nSet current window size - call within Begin/End. Set to (0,0) to force an auto-fit.\n\nwarning: Not recommended!\nThis function is not recommended! Prefer using SetNextWindowSize, as this may incur tearing and minor side-effects.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowAboutWindow","page":"API Reference","title":"CImGui.ShowAboutWindow","text":"ShowAboutWindow()\nShowAboutWindow(p_open=C_NULL)\n\nCreate about window. Display Dear ImGui version, credits and build/system information.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowDemoWindow","page":"API Reference","title":"CImGui.ShowDemoWindow","text":"ShowDemoWindow()\nShowDemoWindow(p_open=C_NULL)\n\nCreate demo/test window. Demonstrate most ImGui features.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowFontSelector-Tuple{Any}","page":"API Reference","title":"CImGui.ShowFontSelector","text":"ShowFontSelector(label)\n\nAdd font selector block (not a window), essentially a combo listing the loaded fonts.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ShowMetricsWindow","page":"API Reference","title":"CImGui.ShowMetricsWindow","text":"ShowMetricsWindow()\nShowMetricsWindow(p_open=C_NULL)\n\nCreate metrics window. Display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowStyleEditor","page":"API Reference","title":"CImGui.ShowStyleEditor","text":"ShowStyleEditor()\nShowStyleEditor(ref=C_NULL)\n\nAdd style editor block (not a window). You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style).\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ShowStyleSelector-Tuple{Any}","page":"API Reference","title":"CImGui.ShowStyleSelector","text":"ShowStyleSelector()\nShowStyleSelector(label)\n\nAdd style selector block (not a window), essentially a combo listing the default styles.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ShowUserGuide-Tuple{}","page":"API Reference","title":"CImGui.ShowUserGuide","text":"ShowUserGuide()\n\nAdd basic help/info block (not a window): how to manipulate ImGui as a end-user (mouse/keyboard controls).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Size-Tuple{Ptr{CImGui.lib.ImGuiTextBuffer}}","page":"API Reference","title":"CImGui.Size","text":"Size(handle::Ptr{ImGuiTextBuffer}) -> Cint\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.SliderAngle","page":"API Reference","title":"CImGui.SliderAngle","text":"SliderAngle(label, v_rad, v_degrees_min=-360.0, v_degrees_max=360.0, format=\"%.0f deg\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat","page":"API Reference","title":"CImGui.SliderFloat","text":"SliderFloat(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nCreate a slider widget.\n\ntip: Tip\nctrl+click on a slider to input with keyboard. manually input values aren't clamped, can go off-bounds.\n\nArguments\n\nformat: adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display\n\"%.3f\" -> 1.234\n\"%5.2f secs\" -> 01.23 secs\n\"Biscuit: %.0f\" -> Biscuit: 1\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat2","page":"API Reference","title":"CImGui.SliderFloat2","text":"SliderFloat2(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat3","page":"API Reference","title":"CImGui.SliderFloat3","text":"SliderFloat3(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderFloat4","page":"API Reference","title":"CImGui.SliderFloat4","text":"SliderFloat4(label, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt","page":"API Reference","title":"CImGui.SliderInt","text":"SliderInt(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt2","page":"API Reference","title":"CImGui.SliderInt2","text":"SliderInt2(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 2.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt3","page":"API Reference","title":"CImGui.SliderInt3","text":"SliderInt3(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 3.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderInt4","page":"API Reference","title":"CImGui.SliderInt4","text":"SliderInt4(label, v, v_min, v_max, format=\"%d\", flags=0) -> Bool\n\nThe expected number of elements to be accessible in v is 4.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderScalar","page":"API Reference","title":"CImGui.SliderScalar","text":"SliderScalar(label, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SliderScalarN","page":"API Reference","title":"CImGui.SliderScalarN","text":"SliderScalarN(label, data_type, v, components, v_min, v_max, format=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.SmallButton-Tuple{Any}","page":"API Reference","title":"CImGui.SmallButton","text":"SmallButton(label) -> Bool\n\nReturn true when the value has been changed or when pressed/selected. It creates a button with FramePadding=(0,0) to easily embed within text.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Spacing-Tuple{}","page":"API Reference","title":"CImGui.Spacing","text":"Spacing()\n\nAdd vertical spacing.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Step-Tuple{Ptr{CImGui.lib.ImGuiListClipper}}","page":"API Reference","title":"CImGui.Step","text":"Step(handle::Ptr{ImGuiListClipper}) -> Bool\n\nCall until it returns false. The DisplayStart/DisplayEnd fields will be set and you can process/draw those items.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.StyleColorsClassic-Tuple{}","page":"API Reference","title":"CImGui.StyleColorsClassic","text":"StyleColorsClassic()\n\nUse the classic imgui style.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.StyleColorsDark-Tuple{}","page":"API Reference","title":"CImGui.StyleColorsDark","text":"StyleColorsDark()\n\nUse the new, recommended style. This is also the default style.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.StyleColorsLight-Tuple{}","page":"API Reference","title":"CImGui.StyleColorsLight","text":"StyleColorsLight()\n\nThis style is best used with borders and a custom, thicker font.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetColumnCount-Tuple{}","page":"API Reference","title":"CImGui.TableGetColumnCount","text":"TableGetColumnCount() -> CInt\n\nreturn number of columns (value passed to BeginTable)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetColumnFlags","page":"API Reference","title":"CImGui.TableGetColumnFlags","text":"TableGetColumnFlags(column_n = -1) -> ImGuiTableColumnFlags\n\nReturn column flags so you can query their Enabled/Visible/Sorted/Hovered status flags. Pass -1 to use current column.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableGetColumnIndex-Tuple{}","page":"API Reference","title":"CImGui.TableGetColumnIndex","text":"TableGetColumnIndex() -> CInt\n\nReturn current column index\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetColumnName","page":"API Reference","title":"CImGui.TableGetColumnName","text":"TableGetColumnName(column_n = -1) -> String\n\nreturn \"\" if column didn't have a name declared by TableSetupColumn(). Pass -1 to use current column.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableGetRowIndex-Tuple{}","page":"API Reference","title":"CImGui.TableGetRowIndex","text":"TableGetRowIndex() -> CInt\n\nReturn current row index.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableGetSortSpecs-Tuple{}","page":"API Reference","title":"CImGui.TableGetSortSpecs","text":"TableGetSortSpecs() -> Ptr{ImGuiTableSortSpecs}\n\nget latest sort specs for the table (NULL if not sorting).\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableHeader-Tuple{Any}","page":"API Reference","title":"CImGui.TableHeader","text":"TableHeader(label)\n\nSubmit one header cell manually (rarely used)\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableHeadersRow-Tuple{}","page":"API Reference","title":"CImGui.TableHeadersRow","text":"TableHeadersRow()\n\nSubmit all headers cells based on data provided to TableSetupColumn() + submit context menu\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableNextColumn-Tuple{}","page":"API Reference","title":"CImGui.TableNextColumn","text":"TableNextColumn() -> Bool\n\nAppend into the next column (or first column of next row if currently in last column). Return true when column is visible.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableNextRow","page":"API Reference","title":"CImGui.TableNextRow","text":"TableNextRow(row_flags = ImGuiTableRowFlags_(0), min_row_height = 0.0)\n\nAppend into the first cell of a new row.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableSetBgColor","page":"API Reference","title":"CImGui.TableSetBgColor","text":"TableSetBgColor(bg_target, color, column_n = -1)\n\nChange the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableSetColumnIndex-Tuple{Any}","page":"API Reference","title":"CImGui.TableSetColumnIndex","text":"TableSetColumnIndex(column_n) -> Bool\n\nAppend into the specified column. Return true when column is visible.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TableSetupColumn","page":"API Reference","title":"CImGui.TableSetupColumn","text":"TableSetupColumn(label, flags = ImGuiTableColumnFlags_(0), init_width_or_weight = 0.0, user_id = ImGuiID(0))\n\nSpecify label, resizing policy, default width/weight, id, various other flags etc.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TableSetupScrollFreeze-Tuple{Any, Any}","page":"API Reference","title":"CImGui.TableSetupScrollFreeze","text":"TableSetupScrollFreeze(cols, rows)\n\nLock columns/rows so they stay visible when scrolled.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Text-Tuple{Any}","page":"API Reference","title":"CImGui.Text","text":"Text(formatted_text)\n\nCreate a text widget.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextBuffer-Tuple{}","page":"API Reference","title":"CImGui.TextBuffer","text":"TextBuffer() -> Ptr{ImGuiTextBuffer}\n\nHelper: Growable text buffer for logging/accumulating text\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextColored-Tuple{Any, Any}","page":"API Reference","title":"CImGui.TextColored","text":"TextColored(col, formatted_text)\n\nShortcut for PushStyleColor(ImGuiCol_Text, col); Text(text); PopStyleColor();.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextDisabled-Tuple{Any}","page":"API Reference","title":"CImGui.TextDisabled","text":"TextDisabled(formatted_text)\n\nShortcut for PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); Text(text); PopStyleColor();.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TextUnformatted","page":"API Reference","title":"CImGui.TextUnformatted","text":"TextUnformatted(text, text_end=C_NULL)\n\nRaw text without formatting. Roughly equivalent to Text(\"%s\", text) but:\n\ndoesn't require null terminated string if text_end is specified;\nit's faster, no memory copy is done, no buffer size limits, recommended for long chunks of text.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TextWrapped-Tuple{Any}","page":"API Reference","title":"CImGui.TextWrapped","text":"TextWrapped(formatted_text)\n\nShortcut for PushTextWrapPos(0.0f); Text(text); PopTextWrapPos();. Note that this won't work on an auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using SetNextWindowSize.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNode-Tuple{AbstractString}","page":"API Reference","title":"CImGui.TreeNode","text":"TreeNode(label::AbstractString) -> Bool\n\nTreeNode functions return true when the node is open, in which case you need to also call TreePop when you are finished displaying the tree node contents.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNode-Tuple{Any, Any}","page":"API Reference","title":"CImGui.TreeNode","text":"TreeNode(str_id, formatted_text) -> Bool\n\nHelper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNode-Tuple{Ptr, Any}","page":"API Reference","title":"CImGui.TreeNode","text":"TreeNodePtr(ptr_id::Ptr, formatted_text) -> Bool\n\nHelper variation to completely decorelate the id from the displayed string. Read the FAQ in PushID's' doc about why and how to use ID. To align arbitrary text at the same level as a TreeNode you can use Bullet.\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNodeEx","page":"API Reference","title":"CImGui.TreeNodeEx","text":"TreeNodeEx(label, flags=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TreeNodeEx-Tuple{Any, Any, Any}","page":"API Reference","title":"CImGui.TreeNodeEx","text":"TreeNodeEx(str_id, flags, formatted_text) -> Bool\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreeNodeEx-Tuple{Ptr, Any, Any}","page":"API Reference","title":"CImGui.TreeNodeEx","text":"TreeNodeEx(ptr_id::Ptr, flags, formatted_text) -> Bool\n\nwarning: Limited support\nFormatting is not supported which means you need to pass a formatted string to this function. It's recommended to use Julia stdlib Printf's @sprintf as a workaround when translating C/C++ code to Julia.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreePop-Tuple{}","page":"API Reference","title":"CImGui.TreePop","text":"TreePop()\n\nUnindent + PopID.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.TreePush","page":"API Reference","title":"CImGui.TreePush","text":"TreePush(ptr_id::Ptr=C_NULL)\n\nIndent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.TreePush-Tuple{Any}","page":"API Reference","title":"CImGui.TreePush","text":"TreePush(str_id)\n\nIndent + PushID. Already called by TreeNode when returning true, but you can call TreePush/TreePop yourself if desired.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.Unindent","page":"API Reference","title":"CImGui.Unindent","text":"Unindent()\nUnindent(indent_w)\n\nMove content position back to the left, by ImGuiStyle.IndentSpacing or indent_w if indent_w != 0.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.VSliderFloat","page":"API Reference","title":"CImGui.VSliderFloat","text":"VSliderFloat(label, size, v, v_min, v_max, format=\"%.3f\", flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.VSliderInt","page":"API Reference","title":"CImGui.VSliderInt","text":"VSliderInt(label, size, v, v_min, v_max, format=\"%d\", flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.VSliderScalar","page":"API Reference","title":"CImGui.VSliderScalar","text":"VSliderScalar(label, size, data_type, v, v_min, v_max, format=C_NULL, flag=0) -> Bool\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ValueBool-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ValueBool","text":"ValueBool(prefix, b)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ValueFloat","page":"API Reference","title":"CImGui.ValueFloat","text":"ValueFloat(prefix, v, float_format=C_NULL)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"function"},{"location":"api/#CImGui.ValueInt-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ValueInt","text":"ValueInt(prefix, v)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"method"},{"location":"api/#CImGui.ValueUint-Tuple{Any, Any}","page":"API Reference","title":"CImGui.ValueUint","text":"ValueUint(prefix, v)\n\nOutput single value in \"name: value\" format.\n\n\n\n\n\n","category":"method"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"CurrentModule = CImGui","category":"page"},{"location":"_changelog/#Changelog","page":"Changelog","title":"Changelog","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.","category":"page"},{"location":"_changelog/#[v2.2.0]-2024-08-02","page":"Changelog","title":"[v2.2.0] - 2024-08-02","text":"","category":"section"},{"location":"_changelog/#Added","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"Support for more GLMakie controls, and a tooltip for each figure by default ([#134]).","category":"page"},{"location":"_changelog/#[v2.1.0]-2024-07-29","page":"Changelog","title":"[v2.1.0] - 2024-07-29","text":"","category":"section"},{"location":"_changelog/#Added-2","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"The OpenGL version can now be set with render().\nExperimental Makie integration ([#133]).","category":"page"},{"location":"_changelog/#[v2.0.0]-2024-06-27","page":"Changelog","title":"[v2.0.0] - 2024-06-27","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.","category":"page"},{"location":"_changelog/#Added-3","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.\nThe renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.","category":"page"},{"location":"_changelog/#Changed","page":"Changelog","title":"Changed","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.\nBreaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.\nBreaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.\nBreaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.","category":"page"},{"location":"_changelog/#Deprecated","page":"Changelog","title":"Deprecated","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"GetKeyIndex() has been deprecated upstream. It will be removed in a future release.","category":"page"},{"location":"_changelog/#[v1.89.1]-2024-05-19","page":"Changelog","title":"[v1.89.1] - 2024-05-19","text":"","category":"section"},{"location":"_changelog/#Fixed","page":"Changelog","title":"Fixed","text":"","category":"section"},{"location":"_changelog/","page":"Changelog","title":"Changelog","text":"Fixed the implementations of SetScrollX() and SetScrollY() ([#115]).","category":"page"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"EditURL = \"https://github.com/Gnimuc/CImGui.jl/blob/master/CHANGELOG.md\"","category":"page"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"CurrentModule = CImGui","category":"page"},{"location":"changelog/#Changelog","page":"Changelog","title":"Changelog","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"This documents notable changes in CImGui.jl. The format is based on Keep a Changelog.","category":"page"},{"location":"changelog/#[v2.2.0](https://github.com/Gnimuc/CImGui.jl/releases/tag/v2.2.0)-2024-08-02","page":"Changelog","title":"v2.2.0 - 2024-08-02","text":"","category":"section"},{"location":"changelog/#Added","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"Support for more GLMakie controls, and a tooltip for each figure by default (#134).","category":"page"},{"location":"changelog/#[v2.1.0](https://github.com/Gnimuc/CImGui.jl/releases/tag/v2.1.0)-2024-07-29","page":"Changelog","title":"v2.1.0 - 2024-07-29","text":"","category":"section"},{"location":"changelog/#Added-2","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"The OpenGL version can now be set with render().\nExperimental Makie integration (#133).","category":"page"},{"location":"changelog/#[v2.0.0](https://github.com/Gnimuc/CImGui.jl/releases/tag/v2.0.0)-2024-06-27","page":"Changelog","title":"v2.0.0 - 2024-06-27","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"Note: this release has particularly many breaking changes, please file an issue or submit a pull request if something isn't working.","category":"page"},{"location":"changelog/#Added-3","page":"Changelog","title":"Added","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"A renderloop for the OpenGL/GLFW backend has been added to CImGui, so it's no longer necessary to copy and paste the examples around.\nThe renderloop also integrates with the new ImGuiTestEngine.jl to make it possible to write automated tests.","category":"page"},{"location":"changelog/#Changed","page":"Changelog","title":"Changed","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"CImGui.jl now uses semantic versioning to make development easier. This release is based on Dear ImGui 1.90.8.\nBreaking: LibCImGui.jl has been merged into CImGui.lib, again for the sake of ease of development.\nBreaking: The custom backends that we developed, ImGuiOpenGLBackend.jl and ImGuiGLFWBackend.jl, have been deprecated in favour of using ImGui's official backends. With this change we also dropped support for OpenGL 2, but purely out of laziness. If you need OpenGL 2 let us know and we can build and ship the official OpenGL 2 backend.\nBreaking: The built-in renderloop is implemented using package extensions, which are only available on Julia 1.9+. Hence the new minimum required Julia version is 1.9.","category":"page"},{"location":"changelog/#Deprecated","page":"Changelog","title":"Deprecated","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"GetKeyIndex() has been deprecated upstream. It will be removed in a future release.","category":"page"},{"location":"changelog/#[v1.89.1](https://github.com/Gnimuc/CImGui.jl/releases/tag/v1.89.1)-2024-05-19","page":"Changelog","title":"v1.89.1 - 2024-05-19","text":"","category":"section"},{"location":"changelog/#Fixed","page":"Changelog","title":"Fixed","text":"","category":"section"},{"location":"changelog/","page":"Changelog","title":"Changelog","text":"Fixed the implementations of SetScrollX() and SetScrollY() (#115).","category":"page"},{"location":"makie/","page":"Makie integration","title":"Makie integration","text":"CurrentModule = CImGui","category":"page"},{"location":"makie/#Makie-integration","page":"Makie integration","title":"Makie integration","text":"","category":"section"},{"location":"makie/","page":"Makie integration","title":"Makie integration","text":"We currently have very experimental Makie support through GLMakie. GLMakie mostly works around a Screen{T} object to display a scene, where T is some OpenGL-supporting window. GLMakie sets this to a GLFW.Window, but we've made a custom window type to represent a single Figure to be drawn in ImGui. What we get from GLMakie is a framebuffer with a color image texture attachment, and that's displayed by us as an image.","category":"page"},{"location":"makie/","page":"Makie integration","title":"Makie integration","text":"MakieFigure","category":"page"},{"location":"makie/#CImGui.MakieFigure","page":"Makie integration","title":"CImGui.MakieFigure","text":"MakieFigure(id::String, f::GLMakie.Figure; auto_resize_x=true, auto_resize_y=false, tooltip=true)\n\nDisplay a Makie figure in ImGui. See examples/makie_demo.jl for an example of how to use it. This supports all the interaction features in GLMakie:\n\nScroll to zoom\nClick and drag to rectangle select a region to zoom to\nRight click and drag to pan\nShift + {x/y} and scroll to zoom along the X/Y axes\nCtrl + left click to reset the limits\n\nNote that scrolling to zoom will also cause the ImGui window to scroll, which can be annoying. This may be fixed in the future by using some other key combination for scrolling to zoom.\n\nThese are the interaction events that are wired up and can be used:\n\nhasfocus\nentered_window\nmousebutton\nmouseposition\n\nKnown issues:\n\nChanging tick labels don't trigger the scene to be re-layouted, causing them to be clipped if the labels change width. See examples/makie_demo.jl for an example workaround using Makie.tight_ticklabel_spacing!().\nThe theming doesn't match the ImGui theme so plots look quite out of place by default.\nMouse events aren't delivered unless the mouse is hovered over the figure, so dragging the mouse from within the figure to somewhere outside the figure will keep the old mouse state. e.g. if you're RMB panning and the mouse goes outside the figure, when it enters the figure again panning will resume even the RMB was released.\nDrawing can be a bit janky, occasionally the image will not be drawn for a frame or two and you'll see an empty black square instead.\n\nwarning: Warning\nThis is very experimental, you will almost definitely encounter bugs (and if so please submit an issue/PR). We don't consider this covered under semver yet so there may be breaking changes in minor releases.\n\n\n\n\n\n","category":"function"},{"location":"backends/","page":"Backends","title":"Backends","text":"CurrentModule = CImGui","category":"page"},{"location":"backends/#Backends","page":"Backends","title":"Backends","text":"","category":"section"},{"location":"backends/","page":"Backends","title":"Backends","text":"ImGui is a very embeddable library because it abstracts things like drawing to the screen and creating windows to its backends. There are many official backends, but currently CImGui.jl only supports the GLFW/OpenGL3 backend.","category":"page"},{"location":"backends/","page":"Backends","title":"Backends","text":"set_backend\nrender","category":"page"},{"location":"backends/#CImGui.set_backend","page":"Backends","title":"CImGui.set_backend","text":"set_backend(backend::Symbol)\n\nSet the backend to use. Currently supported backends are:\n\n:GlfwOpenGL3 (GLFW/OpenGL3, requires ModernGL.jl and GLFW.jl)\n\n\n\n\n\n","category":"function"},{"location":"backends/#CImGui.render","page":"Backends","title":"CImGui.render","text":"render(ui::Function, ctx::Ptr{lib.ImGuiContext}; kwargs...)\n\nTop-level function to call a renderloop implemented by the backend selected by set_backend(). This function will not return until the program exits, either by the user closing the window or ui() returning :imgui_exit_loop. It will also not yield the loop, though you may explicitly call yield() in ui().\n\nArguments\n\nPositional arguments:\n\nui: The function to execute in the renderloop. This where all the GUI code with calls to CImGui should go.\nctx: The ImGui context to use. Note that DestroyContext() will automatically be called on it at the end of the renderloop, so it will be unusable afterwards.\n\nKeyword arguments:\n\nhotloading=true: Enable calling the latest version of ui() using @invokelatest. This is handy when using Revise.jl.\non_exit::Union{Function, Nothing}=nothing: A destructor/finalizer function that will be called before destroying ctx. This might be useful if you're using some external library that needs to be cleaned up in a certain order.\nclear_color=Cfloat[0.45, 0.55, 0.60, 1.00]: The color of the window background. This can also be a Ref{Vector{Cfloat}} if you want to control the color dynamically (see the official demo for an example).\nwindow_size=(1280, 720): The initial size of the window.\nwindow_title=\"CImGui\": The window title.\nengine=nothing: An optional ImGuiTestEngine.Engine instance. If there are any tests registered with the test engine they will be queued and run automatically.\nopengl_version::VersionNumber=v\"3.2\": The OpenGL version to use.\n\n\n\n\n\n","category":"function"},{"location":"#CImGui","page":"CImGui","title":"CImGui","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"This package provides a Julia language wrapper for cimgui: a thin c-api wrapper programmatically generated for the excellent C++ immediate mode gui Dear ImGui. Dear ImGui is mainly for creating content creation tools and visualization / debug tools. You could browse Gallery to get an idea of its use cases.","category":"page"},{"location":"#Installation","page":"CImGui","title":"Installation","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"pkg> add CImGui","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"You will probably also want to add the necessary packages for one of the backends. Currently we only support OpenGL3/GFLW, so you'd need:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"pkg> add ModernGL, GLFW","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Note that you don't have to explicitly use these packages, but they must be installed and loaded because the backend renderloop is a package extension that requires them.","category":"page"},{"location":"#How-to-start","page":"CImGui","title":"How to start","text":"","category":"section"},{"location":"#1.-Run-demo/demo.jl-to-test-whether-the-official-demo-works-at-all","page":"CImGui","title":"1. Run demo/demo.jl to test whether the official demo works at all","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"julia> import CImGui, ModernGL, GLFW\njulia> include(joinpath(pathof(CImGui), \"..\", \"..\", \"demo\", \"demo.jl\"))\njulia> official_demo()","category":"page"},{"location":"#2.-Run-examples/demo.jl-and-browse-demos-in-the-examples-folder-to-learn-how-to-use-the-API","page":"CImGui","title":"2. Run examples/demo.jl and browse demos in the examples folder to learn how to use the API","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"julia> import CImGui, ModernGL, GLFW\njulia> include(joinpath(pathof(CImGui), \"..\", \"..\", \"examples\", \"demo.jl\"))\njulia> julia_demo()","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"All of these examples are one-to-one ported from Dear ImGui's C++ examples and there is an interactive manual for quickly locating the code. You could also run ? CImGui.xxx to retrieve docs:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"help?> CImGui.Button\n Button(label) -> Bool\n Button(label, size) -> Bool\n\n Return true when the value has been changed or when pressed/selected.","category":"page"},{"location":"#3.-Your-first-GUI-\\o/","page":"CImGui","title":"3. Your first GUI \\o/","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"Note that all ImGui widgets should run within CImGui.Begin()...CImGui.End(), if not, a crash is waiting for you. For example, directly running CImGui.Button(\"My button\") in REPL will crash Julia. That being said, here's how a quick example of how to use the default backend to draw a little GUI:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"julia> import CImGui as ig, ModernGL, GLFW\njulia> ig.set_backend(:GlfwOpenGL3)\njulia> ctx = ig.CreateContext()\njulia> ig.render(ctx; window_size=(360, 480), window_title=\"ImGui Window\") do\n ig.Begin(\"Hello ImGui\")\n if ig.Button(\"My Button\")\n @info \"Triggered\"\n end\n ig.End()\n end","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Note that neither ImGui nor OpenGL are thread-safe, be aware of this if you start Julia with multiple threads using --threads. If you need to use multiple threads in an application, one option is to use the threadpools introduced in Julia 1.9:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"# Have an arbitrary number in the default pool, and 1 thread in the :interactive pool\n$ julia --threads=auto,1","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Then start the render loop on the :interactive thread with Threads.@spawn :interactive and ensure that none of the other threads call GUI functions or modify the program state while your GUI code is being executing.","category":"page"},{"location":"#Usage","page":"CImGui","title":"Usage","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"The API provided in this package is as close as possible to the original C++ API. When translating C++ code to Julia, please follow the tips below:","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"Replace ImGui:: to CImGui. (or ig. if you've run import CImGui as ig).\nusing CImGui.lib to import all of the ImGuiXXX types into the current namespace.\nMember function calling should be translated in Julia style: fonts.AddFont(cfg) => ig.AddFont(fonts, cfg).\n[using CImGui.CSyntax] provides two useful macros: @c for translating C's & operator on immutables and @cstatic-block for emulating C's static keyword.","category":"page"},{"location":"","page":"CImGui","title":"CImGui","text":"As mentioned before, this package aims to provide the same user experience as the original C++ API, so any high-level abstraction should go into a more high-level package. Redux.jl might be of interest to you if you're looking for state management frameworks.","category":"page"},{"location":"#Backend","page":"CImGui","title":"Backend","text":"","category":"section"},{"location":"","page":"CImGui","title":"CImGui","text":"The default backend is based on ModernGL and GLFW which are stable and under actively maintained. Other popular backends like SFML and SDL could be added in the future if someone should invest time to make these packages work in post Julia 1.0 era.","category":"page"}] }