API Reference

This page documents the wrapper functions we have for the ImGui API. The Backends and the Makie integration are documented separately.

You can always get the current ImGui version with:


CImGui.AcceptDragDropPayload — Function
AcceptDragDropPayload(type) -> Ptr{CImGui.lib.ImGuiPayload}
AcceptDragDropPayload(
    type,
    flags::Union{CImGui.lib.ImGuiDragDropFlags_, Integer}
) -> Ptr{CImGui.lib.ImGuiPayload}

Accept contents of a given type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released.

Upstream link.

source
CImGui.ActivateItemByID — Method
ActivateItemByID(id::Integer)

Activate an item by ID (button, checkbox, tree node etc.). Activation is queued and processed on the next frame when the item is encountered again. Was called 'ActivateItem()' before 1.89.7.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.AddBezierCubic — Function
AddBezierCubic(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness
)
AddBezierCubic(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness,
    num_segments
)

Cubic Bezier (4 control points).

Upstream link.

source
CImGui.AddBezierQuadratic — Function
AddBezierQuadratic(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness
)
AddBezierQuadratic(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness,
    num_segments
)

Quadratic Bezier (3 control points).

Upstream link.

source
CImGui.AddCallback — Function
AddCallback(
    self::Ptr{CImGui.lib.ImDrawList},
    callback::Union{Ptr{Nothing}, Base.CFunction}
)
AddCallback(
    self::Ptr{CImGui.lib.ImDrawList},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    userdata
)
AddCallback(
    self::Ptr{CImGui.lib.ImDrawList},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    userdata,
    userdata_size
)

Advanced: Draw Callbacks

  • May be used to alter render state (change sampler, blending, current shader). May be used to emit custom rendering commands (difficult to do correctly, but possible).
  • Use special GetPlatformIO().DrawCallback_ResetRenderState callback to instruct backend to reset its render state to the default.
  • See other standard callbacks in GetPlatformIO(), which may or not be supported by your backend.
  • Your rendering loop must check for 'UserCallback' in ImDrawCmd and call the function instead of rendering triangles. All standard backends are honoring this.
  • For some backends, the callback may access selected render-states exposed by the backend in a ImGuiImplXXXXRenderState structure pointed to by platformio.RendererRenderState.
  • IMPORTANT: please be mindful of the different level of indirection between using size==0 (copying argument) and using size>0 (copying pointed data into a buffer).
    • If userdata_size == 0: we copy/store the 'userdata' argument as-is. It will be available unmodified in ImDrawCmd::UserCallbackData during render.
    • If userdatasize > 0, we copy/store 'userdatasize' bytes pointed to by 'userdata'. We store them in a buffer stored inside the drawlist. ImDrawCmd::UserCallbackData will point inside that buffer so you have to retrieve data from there. Your callback may need to use ImDrawCmd::UserCallbackDataSize if you expect dynamically-sized data.
    • Support for userdata_size > 0 was added in v1.91.4, October 2024. So earlier code always only allowed to copy/store a simple void*.

Upstream link.

source
CImGui.AddCircle — Function
AddCircle(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer
)
AddCircle(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer,
    num_segments
)
AddCircle(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer,
    num_segments,
    thickness
)

Upstream link.

source
CImGui.AddCircleFilled — Function
AddCircleFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer
)
AddCircleFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer,
    num_segments
)

Upstream link.

source
CImGui.AddContextHook — Method
AddContextHook(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    hook::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContextHook}}
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.AddCustomRect — Function
AddCustomRect(
    self::Ptr{CImGui.lib.ImFontAtlas},
    width,
    height
) -> Int32
AddCustomRect(
    self::Ptr{CImGui.lib.ImFontAtlas},
    width,
    height,
    out_r::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlasRect}}
) -> Int32

Register and retrieve custom rectangles

  • You can request arbitrary rectangles to be packed into the atlas, for your own purpose.
  • Since 1.92.0, packing is done immediately in the function call (previously packing was done during the Build call)
  • You can render your pixels into the texture right after calling the AddCustomRect() functions.
  • VERY IMPORTANT:
    • Texture may be created/resized at any time when calling ImGui or ImFontAtlas functions.
    • IT WILL INVALIDATE RECTANGLE DATA SUCH AS UV COORDINATES. Always use latest values from GetCustomRect().
    • UV coordinates are associated to the current texture identifier aka 'atlas->TexRef'. Both TexRef and UV coordinates are typically changed at the same time.
  • If you render colored output into your custom rectangles: set 'atlas->TexPixelsUseColors = true' as this may help some backends decide of preferred texture format.
  • Read docs/FONTS.md for more details about using colorful icons.
  • Note: this API may be reworked further in order to facilitate supporting e.g. multi-monitor, varying DPI settings.
  • (Pre-1.92 names) ————> (1.92 names)
    • GetCustomRectByIndex() –> Use GetCustomRect()
    • CalcCustomRectUV() –> Use GetCustomRect() and read uv0, uv1 fields.
    • AddCustomRectRegular() –> Renamed to AddCustomRect()
    • AddCustomRectFontGlyph() –> Prefer using custom ImFontLoader inside ImFontConfig
    • ImFontAtlasCustomRect –> Renamed to ImFontAtlasRect// Register a rectangle. Return -1 (ImFontAtlasRectId_Invalid) on error.

Upstream link.

source
CImGui.AddDrawCmd — Method
AddDrawCmd(self::Ptr{CImGui.lib.ImDrawList})

Advanced: Miscellaneous// 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.

Upstream link.

source
CImGui.AddDrawList — Method
AddDrawList(
    self::Ptr{CImGui.lib.ImDrawData},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}}
)

Helper to add an external draw list into an existing ImDrawData.

Upstream link.

source
CImGui.AddDrawListToDrawDataEx — Method
AddDrawListToDrawDataEx(
    draw_data::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawData}},
    out_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_ImDrawListPtr}},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.AddEllipse — Function
AddEllipse(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddEllipse(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rot
)
AddEllipse(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rot,
    num_segments
)
AddEllipse(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rot,
    num_segments,
    thickness
)

Upstream link.

source
CImGui.AddEllipseFilled — Function
AddEllipseFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddEllipseFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rot
)
AddEllipseFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rot,
    num_segments
)

Upstream link.

source
CImGui.AddFocusEvent — Method
AddFocusEvent(self::Ptr{CImGui.lib.ImGuiIO}, focused)

Queue a gain/loss of focus for the application (generally based on OS/platform focus of your window).

Upstream link.

source
CImGui.AddFont — Method
AddFont(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}

Upstream link.

source
CImGui.AddFontDefault — Function
AddFontDefault(
    self::Ptr{CImGui.lib.ImFontAtlas}
) -> Ptr{CImGui.lib.ImFont}
AddFontDefault(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}

Selects between AddFontDefaultVector() and AddFontDefaultBitmap().

Upstream link.

source
CImGui.AddFontDefaultBitmap — Function
AddFontDefaultBitmap(
    self::Ptr{CImGui.lib.ImFontAtlas}
) -> Ptr{CImGui.lib.ImFont}
AddFontDefaultBitmap(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}

Embedded classic pixel-clean font. Recommended at Size 13px with no scaling.

Upstream link.

source
CImGui.AddFontDefaultVector — Function
AddFontDefaultVector(
    self::Ptr{CImGui.lib.ImFontAtlas}
) -> Ptr{CImGui.lib.ImFont}
AddFontDefaultVector(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}

Embedded scalable font. Recommended at any higher size.

Upstream link.

source
CImGui.AddFontFromFileTTF — Function
AddFontFromFileTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    filename
) -> Ptr{CImGui.lib.ImFont}
AddFontFromFileTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    filename,
    size_pixels
) -> Ptr{CImGui.lib.ImFont}
AddFontFromFileTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    filename,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}
AddFontFromFileTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    filename,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    glyph_ranges::Union{Ptr{Nothing}, Ref{UInt16}}
) -> Ptr{CImGui.lib.ImFont}

Upstream link.

source
CImGui.AddFontFromMemoryCompressedBase85TTF — Function
AddFontFromMemoryCompressedBase85TTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data_base85
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryCompressedBase85TTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data_base85,
    size_pixels
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryCompressedBase85TTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data_base85,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryCompressedBase85TTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data_base85,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    glyph_ranges::Union{Ptr{Nothing}, Ref{UInt16}}
) -> Ptr{CImGui.lib.ImFont}

'compressedfontdatabase85' still owned by caller. Compress with binarytocompressedc.cpp with -base85 parameter.

Upstream link.

source
CImGui.AddFontFromMemoryCompressedTTF — Function
AddFontFromMemoryCompressedTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data,
    compressed_font_data_size
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryCompressedTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data,
    compressed_font_data_size,
    size_pixels
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryCompressedTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data,
    compressed_font_data_size,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryCompressedTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    compressed_font_data,
    compressed_font_data_size,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    glyph_ranges::Union{Ptr{Nothing}, Ref{UInt16}}
) -> Ptr{CImGui.lib.ImFont}

'compressedfontdata' still owned by caller. Compress with binarytocompressed_c.cpp.

Upstream link.

source
CImGui.AddFontFromMemoryTTF — Function
AddFontFromMemoryTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_data,
    font_data_size
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_data,
    font_data_size,
    size_pixels
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_data,
    font_data_size,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}
AddFontFromMemoryTTF(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_data,
    font_data_size,
    size_pixels,
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    glyph_ranges::Union{Ptr{Nothing}, Ref{UInt16}}
) -> Ptr{CImGui.lib.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.

Upstream link.

source
CImGui.AddImage — Function
AddImage(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImage(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImage(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImage(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Image primitives

  • Read FAQ to understand what ImTextureID/ImTextureRef are.
  • "pmin" and "pmax" represent the upper-left and lower-right corners of the rectangle.
  • "uvmin" and "uvmax" represent the normalized texture coordinates to use for those corners. Using (0,0)->(1,1) texture coordinates will generally display the entire texture.

Upstream link.

source
CImGui.AddImageQuad — Function
AddImageQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImageQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImageQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImageQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImageQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
AddImageQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Upstream link.

source
CImGui.AddImageRounded — Function
AddImageRounded(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding
)
AddImageRounded(
    self::Ptr{CImGui.lib.ImDrawList},
    tex_ref::CImGui.lib.ImTextureRef,
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)

Upstream link.

source
CImGui.AddKeyAnalogEvent — Method
AddKeyAnalogEvent(
    self::Ptr{CImGui.lib.ImGuiIO},
    key::CImGui.lib.ImGuiKey,
    down,
    v
)

Queue a new key down/up event for analog values (e.g. ImGuiKeyGamepad values). Dead-zones should be handled by the backend.

Upstream link.

source
CImGui.AddKeyEvent — Method
AddKeyEvent(
    self::Ptr{CImGui.lib.ImGuiIO},
    key::CImGui.lib.ImGuiKey,
    down
)

Input Functions// Queue a new key down/up event. Key should be "translated" (as in, generally ImGuiKey_A matches the key end-user would use to emit an 'A' character).

Upstream link.

source
CImGui.AddLine — Function
AddLine(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddLine(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness
)

Primitives

  • Filled shapes must always use clockwise winding order. The anti-aliasing fringe depends on it. Counter-clockwise shapes will have "inward" anti-aliasing.
  • For rectangular primitives, "pmin" and "pmax" represent the upper-left and lower-right corners.
  • For circle primitives, use "numsegments == 0" to automatically calculate tessellation (preferred). In older versions (until Dear ImGui 1.77) the AddCircle functions defaulted to numsegments == 12. In future versions we will use textures to provide cheaper and higher-quality circles. Use AddNgon() and AddNgonFilled() functions if you need to guarantee a specific number of sides.

Upstream link.

source
CImGui.AddLineH — Function
AddLineH(
    self::Ptr{CImGui.lib.ImDrawList},
    min_x,
    max_x,
    y,
    col::Integer
)
AddLineH(
    self::Ptr{CImGui.lib.ImDrawList},
    min_x,
    max_x,
    y,
    col::Integer,
    thickness
)

Upstream link.

source
CImGui.AddLineV — Function
AddLineV(
    self::Ptr{CImGui.lib.ImDrawList},
    x,
    min_y,
    max_y,
    col::Integer
)
AddLineV(
    self::Ptr{CImGui.lib.ImDrawList},
    x,
    min_y,
    max_y,
    col::Integer,
    thickness
)

Upstream link.

source
CImGui.AddMousePosEvent — Method
AddMousePosEvent(self::Ptr{CImGui.lib.ImGuiIO}, x, y)

Queue a mouse position update. Use -FLTMAX,-FLTMAX to signify no mouse (e.g. app not focused and not hovered).

Upstream link.

source
CImGui.AddMouseViewportEvent — Method
AddMouseViewportEvent(
    self::Ptr{CImGui.lib.ImGuiIO},
    id::Integer
)

Queue a mouse hovered viewport. Requires backend to set ImGuiBackendFlags_HasMouseHoveredViewport to call this (for multi-viewport support).

Upstream link.

source
CImGui.AddMouseWheelEvent — Method
AddMouseWheelEvent(
    self::Ptr{CImGui.lib.ImGuiIO},
    wheel_x,
    wheel_y
)

Queue a mouse wheel update. wheely<0: scroll down, wheely>0: scroll up, wheelx<0: scroll right, wheelx>0: scroll left.

Upstream link.

source
CImGui.AddNgon — Function
AddNgon(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer,
    num_segments
)
AddNgon(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    col::Integer,
    num_segments,
    thickness
)

Upstream link.

source
CImGui.AddPolyline — Function
AddPolyline(
    self::Ptr{CImGui.lib.ImDrawList},
    points::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    num_points,
    col::Integer,
    thickness
)
AddPolyline(
    self::Ptr{CImGui.lib.ImDrawList},
    points::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    num_points,
    col::Integer,
    thickness,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)

General polygon

  • Only simple polygons are supported by filling functions (no self-intersections, no holes).
  • Concave polygon fill is more expensive than convex one: it has O(N^2) complexity. Provided as a convenience for the user but not used by the main library.

Upstream link.

source
CImGui.AddQuad — Function
AddQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddQuad(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness
)

Upstream link.

source
CImGui.AddQuadFilled — Method
AddQuadFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Upstream link.

source
CImGui.AddRanges — Method
AddRanges(
    self::Ptr{CImGui.lib.ImFontGlyphRangesBuilder},
    ranges::Union{Ptr{Nothing}, Ref{UInt16}}
)

Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault()) to force add all of ASCII/Latin+Ext.

Upstream link.

source
CImGui.AddRect — Function
AddRect(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddRect(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding
)
AddRect(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding,
    thickness
)
AddRect(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding,
    thickness,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)

A: upper-left, b: lower-right (== upper-left + size).

Upstream link.

source
CImGui.AddRectFilled — Function
AddRectFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddRectFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding
)
AddRectFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    rounding,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)

A: upper-left, b: lower-right (== upper-left + size).

Upstream link.

source
CImGui.AddRectFilledMultiColor — Method
AddRectFilledMultiColor(
    self::Ptr{CImGui.lib.ImDrawList},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col_upr_left::Integer,
    col_upr_right::Integer,
    col_bot_right::Integer,
    col_bot_left::Integer
)

Upstream link.

source
CImGui.AddRemapChar — Method
AddRemapChar(
    self::Ptr{CImGui.lib.ImFont},
    from_codepoint::UInt16,
    to_codepoint::UInt16
)

Makes 'fromcodepoint' character points to 'tocodepoint' glyph.

Upstream link.

source
CImGui.AddText — Function
AddText(
    self::Ptr{CImGui.lib.ImFontGlyphRangesBuilder},
    text
)
AddText(
    self::Ptr{CImGui.lib.ImFontGlyphRangesBuilder},
    text,
    text_end
)

Add string (each character of the UTF-8 string are added).

Upstream link.

source
CImGui.AddText — Function
AddText(
    self::Ptr{CImGui.lib.ImDrawList},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size::Real,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    text_begin::Union{Ptr{Int8}, Ptr{Nothing}, String}
)
AddText(
    self::Ptr{CImGui.lib.ImDrawList},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size::Real,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    text_begin::Union{Ptr{Int8}, Ptr{Nothing}, String},
    text_end::Union{Ptr{Int8}, Ptr{Nothing}, String}
)
AddText(
    self::Ptr{CImGui.lib.ImDrawList},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size::Real,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    text_begin::Union{Ptr{Int8}, Ptr{Nothing}, String},
    text_end::Union{Ptr{Int8}, Ptr{Nothing}, String},
    wrap_width::Real
)
AddText(
    self::Ptr{CImGui.lib.ImDrawList},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size::Real,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    text_begin::Union{Ptr{Int8}, Ptr{Nothing}, String},
    text_end::Union{Ptr{Int8}, Ptr{Nothing}, String},
    wrap_width::Real,
    cpu_fine_clip_rect::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec4}, Ref{NTuple{4, T} where T}}
)

Upstream link.

source
CImGui.AddText — Function
AddText(
    self::Ptr{CImGui.lib.ImDrawList},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    text_begin::Union{Ptr{Int8}, Ptr{Nothing}, String}
)
AddText(
    self::Ptr{CImGui.lib.ImDrawList},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    text_begin::Union{Ptr{Int8}, Ptr{Nothing}, String},
    text_end::Union{Ptr{Int8}, Ptr{Nothing}, String}
)

Upstream link.

source
CImGui.AddTriangle — Function
AddTriangle(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
AddTriangle(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    thickness
)

Upstream link.

source
CImGui.AddTriangleFilled — Method
AddTriangleFilled(
    self::Ptr{CImGui.lib.ImDrawList},
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Upstream link.

source
CImGui.AlignTextToFramePadding — Method
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).

Upstream link.

source
CImGui.Append — Method
Append(
    self::Ptr{CImGui.lib.ImGuiTextIndex},
    base,
    old_size,
    new_size
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ApplyRequests — Method
ApplyRequests(
    self::Ptr{CImGui.lib.ImGuiSelectionBasicStorage},
    ms_io::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiMultiSelectIO}}
)

Apply selection requests coming from BeginMultiSelect() and EndMultiSelect() functions. It uses 'items_count' passed to BeginMultiSelect().

Upstream link.

source
CImGui.ApplyRequests — Method
ApplyRequests(
    self::Ptr{CImGui.lib.ImGuiSelectionExternalStorage},
    ms_io::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiMultiSelectIO}}
)

Apply selection requests by using AdapterSetItemSelected() calls.

Upstream link.

source
CImGui.ArrowButtonEx — Function
ArrowButtonEx(
    str_id,
    dir::CImGui.lib.ImGuiDir,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
ArrowButtonEx(
    str_id,
    dir::CImGui.lib.ImGuiDir,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiButtonFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.AsVec4 — Method
AsVec4(
    self::Ptr{CImGui.lib.ImRect}
) -> Ptr{CImGui.lib.ImVec4}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Begin — Function
Begin(self::Ptr{CImGui.lib.ImGuiListClipper}, items_count)
Begin(
    self::Ptr{CImGui.lib.ImGuiListClipper},
    items_count,
    items_height
)

Upstream link.

source
CImGui.Begin — Function
Begin(name::Union{Ptr{Int8}, Ptr{Nothing}, String}) -> Bool
Begin(
    name::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_open
) -> Bool
Begin(
    name::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_open,
    flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Windows

  • Begin() = push window to the stack and start appending to it. End() = pop window from the stack.
  • Passing 'bool* p_open != NULL' shows a window-closing widget in the upper-right corner of the window, which clicking will set the boolean to false when clicked.
  • You may append multiple times to the same window during the same frame by calling Begin()/End() pairs multiple times. Some information such as 'flags' or 'p_open' will only be considered by the first call to Begin().
  • Begin() return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window. Always call a matching End() for each Begin() call, regardless of its return value! [Important: due to legacy reason, Begin/End and BeginChild/EndChild are inconsistent with all other functions such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc. where the EndXXX call should only be called if the corresponding BeginXXX function returned true. Begin and BeginChild are the only odd ones out. Will be fixed in a future update.]
  • Note that the bottom of window stack always contains a window called "Debug".

Upstream link.

source
CImGui.BeginBoxSelect — Method
BeginBoxSelect(
    scope_rect::CImGui.lib.ImRect,
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    box_select_id::Integer,
    ms_flags::Union{CImGui.lib.ImGuiMultiSelectFlags_, Integer}
) -> Bool

Box-Select API.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginChild — Function
BeginChild(id::Integer) -> Bool
BeginChild(
    id::Integer,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
BeginChild(
    id::Integer,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    child_flags::Union{CImGui.lib.ImGuiChildFlags_, Integer}
) -> Bool
BeginChild(
    id::Integer,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    child_flags::Union{CImGui.lib.ImGuiChildFlags_, Integer},
    window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.BeginChild — Function
BeginChild(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
BeginChild(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
BeginChild(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    child_flags::Union{CImGui.lib.ImGuiChildFlags_, Integer}
) -> Bool
BeginChild(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    child_flags::Union{CImGui.lib.ImGuiChildFlags_, Integer},
    window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Child Windows

  • Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.
  • Before 1.90 (November 2023), the "ImGuiChildFlags childflags = 0" parameter was "bool border = false". This API is backward compatible with old code, as we guarantee that ImGuiChildFlagsBorders == true. Consider updating your old code: BeginChild("Name", size, false) -> Begin("Name", size, 0); or Begin("Name", size, ImGuiChildFlagsNone); BeginChild("Name", size, true) -> Begin("Name", size, ImGuiChildFlagsBorders);
  • Manual sizing (each axis can use a different setting e.g. ImVec2(0.0f, 400.0f)): == 0.0f: use remaining parent window size for this axis.

    0.0f: use specified size for this axis.

    < 0.0f: right/bottom-align to specified distance from available content boundaries.
  • Specifying ImGuiChildFlagsAutoResizeX or ImGuiChildFlagsAutoResizeY makes the sizing automatic based on child contents. Combining both ImGuiChildFlagsAutoResizeX _and ImGuiChildFlags_AutoResizeY defeats purpose of a scrolling region and is NOT recommended.
  • BeginChild() returns false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window. Always call a matching EndChild() for each BeginChild() call, regardless of its return value. [Important: due to legacy reason, Begin/End and BeginChild/EndChild are inconsistent with all other functions such as BeginMenu/EndMenu, BeginPopup/EndPopup, etc. where the EndXXX call should only be called if the corresponding BeginXXX function returned true. Begin and BeginChild are the only odd ones out. Will be fixed in a future update.].

Upstream link.

source
CImGui.BeginChildEx — Method
BeginChildEx(
    name,
    id::Integer,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    child_flags::Union{CImGui.lib.ImGuiChildFlags_, Integer},
    window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Childs.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginColumns — Function
BeginColumns(str_id, count)
BeginColumns(
    str_id,
    count,
    flags::Union{CImGui.lib.ImGuiOldColumnFlags_, Integer}
)

Setup number of columns. use an identifier to distinguish multiple column sets. close with EndColumns().

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginCombo — Function
BeginCombo(label, preview_value) -> Bool
BeginCombo(
    label,
    preview_value,
    flags::Union{CImGui.lib.ImGuiComboFlags_, Integer}
) -> Bool

Widgets: Combo Box (Dropdown)

  • The BeginCombo()/EndCombo() api allows you to manage your contents and selection state however you want it, by creating e.g. Selectable() items.
  • The old Combo() api are helpers over BeginCombo()/EndCombo() which are kept available for convenience purpose. This is analogous to how ListBox are created.

Upstream link.

source
CImGui.BeginComboPopup — Method
BeginComboPopup(
    popup_id::Integer,
    bb::CImGui.lib.ImRect,
    flags::Union{CImGui.lib.ImGuiComboFlags_, Integer}
) -> Bool

Combos.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginDisabled — Function
BeginDisabled()
BeginDisabled(disabled)

Disabling [BETA API]

  • Disable all user interactions and dim items visuals (applying style.DisabledAlpha over current colors)
  • Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
  • Tooltips windows are automatically opted out of disabling. Note that IsItemHovered() by default returns false on disabled items, unless using ImGuiHoveredFlags_AllowWhenDisabled.
  • BeginDisabled(false)/EndDisabled() essentially does nothing but is provided to facilitate use of boolean expressions (as a micro-optimization: if you have tens of thousands of BeginDisabled(false)/EndDisabled() pairs, you might want to reformulate your code to avoid making those calls).

Upstream link.

source
CImGui.BeginDocked — Method
BeginDocked(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    p_open
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginDragDropSource — Function
BeginDragDropSource() -> Bool
BeginDragDropSource(
    flags::Union{CImGui.lib.ImGuiDragDropFlags_, Integer}
) -> Bool

Drag and Drop

  • On source items, call BeginDragDropSource(), if it returns true also call SetDragDropPayload() + EndDragDropSource().
  • On target candidates, call BeginDragDropTarget(), if it returns true also call AcceptDragDropPayload() + EndDragDropTarget().
  • If you stop calling BeginDragDropSource() the payload is preserved however it won't have a preview tooltip (we currently display a fallback "..." tooltip, see #1725)
  • An item can be both drag source and drop target.// call after submitting an item which may be dragged. when this return true, you can call SetDragDropPayload() + EndDragDropSource().

Upstream link.

source
CImGui.BeginDragDropTarget — Method
BeginDragDropTarget() -> Bool

Call after submitting an item that may receive a payload. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget().

Upstream link.

source
CImGui.BeginDragDropTargetViewport — Function
BeginDragDropTargetViewport(
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}}
) -> Bool
BeginDragDropTargetViewport(
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}},
    p_bb::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginItemTooltip — Method
BeginItemTooltip() -> Bool

Tooltips: helpers for showing a tooltip when hovering an item

  • BeginItemTooltip() is a shortcut for the 'if (IsItemHovered(ImGuiHoveredFlags_ForTooltip) && BeginTooltip())' idiom.
  • SetItemTooltip() is a shortcut for the 'if (IsItemHovered(ImGuiHoveredFlags_ForTooltip)) SetTooltip(...); ' idiom.
  • Where 'ImGuiHoveredFlagsForTooltip' itself is a shortcut to use 'style.HoverFlagsForTooltipMouse' or 'style.HoverFlagsForTooltipNav' depending on active input type. For mouse it defaults to 'ImGuiHoveredFlagsStationary | ImGuiHoveredFlags_DelayShort'.// begin/append a tooltip window if preceding item was hovered.

Upstream link.

source
CImGui.BeginListBox — Function
BeginListBox(label) -> Bool
BeginListBox(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

Widgets: List Boxes

  • This is essentially a thin wrapper to using BeginChild/EndChild with the ImGuiChildFlags_FrameStyle flag for stylistic changes + displaying a label.
  • If you don't need a label you can probably simply use BeginChild() with the ImGuiChildFlags_FrameStyle flag for the same result.
  • You can submit contents and manage your selection state however you want it, by creating e.g. Selectable() or any other items.
  • The simplified/old ListBox() api are helpers over BeginListBox()/EndListBox() which are kept available for convenience purpose. This is analogous to how Combos are created.
  • Choose frame width: size.x > 0.0f: custom / size.x < 0.0f or -FLT_MIN: right-align / size.x = 0.0f (default): use current ItemWidth
  • Choose frame height: size.y > 0.0f: custom / size.y < 0.0f or -FLT_MIN: bottom-align / size.y = 0.0f (default): arbitrary default height which can fit ~7 items// open a framed scrolling region.

Upstream link.

source
CImGui.BeginMenuBar — Method
BeginMenuBar() -> Bool

Widgets: Menus

  • Use BeginMenuBar() on a window ImGuiWindowFlags_MenuBar to append to its menu bar.
  • Use BeginMainMenuBar() to create a menu bar at the top of the screen and append to it.
  • Use BeginMenu() to create a menu. You can call BeginMenu() multiple time with the same identifier to append more items to it.
  • Note that MenuItem() keyboard shortcuts are displayed as a convenience but not processed by Dear ImGui at the moment.// append to menu-bar of current window (requires ImGuiWindowFlags_MenuBar flag set on parent window).

Upstream link.

source
CImGui.BeginMenuEx — Function
BeginMenuEx(label, icon) -> Bool
BeginMenuEx(label, icon, enabled) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginMultiSelect — Function
BeginMultiSelect(
    flags::Union{CImGui.lib.ImGuiMultiSelectFlags_, Integer}
) -> Ptr{CImGui.lib.ImGuiMultiSelectIO}
BeginMultiSelect(
    flags::Union{CImGui.lib.ImGuiMultiSelectFlags_, Integer},
    selection_size
) -> Ptr{CImGui.lib.ImGuiMultiSelectIO}
BeginMultiSelect(
    flags::Union{CImGui.lib.ImGuiMultiSelectFlags_, Integer},
    selection_size,
    items_count
) -> Ptr{CImGui.lib.ImGuiMultiSelectIO}

Multi-selection system for Selectable(), Checkbox(), TreeNode() functions [BETA]

  • This enables standard multi-selection/range-selection idioms (Ctrl+Mouse/Keyboard, Shift+Mouse/Keyboard, etc.) in a way that also allow a clipper to be used.
  • ImGuiSelectionUserData is often used to store your item index within the current view (but may store something else).
  • Read comments near ImGuiMultiSelectIO for instructions/details and see 'Demo->Widgets->Selection State & Multi-Select' for demo.
  • TreeNode() is technically supported but... using this correctly is more complicated. You need some sort of linear/random access to your tree, which is suited to advanced trees setups already implementing filters and clipper. We will work simplifying the current demo.
  • 'selectionsize' and 'itemscount' parameters are optional and used by a few features. If they are costly for you to compute, you may avoid them.

Upstream link.

source
CImGui.BeginPopup — Function
BeginPopup(str_id) -> Bool
BeginPopup(
    str_id,
    flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Popups, Modals

  • They block normal mouse hovering detection (and therefore most mouse interactions) behind them.
  • If not modal: they can be closed by clicking anywhere outside them, or by pressing Escape (call 'Shortcut(ImGuiKey_Escape)' to claim a higher-priority shortcut).
  • Their visibility state (~bool) is held internally instead of being held by the programmer as we are used to with regular Begin*() calls.
  • The 3 properties above are related: we need to retain popup visibility state in the library because popups may be closed as any time.
  • You can bypass the hovering restriction by using ImGuiHoveredFlags_AllowWhenBlockedByPopup when calling IsItemHovered() or IsWindowHovered().
  • IMPORTANT: Popup identifiers are relative to the current ID stack, so OpenPopup and BeginPopup generally needs to be at the same level of the stack. This is sometimes leading to confusing mistakes. May rework this in the future.
  • BeginPopup(): query popup state, if open start appending into the window. Call EndPopup() afterwards if returned true. ImGuiWindowFlags are forwarded to the window.
  • BeginPopupModal(): block every interaction behind the window, cannot be closed by user, add a dimming background, has a title bar.// return true if the popup is open, and you can start outputting to it.

Upstream link.

source
CImGui.BeginPopupContextItem — Function
BeginPopupContextItem() -> Bool
BeginPopupContextItem(str_id) -> Bool
BeginPopupContextItem(
    str_id,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Popups: Open+Begin popup combined functions helpers to create context menus.

  • Helpers to do OpenPopup+BeginPopup where the Open action is triggered by e.g. hovering an item and right-clicking.
  • IMPORTANT: Notice that BeginPopupContextXXX takes ImGuiPopupFlags just like OpenPopup() and unlike BeginPopup(). For full consistency, we may add ImGuiWindowFlags to the BeginPopupContextXXX functions in the future.
  • IMPORTANT: If you ever used the left mouse button with BeginPopupContextXXX() helpers before 1.92.6:
    • Before this version, OpenPopupOnItemClick(), BeginPopupContextItem(), BeginPopupContextWindow(), BeginPopupContextVoid() had 'a ImGuiPopupFlags popup_flags = 1' default value in their function signature.
    • Before: Explicitly passing a literal 0 meant ImGuiPopupFlagsMouseButtonLeft. The default = 1 meant ImGuiPopupFlagsMouseButtonRight.
    • After: The default = 0 means ImGuiPopupFlagsMouseButtonRight. Explicitly passing a literal 1 also means ImGuiPopupFlagsMouseButtonRight (if legacy behavior are enabled) or will assert (if legacy behavior are disabled).
    • TL;DR: if you don't want to use right mouse button for popups, always specify it explicitly using a named ImGuiPopupFlags_MouseButtonXXXX value.
    • Read "API BREAKING CHANGES" 2026/01/07 (1.92.6) entry in imgui.cpp or GitHub topic #9157 for all details.// open+begin popup when clicked on last item. Use str_id==NULL to associate the popup to previous item. If you want to use that on a non-interactive item such as Text() you need to pass in an explicit ID here. read comments in .cpp!

Upstream link.

source
CImGui.BeginPopupContextVoid — Function
BeginPopupContextVoid() -> Bool
BeginPopupContextVoid(str_id) -> Bool
BeginPopupContextVoid(
    str_id,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Open+begin popup when clicked in void (where there are no windows).

Upstream link.

source
CImGui.BeginPopupContextWindow — Function
BeginPopupContextWindow() -> Bool
BeginPopupContextWindow(str_id) -> Bool
BeginPopupContextWindow(
    str_id,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Open+begin popup when clicked on current window.

Upstream link.

source
CImGui.BeginPopupEx — Method
BeginPopupEx(
    id::Integer,
    extra_window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Popups, Modals.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginPopupMenuEx — Method
BeginPopupMenuEx(
    id::Integer,
    label,
    extra_window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginPopupModal — Function
BeginPopupModal(name) -> Bool
BeginPopupModal(name, p_open) -> Bool
BeginPopupModal(
    name,
    p_open,
    flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Return true if the modal is open, and you can start outputting to it.

Upstream link.

source
CImGui.BeginTabBar — Function
BeginTabBar(str_id) -> Bool
BeginTabBar(
    str_id,
    flags::Union{CImGui.lib.ImGuiTabBarFlags_, Integer}
) -> Bool

Tab Bars, Tabs

  • Note: Tabs are automatically created by the docking system (when in 'docking' branch). Use this to create tab bars/tabs yourself.// create and append into a TabBar.

Upstream link.

source
CImGui.BeginTabBarEx — Method
BeginTabBarEx(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    bb::CImGui.lib.ImRect,
    flags::Union{CImGui.lib.ImGuiTabBarFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginTabItem — Function
BeginTabItem(label) -> Bool
BeginTabItem(label, p_open) -> Bool
BeginTabItem(
    label,
    p_open,
    flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer}
) -> Bool

Create a Tab. Returns true if the Tab is selected.

Upstream link.

source
CImGui.BeginTable — Function
BeginTable(str_id, columns) -> Bool
BeginTable(
    str_id,
    columns,
    flags::Union{CImGui.lib.ImGuiTableFlags_, Integer}
) -> Bool
BeginTable(
    str_id,
    columns,
    flags::Union{CImGui.lib.ImGuiTableFlags_, Integer},
    outer_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
BeginTable(
    str_id,
    columns,
    flags::Union{CImGui.lib.ImGuiTableFlags_, Integer},
    outer_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    inner_width
) -> Bool

Tables

  • Full-featured replacement for old Columns API.
  • See Demo->Tables for demo code. See top of imgui_tables.cpp for general commentary.
  • See ImGuiTableFlags_ and ImGuiTableColumnFlags_ enums for a description of available flags.

The typical call flow is:

    1. Call BeginTable(), early out if returning false.
    1. Optionally call TableSetupColumn() to submit column name/flags/defaults.
    1. Optionally call TableSetupScrollFreeze() to request scroll freezing of columns/rows.
    1. Optionally call TableHeadersRow() to submit a header row. Names are pulled from TableSetupColumn() data.
    1. Populate contents:
    • In most situations you can use TableNextRow() + TableSetColumnIndex(N) to start appending into a column.
    • If you are using tables as a sort of grid, where every column is holding the same type of contents, you may prefer using TableNextColumn() instead of TableNextRow() + TableSetColumnIndex(). TableNextColumn() will automatically wrap-around into the next row if needed.
    • IMPORTANT: Comparatively to the old Columns() API, we need to call TableNextColumn() for the first column!
    • Summary of possible call flow:
      • TableNextRow() -> TableSetColumnIndex(0) -> Text("Hello 0") -> TableSetColumnIndex(1) -> Text("Hello 1") // OK
      • TableNextRow() -> TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK
      •               TableNextColumn()      -> Text("Hello 0") -> TableNextColumn()      -> Text("Hello 1")  // OK: TableNextColumn() automatically gets to next row!
      • TableNextRow() -> Text("Hello 0") // Not OK! Missing TableSetColumnIndex() or TableNextColumn()! Text will not appear!
    1. Call EndTable().

Upstream link.

source
CImGui.BeginTableEx — Function
BeginTableEx(name, id::Integer, columns_count) -> Bool
BeginTableEx(
    name,
    id::Integer,
    columns_count,
    flags::Union{CImGui.lib.ImGuiTableFlags_, Integer}
) -> Bool
BeginTableEx(
    name,
    id::Integer,
    columns_count,
    flags::Union{CImGui.lib.ImGuiTableFlags_, Integer},
    outer_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
BeginTableEx(
    name,
    id::Integer,
    columns_count,
    flags::Union{CImGui.lib.ImGuiTableFlags_, Integer},
    outer_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    inner_width
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginTooltip — Method
BeginTooltip() -> Bool

Tooltips

  • Tooltips are windows following the mouse. They do not take focus away.
  • A tooltip window can contain items of any types.
  • SetTooltip() is more or less a shortcut for the 'if (BeginTooltip()) Text(...); EndTooltip(); ' idiom (with a subtlety that it discard any previously submitted tooltip)// begin/append a tooltip window.

Upstream link.

source
CImGui.BeginTooltipEx — Method
BeginTooltipEx(
    tooltip_flags::Union{CImGui.lib.ImGuiTooltipFlags_, Integer},
    extra_window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Tooltips.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BeginViewportSideBar — Method
BeginViewportSideBar(
    name,
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}},
    dir::CImGui.lib.ImGuiDir,
    size,
    window_flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer}
) -> Bool

Menus.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BringWindowToDisplayBehind — Method
BringWindowToDisplayBehind(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    above_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.BuildRanges — Method
BuildRanges(
    self::Ptr{CImGui.lib.ImFontGlyphRangesBuilder},
    out_ranges::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_ImWchar}}
)

Output new ranges.

Upstream link.

source
CImGui.BuildSortByKey — Method
BuildSortByKey(self::Ptr{CImGui.lib.ImGuiStorage})

Advanced: for quicker full rebuild of a storage (instead of an incremental one), you may add all your contents and then sort once.

Upstream link.

source
CImGui.Bullet — Method
Bullet()

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

Upstream link.

source
CImGui.Button — Function
Button(label) -> Bool
Button(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

Widgets: Main

  • Most widgets return true when the value has been changed or when pressed/selected
  • You may also use one of the many IsItemXXX functions (e.g. IsItemActive, IsItemHovered, etc.) to query widget state.// button.

Upstream link.

source
CImGui.ButtonBehavior — Function
ButtonBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    out_hovered,
    out_held
) -> Bool
ButtonBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    out_hovered,
    out_held,
    flags::Union{CImGui.lib.ImGuiButtonFlags_, Integer}
) -> Bool

Widgets low-level behaviors.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ButtonEx — Function
ButtonEx(label) -> Bool
ButtonEx(
    label,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
ButtonEx(
    label,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiButtonFlags_, Integer}
) -> Bool

Widgets.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CalcClipRectVisibleItemsY — Method
CalcClipRectVisibleItemsY(
    clip_rect::CImGui.lib.ImRect,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    items_height,
    out_visible_start,
    out_visible_end
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CalcItemSize — Method
CalcItemSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    default_w,
    default_h
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CalcItemWidth — Method
CalcItemWidth() -> Float32

Width of item given pushed settings and current cursor position. NOT necessarily the width of last item unlike most 'Item' functions.

Upstream link.

source
CImGui.CalcTextSize — Function
CalcTextSize(text) -> CImGui.lib.ImVec2
CalcTextSize(text, text_end) -> CImGui.lib.ImVec2
CalcTextSize(
    text,
    text_end,
    hide_text_after_double_hash
) -> CImGui.lib.ImVec2
CalcTextSize(
    text,
    text_end,
    hide_text_after_double_hash,
    wrap_width
) -> CImGui.lib.ImVec2

Text Utilities.

Upstream link.

source
CImGui.CalcTextSizeA — Function
CalcTextSizeA(
    self::Ptr{CImGui.lib.ImFont},
    size,
    max_width,
    wrap_width,
    text_begin
) -> CImGui.lib.ImVec2
CalcTextSizeA(
    self::Ptr{CImGui.lib.ImFont},
    size,
    max_width,
    wrap_width,
    text_begin,
    text_end
) -> CImGui.lib.ImVec2
CalcTextSizeA(
    self::Ptr{CImGui.lib.ImFont},
    size,
    max_width,
    wrap_width,
    text_begin,
    text_end,
    out_remaining
) -> CImGui.lib.ImVec2

Upstream link.

source
CImGui.CalcWorkRectPos — Method
CalcWorkRectPos(
    self::Ptr{CImGui.lib.ImGuiViewportP},
    inset_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2

Calculate work rect pos/size given a set of offset (we have 1 pair of offset for rect locked from last frame data, and 1 pair for currently building rect).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CalcWorkRectSize — Method
CalcWorkRectSize(
    self::Ptr{CImGui.lib.ImGuiViewportP},
    inset_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    inset_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CallContextHooks — Method
CallContextHooks(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    type::CImGui.lib.ImGuiContextHookType
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ChannelsSplit — Method
ChannelsSplit(self::Ptr{CImGui.lib.ImDrawList}, count)

Advanced: Channels

  • Use to split render into layers. By switching channels to can render out-of-order (e.g. submit FG primitives before BG primitives)
  • Use to minimize draw calls (e.g. if going back-and-forth between multiple clipping rectangles, prefer to append into separate channels then merge at the end)
  • This API shouldn't have been in ImDrawList in the first place! Prefer using your own persistent instance of ImDrawListSplitter as you can stack them. Using the ImDrawList::ChannelsXXXX you cannot stack a split over another.

Upstream link.

source
CImGui.CleanupIniSettings — Method
CleanupIniSettings(
    args::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiSettingsCleanupArgs}}
)

[BETA] Expected to turn into a public API. Please report if you are using this!

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Clear — Method
Clear(self::Ptr{CImGui.lib.ImDrawListSplitter})

Do not clear Channels[] so our allocations are reused next frame.

Upstream link.

source
CImGui.Clear — Method
Clear(self::Ptr{CImGui.lib.ImFontAtlas})

Clearing the atlas/fonts has little use nowadays, unless you want to batch remove all fonts.

  • Since 1.92, you can call ClearFonts() mid-frame, if you load new fonts afterwards.
  • As we are transitioning toward our new font system the semantic for those functions gets increasingly misleading and are often a source of issues. TL;DR; most likely, don't use any of those functions. We expect to obsolete/rework them.// Clear everything (fonts + textures). Don't call mid-frame!

Upstream link.

source
CImGui.Clear — Method
Clear(self::Ptr{CImGui.lib.ImGuiKeyRoutingTable})
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Clear — Method
Clear(self::Ptr{CImGui.lib.ImGuiMultiSelectTempData})

Zero-clear except IO as we preserve IO.Requests[] buffer allocation.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Clear — Method
Clear(self::Ptr{CImGui.lib.ImGuiStorage})
  • Get***() functions find pair, never add/allocate. Pairs are sorted so a query is O(log N)
  • Set***() functions find pair, insertion on demand if missing.
  • Sorted insertion is costly, paid once. A typical frame shouldn't need to insert any new pair.

Upstream link.

source
CImGui.Clear — Method
Clear(self::Ptr{CImGui.lib.ImGuiTypingSelectState})

We preserve remaining data for easier debugging.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ClearFlags — Method
ClearFlags(self::Ptr{CImGui.lib.ImGuiNextItemData})

Also cleared manually by ItemAdd()!

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ClearFonts — Method
ClearFonts(self::Ptr{CImGui.lib.ImFontAtlas})

Clear input+output font data/glyphs. New fonts and textures will be recreated afterwards.

Upstream link.

source
CImGui.ClearInputData — Method
ClearInputData(self::Ptr{CImGui.lib.ImFontAtlas})

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

Upstream link.

source
CImGui.ClearInputKeys — Method
ClearInputKeys(self::Ptr{CImGui.lib.ImGuiIO})

Clear current keyboard/gamepad state + current frame text input buffer. Equivalent to releasing all keys/buttons.

Upstream link.

source
CImGui.ClearTexData — Method
ClearTexData(self::Ptr{CImGui.lib.ImFontAtlas})

[OBSOLETE] Clear CPU-side copy of the texture data. Saves RAM once the texture has been copied to graphics memory.

Upstream link.

source
CImGui.ClipWith — Method
ClipWith(self::Ptr{CImGui.lib.ImRect}, r::CImGui.lib.ImRect)

Simple version, may lead to an inverted rectangle, which is fine for Contains/Overlaps test but not for display.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ClipWithFull — Method
ClipWithFull(
    self::Ptr{CImGui.lib.ImRect},
    r::CImGui.lib.ImRect
)

Full version, ensure both points are fully clipped.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CloneOutput — Method
CloneOutput(
    self::Ptr{CImGui.lib.ImDrawList}
) -> Ptr{CImGui.lib.ImDrawList}

Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer. For multi-threaded rendering, consider using imgui_threaded_rendering from https://github.com/ocornut/imgui_club instead.

Upstream link.

source
CImGui.CloseButton — Method
CloseButton(
    id::Integer,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

Widgets: Window Decorations.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ClosePopupsOverWindow — Method
ClosePopupsOverWindow(
    ref_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    restore_focus_to_window_under_popup
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CollapseButton — Method
CollapseButton(
    id::Integer,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    dock_node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CollapsingHeader — Function
CollapsingHeader(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_visible::Union{Ptr{Nothing}, Ref{Bool}}
) -> Bool
CollapsingHeader(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_visible::Union{Ptr{Nothing}, Ref{Bool}},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer}
) -> Bool

When 'pvisible != NULL': if '*pvisible==true' display an additional small close button on upper right of the header which will set the bool to false when clicked, if '*p_visible==false' don't display the header.

Upstream link.

source
CImGui.CollapsingHeader — Function
CollapsingHeader(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
CollapsingHeader(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer}
) -> Bool

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

Upstream link.

source
CImGui.ColorButton — Function
ColorButton(
    desc_id,
    col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
) -> Bool
ColorButton(
    desc_id,
    col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    flags::Union{CImGui.lib.ImGuiColorEditFlags_, Integer}
) -> Bool
ColorButton(
    desc_id,
    col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    flags::Union{CImGui.lib.ImGuiColorEditFlags_, Integer},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

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

Upstream link.

source
CImGui.ColorEdit3 — Function
ColorEdit3(label, col) -> Bool
ColorEdit3(
    label,
    col,
    flags::Union{CImGui.lib.ImGuiColorEditFlags_, Integer}
) -> Bool

Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little color square that can be left-clicked to open a picker, and right-clicked to open an option menu.)

  • Note that in C++ a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible.
  • You can pass the address of a first float element out of a contiguous structure, e.g. &myvector.x.

Upstream link.

source
CImGui.ColorPicker4 — Function
ColorPicker4(label, col) -> Bool
ColorPicker4(
    label,
    col,
    flags::Union{CImGui.lib.ImGuiColorEditFlags_, Integer}
) -> Bool
ColorPicker4(
    label,
    col,
    flags::Union{CImGui.lib.ImGuiColorEditFlags_, Integer},
    ref_col
) -> Bool

Upstream link.

source
CImGui.ColorTooltip — Method
ColorTooltip(
    text,
    col,
    flags::Union{CImGui.lib.ImGuiColorEditFlags_, Integer}
)

Color.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Columns — Function
Columns()
Columns(count)
Columns(count, id)
Columns(count, id, borders)

Legacy Columns API (prefer using Tables!)

  • You can also use SameLine(pos_x) to mimic simplified columns.

Upstream link.

source
CImGui.Combo — Function
Combo(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    current_item::Union{Ptr{Nothing}, Ref{Int32}},
    items::Vector{String}
) -> Bool
Combo(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    current_item::Union{Ptr{Nothing}, Ref{Int32}},
    items::Vector{String},
    popup_max_height_in_items::Integer
) -> Bool

Upstream link.

source
CImGui.Combo — Function
Combo(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    current_item::Union{Ptr{Nothing}, Ref{Int32}},
    items_separated_by_zeros::Union{Ptr{Int8}, String}
) -> Bool
Combo(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    current_item::Union{Ptr{Nothing}, Ref{Int32}},
    items_separated_by_zeros::Union{Ptr{Int8}, String},
    popup_max_height_in_items::Integer
) -> Bool

Separate items with \0 within a string, end item-list with \0\0. e.g. "One\0Two\0Three\0".

Upstream link.

source
CImGui.ContainsWithPad — Method
ContainsWithPad(
    self::Ptr{CImGui.lib.ImRect},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pad::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.CreateContext — Function
CreateContext() -> Ptr{CImGui.lib.ImGuiContext}
CreateContext(
    shared_font_atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}}
) -> Ptr{CImGui.lib.ImGuiContext}

Context creation and access

  • Each context create its own ImFontAtlas by default. You may instance one yourself and pass it to CreateContext() to share a font atlas between contexts.
  • DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions() for each static/DLL boundary you are calling from. Read "Context and Memory Allocators" section of imgui.cpp for details.

Upstream link.

source
CImGui.DataTypeApplyFromText — Function
DataTypeApplyFromText(
    buf,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    format
) -> Bool
DataTypeApplyFromText(
    buf,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    format,
    p_data_when_empty
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DataTypeApplyOp — Method
DataTypeApplyOp(
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    op,
    output,
    arg_1,
    arg_2
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DataTypeClamp — Method
DataTypeClamp(
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DataTypeCompare — Method
DataTypeCompare(
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    arg_1,
    arg_2
) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DataTypeFormatString — Method
DataTypeFormatString(
    buf,
    buf_size,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    format
) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DataTypeGetInfo — Method
DataTypeGetInfo(
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer}
) -> Ptr{CImGui.lib.ImGuiDataTypeInfo}

Data type helpers.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DataTypeIsZero — Method
DataTypeIsZero(
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DeIndexAllBuffers — Method
DeIndexAllBuffers(self::Ptr{CImGui.lib.ImDrawData})

Helper to convert all buffers from indexed to non-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering!

Upstream link.

source
CImGui.DebugAllocHook — Method
DebugAllocHook(
    info::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDebugAllocInfo}},
    frame_count,
    ptr,
    size
)

Debug Tools// size >= 0 : alloc, size = -1 : free.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugHookIdInfo — Method
DebugHookIdInfo(
    id::Integer,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    data_id,
    data_id_end
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugNodeDrawCmdShowMeshAndBoundingBox — Method
DebugNodeDrawCmdShowMeshAndBoundingBox(
    out_draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    draw_cmd::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawCmd}},
    show_mesh,
    show_aabb
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugNodeDrawList — Method
DebugNodeDrawList(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewportP}},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    label
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugNodeFontGlyph — Method
DebugNodeFontGlyph(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    glyph::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontGlyph}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugNodeFontGlyphsForSrcMask — Method
DebugNodeFontGlyphsForSrcMask(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}},
    src_mask
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugNodeTableSettings — Method
DebugNodeTableSettings(
    settings::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableSettings}},
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugNodeTexture — Function
DebugNodeTexture(
    tex::Union{Ptr{Nothing}, Ref{CImGui.lib.ImTextureData}},
    int_id
)
DebugNodeTexture(
    tex::Union{Ptr{Nothing}, Ref{CImGui.lib.ImTextureData}},
    int_id,
    highlight_rect::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlasRect}}
)

ID used to facilitate persisting the "current" texture.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugRenderViewportThumbnail — Method
DebugRenderViewportThumbnail(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewportP}},
    bb::CImGui.lib.ImRect
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DebugTextEncoding — Method
DebugTextEncoding(text)

Debug Utilities

  • Your main debugging friend is the ShowMetricsWindow() function.
  • Interactive tools are all accessible from the 'Dear ImGui Demo->Tools' menu.
  • Read https://github.com/ocornut/imgui/wiki/Debug-Tools for a description of all available debug tools.

Upstream link.

source
CImGui.DeclColumns — Method
DeclColumns(
    self::Ptr{CImGui.lib.ImGuiMenuColumns},
    w_icon,
    w_label,
    w_shortcut,
    w_mark
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DemoMarker — Method
DemoMarker(file, line, section)

Demo Doc Marker for e.g. imgui_explorer.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DestroyPlatformWindows — Method
DestroyPlatformWindows()

Call DestroyWindow platform functions for all viewports. call from backend Shutdown() if you need to close platform windows before imgui shutdown. otherwise will be called by DestroyContext().

Upstream link.

source
CImGui.DockBuilderAddNode — Function
DockBuilderAddNode() -> UInt32
DockBuilderAddNode(node_id::Integer) -> UInt32
DockBuilderAddNode(
    node_id::Integer,
    flags::Union{CImGui.lib.ImGuiDockNodeFlags_, Integer}
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockBuilderCopyDockSpace — Method
DockBuilderCopyDockSpace(
    src_dockspace_id::Integer,
    dst_dockspace_id::Integer,
    in_window_remap_pairs::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_const_charPtr}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockBuilderCopyNode — Method
DockBuilderCopyNode(
    src_node_id::Integer,
    dst_node_id::Integer,
    out_node_remap_pairs::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_ImGuiID}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockBuilderDockWindow — Method
DockBuilderDockWindow(window_name, node_id::Integer)

Docking - Builder function needs to be generally called before the node is used/submitted.

  • The DockBuilderXXX functions are designed to eventually become a public API, but it is too early to expose it and guarantee stability.
  • Do not hold on ImGuiDockNode* pointers! They may be invalidated by any split/merge/remove operation and every frame.
  • To create a DockSpace() node, make sure to set the ImGuiDockNodeFlagsDockSpace flag when calling DockBuilderAddNode(). You can create dockspace nodes (attached to a window) _or floating nodes (carry its own window) with this API.
  • DockBuilderSplitNode() create 2 child nodes within 1 node. The initial node becomes a parent node.
  • If you intend to split the node immediately after creation using DockBuilderSplitNode(), make sure to call DockBuilderSetNodeSize() beforehand. If you don't, the resulting split sizes may not be reliable.
  • Call DockBuilderFinish() after you are done.
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockBuilderRemoveNodeChildNodes — Method
DockBuilderRemoveNodeChildNodes(node_id::Integer)

Remove all split/hierarchy. All remaining docked windows will be re-docked to the remaining root node (node_id).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockBuilderSplitNode — Method
DockBuilderSplitNode(
    node_id::Integer,
    split_dir::CImGui.lib.ImGuiDir,
    size_ratio_for_node_at_dir,
    out_id_at_dir::Union{Ptr{Nothing}, Ref{Integer}, Ref{UInt32}},
    out_id_at_opposite_dir::Union{Ptr{Nothing}, Ref{Integer}, Ref{UInt32}}
) -> UInt32

Create 2 child nodes in this parent node.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextCalcDropPosForDocking — Method
DockContextCalcDropPosForDocking(
    target::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    target_node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}},
    payload_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    payload_node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}},
    split_dir::CImGui.lib.ImGuiDir,
    split_outer,
    out_pos::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextClearNodes — Method
DockContextClearNodes(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    root_id::Integer,
    clear_settings_refs
)

Use root_id==0 to clear all.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextFindNodeByID — Method
DockContextFindNodeByID(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    id::Integer
) -> Ptr{CImGui.lib.ImGuiDockNode}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextInitialize — Method
DockContextInitialize(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}}
)

Docking (some functions are only declared in imgui.cpp, see Docking section).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextProcessUndockNode — Method
DockContextProcessUndockNode(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextProcessUndockWindow — Function
DockContextProcessUndockWindow(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
DockContextProcessUndockWindow(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    clear_persistent_docking_ref
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextQueueDock — Method
DockContextQueueDock(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    target::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    target_node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}},
    payload::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    split_dir::CImGui.lib.ImGuiDir,
    split_ratio,
    split_outer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextQueueUndockNode — Method
DockContextQueueUndockNode(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockContextQueueUndockWindow — Method
DockContextQueueUndockWindow(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockNodeGetRootNode — Method
DockNodeGetRootNode(
    node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}}
) -> Ptr{CImGui.lib.ImGuiDockNode}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockNodeIsInHierarchyOf — Method
DockNodeIsInHierarchyOf(
    node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}},
    parent::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockNodeWindowMenuHandler_Default — Method
DockNodeWindowMenuHandler_Default(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}},
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DockSpace — Function
DockSpace(dockspace_id::Integer) -> UInt32
DockSpace(
    dockspace_id::Integer,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> UInt32
DockSpace(
    dockspace_id::Integer,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiDockNodeFlags_, Integer}
) -> UInt32
DockSpace(
    dockspace_id::Integer,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiDockNodeFlags_, Integer},
    window_class::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindowClass}}
) -> UInt32

Docking

  • Read https://github.com/ocornut/imgui/wiki/Docking for details.
  • Enable with io.ConfigFlags |= ImGuiConfigFlags_DockingEnable.
  • You can use many Docking facilities without calling any API.
    • Drag from window title bar or their tab to dock/undock. Hold SHIFT to disable docking.
    • Drag from window menu button (upper-left button) to undock an entire node (all windows).
    • When io.ConfigDockingWithShift == true, you instead need to hold SHIFT to enable docking.
  • DockSpaceOverViewport:
    • This is a helper to create an invisible window covering a viewport, then submit a DockSpace() into it.
    • Most applications can simply call DockSpaceOverViewport() once to allow docking windows into e.g. the edge of your screen. e.g. ImGui::NewFrame(); ImGui::DockSpaceOverViewport(); // Create a dockspace in main viewport. or: ImGui::NewFrame(); ImGui::DockSpaceOverViewport(0, nullptr, ImGuiDockNodeFlags_PassthruCentralNode); // Create a dockspace in main viewport, central node is transparent.
  • Dockspaces:
    • A dockspace is an explicit dock node within an existing window.
    • IMPORTANT: Dockspaces need to be submitted before any window they can host. Submit them early in your frame!
    • IMPORTANT: Dockspaces need to be kept alive if hidden, otherwise windows docked into it will be undocked. If you have e.g. multiple tabs with a dockspace inside each tab: submit the non-visible dockspaces with ImGuiDockNodeFlags_KeepAliveOnly.
    • See 'Demo->Examples->Dockspace' or 'Demo->Examples->Documents' for more detailed demos.
  • Programmatic docking:
    • There is no public API yet other than the very limited SetNextWindowDockID() function. Sorry for that!
    • Read https://github.com/ocornut/imgui/wiki/Docking for examples of how to use current internal API.

Upstream link.

source
CImGui.DockSpaceOverViewport — Function
DockSpaceOverViewport() -> UInt32
DockSpaceOverViewport(dockspace_id::Integer) -> UInt32
DockSpaceOverViewport(
    dockspace_id::Integer,
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}}
) -> UInt32
DockSpaceOverViewport(
    dockspace_id::Integer,
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}},
    flags::Union{CImGui.lib.ImGuiDockNodeFlags_, Integer}
) -> UInt32
DockSpaceOverViewport(
    dockspace_id::Integer,
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}},
    flags::Union{CImGui.lib.ImGuiDockNodeFlags_, Integer},
    window_class::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindowClass}}
) -> UInt32

Upstream link.

source
CImGui.DragBehavior — Method
DragBehavior(
    id::Integer,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_v,
    v_speed,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.DragFloat — Function
DragFloat(label, v) -> Bool
DragFloat(label, v, v_speed) -> Bool
DragFloat(label, v, v_speed, v_min) -> Bool
DragFloat(label, v, v_speed, v_min, v_max) -> Bool
DragFloat(label, v, v_speed, v_min, v_max, format) -> Bool
DragFloat(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Widgets: Drag Sliders

  • Ctrl+Click on any drag box to turn them into an input box. Manually input values aren't clamped by default and can go off-bounds. Use ImGuiSliderFlags_AlwaysClamp to always clamp.
  • For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every function, note that a 'float v[X]' function argument is the same as 'float* v', the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x
  • Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
  • Format string may also be set to NULL or use the default format ("%f" or "%d").
  • Speed are per-pixel of mouse movement (vspeed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For keyboard/gamepad navigation, minimum speed is Max(vspeed, minimumstepatgivenprecision).
  • Use vmin < vmax to clamp edits to given limits. Note that Ctrl+Click manual input can override those limits if ImGuiSliderFlags_AlwaysClamp is not used.
  • Use vmax = FLTMAX / INTMAX etc to avoid clamping to a maximum, same with vmin = -FLTMAX / INTMIN to avoid clamping to a minimum.
  • We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them.
  • Legacy: Pre-1.78 there are DragXXX() function signatures that take a final float power=1.0f' argument instead of theImGuiSliderFlags flags=0' argument. If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361// If vmin >= vmax we have no bound.

Upstream link.

source
CImGui.DragFloat2 — Function
DragFloat2(label, v) -> Bool
DragFloat2(label, v, v_speed) -> Bool
DragFloat2(label, v, v_speed, v_min) -> Bool
DragFloat2(label, v, v_speed, v_min, v_max) -> Bool
DragFloat2(label, v, v_speed, v_min, v_max, format) -> Bool
DragFloat2(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragFloat3 — Function
DragFloat3(label, v) -> Bool
DragFloat3(label, v, v_speed) -> Bool
DragFloat3(label, v, v_speed, v_min) -> Bool
DragFloat3(label, v, v_speed, v_min, v_max) -> Bool
DragFloat3(label, v, v_speed, v_min, v_max, format) -> Bool
DragFloat3(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragFloat4 — Function
DragFloat4(label, v) -> Bool
DragFloat4(label, v, v_speed) -> Bool
DragFloat4(label, v, v_speed, v_min) -> Bool
DragFloat4(label, v, v_speed, v_min, v_max) -> Bool
DragFloat4(label, v, v_speed, v_min, v_max, format) -> Bool
DragFloat4(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragFloatRange2 — Function
DragFloatRange2(label, v_current_min, v_current_max) -> Bool
DragFloatRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed
) -> Bool
DragFloatRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min
) -> Bool
DragFloatRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max
) -> Bool
DragFloatRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max,
    format
) -> Bool
DragFloatRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max,
    format,
    format_max
) -> Bool
DragFloatRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max,
    format,
    format_max,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragInt — Function
DragInt(label, v) -> Bool
DragInt(label, v, v_speed) -> Bool
DragInt(label, v, v_speed, v_min) -> Bool
DragInt(label, v, v_speed, v_min, v_max) -> Bool
DragInt(label, v, v_speed, v_min, v_max, format) -> Bool
DragInt(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

If vmin >= vmax we have no bound.

Upstream link.

source
CImGui.DragInt2 — Function
DragInt2(label, v) -> Bool
DragInt2(label, v, v_speed) -> Bool
DragInt2(label, v, v_speed, v_min) -> Bool
DragInt2(label, v, v_speed, v_min, v_max) -> Bool
DragInt2(label, v, v_speed, v_min, v_max, format) -> Bool
DragInt2(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragInt3 — Function
DragInt3(label, v) -> Bool
DragInt3(label, v, v_speed) -> Bool
DragInt3(label, v, v_speed, v_min) -> Bool
DragInt3(label, v, v_speed, v_min, v_max) -> Bool
DragInt3(label, v, v_speed, v_min, v_max, format) -> Bool
DragInt3(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragInt4 — Function
DragInt4(label, v) -> Bool
DragInt4(label, v, v_speed) -> Bool
DragInt4(label, v, v_speed, v_min) -> Bool
DragInt4(label, v, v_speed, v_min, v_max) -> Bool
DragInt4(label, v, v_speed, v_min, v_max, format) -> Bool
DragInt4(
    label,
    v,
    v_speed,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragIntRange2 — Function
DragIntRange2(label, v_current_min, v_current_max) -> Bool
DragIntRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed
) -> Bool
DragIntRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min
) -> Bool
DragIntRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max
) -> Bool
DragIntRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max,
    format
) -> Bool
DragIntRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max,
    format,
    format_max
) -> Bool
DragIntRange2(
    label,
    v_current_min,
    v_current_max,
    v_speed,
    v_min,
    v_max,
    format,
    format_max,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragScalar — Function
DragScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data
) -> Bool
DragScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    v_speed
) -> Bool
DragScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    v_speed,
    p_min
) -> Bool
DragScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    v_speed,
    p_min,
    p_max
) -> Bool
DragScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    v_speed,
    p_min,
    p_max,
    format
) -> Bool
DragScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    v_speed,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.DragScalarN — Function
DragScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components
) -> Bool
DragScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    v_speed
) -> Bool
DragScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    v_speed,
    p_min
) -> Bool
DragScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    v_speed,
    p_min,
    p_max
) -> Bool
DragScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    v_speed,
    p_min,
    p_max,
    format
) -> Bool
DragScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    v_speed,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.Draw — Function
Draw(self::Ptr{CImGui.lib.ImGuiTextFilter}) -> Bool
Draw(self::Ptr{CImGui.lib.ImGuiTextFilter}, label) -> Bool
Draw(
    self::Ptr{CImGui.lib.ImGuiTextFilter},
    label,
    width
) -> Bool

Helper calling InputText+Build.

Upstream link.

source
CImGui.Dummy — Method
Dummy(size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T})

Add a dummy item of given size. unlike InvisibleButton(), Dummy() won't take the mouse click or be navigable into.

Upstream link.

source
CImGui.End — Method
End(self::Ptr{CImGui.lib.ImGuiListClipper})

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

Upstream link.

source
CImGui.End — Method
End(self::Ptr{CImGui.lib.ImGuiTextBuffer}) -> Ptr{Int8}

Buf is zero-terminated, so end() will point on the zero-terminator.

Upstream link.

source
CImGui.EndBoxSelect — Method
EndBoxSelect(
    scope_rect::CImGui.lib.ImRect,
    ms_flags::Union{CImGui.lib.ImGuiMultiSelectFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.EndFrame — Method
EndFrame()

Ends the Dear ImGui frame. automatically called by Render(). If you don't need to render data (skipping rendering) you may call EndFrame() without Render()... but you'll have wasted CPU already! If you don't need to render, better to not create any windows and not call NewFrame() at all!

Upstream link.

source
CImGui.EndGroup — Method
EndGroup()

Unlock horizontal starting position + capture the whole group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.).

Upstream link.

source
CImGui.ExtendHitBoxWhenNearViewportEdge — Method
ExtendHitBoxWhenNearViewportEdge(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    bb::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}},
    threshold,
    axis::CImGui.lib.ImGuiAxis
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FindBestWindowPosForPopupEx — Method
FindBestWindowPosForPopupEx(
    ref_pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    last_dir::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDir}},
    r_outer::CImGui.lib.ImRect,
    r_avoid::CImGui.lib.ImRect,
    policy::CImGui.lib.ImGuiPopupPositionPolicy
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FindBlockingModal — Method
FindBlockingModal(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
) -> Ptr{CImGui.lib.ImGuiWindow}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FindGlyph — Method
FindGlyph(
    self::Ptr{CImGui.lib.ImFontBaked},
    c::UInt16
) -> Ptr{CImGui.lib.ImFontGlyph}

Return U+FFFD glyph if requested glyph doesn't exists.

Upstream link.

source
CImGui.FindOrCreateColumns — Method
FindOrCreateColumns(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    id::Integer
) -> Ptr{CImGui.lib.ImGuiOldColumns}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FindRenderedTextEnd — Function
FindRenderedTextEnd(text) -> Ptr{Int8}
FindRenderedTextEnd(text, text_end) -> Ptr{Int8}

Find the optional ## from which we stop displaying text.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FocusItem — Method
FocusItem()

Focus/Activation This should be part of a larger set of API: FocusItem(offset = -1), FocusItemByID(id), ActivateItem(offset = -1), ActivateItemByID(id) etc. which are Much harder to design and implement than expected. I have a couple of private branches on this matter but it's not simple. For now implementing the easy ones.// Focus last item (no selection/activation).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FocusTopMostWindowUnderOne — Method
FocusTopMostWindowUnderOne(
    under_this_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    ignore_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    filter_viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}},
    flags::Union{CImGui.lib.ImGuiFocusRequestFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.FocusWindow — Function
FocusWindow(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
FocusWindow(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    flags::Union{CImGui.lib.ImGuiFocusRequestFlags_, Integer}
)

Windows: Display Order and Focus Order.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetBL — Method
GetBL(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec2

Bottom-left.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetBR — Method
GetBR(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec2

Bottom-right.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetBackgroundDrawList — Function
GetBackgroundDrawList() -> Ptr{CImGui.lib.ImDrawList}
GetBackgroundDrawList(
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}}
) -> Ptr{CImGui.lib.ImDrawList}

Background/Foreground Draw Lists// get background draw list for the given viewport or viewport associated to the current window. this draw list will be the first rendering one. Useful to quickly draw shapes/text behind dear imgui contents.

Upstream link.

source
CImGui.GetBool — Function
GetBool(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Bool
GetBool(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Bool

Upstream link.

source
CImGui.GetBoolRef — Function
GetBoolRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Ptr{Bool}
GetBoolRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Ptr{Bool}

Upstream link.

source
CImGui.GetClipboardText — Method
GetClipboardText() -> Ptr{Int8}

Clipboard Utilities

  • Also see the LogToClipboard() function to capture GUI into clipboard, or easily output text data to the clipboard.

Upstream link.

source
CImGui.GetColorU32 — Function
GetColorU32(
    idx::Union{CImGui.lib.ImGuiCol_, Integer}
) -> UInt32
GetColorU32(
    idx::Union{CImGui.lib.ImGuiCol_, Integer},
    alpha_mul::Real
) -> UInt32

Retrieve given style color with style alpha applied and optional extra alpha multiplier, packed as a 32-bit value suitable for ImDrawList.

Upstream link.

source
CImGui.GetColorU32 — Function
GetColorU32(col::Integer) -> UInt32
GetColorU32(col::Integer, alpha_mul::Real) -> UInt32

Retrieve given color with style alpha applied, packed as a 32-bit value suitable for ImDrawList.

Upstream link.

source
CImGui.GetColorU32 — Method
GetColorU32(
    col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
) -> UInt32

Retrieve given color with style alpha applied, packed as a 32-bit value suitable for ImDrawList.

Upstream link.

source
CImGui.GetColumnOffset — Function
GetColumnOffset() -> Float32
GetColumnOffset(column_index) -> Float32

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.0f.

Upstream link.

source
CImGui.GetColumnSettings — Method
GetColumnSettings(
    self::Ptr{CImGui.lib.ImGuiTableSettings}
) -> Ptr{CImGui.lib.ImGuiTableColumnSettings}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetCursorScreenPos — Method
GetCursorScreenPos() -> CImGui.lib.ImVec2

Layout cursor positioning

  • By "cursor" we mean the current output position.
  • The typical widget behavior is to output themselves at the current cursor position, then move the cursor one line down.
  • You can call SameLine() between widgets to undo the last carriage return and output at the right of the preceding widget.
  • YOU CAN DO 99% OF WHAT YOU NEED WITH ONLY GetCursorScreenPos() and GetContentRegionAvail().
  • Attention! We currently have inconsistencies between window-local and absolute positions we will aim to fix with future API:
    • Absolute coordinate: GetCursorScreenPos(), SetCursorScreenPos(), all ImDrawList:: functions. -> this is the preferred way forward.
    • Window-local coordinates: SameLine(offset), GetCursorPos(), SetCursorPos(), GetCursorStartPos(), PushTextWrapPos()
    • Window-local coordinates: GetContentRegionMax(), GetWindowContentRegionMin(), GetWindowContentRegionMax() –> all obsoleted. YOU DON'T NEED THEM.
  • GetCursorScreenPos() = GetCursorPos() + GetWindowPos(). GetWindowPos() is almost only ever useful to convert from window-local to absolute coordinates. Try not to use it.// cursor position, absolute coordinates. THIS IS YOUR BEST FRIEND (prefer using this rather than GetCursorPos(), also more useful to work with ImDrawList API).

Upstream link.

source
CImGui.GetCursorStartPos — Method
GetCursorStartPos() -> CImGui.lib.ImVec2

[window-local] initial cursor position, in window-local coordinates. Call GetCursorScreenPos() after Begin() to get the absolute coordinates version.

Upstream link.

source
CImGui.GetCustomRect — Method
GetCustomRect(
    self::Ptr{CImGui.lib.ImFontAtlas},
    id::Integer,
    out_r::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlasRect}}
) -> Bool

Get rectangle coordinates for current texture. Valid immediately, never store this (read above)!

Upstream link.

source
CImGui.GetDragDropPayload — Method
GetDragDropPayload() -> Ptr{CImGui.lib.ImGuiPayload}

Peek directly into the current payload from anywhere. returns NULL when drag and drop is finished or inactive. use ImGuiPayload::IsDataType() to test for the payload type.

Upstream link.

source
CImGui.GetDrawData — Method
GetDrawData() -> Ptr{CImGui.lib.ImDrawData}

Valid after Render() and until the next call to NewFrame(). Call ImGuiImplXXXXRenderDrawData() function in your Renderer Backend to render.

Upstream link.

source
CImGui.GetFloat — Function
GetFloat(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Float32
GetFloat(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Float32

Upstream link.

source
CImGui.GetFloatRef — Function
GetFloatRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Ptr{Float32}
GetFloatRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Ptr{Float32}

Upstream link.

source
CImGui.GetFontBaked — Function
GetFontBaked(
    self::Ptr{CImGui.lib.ImFont},
    font_size
) -> Ptr{CImGui.lib.ImFontBaked}
GetFontBaked(
    self::Ptr{CImGui.lib.ImFont},
    font_size,
    density
) -> Ptr{CImGui.lib.ImFontBaked}

[Internal] Don't use! 'maxwidth' stops rendering after a certain width (could be turned into a 2d size). FLTMAX to disable. 'wrap_width' enable automatic word-wrapping across multiple lines to fit into given width. 0.0f to disable.// Get or create baked data for given size.

Upstream link.

source
CImGui.GetFontSize — Method
GetFontSize() -> Float32

Get current scaled font size (= height in pixels). AFTER global scale factors applied. IMPORTANT DO NOT PASS THIS VALUE TO PushFont()! Use ImGui::GetStyle().FontSizeBase to get value before global scale factors.

Upstream link.

source
CImGui.GetFontTexUvWhitePixel — Method
GetFontTexUvWhitePixel() -> CImGui.lib.ImVec2

Style read access

  • Use the ShowStyleEditor() function to interactively see/edit the colors.// get UV coordinate for a white pixel, useful to draw custom shapes via the ImDrawList API.

Upstream link.

source
CImGui.GetForegroundDrawList — Function
GetForegroundDrawList() -> Ptr{CImGui.lib.ImDrawList}
GetForegroundDrawList(
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewport}}
) -> Ptr{CImGui.lib.ImDrawList}

Get foreground draw list for the given viewport or viewport associated to the current window. this draw list will be the top-most rendered one. Useful to quickly draw shapes/text over dear imgui contents.

Upstream link.

source
CImGui.GetGlyphRangesDefault — Method
GetGlyphRangesDefault(
    self::Ptr{CImGui.lib.ImFontAtlas}
) -> Ptr{UInt16}

Since 1.92: specifying glyph ranges is only useful/necessary if your backend doesn't support ImGuiBackendFlags_RendererHasTextures!// Basic Latin, Extended Latin.

Upstream link.

source
CImGui.GetID — Function
GetID(
    self::Ptr{CImGui.lib.ImGuiWindow},
    str::Union{Ptr{Int8}, String}
) -> UInt32
GetID(
    self::Ptr{CImGui.lib.ImGuiWindow},
    str::Union{Ptr{Int8}, String},
    str_end::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetID — Method
GetID(
    self::Ptr{CImGui.lib.ImGuiWindow},
    n::Integer
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetID — Method
GetID(
    self::Ptr{CImGui.lib.ImGuiWindow},
    ptr::Ref{Nothing}
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetID — Method
GetID(str_id::Union{Ptr{Int8}, String}) -> UInt32

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

Upstream link.

source
CImGui.GetIDFromPos — Method
GetIDFromPos(
    self::Ptr{CImGui.lib.ImGuiWindow},
    p_abs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetIDWithSeed — Method
GetIDWithSeed(
    str_id_begin::Union{Ptr{Int8}, Ptr{Nothing}, String},
    str_id_end::Union{Ptr{Int8}, Ptr{Nothing}, String},
    seed::Integer
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetIO — Method
GetIO(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}}
) -> Ptr{CImGui.lib.ImGuiIO}

Windows We should always have a CurrentWindow in the stack (there is an implicit "Debug" window) If this ever crashes because g.CurrentWindow is NULL, it means that either:

  • ImGui::NewFrame() has never been called, which is illegal.
  • You are calling ImGui functions after ImGui::EndFrame()/ImGui::Render() and before the next ImGui::NewFrame(), which is also illegal.
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetIO — Method
GetIO() -> Ptr{CImGui.lib.ImGuiIO}

Main// access the ImGuiIO structure (mouse/keyboard/gamepad inputs, time, various configuration options/flags).

Upstream link.

source
CImGui.GetInputTextState — Method
GetInputTextState(
    id::Integer
) -> Ptr{CImGui.lib.ImGuiInputTextState}

Get input text state if active.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetInt — Function
GetInt(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Int32
GetInt(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Int32

Upstream link.

source
CImGui.GetIntRef — Function
GetIntRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Ptr{Int32}
GetIntRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Ptr{Int32}
  • Get***Ref() functions finds pair, insert on demand if missing, return pointer. Useful if you intend to do Get+Set.
  • References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
  • A typical use case where this is convenient for quick hacking (e.g. add storage during a live Edit&Continue session if you can't modify existing struct) float* pvar = ImGui::GetFloatRef(key); ImGui::SliderFloat("var", pvar, 0, 100.0f); some_var += *pvar;.

Upstream link.

source
CImGui.GetItemClickedCountWithSingleClickDelay — Function
GetItemClickedCountWithSingleClickDelay() -> Int32
GetItemClickedCountWithSingleClickDelay(
    mouse_button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Int32
GetItemClickedCountWithSingleClickDelay(
    mouse_button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    delay
) -> Int32

[BETA] building block for disambiguation between single-click and double-click. Returns 1 on single-click but delayed by io.MouseSingleClickDelay after mouse release. Returns 2+ on double-click or repeated clicks.

Upstream link.

source
CImGui.GetKeyData — Method
GetKeyData(
    key::CImGui.lib.ImGuiKey
) -> Ptr{CImGui.lib.ImGuiKeyData}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetKeyData — Method
GetKeyData(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    key::CImGui.lib.ImGuiKey
) -> Ptr{CImGui.lib.ImGuiKeyData}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetKeyMagnitude2d — Method
GetKeyMagnitude2d(
    key_left::CImGui.lib.ImGuiKey,
    key_right::CImGui.lib.ImGuiKey,
    key_up::CImGui.lib.ImGuiKey,
    key_down::CImGui.lib.ImGuiKey
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetKeyName — Method
GetKeyName(key::CImGui.lib.ImGuiKey) -> Ptr{Int8}

[DEBUG] returns English name of the key. Those names are provided for debugging purpose and are not meant to be saved persistently nor compared.

Upstream link.

source
CImGui.GetKeyOwner — Method
GetKeyOwner(key::CImGui.lib.ImGuiKey) -> UInt32

[EXPERIMENTAL] Low-Level: Key/Input Ownership

  • The idea is that instead of "eating" a given input, we can link to an owner id.
  • Ownership is most often claimed as a result of reacting to a press/down event (but occasionally may be claimed ahead).
  • Input queries can then read input by specifying ImGuiKeyOwnerAny (== 0), ImGuiKeyOwnerNoOwner (== -1) or a custom ID.
  • Legacy input queries (without specifying an owner or Any or _None) are equivalent to using ImGuiKeyOwnerAny (== 0).
  • Input ownership is automatically released on the frame after a key is released. Therefore:
    • for ownership registration happening as a result of a down/press event, the SetKeyOwner() call may be done once (common case).
    • for ownership registration happening ahead of a down/press event, the SetKeyOwner() call needs to be made every frame (happens if e.g. claiming ownership on hover).
  • SetItemKeyOwner() is a shortcut for common simple case. A custom widget will probably want to call SetKeyOwner() multiple times directly based on its interaction state.
  • This is marked experimental because not all widgets are fully honoring the Set/Test idioms. We will need to move forward step by step. Please open a GitHub Issue to submit your usage scenario or if there's a use case you need solved.
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetKeyOwnerData — Method
GetKeyOwnerData(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    key::CImGui.lib.ImGuiKey
) -> Ptr{CImGui.lib.ImGuiKeyOwnerData}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetKeyPressedAmount — Method
GetKeyPressedAmount(
    key::CImGui.lib.ImGuiKey,
    repeat_delay,
    rate
) -> Int32

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.

Upstream link.

source
CImGui.GetMainRect — Method
GetMainRect(
    self::Ptr{CImGui.lib.ImGuiViewportP}
) -> CImGui.lib.ImRect

Helpers to retrieve ImRect (we don't need to store BuildWorkRect as every access tend to change it, hence the code asymmetry).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetMainViewport — Method
GetMainViewport() -> Ptr{CImGui.lib.ImGuiViewport}

Viewports

  • Currently represents the Platform Window created by the application which is hosting our Dear ImGui windows.
  • In 'docking' branch with multi-viewport enabled, we extend this concept to have multiple active viewports.
  • In the future we will extend this concept further to also represent Platform Monitor and support a "no main platform window" operation mode.// return primary/default viewport. This can never be NULL.

Upstream link.

source
CImGui.GetMouseClickedCount — Method
GetMouseClickedCount(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Int32

Return the number of successive mouse-clicks at the time where a click happen (otherwise 0).

Upstream link.

source
CImGui.GetMouseCursor — Method
GetMouseCursor() -> Int32

Get desired mouse cursor shape. Important: 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.

Upstream link.

source
CImGui.GetMouseDragDelta — Function
GetMouseDragDelta() -> CImGui.lib.ImVec2
GetMouseDragDelta(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> CImGui.lib.ImVec2
GetMouseDragDelta(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    lock_threshold
) -> CImGui.lib.ImVec2

Return the delta from the initial clicking position while the mouse button is pressed or was just released. This is locked and return 0.0f until the mouse moves past a distance threshold at least once (uses io.MouseDraggingThreshold if lock_threshold < 0.0f).

Upstream link.

source
CImGui.GetName — Method
GetName(
    self::Ptr{CImGui.lib.ImGuiWindowSettings}
) -> Ptr{Int8}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetNextSelectedItem — Method
GetNextSelectedItem(
    self::Ptr{CImGui.lib.ImGuiSelectionBasicStorage},
    opaque_it,
    out_id::Union{Ptr{Nothing}, Ref{Integer}, Ref{UInt32}}
) -> Bool

Iterate selection with 'void* it = NULL; ImGuiID id; while (selection.GetNextSelectedItem(&it, &id)) ... '.

Upstream link.

source
CImGui.GetPlatformIO — Method
GetPlatformIO(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}}
) -> Ptr{CImGui.lib.ImGuiPlatformIO}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetPlatformIO — Method
GetPlatformIO() -> Ptr{CImGui.lib.ImGuiPlatformIO}

Access the ImGuiPlatformIO structure (mostly hooks/functions to connect to platform/renderer and OS Clipboard, IME etc.).

Upstream link.

source
CImGui.GetScale — Method
GetScale() -> Float32

FIXME-DPI: I don't want to formalize this just yet. Because reasons. Please don't use.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetScrollX — Method
GetScrollX() -> Float32

Windows Scrolling

  • Any change of Scroll will be applied at the beginning of next frame in the first call to Begin().
  • You may instead use SetNextWindowScroll() prior to calling Begin() to avoid this delay, as an alternative to using SetScrollX()/SetScrollY().// get scrolling amount [0 .. GetScrollMaxX()].

Upstream link.

source
CImGui.GetSize — Method
GetSize(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetStyle — Method
GetStyle() -> Ptr{CImGui.lib.ImGuiStyle}

Access the Style structure (colors, sizes). Always use PushStyleColor(), PushStyleVar() to modify style mid-frame!

Upstream link.

source
CImGui.GetStyleColorVec4 — Method
GetStyleColorVec4(
    idx::Union{CImGui.lib.ImGuiCol_, Integer}
) -> Ptr{CImGui.lib.ImVec4}

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

Upstream link.

source
CImGui.GetStyleVarInfo — Method
GetStyleVarInfo(
    idx::Union{CImGui.lib.ImGuiStyleVar_, Integer}
) -> Ptr{CImGui.lib.ImGuiStyleVarInfo}

Parameter stacks (shared).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetTL — Method
GetTL(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec2

Top-left.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetTR — Method
GetTR(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec2

Top-right.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetTexID — Method
GetTexID(self::Ptr{CImGui.lib.ImDrawCmd}) -> UInt64

Since 1.83: returns ImTextureID associated with this draw call. Warning: DO NOT assume this is always same as 'TextureId' (we will change this function for an upcoming feature) Since 1.92: removed ImDrawCmd::TextureId field, the getter function must be used!// == (TexRef.TexData ? TexRef.TexData->TexID : TexRef._TexID).

Upstream link.

source
CImGui.GetTexID — Method
GetTexID(self::Ptr{CImGui.lib.ImTextureRef}) -> UInt64

== (_TexData ? _TexData->TexID : _TexID) // Implemented below in the file.

Upstream link.

source
CImGui.GetText — Method
GetText(
    self::Ptr{CImGui.lib.ImGuiInputTextState}
) -> Ptr{Int8}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetTypingSelectRequest — Function
GetTypingSelectRequest(

) -> Ptr{CImGui.lib.ImGuiTypingSelectRequest}
GetTypingSelectRequest(
    flags::Union{CImGui.lib.ImGuiTypingSelectFlags_, Integer}
) -> Ptr{CImGui.lib.ImGuiTypingSelectRequest}

Typing-Select API (provide Windows Explorer style "select items by typing partial name" + "cycle through items by typing same letter" feature) (this is currently not documented nor used by main library, but should work. See "widgetstypingselect" in imguitest_suite for usage code. Please let us know if you use this!).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetVarPtr — Method
GetVarPtr(
    self::Ptr{CImGui.lib.ImGuiStyleVarInfo},
    parent
) -> Ptr{Nothing}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetVersion — Method
GetVersion() -> Ptr{Int8}

Get the compiled version string e.g. "1.80 WIP" (essentially the value for IMGUI_VERSION from the compiled version of imgui.cpp).

Upstream link.

source
CImGui.GetVoidPtrRef — Function
GetVoidPtrRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Ptr{Ptr{Nothing}}
GetVoidPtrRef(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Ptr{Ptr{Nothing}}

Upstream link.

source
CImGui.GetWindowPos — Method
GetWindowPos() -> CImGui.lib.ImVec2

Get current window position in screen space (IT IS UNLIKELY YOU EVER NEED TO USE THIS. Consider always using GetCursorScreenPos() and GetContentRegionAvail() instead).

Upstream link.

source
CImGui.GetWindowScrollbarID — Method
GetWindowScrollbarID(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    axis::CImGui.lib.ImGuiAxis
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetWindowScrollbarRect — Method
GetWindowScrollbarRect(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    axis::CImGui.lib.ImGuiAxis
) -> CImGui.lib.ImRect
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.GetWindowSize — Method
GetWindowSize() -> CImGui.lib.ImVec2

Get current window size (IT IS UNLIKELY YOU EVER NEED TO USE THIS. Consider always using GetCursorScreenPos() and GetContentRegionAvail() instead).

Upstream link.

source
CImGui.HelpMarker — Method
HelpMarker(msg::AbstractString)

A port of the HelpMarker() function from the Dear ImGui demo. This will draw a grayed out '(?)' text on the screen with msg as the tooltip.

source
CImGui.ImBezierCubicCalc — Method
ImBezierCubicCalc(
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    t
) -> CImGui.lib.ImVec2

Helpers: Geometry.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImBezierCubicClosestPoint — Method
ImBezierCubicClosestPoint(
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    num_segments
) -> CImGui.lib.ImVec2

For curves with explicit number of segments.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImBezierCubicClosestPointCasteljau — Method
ImBezierCubicClosestPointCasteljau(
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    tess_tol
) -> CImGui.lib.ImVec2

For auto-tessellated curves you can use tess_tol = style.CurveTessellationTol.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImBezierQuadraticCalc — Method
ImBezierQuadraticCalc(
    p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    t
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImCeilFast — Method
ImCeilFast(f) -> Float32

Consider using the the bit-hack version (search for "0x1p120f").

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImClamp — Method
ImClamp(
    v::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    mn::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    mx::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImDot — Method
ImDot(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFileLoadToMemory — Function
ImFileLoadToMemory(filename, mode) -> Ptr{Nothing}
ImFileLoadToMemory(
    filename,
    mode,
    out_file_size
) -> Ptr{Nothing}
ImFileLoadToMemory(
    filename,
    mode,
    out_file_size,
    padding_bytes
) -> Ptr{Nothing}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFileRead — Method
ImFileRead(
    data,
    size::UInt64,
    count::UInt64,
    file::Ptr{Base.Libc.FILE}
) -> UInt64
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFileWrite — Method
ImFileWrite(
    data,
    size::UInt64,
    count::UInt64,
    file::Ptr{Base.Libc.FILE}
) -> UInt64
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFloor — Method
ImFloor(f::Real) -> Float32

Decent replacement for floorf().

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFloor — Method
ImFloor(
    v::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedAdd — Method
ImFontAtlasBakedAdd(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size,
    font_rasterizer_density,
    baked_id::Integer
) -> Ptr{CImGui.lib.ImFontBaked}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedAddFontGlyph — Method
ImFontAtlasBakedAddFontGlyph(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}},
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    in_glyph::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontGlyph}}
) -> Ptr{CImGui.lib.ImFontGlyph}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedAddFontGlyphAdvancedX — Method
ImFontAtlasBakedAddFontGlyphAdvancedX(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}},
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    codepoint::UInt16,
    advance_x
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedDiscard — Method
ImFontAtlasBakedDiscard(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedDiscardFontGlyph — Method
ImFontAtlasBakedDiscardFontGlyph(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}},
    glyph::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontGlyph}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedGetClosestMatch — Method
ImFontAtlasBakedGetClosestMatch(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size,
    font_rasterizer_density
) -> Ptr{CImGui.lib.ImFontBaked}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedGetOrAdd — Method
ImFontAtlasBakedGetOrAdd(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size,
    font_rasterizer_density
) -> Ptr{CImGui.lib.ImFontBaked}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBakedSetFontGlyphBitmap — Method
ImFontAtlasBakedSetFontGlyphBitmap(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}},
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    glyph::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontGlyph}},
    r::Union{Ptr{Nothing}, Ref{CImGui.lib.ImTextureRect}},
    src_pixels,
    src_fmt::CImGui.lib.ImTextureFormat,
    src_pitch
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBuildGetOversampleFactors — Method
ImFontAtlasBuildGetOversampleFactors(
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}},
    baked::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontBaked}},
    out_oversample_h,
    out_oversample_v
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBuildNotifySetFont — Method
ImFontAtlasBuildNotifySetFont(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    old_font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    new_font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBuildSetupFontLoader — Method
ImFontAtlasBuildSetupFontLoader(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font_loader::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontLoader}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasBuildSetupFontSpecialGlyphs — Method
ImFontAtlasBuildSetupFontSpecialGlyphs(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasFontDiscardBakes — Method
ImFontAtlasFontDiscardBakes(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    unused_frames
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasFontInitOutput — Method
ImFontAtlasFontInitOutput(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}}
) -> Bool

Using FontDestroyOutput/FontInitOutput sequence useful notably if font loader params have changed.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasFontSourceAddToFont — Method
ImFontAtlasFontSourceAddToFont(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasFontSourceInit — Method
ImFontAtlasFontSourceInit(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    src::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasGetMouseCursorTexData — Method
ImFontAtlasGetMouseCursorTexData(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    cursor_type::Union{CImGui.lib.ImGuiMouseCursor_, Integer},
    out_offset::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    out_size::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    out_uv_border,
    out_uv_fill
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasPackAddRect — Function
ImFontAtlasPackAddRect(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    w,
    h
) -> Int32
ImFontAtlasPackAddRect(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    w,
    h,
    overwrite_entry::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlasRectEntry}}
) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasPackGetRect — Method
ImFontAtlasPackGetRect(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    id::Integer
) -> Ptr{CImGui.lib.ImTextureRect}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasTextureAdd — Method
ImFontAtlasTextureAdd(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    w,
    h
) -> Ptr{CImGui.lib.ImTextureData}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasTextureBlockConvert — Method
ImFontAtlasTextureBlockConvert(
    src_pixels,
    src_fmt::CImGui.lib.ImTextureFormat,
    src_pitch,
    dst_pixels,
    dst_fmt::CImGui.lib.ImTextureFormat,
    dst_pitch,
    w,
    h
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasTextureBlockCopy — Method
ImFontAtlasTextureBlockCopy(
    src_tex::Union{Ptr{Nothing}, Ref{CImGui.lib.ImTextureData}},
    src_x,
    src_y,
    dst_tex::Union{Ptr{Nothing}, Ref{CImGui.lib.ImTextureData}},
    dst_x,
    dst_y,
    w,
    h
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontAtlasTextureGrow — Function
ImFontAtlasTextureGrow(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}}
)
ImFontAtlasTextureGrow(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    old_w
)
ImFontAtlasTextureGrow(
    atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}},
    old_w,
    old_h
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontCalcTextSizeEx — Method
ImFontCalcTextSizeEx(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    size,
    max_width,
    wrap_width,
    text_begin,
    text_end_display,
    text_end,
    out_remaining,
    out_offset::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    flags::Union{CImGui.lib.ImDrawTextFlags_, Integer}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImFontCalcWordWrapPositionEx — Function
ImFontCalcWordWrapPositionEx(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    size,
    text,
    text_end,
    wrap_width
) -> Ptr{Int8}
ImFontCalcWordWrapPositionEx(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    size,
    text,
    text_end,
    wrap_width,
    flags::Union{CImGui.lib.ImDrawTextFlags_, Integer}
) -> Ptr{Int8}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImHashData — Function
ImHashData(data, data_size) -> UInt32
ImHashData(data, data_size, seed::Integer) -> UInt32

Helpers: Hashing.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImHashStr — Function
ImHashStr(data) -> UInt32
ImHashStr(data, data_size) -> UInt32
ImHashStr(data, data_size, seed::Integer) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImInvLength — Method
ImInvLength(
    lhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fail_value
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLengthSqr — Method
ImLengthSqr(
    lhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLengthSqr — Method
ImLengthSqr(
    lhs::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLerp — Method
ImLerp(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    t::Float32
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLerp — Method
ImLerp(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    t::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLerp — Method
ImLerp(
    a::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    b::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    t::Float32
) -> CImGui.lib.ImVec4
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLineClosestPoint — Method
ImLineClosestPoint(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLog — Method
ImLog(x::Float32) -> Float32

DragBehaviorT/SliderBehaviorT uses ImLog with either float/double and need the precision.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImLowerBound — Method
ImLowerBound(
    in_begin::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiStoragePair}},
    in_end::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiStoragePair}},
    key::Integer
) -> Ptr{CImGui.lib.ImGuiStoragePair}

Helper: ImGuiStorage.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImMax — Method
ImMax(
    lhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImMemdup — Method
ImMemdup(src, size) -> Ptr{Nothing}

Duplicate a chunk of memory.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImMin — Method
ImMin(
    lhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
  • Misc maths helpers.
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImMul — Method
ImMul(
    lhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rhs::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImPow — Method
ImPow(x::Float32, y::Float32) -> Float32

DragBehaviorT/SliderBehaviorT uses ImPow with either float/double and need the precision.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImRotate — Method
ImRotate(
    v::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cos_a,
    sin_a
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImSign — Method
ImSign(x::Float32) -> Float32

Sign operator - returns -1, 0 or 1 based on sign of argument.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStrbol — Method
ImStrbol(buf_mid_line, buf_begin) -> Ptr{Int8}

Find beginning-of-line.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStrchrRange — Method
ImStrchrRange(str_begin, str_end, c) -> Ptr{Int8}

Find first occurrence of 'c' in string range.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStrdupcpy — Method
ImStrdupcpy(dst, p_dst_size, str) -> Ptr{Int8}

Copy in provided buffer, recreate buffer if needed.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStricmp — Method
ImStricmp(str1, str2) -> Int32

Helpers: String// Case insensitive compare.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStristr — Method
ImStristr(
    haystack,
    haystack_end,
    needle,
    needle_end
) -> Ptr{Int8}

Find a substring in a string range.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStrlenW — Method
ImStrlenW(str::Union{Ptr{Nothing}, Ref{UInt16}}) -> Int32

Computer string length (ImWchar string).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStrncpy — Method
ImStrncpy(dst, src, count)

Copy to a certain count and always zero terminate (strncpy doesn't).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImStrnicmp — Method
ImStrnicmp(str1, str2, count) -> Int32

Case insensitive compare to a certain count.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextCalcWordWrapNextLineStart — Function
ImTextCalcWordWrapNextLineStart(text, text_end) -> Ptr{Int8}
ImTextCalcWordWrapNextLineStart(
    text,
    text_end,
    flags::Union{CImGui.lib.ImDrawTextFlags_, Integer}
) -> Ptr{Int8}

Trim trailing space and find beginning of next line.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextCharFromUtf8 — Method
ImTextCharFromUtf8(out_char, in_text, in_text_end) -> Int32

Read one character. return input UTF-8 bytes count.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextCharToUtf8 — Method
ImTextCharToUtf8(out_buf, c) -> Int32

Helpers: UTF-8 <> wchar conversions// return output UTF-8 bytes count.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextClassifierClear — Method
ImTextClassifierClear(
    bits::Union{Ptr{Nothing}, Ref{Integer}, Ref{UInt32}},
    codepoint_min,
    codepoint_end,
    char_class::CImGui.lib.ImWcharClass
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextClassifierSetCharClass — Method
ImTextClassifierSetCharClass(
    bits::Union{Ptr{Nothing}, Ref{Integer}, Ref{UInt32}},
    codepoint_min,
    codepoint_end,
    char_class::CImGui.lib.ImWcharClass,
    c
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextCountLines — Method
ImTextCountLines(in_text, in_text_end) -> Int32

Return number of lines taken by text. trailing carriage return doesn't count as an extra line.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextCountUtf8BytesFromStr — Method
ImTextCountUtf8BytesFromStr(
    in_text::Union{Ptr{Nothing}, Ref{UInt16}},
    in_text_end::Union{Ptr{Nothing}, Ref{UInt16}}
) -> Int32

Return number of bytes to express string in UTF-8.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextFindValidUtf8CodepointEnd — Method
ImTextFindValidUtf8CodepointEnd(
    in_text_start,
    in_text_end,
    in_p
) -> Ptr{Int8}

Return previous UTF-8 code-point if 'in_p' is not the end of a valid one.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextStrFromUtf8 — Function
ImTextStrFromUtf8(
    out_buf::Union{Ptr{Nothing}, Ref{UInt16}},
    out_buf_size,
    in_text,
    in_text_end
) -> Int32
ImTextStrFromUtf8(
    out_buf::Union{Ptr{Nothing}, Ref{UInt16}},
    out_buf_size,
    in_text,
    in_text_end,
    in_remaining
) -> Int32

Return input UTF-8 bytes count.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTextStrToUtf8 — Method
ImTextStrToUtf8(
    out_buf,
    out_buf_size,
    in_text::Union{Ptr{Nothing}, Ref{UInt16}},
    in_text_end::Union{Ptr{Nothing}, Ref{UInt16}}
) -> Int32

Return output UTF-8 bytes count.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTriangleArea — Method
ImTriangleArea(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTriangleBarycentricCoords — Method
ImTriangleBarycentricCoords(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    out_u,
    out_v,
    out_w
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTriangleClosestPoint — Method
ImTriangleClosestPoint(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTriangleContainsPoint — Method
ImTriangleContainsPoint(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTriangleIsClockwise — Method
ImTriangleIsClockwise(
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImTrunc — Method
ImTrunc(
    v::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Image — Function
Image(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
Image(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
Image(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)

Widgets: Images

  • Read about ImTextureID/ImTextureRef here: https://github.com/ocornut/imgui/wiki/Image-Loading-and-Displaying-Examples
  • 'uv0' and 'uv1' are texture coordinates. Read about them from the same link above.
  • Image() adds style.ImageBorderSize on each side, ImageButton() adds style.FramePadding on each side.
  • ImageButton() draws a background based on regular Button() color + optionally an inner background if specified.
  • An obsolete version of Image(), before 1.91.9 (March 2025), had a 'tint_col' parameter which is now supported by the ImageWithBg() function.

Upstream link.

source
CImGui.ImageButton — Function
ImageButton(
    str_id,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
ImageButton(
    str_id,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
ImageButton(
    str_id,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
ImageButton(
    str_id,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    bg_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
) -> Bool
ImageButton(
    str_id,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    bg_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    tint_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
) -> Bool

Upstream link.

source
CImGui.ImageButtonEx — Function
ImageButtonEx(
    id::Integer,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    bg_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    tint_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
) -> Bool
ImageButtonEx(
    id::Integer,
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    bg_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    tint_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    flags::Union{CImGui.lib.ImGuiButtonFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ImageWithBg — Function
ImageWithBg(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
ImageWithBg(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
ImageWithBg(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
ImageWithBg(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    bg_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
)
ImageWithBg(
    tex_ref::CImGui.lib.ImTextureRef,
    image_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    bg_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    tint_col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T}
)

Upstream link.

source
CImGui.IncludeItemByIndex — Method
IncludeItemByIndex(
    self::Ptr{CImGui.lib.ImGuiListClipper},
    item_index
)

Call IncludeItemByIndex() or IncludeItemsByIndex() BEFORE first call to Step() if you need a range of items to not be clipped, regardless of their visibility. (Due to alignment / padding of certain items it is possible that an extra item may be included on either end of the display range).

Upstream link.

source
CImGui.Indent — Function
Indent()
Indent(indent_w)

Move content position toward the right, by indentw, or style.IndentSpacing if indentw <= 0.

Upstream link.

source
CImGui.InputDouble — Function
InputDouble(label, v) -> Bool
InputDouble(label, v, step) -> Bool
InputDouble(label, v, step, step_fast) -> Bool
InputDouble(label, v, step, step_fast, format) -> Bool
InputDouble(
    label,
    v,
    step,
    step_fast,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputFloat — Function
InputFloat(label, v) -> Bool
InputFloat(label, v, step) -> Bool
InputFloat(label, v, step, step_fast) -> Bool
InputFloat(label, v, step, step_fast, format) -> Bool
InputFloat(
    label,
    v,
    step,
    step_fast,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputFloat2 — Function
InputFloat2(label, v) -> Bool
InputFloat2(label, v, format) -> Bool
InputFloat2(
    label,
    v,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputFloat3 — Function
InputFloat3(label, v) -> Bool
InputFloat3(label, v, format) -> Bool
InputFloat3(
    label,
    v,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputFloat4 — Function
InputFloat4(label, v) -> Bool
InputFloat4(label, v, format) -> Bool
InputFloat4(
    label,
    v,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputInt — Function
InputInt(label, v) -> Bool
InputInt(label, v, step) -> Bool
InputInt(label, v, step, step_fast) -> Bool
InputInt(
    label,
    v,
    step,
    step_fast,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputScalar — Function
InputScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data
) -> Bool
InputScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_step
) -> Bool
InputScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_step,
    p_step_fast
) -> Bool
InputScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_step,
    p_step_fast,
    format
) -> Bool
InputScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_step,
    p_step_fast,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputScalarN — Function
InputScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components
) -> Bool
InputScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_step
) -> Bool
InputScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_step,
    p_step_fast
) -> Bool
InputScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_step,
    p_step_fast,
    format
) -> Bool
InputScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_step,
    p_step_fast,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.InputText — Function
InputText(label, buf, buf_size) -> Bool
InputText(
    label,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool
InputText(
    label,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction}
) -> Bool
InputText(
    label,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    user_data
) -> Bool

Widgets: Input with Keyboard

  • If you want to use InputText() with std::string or any custom dynamic string type, use the wrapper in misc/cpp/imgui_stdlib.h/.cpp!
  • Most of the ImGuiInputTextFlags flags are only useful for InputText() and not for InputFloatX, InputIntX, InputDouble etc.

Upstream link.

source
CImGui.InputTextEx — Function
InputTextEx(
    label,
    hint,
    buf,
    buf_size,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool
InputTextEx(
    label,
    hint,
    buf,
    buf_size,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction}
) -> Bool
InputTextEx(
    label,
    hint,
    buf,
    buf_size,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    user_data
) -> Bool

InputText.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.InputTextMultiline — Function
InputTextMultiline(label, buf, buf_size) -> Bool
InputTextMultiline(
    label,
    buf,
    buf_size,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
InputTextMultiline(
    label,
    buf,
    buf_size,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool
InputTextMultiline(
    label,
    buf,
    buf_size,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction}
) -> Bool
InputTextMultiline(
    label,
    buf,
    buf_size,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    user_data
) -> Bool

Upstream link.

source
CImGui.InputTextWithHint — Function
InputTextWithHint(label, hint, buf, buf_size) -> Bool
InputTextWithHint(
    label,
    hint,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool
InputTextWithHint(
    label,
    hint,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction}
) -> Bool
InputTextWithHint(
    label,
    hint,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    user_data
) -> Bool

Upstream link.

source
CImGui.InsertChars — Function
InsertChars(
    self::Ptr{CImGui.lib.ImGuiInputTextCallbackData},
    pos,
    text
)
InsertChars(
    self::Ptr{CImGui.lib.ImGuiInputTextCallbackData},
    pos,
    text,
    text_end
)

Upstream link.

source
CImGui.InvisibleButton — Function
InvisibleButton(
    str_id,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
InvisibleButton(
    str_id,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    flags::Union{CImGui.lib.ImGuiButtonFlags_, Integer}
) -> Bool

Flexible button behavior without the visuals, frequently useful to build custom behaviors using the public api (along with IsItemActive, IsItemHovered, etc.).

Upstream link.

source
CImGui.IsAnyMouseDown — Method
IsAnyMouseDown() -> Bool

[WILL OBSOLETE] is any mouse button held? This was designed for backends, but prefer having backend maintain a mask of held mouse buttons, because upcoming input queue system will make this invalid.

Upstream link.

source
CImGui.IsHiddenTabBar — Method
IsHiddenTabBar(self::Ptr{CImGui.lib.ImGuiDockNode}) -> Bool

Hidden tab bar can be shown back by clicking the small triangle.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsItemActive — Method
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).

Upstream link.

source
CImGui.IsItemActiveAsInputText — Method
IsItemActiveAsInputText() -> Bool

This may be useful to apply workaround that a based on distinguish whenever an item is active as a text input field.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsItemClicked — Function
IsItemClicked() -> Bool
IsItemClicked(
    mouse_button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool

Is the last item hovered and mouse clicked on? () == IsMouseClicked(mouse_button) && IsItemHovered()Important. () this is NOT equivalent to the behavior of e.g. Button(). Read comments in function definition.

Upstream link.

source
CImGui.IsItemDeactivated — Method
IsItemDeactivated() -> Bool

Was the last item just made inactive (item was previously active). Useful for Undo/Redo patterns with widgets that require continuous editing.

Upstream link.

source
CImGui.IsItemDeactivatedAfterEdit — Method
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 require 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).

Upstream link.

source
CImGui.IsItemEdited — Method
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.

Upstream link.

source
CImGui.IsItemHovered — Function
IsItemHovered() -> Bool
IsItemHovered(
    flags::Union{CImGui.lib.ImGuiHoveredFlags_, Integer}
) -> Bool

Item/Widgets Utilities and Query Functions

  • Most of the functions are referring to the previous Item that has been submitted.
  • See Demo Window under "Widgets->Querying Status" for an interactive visualization of most of those functions.// is the last item hovered? (and usable, aka not blocked by a popup, etc.). See ImGuiHoveredFlags for more options.

Upstream link.

source
CImGui.IsItemToggledSelection — Method
IsItemToggledSelection() -> Bool

Was the last item selection state toggled? Useful if you need the per-item information before reaching EndMultiSelect(). We only returns toggle event in order to handle clipping correctly.

Upstream link.

source
CImGui.IsKeyChordPressed — Function
IsKeyChordPressed(
    key_chord::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
) -> Bool
IsKeyChordPressed(
    key_chord::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer},
    owner_id::Integer
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsKeyChordPressed — Method
IsKeyChordPressed(key_chord::Integer) -> Bool

Was key chord (mods + key) pressed, e.g. you can pass 'ImGuiModCtrl | ImGuiKeyS' as a key-chord. This doesn't do any routing or focus check, please consider using Shortcut() function instead.

Upstream link.

source
CImGui.IsKeyDown — Method
IsKeyDown(
    key::CImGui.lib.ImGuiKey,
    owner_id::Integer
) -> Bool

[EXPERIMENTAL] High-Level: Input Access functions w/ support for Key/Input Ownership

  • Important: legacy IsKeyPressed(ImGuiKey, bool repeat=true) DEFAULTS to repeat, new IsKeyPressed() requires EXPLICIT ImGuiInputFlags_Repeat flag.
  • Expected to be later promoted to public API, the prototypes are designed to replace existing ones (since owner_id can default to Any == 0)
  • Specifying a value for 'ImGuiID owner' will test that EITHER the key is NOT owned (UNLESS locked), EITHER the key is owned by 'owner'. Legacy functions use ImGuiKeyOwnerAny meaning that they typically ignore ownership, unless a call to SetKeyOwner() explicitly used ImGuiInputFlagsLockThisFrame or ImGuiInputFlags_LockUntilRelease.
  • Binding generators may want to ignore those for now, or suffix them with Ex() until we decide if this gets moved into public API.
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsKeyDown — Method
IsKeyDown(key::CImGui.lib.ImGuiKey) -> Bool

Inputs Utilities: Raw Keyboard/Mouse/Gamepad Access

  • Consider using the Shortcut() function instead of IsKeyPressed()/IsKeyChordPressed()! Shortcut() is easier to use and better featured (can do focus routing check).
  • the ImGuiKey enum contains all possible keyboard, mouse and gamepad inputs (e.g. ImGuiKeyA, ImGuiKeyMouseLeft, ImGuiKey_GamepadDpadUp...).
  • (legacy: before v1.87 (2022-02), we used ImGuiKey < 512 values to carry native/user indices as defined by each backends. This was obsoleted in 1.87 (2022-02) and completely removed in 1.91.5 (2024-11). See https://github.com/ocornut/imgui/issues/4921)// is key being held.

Upstream link.

source
CImGui.IsKeyPressed — Function
IsKeyPressed(
    key::CImGui.lib.ImGuiKey,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
) -> Bool
IsKeyPressed(
    key::CImGui.lib.ImGuiKey,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer},
    owner_id::Integer
) -> Bool

Important: when transitioning from old to new IsKeyPressed(): old API has "bool repeat = true", so would default to repeat. New API requires explicit ImGuiInputFlags_Repeat.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsKeyPressed — Function
IsKeyPressed(key::CImGui.lib.ImGuiKey) -> Bool
IsKeyPressed(key::CImGui.lib.ImGuiKey, repeat::Bool) -> Bool

Was key pressed (went from !Down to Down)? Repeat rate uses io.KeyRepeatDelay / KeyRepeatRate.

Upstream link.

source
CImGui.IsMouseClicked — Function
IsMouseClicked(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
) -> Bool
IsMouseClicked(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer},
    owner_id::Integer
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsMouseClicked — Function
IsMouseClicked(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool
IsMouseClicked(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    repeat::Bool
) -> Bool

Did mouse button clicked? (went from !Down to Down). Same as GetMouseClickedCount() == 1.

Upstream link.

source
CImGui.IsMouseDoubleClicked — Method
IsMouseDoubleClicked(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool

Did mouse button double-clicked? Same as GetMouseClickedCount() == 2. (note that a double-click will also report IsMouseClicked() == true).

Upstream link.

source
CImGui.IsMouseDown — Method
IsMouseDown(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    owner_id::Integer
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsMouseDown — Method
IsMouseDown(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool

Inputs Utilities: Mouse

  • To refer to a mouse button, you may use named enums in your code e.g. ImGuiMouseButtonLeft, ImGuiMouseButtonRight.
  • You can also use regular integer: it is forever guaranteed that 0=Left, 1=Right, 2=Middle.
  • Dragging operations are only reported after mouse has moved a certain distance away from the initial clicking position (see 'lock_threshold' and 'io.MouseDraggingThreshold')// is mouse button held?

Upstream link.

source
CImGui.IsMouseDragPastThreshold — Function
IsMouseDragPastThreshold(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool
IsMouseDragPastThreshold(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    lock_threshold
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsMouseDragging — Function
IsMouseDragging(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool
IsMouseDragging(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    lock_threshold
) -> Bool

Is mouse dragging? (uses io.MouseDraggingThreshold if lock_threshold < 0.0f).

Upstream link.

source
CImGui.IsMouseHoveringRect — Function
IsMouseHoveringRect(
    r_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    r_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool
IsMouseHoveringRect(
    r_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    r_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clip
) -> 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.

Upstream link.

source
CImGui.IsMousePosValid — Function
IsMousePosValid() -> Bool
IsMousePosValid(
    mouse_pos::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}}
) -> Bool

By convention we use (-FLTMAX,-FLTMAX) to denote that there is no mouse available.

Upstream link.

source
CImGui.IsMouseReleased — Method
IsMouseReleased(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    owner_id::Integer
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsMouseReleasedWithDelay — Function
IsMouseReleasedWithDelay(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> Bool
IsMouseReleasedWithDelay(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer},
    delay
) -> Bool

Delayed mouse release. Use sparingly. Prefer higher-level helper GetItemClickedCountWithSingleClickDelay(). Generally used with 'delay >= io.MouseDoubleClickTime' + combined with a 'io.MouseClickedLastCount==1' test.

Upstream link.

source
CImGui.IsNamedKey — Method
IsNamedKey(key::CImGui.lib.ImGuiKey) -> Bool

Inputs FIXME: Eventually we should aim to move e.g. IsActiveIdUsingKey() into IsKeyXXX functions.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsNoTabBar — Method
IsNoTabBar(self::Ptr{CImGui.lib.ImGuiDockNode}) -> Bool

Never show a tab bar.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsPopupOpen — Function
IsPopupOpen(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
IsPopupOpen(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String},
    flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Popups: query functions

  • IsPopupOpen(): return true if the popup is open at the current BeginPopup() level of the popup stack.
  • IsPopupOpen() with ImGuiPopupFlags_AnyPopupId: return true if any popup is open at the current BeginPopup() level of the popup stack.
  • IsPopupOpen() with ImGuiPopupFlagsAnyPopupId + ImGuiPopupFlagsAnyPopupLevel: return true if any popup is open.// return true if the popup is open.

Upstream link.

source
CImGui.IsPopupOpen — Method
IsPopupOpen(
    id::Integer,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsRectVisible — Method
IsRectVisible(
    rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

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

Upstream link.

source
CImGui.IsRectVisible — Method
IsRectVisible(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

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

Upstream link.

source
CImGui.IsWindowAbove — Method
IsWindowAbove(
    potential_above::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    potential_below::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsWindowAppearing — Method
IsWindowAppearing() -> Bool

Windows Utilities

  • 'current window' = the window we are appending into while inside a Begin()/End() block. 'next window' = next window we will Begin() into.

Upstream link.

source
CImGui.IsWindowChildOf — Method
IsWindowChildOf(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    potential_parent::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    popup_hierarchy,
    dock_hierarchy
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsWindowContentHoverable — Function
IsWindowContentHoverable(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
) -> Bool
IsWindowContentHoverable(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    flags::Union{CImGui.lib.ImGuiHoveredFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.IsWindowFocused — Function
IsWindowFocused() -> Bool
IsWindowFocused(
    flags::Union{CImGui.lib.ImGuiFocusedFlags_, Integer}
) -> Bool

Is current window focused? or its root/child, depending on flags. see flags for options.

Upstream link.

source
CImGui.IsWindowHovered — Function
IsWindowHovered() -> Bool
IsWindowHovered(
    flags::Union{CImGui.lib.ImGuiHoveredFlags_, Integer}
) -> Bool

Is current window hovered and hoverable (e.g. not blocked by a popup/modal)? See ImGuiHoveredFlags_ for options. IMPORTANT: If you are trying to check whether your mouse should be dispatched to Dear ImGui or to your underlying app, you should not use this function! Use the 'io.WantCaptureMouse' boolean for that! Refer to FAQ entry "How can I tell whether to dispatch mouse/keyboard to Dear ImGui or my application?" for details.

Upstream link.

source
CImGui.IsWindowWithinBeginStackOf — Method
IsWindowWithinBeginStackOf(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    potential_parent::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ItemAdd — Function
ItemAdd(bb::CImGui.lib.ImRect, id::Integer) -> Bool
ItemAdd(
    bb::CImGui.lib.ImRect,
    id::Integer,
    nav_bb::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}}
) -> Bool
ItemAdd(
    bb::CImGui.lib.ImRect,
    id::Integer,
    nav_bb::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}},
    extra_flags::Union{CImGui.lib.ImGuiItemFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ItemHoverable — Method
ItemHoverable(
    bb::CImGui.lib.ImRect,
    id::Integer,
    item_flags::Union{CImGui.lib.ImGuiItemFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ItemSize — Function
ItemSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
ItemSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text_baseline_y::Real
)

Basic Helpers for widget code.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ItemSize — Function
ItemSize(bb::CImGui.lib.ImRect)
ItemSize(bb::CImGui.lib.ImRect, text_baseline_y::Real)

FIXME: This is a misleading API since we expect CursorPos to be bb.Min.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ListBox — Function
ListBox(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    current_item::Union{Ptr{Nothing}, Ref{Int32}},
    items::Vector{String}
) -> Bool
ListBox(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    current_item::Union{Ptr{Nothing}, Ref{Int32}},
    items::Vector{String},
    height_in_items::Integer
) -> Bool

Upstream link.

source
CImGui.LoadIniSettingsFromDisk — Method
LoadIniSettingsFromDisk(ini_filename)

Settings/.Ini Utilities

  • The disk functions are automatically called if io.IniFilename != NULL (default is "imgui.ini").
  • Set io.IniFilename to NULL to load/save manually. Read io.WantSaveIniSettings description about handling .ini saving manually.
  • Important: default value "imgui.ini" is relative to current working dir! Most apps will want to lock this to an absolute path (e.g. same path as executables).// call after CreateContext() and before the first call to NewFrame(). NewFrame() automatically calls LoadIniSettingsFromDisk(io.IniFilename).

Upstream link.

source
CImGui.LoadIniSettingsFromMemory — Function
LoadIniSettingsFromMemory(ini_data)
LoadIniSettingsFromMemory(ini_data, ini_size)

Call after CreateContext() and before the first call to NewFrame() to provide .ini data from your own data source.

Upstream link.

source
CImGui.LogBegin — Method
LogBegin(
    flags::Union{CImGui.lib.ImGuiLogFlags_, Integer},
    auto_open_depth
)

Logging/Capture// -> BeginCapture() when we design v2 api, for now stay under the radar by using the old name.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.LogRenderedText — Function
LogRenderedText(
    ref_pos::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    text
)
LogRenderedText(
    ref_pos::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    text,
    text_end
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.LogToBuffer — Function
LogToBuffer()
LogToBuffer(auto_open_depth)

Start logging/capturing to internal buffer.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.LogToTTY — Function
LogToTTY()
LogToTTY(auto_open_depth)

Logging/Capture

  • All text output from the interface can be captured into tty/file/clipboard. By default, tree nodes are automatically opened during logging.// start logging to tty (stdout).

Upstream link.

source
CImGui.MarkItemEdited — Method
MarkItemEdited(id::Integer)

Mark data associated to given item as "edited", used by IsItemDeactivatedAfterEdit() function.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.MenuItem — Function
MenuItem(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    shortcut::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_selected::Ref{Bool}
) -> Bool
MenuItem(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    shortcut::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_selected::Ref{Bool},
    enabled::Bool
) -> Bool

Return true when activated + toggle (*pselected) if pselected != NULL.

Upstream link.

source
CImGui.MenuItem — Function
MenuItem(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
MenuItem(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    shortcut::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
MenuItem(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    shortcut::Union{Ptr{Int8}, Ptr{Nothing}, String},
    selected::Bool
) -> Bool
MenuItem(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    shortcut::Union{Ptr{Int8}, Ptr{Nothing}, String},
    selected::Bool,
    enabled::Bool
) -> Bool

Return true when activated.

Upstream link.

source
CImGui.MenuItemEx — Function
MenuItemEx(label, icon) -> Bool
MenuItemEx(label, icon, shortcut) -> Bool
MenuItemEx(label, icon, shortcut, selected) -> Bool
MenuItemEx(label, icon, shortcut, selected, enabled) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.MouseButtonToKey — Method
MouseButtonToKey(
    button::Union{CImGui.lib.ImGuiMouseButton_, Integer}
) -> CImGui.lib.ImGuiKey
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.MultiSelectAddSetRange — Method
MultiSelectAddSetRange(
    ms::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiMultiSelectTempData}},
    selected,
    range_dir,
    first_item::Int64,
    last_item::Int64
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.MultiSelectItemFooter — Function
MultiSelectItemFooter(id::Integer, p_selected, p_pressed)
MultiSelectItemFooter(
    id::Integer,
    p_selected,
    p_pressed,
    extra_flags::Union{CImGui.lib.ImGuiMultiSelectFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.MultiSelectItemHeader — Method
MultiSelectItemHeader(
    id::Integer,
    p_selected,
    p_button_flags::Union{Ptr{Nothing}, Ref{Int32}, Ref{Integer}, Ref{CImGui.lib.ImGuiButtonFlags_}}
)

Multi-Select API.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.NavInitWindow — Method
NavInitWindow(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    force_reinit
)

Keyboard/Gamepad Navigation.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.NavMoveRequestForward — Method
NavMoveRequestForward(
    move_dir::CImGui.lib.ImGuiDir,
    clip_dir::CImGui.lib.ImGuiDir,
    move_flags::Union{CImGui.lib.ImGuiNavMoveFlags_, Integer},
    scroll_flags::Union{CImGui.lib.ImGuiScrollFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.NavMoveRequestResolveWithPastTreeNode — Method
NavMoveRequestResolveWithPastTreeNode(
    result::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiNavItemData}},
    tree_node_data::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTreeNodeStackData}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.NavMoveRequestSubmit — Method
NavMoveRequestSubmit(
    move_dir::CImGui.lib.ImGuiDir,
    clip_dir::CImGui.lib.ImGuiDir,
    move_flags::Union{CImGui.lib.ImGuiNavMoveFlags_, Integer},
    scroll_flags::Union{CImGui.lib.ImGuiScrollFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.NavMoveRequestTryWrapping — Method
NavMoveRequestTryWrapping(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    move_flags::Union{CImGui.lib.ImGuiNavMoveFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.OnKeyPressed — Method
OnKeyPressed(self::Ptr{CImGui.lib.ImGuiInputTextState}, key)

Cannot be inline because we call in code in stb_textedit.h implementation.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.OpenPopup — Function
OpenPopup(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
OpenPopup(
    str_id::Union{Ptr{Int8}, Ptr{Nothing}, String},
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Popups: open/close functions

  • OpenPopup(): set popup state to open (unless one of the specified ImGuiPopupFlags prevent opening).
  • OpenPopupXXX() functions return true when the popup is toggled open, which allows you to capture local state if needed. You may also call IsWindowAppearing() inside the later BeginPopup() scope if you need to prepare/compute data for the popup.
  • If not modal: they can be closed by clicking anywhere outside them, or by pressing ESCAPE.
  • CloseCurrentPopup(): use inside the BeginPopup()/EndPopup() scope to close manually.
  • CloseCurrentPopup() is called by default by Selectable()/MenuItem() when activated (FIXME: need some options).
  • Use ImGuiPopupFlags_NoOpenOverExistingPopup to avoid opening a popup if there's already one at the same level. This is equivalent to e.g. testing for !IsAnyPopupOpen() prior to OpenPopup().
  • Use IsWindowAppearing() after BeginPopup() to tell if a window just opened.// call to mark popup as open (don't call every frame!).

Upstream link.

source
CImGui.OpenPopup — Function
OpenPopup(id::Integer) -> Bool
OpenPopup(
    id::Integer,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Id overload to facilitate calling from nested stacks.

Upstream link.

source
CImGui.OpenPopupEx — Function
OpenPopupEx(id::Integer) -> Bool
OpenPopupEx(
    id::Integer,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.OpenPopupOnItemClick — Function
OpenPopupOnItemClick() -> Bool
OpenPopupOnItemClick(str_id) -> Bool
OpenPopupOnItemClick(
    str_id,
    popup_flags::Union{CImGui.lib.ImGuiPopupFlags_, Integer}
) -> Bool

Helper to open popup when clicked on last item. Default to ImGuiPopupFlagsMouseButtonRight == 1. (note: actually triggers on the mouse _released event to be consistent with popup behaviors).

Upstream link.

source
CImGui.Overlaps — Method
Overlaps(
    self::Ptr{CImGui.lib.ImRect},
    r::CImGui.lib.ImRect
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.PassFilter — Function
PassFilter(
    self::Ptr{CImGui.lib.ImGuiTextFilter},
    text
) -> Bool
PassFilter(
    self::Ptr{CImGui.lib.ImGuiTextFilter},
    text,
    text_end
) -> Bool

Upstream link.

source
CImGui.PathArcTo — Function
PathArcTo(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    a_min,
    a_max
)
PathArcTo(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    a_min,
    a_max,
    num_segments
)

Upstream link.

source
CImGui.PathArcToFast — Method
PathArcToFast(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    a_min_of_12,
    a_max_of_12
)

Use precomputed angles for a 12 steps circle.

Upstream link.

source
CImGui.PathBezierCubicCurveTo — Function
PathBezierCubicCurveTo(
    self::Ptr{CImGui.lib.ImDrawList},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
PathBezierCubicCurveTo(
    self::Ptr{CImGui.lib.ImDrawList},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p4::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    num_segments
)

Cubic Bezier (4 control points).

Upstream link.

source
CImGui.PathBezierQuadraticCurveTo — Function
PathBezierQuadraticCurveTo(
    self::Ptr{CImGui.lib.ImDrawList},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
PathBezierQuadraticCurveTo(
    self::Ptr{CImGui.lib.ImDrawList},
    p2::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p3::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    num_segments
)

Quadratic Bezier (3 control points).

Upstream link.

source
CImGui.PathClear — Method
PathClear(self::Ptr{CImGui.lib.ImDrawList})

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

  • Important: filled shapes must always use clockwise winding order! The anti-aliasing fringe depends on it. Counter-clockwise shapes will have "inward" anti-aliasing. so e.g. 'PathArcTo(center, radius, PI * -0.5f, PI)' is ok, whereas 'PathArcTo(center, radius, PI, PI * -0.5f)' won't have correct anti-aliasing when followed by PathFillConvex().

Upstream link.

source
CImGui.PathEllipticalArcTo — Function
PathEllipticalArcTo(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rot,
    a_min,
    a_max
)
PathEllipticalArcTo(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rot,
    a_min,
    a_max,
    num_segments
)

Ellipse.

Upstream link.

source
CImGui.PathRect — Function
PathRect(
    self::Ptr{CImGui.lib.ImDrawList},
    rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
PathRect(
    self::Ptr{CImGui.lib.ImDrawList},
    rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rounding
)
PathRect(
    self::Ptr{CImGui.lib.ImDrawList},
    rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rounding,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)

Upstream link.

source
CImGui.PathStroke — Function
PathStroke(self::Ptr{CImGui.lib.ImDrawList}, col::Integer)
PathStroke(
    self::Ptr{CImGui.lib.ImDrawList},
    col::Integer,
    thickness
)
PathStroke(
    self::Ptr{CImGui.lib.ImDrawList},
    col::Integer,
    thickness,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)

Upstream link.

source
CImGui.PlotEx — Method
PlotEx(
    plot_type::CImGui.lib.ImGuiPlotType,
    label,
    values_getter,
    data,
    values_count,
    values_offset,
    overlay_text,
    scale_min,
    scale_max,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Int32

Plot.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.PlotHistogram — Function
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))
source
CImGui.PlotHistogram — Function
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.PlotLines — Function
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))
source
CImGui.PlotLines — Function
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.PrimQuadUV — Method
PrimQuadUV(
    self::Ptr{CImGui.lib.ImDrawList},
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    d::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_c::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_d::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Upstream link.

source
CImGui.PrimRect — Method
PrimRect(
    self::Ptr{CImGui.lib.ImDrawList},
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Axis aligned rectangle (composed of two triangles).

Upstream link.

source
CImGui.PrimRectUV — Method
PrimRectUV(
    self::Ptr{CImGui.lib.ImDrawList},
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Upstream link.

source
CImGui.PrimReserve — Method
PrimReserve(
    self::Ptr{CImGui.lib.ImDrawList},
    idx_count,
    vtx_count
)

Advanced: Primitives allocations

  • We render triangles (three vertices)
  • All primitives needs to be reserved via PrimReserve() beforehand.

Upstream link.

source
CImGui.PrimVtx — Method
PrimVtx(
    self::Ptr{CImGui.lib.ImDrawList},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Write vertex with unique index.

Upstream link.

source
CImGui.PrimWriteVtx — Method
PrimWriteVtx(
    self::Ptr{CImGui.lib.ImDrawList},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)

Upstream link.

source
CImGui.ProgressBar — Function
ProgressBar(fraction)
ProgressBar(
    fraction,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
ProgressBar(
    fraction,
    size_arg::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    overlay
)

Upstream link.

source
CImGui.PushClipRect — Function
PushClipRect(
    self::Ptr{CImGui.lib.ImDrawList},
    clip_rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clip_rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
PushClipRect(
    self::Ptr{CImGui.lib.ImDrawList},
    clip_rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clip_rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    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 ImGui::PushClipRect() to affect logic (hit-testing and widget culling).

Upstream link.

source
CImGui.PushClipRect — Method
PushClipRect(
    clip_rect_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clip_rect_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    intersect_with_current_clip_rect
)

Clipping

  • Mouse hovering is affected by ImGui::PushClipRect() calls, unlike direct calls to ImDrawList::PushClipRect() which are render only.

Upstream link.

source
CImGui.PushFocusScope — Method
PushFocusScope(id::Integer)

[EXPERIMENTAL] Focus Scope This is generally used to identify a unique input location (for e.g. a selection set) There is one per window (automatically set in Begin), but:

  • Selection patterns generally need to react (e.g. clear a selection) when landing on one item of the set. So in order to identify a set multiple lists in same window may each need a focus scope. If you imagine an hypothetical BeginSelectionGroup()/EndSelectionGroup() api, it would likely call PushFocusScope()/EndFocusScope()
  • Shortcut routing also use focus scope as a default location identifier if an owner is not provided.

We don't use the ID Stack for this as it is common to want them separate.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.PushFont — Method
PushFont(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size_base_unscaled
)

Parameters stacks (font)

  • PushFont(font, 0.0f) // Change font and keep current size
  • PushFont(NULL, 20.0f) // Keep font and change current size
  • PushFont(font, 20.0f) // Change font and set size to 20.0f
  • PushFont(font, style.FontSizeBase * 2.0f) // Change font and set size to be twice bigger than current size.
  • PushFont(font, font->LegacySize) // Change font and set size to size passed to AddFontXXX() function. Same as pre-1.92 behavior.

IMPORTANT before 1.92, fonts had a single size. They can now be dynamically be adjusted.

  • In 1.92 we have REMOVED the single parameter version of PushFont() because it seems like the easiest way to provide an error-proof transition.
  • PushFont(font) before 1.92 = PushFont(font, font->LegacySize) after 1.92 // Use default font size as passed to AddFontXXX() function.

IMPORTANT global scale factors are applied over the provided size.

  • Global scale factors are: 'style.FontScaleMain', 'style.FontScaleDpi' and maybe more.
  • If you want to apply a factor to the current font size:
  • CORRECT: PushFont(NULL, style.FontSizeBase) // use current unscaled size == does nothing
  • CORRECT: PushFont(NULL, style.FontSizeBase * 2.0f) // use current unscaled size x2 == make text twice bigger
  • INCORRECT: PushFont(NULL, GetFontSize()) // INCORRECT! using size after global factors already applied == GLOBAL SCALING FACTORS WILL APPLY TWICE!
  • INCORRECT: PushFont(NULL, GetFontSize() * 2.0f) // INCORRECT! using size after global factors already applied == GLOBAL SCALING FACTORS WILL APPLY TWICE!// Use NULL as a shortcut to keep current font. Use 0.0f to keep current size.

Upstream link.

source
CImGui.PushID — Method
PushID(
    str_id_begin::Union{Ptr{Int8}, String},
    str_id_end::Union{Ptr{Int8}, Ptr{Nothing}, String}
)

Push string into the ID stack (will hash string).

Upstream link.

source
CImGui.PushID — Method
PushID(str_id::Union{Ptr{Int8}, String})

ID stack/scopes Read the FAQ (docs/FAQ.md or http://dearimgui.com/faq) for more details about how ID are handled in dear imgui.

  • Those questions are answered and impacted by understanding of the ID stack system:
    • "Q: Why is my widget not reacting when I click on it?"
    • "Q: How can I have widgets with an empty label?"
    • "Q: How can I have multiple widgets with the same label?"
  • Short version: ID are hashes of the entire ID stack. 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 "Label##foobar" syntax within widget label to distinguish them from each others.
  • In this header file we use the "label"/"name" terminology to denote a string that will be displayed + used as an ID, whereas "str_id" denote a string that is only used as an ID and not normally displayed.// push string into the ID stack (will hash string).

Upstream link.

source
CImGui.PushItemFlag — Method
PushItemFlag(
    option::Union{CImGui.lib.ImGuiItemFlags_, Integer},
    enabled
)

Modify specified shared item flag, e.g. PushItemFlag(ImGuiItemFlags_NoTabStop, true).

Upstream link.

source
CImGui.PushItemWidth — Method
PushItemWidth(item_width)

Parameters stacks (current window)// push width of items for common large "item+label" widgets. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side).

Upstream link.

source
CImGui.PushOverrideID — Method
PushOverrideID(id::Integer)

Push given value as-is at the top of the ID stack (whereas PushID combines old and new hashes).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.PushStyleColor — Method
PushStyleColor(
    idx::Union{CImGui.lib.ImGuiCol_, Integer},
    col::Integer
)

Parameters stacks (shared)// modify a style color. always use this if you modify the style after NewFrame().

Upstream link.

source
CImGui.PushStyleVar — Method
PushStyleVar(
    idx::Union{CImGui.lib.ImGuiStyleVar_, Integer},
    val::Real
)

Modify a style float variable. always use this if you modify the style after NewFrame()!

Upstream link.

source
CImGui.PushStyleVar — Method
PushStyleVar(
    idx::Union{CImGui.lib.ImGuiStyleVar_, Integer},
    val::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)

Modify a style ImVec2 variable. ".

Upstream link.

source
CImGui.PushTextWrapPos — Function
PushTextWrapPos()
PushTextWrapPos(wrap_local_pos_x)

Push word-wrapping position for Text*() commands. < 0.0f: no wrapping; 0.0f: wrap to end of window (or column); > 0.0f: wrap at 'wrapposx' position in window local space.

Upstream link.

source
CImGui.RadioButton — Method
RadioButton(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    active::Bool
) -> Bool

Use with e.g. if (RadioButton("one", myvalue==1)) myvalue = 1; .

Upstream link.

source
CImGui.RadioButton — Method
RadioButton(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    v::Union{Ptr{Nothing}, Ref{Int32}},
    v_button::Integer
) -> Bool

Shortcut to handle the above pattern when value is an integer.

Upstream link.

source
CImGui.Rect — Method
Rect(
    self::Ptr{CImGui.lib.ImGuiDockNode}
) -> CImGui.lib.ImRect
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Rect — Method
Rect(self::Ptr{CImGui.lib.ImGuiWindow}) -> CImGui.lib.ImRect

We don't use g.FontSize because the window may be != g.CurrentWindow.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RegisterUserTexture — Method
RegisterUserTexture(
    tex::Union{Ptr{Nothing}, Ref{CImGui.lib.ImTextureData}}
)

Fonts, drawing// Register external texture. EXPERIMENTAL.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ReloadUserBufAndSelectAll — Method
ReloadUserBufAndSelectAll(
    self::Ptr{CImGui.lib.ImGuiInputTextState}
)

Reload user buf (WIP #2890) If you modify underlying user-passed const char* while active you need to call this (InputText V2 may lift this) strcpy(my_buf, "hello"); if (ImGuiInputTextState* state = ImGui::GetInputTextState(id)) // id may be ImGui::GetItemID() is last item state->ReloadUserBufAndSelectAll();.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RemoveContextHook — Method
RemoveContextHook(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    hook_to_remove::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RemoveCustomRect — Method
RemoveCustomRect(
    self::Ptr{CImGui.lib.ImFontAtlas},
    id::Integer
)

Unregister a rectangle. Existing pixels will stay in texture until resized / garbage collected.

Upstream link.

source
CImGui.RenderArrow — Function
RenderArrow(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    dir::CImGui.lib.ImGuiDir
)
RenderArrow(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    dir::CImGui.lib.ImGuiDir,
    scale
)

Render helpers (those functions don't access any ImGui state!).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderArrowDockMenu — Method
RenderArrowDockMenu(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    sz,
    col::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderArrowPointingAt — Method
RenderArrowPointingAt(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    half_sz::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    direction::CImGui.lib.ImGuiDir,
    col::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderBullet — Method
RenderBullet(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderChar — Function
RenderChar(
    self::Ptr{CImGui.lib.ImFont},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    size,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    c::UInt16
)
RenderChar(
    self::Ptr{CImGui.lib.ImFont},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    size,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    c::UInt16,
    cpu_fine_clip::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec4}, Ref{NTuple{4, T} where T}}
)

Upstream link.

source
CImGui.RenderCheckMark — Method
RenderCheckMark(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    sz
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderColorRectWithAlphaCheckerboard — Function
RenderColorRectWithAlphaCheckerboard(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fill_col::Integer,
    grid_step,
    grid_off::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
RenderColorRectWithAlphaCheckerboard(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fill_col::Integer,
    grid_step,
    grid_off::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rounding
)
RenderColorRectWithAlphaCheckerboard(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fill_col::Integer,
    grid_step,
    grid_off::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rounding,
    flags::Union{CImGui.lib.ImDrawFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderFrame — Function
RenderFrame(
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fill_col::Integer
)
RenderFrame(
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fill_col::Integer,
    borders
)
RenderFrame(
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    fill_col::Integer,
    borders,
    rounding
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderFrameBorder — Function
RenderFrameBorder(
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
RenderFrameBorder(
    p_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    p_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    rounding
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderMouseCursor — Method
RenderMouseCursor(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    scale,
    mouse_cursor::Union{CImGui.lib.ImGuiMouseCursor_, Integer},
    col_fill::Integer,
    col_border::Integer,
    col_shadow::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderNavCursor — Function
RenderNavCursor(bb::CImGui.lib.ImRect, id::Integer)
RenderNavCursor(
    bb::CImGui.lib.ImRect,
    id::Integer,
    flags::Union{CImGui.lib.ImGuiNavRenderCursorFlags_, Integer}
)
RenderNavCursor(
    bb::CImGui.lib.ImRect,
    id::Integer,
    flags::Union{CImGui.lib.ImGuiNavRenderCursorFlags_, Integer},
    rounding
)

Navigation highlight.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderPlatformWindowsDefault — Function
RenderPlatformWindowsDefault()
RenderPlatformWindowsDefault(platform_render_arg)
RenderPlatformWindowsDefault(
    platform_render_arg,
    renderer_render_arg
)

Call in main loop. will call RenderWindow/SwapBuffers platform functions for each secondary viewport which doesn't have the ImGuiViewportFlags_Minimized flag set. May be reimplemented by user for custom rendering needs.

Upstream link.

source
CImGui.RenderRectFilledInRangeH — Method
RenderRectFilledInRangeH(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    rect::CImGui.lib.ImRect,
    col::Integer,
    fill_x0,
    fill_x1,
    rounding
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderRectFilledWithHole — Method
RenderRectFilledWithHole(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    outer::CImGui.lib.ImRect,
    inner::CImGui.lib.ImRect,
    col::Integer,
    rounding
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderText — Function
RenderText(
    self::Ptr{CImGui.lib.ImFont},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    size,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    clip_rect::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    text_begin,
    text_end
)
RenderText(
    self::Ptr{CImGui.lib.ImFont},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    size,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    clip_rect::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    text_begin,
    text_end,
    wrap_width
)
RenderText(
    self::Ptr{CImGui.lib.ImFont},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    size,
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col::Integer,
    clip_rect::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    text_begin,
    text_end,
    wrap_width,
    flags::Union{CImGui.lib.ImDrawTextFlags_, Integer}
)

Upstream link.

source
CImGui.RenderText — Function
RenderText(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text
)
RenderText(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end
)
RenderText(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    hide_text_after_hash
)

Render helpers AVOID USING OUTSIDE OF IMGUI.CPP! NOT FOR PUBLIC CONSUMPTION. THOSE FUNCTIONS ARE A MESS. THEIR SIGNATURE AND BEHAVIOR WILL CHANGE, THEY NEED TO BE REFACTORED INTO SOMETHING DECENT. NB: All position are in absolute pixels coordinates (we are never using window coordinates internally).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderTextClipped — Function
RenderTextClipped(
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}}
)
RenderTextClipped(
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    align::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
RenderTextClipped(
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    align::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clip_rect::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderTextClippedEx — Function
RenderTextClippedEx(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}}
)
RenderTextClippedEx(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    align::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
RenderTextClippedEx(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}},
    align::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clip_rect::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderTextEllipsis — Method
RenderTextEllipsis(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    pos_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    pos_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    ellipsis_max_x,
    text,
    text_end,
    text_size_if_known::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVec2}, Ref{Tuple{T, T} where T}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.RenderTextWrapped — Method
RenderTextWrapped(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    text,
    text_end,
    wrap_width
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Reset — Method
Reset(
    self::Ptr{CImGui.lib.ImGuiListClipperData},
    clipper::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiListClipper}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Resize — Method
Resize(self::Ptr{CImGui.lib.ImGuiTextBuffer}, size)

Similar to resize(0) on ImVector: empty string but don't free buffer.

Upstream link.

source
CImGui.SameLine — Function
SameLine()
SameLine(offset_from_start_x)
SameLine(offset_from_start_x, spacing)

Call between widgets or groups to layout them horizontally. X position given in window coordinates.

Upstream link.

source
CImGui.SaveIniSettingsToDisk — Method
SaveIniSettingsToDisk(ini_filename)

This is automatically called (if io.IniFilename is not empty) a few seconds after any modification that should be reflected in the .ini file (and also by DestroyContext).

Upstream link.

source
CImGui.SaveIniSettingsToMemory — Function
SaveIniSettingsToMemory() -> Ptr{Int8}
SaveIniSettingsToMemory(out_ini_size) -> Ptr{Int8}

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

Upstream link.

source
CImGui.ScaleAllSizes — Method
ScaleAllSizes(
    self::Ptr{CImGui.lib.ImGuiStyle},
    scale_factor
)

Scale all spacing/padding/thickness values. Do not scale fonts. See comments in definition. Consider not calling this if your initial scale factor if <1.0.

Upstream link.

source
CImGui.ScaleClipRects — Method
ScaleClipRects(
    self::Ptr{CImGui.lib.ImDrawData},
    fb_scale::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)

Helper to scale the ClipRect field of each ImDrawCmd. Use if your final output buffer is at a different scale than Dear ImGui expects, or if there is a difference between your window resolution and framebuffer resolution.

Upstream link.

source
CImGui.ScrollToBringRectIntoView — Method
ScrollToBringRectIntoView(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    rect::CImGui.lib.ImRect
)

//#ifndef IMGUIDISABLEOBSOLETE_FUNCTIONS.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ScrollToItem — Function
ScrollToItem()
ScrollToItem(
    flags::Union{CImGui.lib.ImGuiScrollFlags_, Integer}
)

Early work-in-progress API (ScrollToItem() will become public).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ScrollToRect — Function
ScrollToRect(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    rect::CImGui.lib.ImRect
)
ScrollToRect(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    rect::CImGui.lib.ImRect,
    flags::Union{CImGui.lib.ImGuiScrollFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ScrollToRectEx — Function
ScrollToRectEx(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    rect::CImGui.lib.ImRect
) -> CImGui.lib.ImVec2
ScrollToRectEx(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    rect::CImGui.lib.ImRect,
    flags::Union{CImGui.lib.ImGuiScrollFlags_, Integer}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ScrollbarEx — Function
ScrollbarEx(
    bb::CImGui.lib.ImRect,
    id::Integer,
    axis::CImGui.lib.ImGuiAxis,
    p_scroll_v::Union{Ptr{Nothing}, Ref{Int64}},
    avail_v::Int64,
    contents_v::Int64
) -> Bool
ScrollbarEx(
    bb::CImGui.lib.ImRect,
    id::Integer,
    axis::CImGui.lib.ImGuiAxis,
    p_scroll_v::Union{Ptr{Nothing}, Ref{Int64}},
    avail_v::Int64,
    contents_v::Int64,
    draw_rounding_flags::Union{CImGui.lib.ImDrawFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SeekCursorForItem — Method
SeekCursorForItem(
    self::Ptr{CImGui.lib.ImGuiListClipper},
    item_index
)

Seek cursor toward given item. This is automatically called while stepping.

  • The only reason to call this is: you can use ImGuiListClipper::Begin(INT_MAX) if you don't know item count ahead of time.
  • In this case, after all steps are done, you'll want to call SeekCursorForItem(item_count).

Upstream link.

source
CImGui.Selectable — Function
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    selected::Bool
) -> Bool
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    selected::Bool,
    flags::Union{CImGui.lib.ImGuiSelectableFlags_, Integer}
) -> Bool
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    selected::Bool,
    flags::Union{CImGui.lib.ImGuiSelectableFlags_, Integer},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

Widgets: Selectables

  • A selectable highlights when hovered, and can display another color when selected.
  • Neighbors selectable extend their highlight bounds in order to leave no gap between them. This is so a series of selected Selectable appear contiguous.// "bool selected" carry the selection state (read-only). Selectable() is clicked is returns true 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.

Upstream link.

source
CImGui.Selectable — Function
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_selected::Ref{Bool}
) -> Bool
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_selected::Ref{Bool},
    flags::Union{CImGui.lib.ImGuiSelectableFlags_, Integer}
) -> Bool
Selectable(
    label::Union{Ptr{Int8}, Ptr{Nothing}, String},
    p_selected::Ref{Bool},
    flags::Union{CImGui.lib.ImGuiSelectableFlags_, Integer},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Bool

"bool* p_selected" point to the selection state (read-write), as a convenient helper.

Upstream link.

source
CImGui.Separator — Method
Separator()

Other layout functions// separator, generally horizontal. inside a menu bar or in horizontal layout mode, this becomes a vertical separator.

Upstream link.

source
CImGui.SeparatorEx — Function
SeparatorEx(
    flags::Union{CImGui.lib.ImGuiSeparatorFlags_, Integer}
)
SeparatorEx(
    flags::Union{CImGui.lib.ImGuiSeparatorFlags_, Integer},
    thickness
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetActiveID — Method
SetActiveID(
    id::Integer,
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetAllInt — Method
SetAllInt(self::Ptr{CImGui.lib.ImGuiStorage}, val)

Obsolete: use on your own storage if you know only integer are being stored (open/close all tree nodes).

Upstream link.

source
CImGui.SetAllocatorFunctions — Function
SetAllocatorFunctions(
    alloc_func::Ptr{Nothing},
    free_func::Ptr{Nothing}
)
SetAllocatorFunctions(
    alloc_func::Ptr{Nothing},
    free_func::Ptr{Nothing},
    user_data
)

Memory Allocators

  • Those functions are not reliant on the current context.
  • DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions() for each static/DLL boundary you are calling from. Read "Context and Memory Allocators" section of imgui.cpp for more details.

Upstream link.

source
CImGui.SetAppAcceptingEvents — Method
SetAppAcceptingEvents(
    self::Ptr{CImGui.lib.ImGuiIO},
    accepting_events
)

Set master flag for accepting key/mouse/text events (default to true). Useful if you have native dialog boxes that are interrupting your application loop/refresh, and you want to disable events being queued while your app is frozen.

Upstream link.

source
CImGui.SetColumnOffset — Method
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.

Upstream link.

source
CImGui.SetContextName — Method
SetContextName(
    ctx::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    name
)

Context name & generic context hooks.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetCurrentFont — Method
SetCurrentFont(
    font::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFont}},
    font_size_before_scaling,
    font_size_after_scaling
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetCurrentViewport — Method
SetCurrentViewport(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewportP}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetDragDropPayload — Function
SetDragDropPayload(type, data, sz) -> Bool
SetDragDropPayload(
    type,
    data,
    sz,
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
) -> 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. Return true when payload has been accepted.

Upstream link.

source
CImGui.SetFocusID — Method
SetFocusID(
    id::Integer,
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetFontLoader — Method
SetFontLoader(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_loader::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontLoader}}
)

Change font loader at runtime.

Upstream link.

source
CImGui.SetHSV — Function
SetHSV(self::Ptr{CImGui.lib.ImColor}, h, s, v)
SetHSV(self::Ptr{CImGui.lib.ImColor}, h, s, v, a)

FIXME-OBSOLETE: May need to obsolete/cleanup those helpers.

Upstream link.

source
CImGui.SetItemKeyOwner — Method
SetItemKeyOwner(
    key::CImGui.lib.ImGuiKey,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetItemKeyOwner — Method
SetItemKeyOwner(key::CImGui.lib.ImGuiKey) -> Bool

Inputs Utilities: Key/Input Ownership [BETA]

  • One common use case would be to allow your items to disable standard inputs behaviors such as Tab or Alt key handling, Mouse Wheel scrolling, etc. e.g. Button(...); if (SetItemKeyOwner(ImGuiKey_MouseWheelY)) ... to make hovering/activating a button disable wheel for scrolling.
  • Reminder ImGuiKey enum include access to mouse buttons and gamepad, so key ownership can apply to them.
  • The return value of SetItemKeyOwner() says if ownership has been requested for the item, which is a shortcut to calling yet non-public TestKeyOwner() function.
  • Many related features are still in imgui_internal.h. For instance, most IsKeyXXX()/IsMouseXXX() functions have an owner-id-aware version.// Set key owner to last item ID if it is hovered or active. Return true when ownership has been set. Roughly equivalent to 'if (TestKeyOwner(key, GetItemID()) && (IsItemHovered() || IsItemActive())) SetKeyOwner(key, GetItemID());'.

Upstream link.

source
CImGui.SetItemSelected — Method
SetItemSelected(
    self::Ptr{CImGui.lib.ImGuiSelectionBasicStorage},
    id::Integer,
    selected
)

Add/remove an item from selection (generally done by ApplyRequests() function).

Upstream link.

source
CImGui.SetKeyEventNativeData — Function
SetKeyEventNativeData(
    self::Ptr{CImGui.lib.ImGuiIO},
    key::CImGui.lib.ImGuiKey,
    native_keycode,
    native_scancode
)
SetKeyEventNativeData(
    self::Ptr{CImGui.lib.ImGuiIO},
    key::CImGui.lib.ImGuiKey,
    native_keycode,
    native_scancode,
    native_legacy_index
)

[Optional] Specify index for legacy <1.87 IsKeyXXX() functions with native indices + specify native keycode, scancode.

Upstream link.

source
CImGui.SetKeyOwner — Function
SetKeyOwner(key::CImGui.lib.ImGuiKey, owner_id::Integer)
SetKeyOwner(
    key::CImGui.lib.ImGuiKey,
    owner_id::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetKeyOwnersForKeyChord — Function
SetKeyOwnersForKeyChord(key::Integer, owner_id::Integer)
SetKeyOwnersForKeyChord(
    key::Integer,
    owner_id::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetKeyboardFocusHere — Function
SetKeyboardFocusHere()
SetKeyboardFocusHere(offset)

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

Upstream link.

source
CImGui.SetLastItemData — Method
SetLastItemData(
    item_id::Integer,
    item_flags::Union{CImGui.lib.ImGuiItemFlags_, Integer},
    status_flags::Union{CImGui.lib.ImGuiItemStatusFlags_, Integer},
    item_rect::CImGui.lib.ImRect
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetLocalFlags — Method
SetLocalFlags(
    self::Ptr{CImGui.lib.ImGuiDockNode},
    flags::Union{CImGui.lib.ImGuiDockNodeFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetNavCursorVisible — Method
SetNavCursorVisible(visible)

Keyboard/Gamepad Navigation// alter visibility of keyboard/gamepad cursor. by default: show when using an arrow key, hide when clicking with mouse.

Upstream link.

source
CImGui.SetNavID — Method
SetNavID(
    id::Integer,
    nav_layer::CImGui.lib.ImGuiNavLayer,
    focus_scope_id::Integer,
    rect_rel::CImGui.lib.ImRect
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetNextFrameWantCaptureKeyboard — Method
SetNextFrameWantCaptureKeyboard(want_capture_keyboard)

Override io.WantCaptureKeyboard flag next frame (said flag is left for your application to handle, typically when true it instructs your app to ignore inputs). e.g. force capture keyboard when your widget is being hovered. This is equivalent to setting "io.WantCaptureKeyboard = wantcapturekeyboard"; after the next NewFrame() call.

Upstream link.

source
CImGui.SetNextFrameWantCaptureMouse — Method
SetNextFrameWantCaptureMouse(want_capture_mouse)

Override io.WantCaptureMouse flag next frame (said flag is left for your application to handle, typical when true it instructs your app to ignore inputs). This is equivalent to setting "io.WantCaptureMouse = wantcapturemouse;" after the next NewFrame() call.

Upstream link.

source
CImGui.SetNextItemAllowOverlap — Method
SetNextItemAllowOverlap()

Overlapping mode// allow next item to be overlapped by a subsequent item. Typically useful with InvisibleButton(), Selectable(), TreeNode() covering an area where subsequent items may need to be added. Note that both Selectable() and TreeNode() have dedicated flags doing this.

Upstream link.

source
CImGui.SetNextItemWidth — Method
SetNextItemWidth(item_width)

Set width of the next common large "item+label" widget. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side).

Upstream link.

source
CImGui.SetNextWindowBgAlpha — Method
SetNextWindowBgAlpha(alpha)

Set next window background color alpha. helper to easily override the Alpha component of ImGuiColWindowBg/ChildBg/PopupBg. you may also use ImGuiWindowFlagsNoBackground.

Upstream link.

source
CImGui.SetNextWindowClass — Method
SetNextWindowClass(
    window_class::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindowClass}}
)

Set next window class (control docking compatibility + provide hints to platform backend via custom viewport flags and platform parent/child relationship).

Upstream link.

source
CImGui.SetNextWindowContentSize — Method
SetNextWindowContentSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)

Set next window content size (~ scrollable client area, which enforce the range of scrollbars). Not including window decorations (title bar, menu bar, etc.) nor WindowPadding. set an axis to 0.0f to leave it automatic. call before Begin().

Upstream link.

source
CImGui.SetNextWindowPos — Function
SetNextWindowPos(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetNextWindowPos(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)
SetNextWindowPos(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer},
    pivot::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)

Window manipulation

  • Prefer using SetNextXXX functions (before Begin) rather that SetXXX functions (after Begin).// set next window position. call before Begin(). use pivot=(0.5f,0.5f) to center on given point, etc.

Upstream link.

source
CImGui.SetNextWindowRefreshPolicy — Method
SetNextWindowRefreshPolicy(
    flags::Union{CImGui.lib.ImGuiWindowRefreshFlags_, Integer}
)

Windows: Idle, Refresh Policies [EXPERIMENTAL].

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetNextWindowSize — Function
SetNextWindowSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetNextWindowSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

Set next window size. set axis to 0.0f to force an auto-fit on this axis. call before Begin().

Upstream link.

source
CImGui.SetNextWindowSizeConstraints — Function
SetNextWindowSizeConstraints(
    size_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    size_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetNextWindowSizeConstraints(
    size_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    size_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    custom_callback::Union{Ptr{Nothing}, Base.CFunction}
)
SetNextWindowSizeConstraints(
    size_min::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    size_max::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    custom_callback::Union{Ptr{Nothing}, Base.CFunction},
    custom_callback_data
)

Set next window size limits. use 0.0f or FLT_MAX if you don't want limits. Use -1 for both min and max of same axis to preserve current size (which itself is a constraint). Use callback to apply non-trivial programmatic constraints.

Upstream link.

source
CImGui.SetScrollFromPosX — Function
SetScrollFromPosX(local_x::Real)
SetScrollFromPosX(local_x::Real, center_x_ratio::Real)

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

Upstream link.

source
CImGui.SetScrollFromPosX — Method
SetScrollFromPosX(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    local_x::Real,
    center_x_ratio::Real
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetScrollFromPosY — Function
SetScrollFromPosY(local_y::Real)
SetScrollFromPosY(local_y::Real, center_y_ratio::Real)

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

Upstream link.

source
CImGui.SetScrollFromPosY — Method
SetScrollFromPosY(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    local_y::Real,
    center_y_ratio::Real
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetScrollHereX — Function
SetScrollHereX()
SetScrollHereX(center_x_ratio)

Adjust scrolling amount to make current cursor position visible. centerxratio=0.0: left, 0.5: center, 1.0: right. When using to make a "default/current item" visible, consider using SetItemDefaultFocus() instead.

Upstream link.

source
CImGui.SetScrollHereY — Function
SetScrollHereY()
SetScrollHereY(center_y_ratio)

Adjust scrolling amount to make current cursor position visible. centeryratio=0.0: top, 0.5: center, 1.0: bottom. When using to make a "default/current item" visible, consider using SetItemDefaultFocus() instead.

Upstream link.

source
CImGui.SetScrollX — Method
SetScrollX(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    scroll_x::Real
)

Scrolling.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetScrollY — Method
SetScrollY(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    scroll_y::Real
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetShortcutRouting — Method
SetShortcutRouting(
    key_chord::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer},
    owner_id::Integer
) -> Bool

Owner_id needs to be explicit and cannot be 0.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetStateStorage — Method
SetStateStorage(
    storage::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiStorage}}
)

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

Upstream link.

source
CImGui.SetTabItemClosed — Method
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.

Upstream link.

source
CImGui.SetTexID — Method
SetTexID(
    self::Ptr{CImGui.lib.ImTextureData},
    tex_id::UInt64
)

Called by Renderer backend

  • Call SetTexID() and SetStatus() after honoring texture requests. Never modify TexID and Status directly!
  • A backend may decide to destroy a texture that we did not request to destroy, which is fine (e.g. freeing resources), but we immediately set the texture back in _WantCreate mode.

Upstream link.

source
CImGui.SetTooltip — Method
SetTooltip(fmt)

Set a text-only tooltip. Often used after a ImGui::IsItemHovered() check. Override any previous call to SetTooltip().

Upstream link.

source
CImGui.SetWindowClipRectBeforeSetChannel — Method
SetWindowClipRectBeforeSetChannel(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    clip_rect::CImGui.lib.ImRect
)

Legacy Columns API (this is not exposed because we will encourage transitioning to the Tables API).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowCollapsed — Function
SetWindowCollapsed(
    name::Union{Ptr{Int8}, String},
    collapsed::Bool
)
SetWindowCollapsed(
    name::Union{Ptr{Int8}, String},
    collapsed::Bool,
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

Set named window collapsed state.

Upstream link.

source
CImGui.SetWindowCollapsed — Function
SetWindowCollapsed(collapsed::Bool)
SetWindowCollapsed(
    collapsed::Bool,
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

(not recommended) set current window collapsed state. prefer using SetNextWindowCollapsed().

Upstream link.

source
CImGui.SetWindowCollapsed — Function
SetWindowCollapsed(
    window::Ref{CImGui.lib.ImGuiWindow},
    collapsed::Bool
)
SetWindowCollapsed(
    window::Ref{CImGui.lib.ImGuiWindow},
    collapsed::Bool,
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowDock — Method
SetWindowDock(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    dock_id::Integer,
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowHitTestHole — Method
SetWindowHitTestHole(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowParentWindowForFocusRoute — Method
SetWindowParentWindowForFocusRoute(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    parent_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)

You may also use SetNextWindowClass()'s FocusRouteParentWindowId field.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowPos — Function
SetWindowPos(
    window::Ref{CImGui.lib.ImGuiWindow},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetWindowPos(
    window::Ref{CImGui.lib.ImGuiWindow},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowPos — Function
SetWindowPos(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetWindowPos(
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

(not recommended) set current window position - call within Begin()/End(). prefer using SetNextWindowPos(), as this may incur tearing and side-effects.

Upstream link.

source
CImGui.SetWindowPos — Function
SetWindowPos(
    name::Union{Ptr{Int8}, String},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetWindowPos(
    name::Union{Ptr{Int8}, String},
    pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

Set named window position.

Upstream link.

source
CImGui.SetWindowSize — Function
SetWindowSize(
    window::Ref{CImGui.lib.ImGuiWindow},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetWindowSize(
    window::Ref{CImGui.lib.ImGuiWindow},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SetWindowSize — Function
SetWindowSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetWindowSize(
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

(not recommended) set current window size - call within Begin()/End(). set to ImVec2(0, 0) to force an auto-fit. prefer using SetNextWindowSize(), as this may incur tearing and minor side-effects.

Upstream link.

source
CImGui.SetWindowSize — Function
SetWindowSize(
    name::Union{Ptr{Int8}, String},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
SetWindowSize(
    name::Union{Ptr{Int8}, String},
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cond::Union{CImGui.lib.ImGuiCond_, Integer}
)

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

Upstream link.

source
CImGui.SetWindowViewport — Method
SetWindowViewport(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewportP}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ShadeVertsLinearColorGradientKeepAlpha — Method
ShadeVertsLinearColorGradientKeepAlpha(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    vert_start_idx,
    vert_end_idx,
    gradient_p0::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    gradient_p1::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    col0::Integer,
    col1::Integer
)

Shade functions (write over already created vertices).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ShadeVertsLinearUV — Method
ShadeVertsLinearUV(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    vert_start_idx,
    vert_end_idx,
    a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_a::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    uv_b::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    clamp
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ShadeVertsTransformPos — Method
ShadeVertsTransformPos(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    vert_start_idx,
    vert_end_idx,
    pivot_in::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    cos_a,
    sin_a,
    pivot_out::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Shortcut — Function
Shortcut(key_chord::Integer) -> Bool
Shortcut(
    key_chord::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer}
) -> Bool

Inputs Utilities: Shortcut Testing & Routing

  • Typical use is e.g.: 'if (ImGui::Shortcut(ImGuiModCtrl | ImGuiKeyS)) ... '.
  • Flags: Default route use ImGuiInputFlagsRouteFocused, but see ImGuiInputFlagsRouteGlobal and other options in ImGuiInputFlags_!
  • Flags: Use ImGuiInputFlags_Repeat to support repeat.
  • ImGuiKeyChord = a ImGuiKey + optional ImGuiModAlt/ImGuiModCtrl/ImGuiModShift/ImGuiModSuper. ImGuiKeyC // Accepted by functions taking ImGuiKey or ImGuiKeyChord arguments ImGuiModCtrl | ImGuiKeyC // Accepted by functions taking ImGuiKeyChord arguments only ImGuiModXXX values are legal to combine with an ImGuiKey. You CANNOT combine two ImGuiKey values.
  • The general idea is that several callers may register interest in a shortcut, and only one owner gets it. Parent -> call Shortcut(Ctrl+S) // When Parent is focused, Parent gets the shortcut. Child1 -> call Shortcut(Ctrl+S) // When Child1 is focused, Child1 gets the shortcut (Child1 overrides Parent shortcuts) Child2 -> no call // When Child2 is focused, Parent gets the shortcut. The whole system is order independent, so if Child1 makes its calls before Parent, results will be identical. This is an important property as it facilitate working with foreign code or larger codebase.
  • To understand the difference:
    • IsKeyChordPressed() compares mods and call IsKeyPressed() -> the function has no side-effect.
    • Shortcut() submits a route, routes are resolved, if it currently can be routed it calls IsKeyChordPressed() -> the function has (desirable) side-effects as it can prevents another call from getting the route.
  • Visualize registered routes in 'Metrics/Debugger->Inputs'.

Upstream link.

source
CImGui.Shortcut — Method
Shortcut(
    key_chord::Integer,
    flags::Union{CImGui.lib.ImGuiInputFlags_, Integer},
    owner_id::Integer
) -> Bool

Shortcut Testing & Routing

  • Set Shortcut() and SetNextItemShortcut() in imgui.h
  • When a policy (except for ImGuiInputFlagsRouteAlways ) is set, Shortcut() will register itself with SetShortcutRouting(), allowing the system to decide where to route the input among other route-aware calls. ( using ImGuiInputFlagsRouteAlways is roughly equivalent to calling IsKeyChordPressed(key) and bypassing route registration and check)
  • When using one of the routing option:
    • The default route is ImGuiInputFlags_RouteFocused (accept inputs if window is in focus stack. Deep-most focused window takes inputs. ActiveId takes inputs over deep-most focused window.)
    • Routes are requested given a chord (key + modifiers) and a routing policy.
    • Routes are resolved during NewFrame(): if keyboard modifiers are matching current ones: SetKeyOwner() is called + route is granted for the frame.
    • Each route may be granted to a single owner. When multiple requests are made we have policies to select the winning route (e.g. deep most window).
    • Multiple read sites may use the same owner id can all access the granted route.
    • When owner_id is 0 we use the current Focus Scope ID as a owner ID in order to identify our location.
  • You can chain two unrelated windows in the focus stack using SetWindowParentWindowForFocusRoute() e.g. if you have a tool window associated to a document, and you want document shortcuts to run when the tool is focused.
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.ShowDemoWindow — Function
ShowDemoWindow()
ShowDemoWindow(p_open)

Demo, Debug, Information// create Demo window. demonstrate most ImGui features. call this to learn about the library! try to make it always available in your application!

Upstream link.

source
CImGui.ShowMetricsWindow — Function
ShowMetricsWindow()
ShowMetricsWindow(p_open)

Create Metrics/Debugger window. display Dear ImGui internals: windows, draw commands, various internal state, etc.

Upstream link.

source
CImGui.ShowStyleEditor — Function
ShowStyleEditor()
ShowStyleEditor(
    ref::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiStyle}}
)

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

Upstream link.

source
CImGui.ShrinkWidths — Method
ShrinkWidths(
    items::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiShrinkWidthItem}},
    count,
    width_excess,
    width_min
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Shutdown — Method
Shutdown()

Since 1.60 this is a private function. You can call DestroyContext() to destroy the context created by CreateContext().

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Size — Method
Size(self::Ptr{CImGui.lib.ImGuiTextIndex}) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SliderAngle — Function
SliderAngle(label, v_rad) -> Bool
SliderAngle(label, v_rad, v_degrees_min) -> Bool
SliderAngle(
    label,
    v_rad,
    v_degrees_min,
    v_degrees_max
) -> Bool
SliderAngle(
    label,
    v_rad,
    v_degrees_min,
    v_degrees_max,
    format
) -> Bool
SliderAngle(
    label,
    v_rad,
    v_degrees_min,
    v_degrees_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderBehavior — Method
SliderBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_v,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer},
    out_grab_bb::Union{Ptr{Nothing}, Ref{CImGui.lib.ImRect}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.SliderFloat — Function
SliderFloat(label, v, v_min, v_max) -> Bool
SliderFloat(label, v, v_min, v_max, format) -> Bool
SliderFloat(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Widgets: Regular Sliders

  • Ctrl+Click on any slider to turn them into an input box. Manually input values aren't clamped by default and can go off-bounds. Use ImGuiSliderFlags_AlwaysClamp to always clamp.
  • Adjust format string to decorate the value with a prefix, a suffix, or adapt the editing and display precision e.g. "%.3f" -> 1.234; "%5.2f secs" -> 01.23 secs; "Biscuit: %.0f" -> Biscuit: 1; etc.
  • Format string may also be set to NULL or use the default format ("%f" or "%d").
  • Legacy: Pre-1.78 there are SliderXXX() function signatures that take a final float power=1.0f' argument instead of theImGuiSliderFlags flags=0' argument. If you get a warning converting a float to ImGuiSliderFlags, read https://github.com/ocornut/imgui/issues/3361// adjust format to decorate the value with a prefix or a suffix for in-slider labels or unit display.

Upstream link.

source
CImGui.SliderFloat2 — Function
SliderFloat2(label, v, v_min, v_max) -> Bool
SliderFloat2(label, v, v_min, v_max, format) -> Bool
SliderFloat2(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderFloat3 — Function
SliderFloat3(label, v, v_min, v_max) -> Bool
SliderFloat3(label, v, v_min, v_max, format) -> Bool
SliderFloat3(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderFloat4 — Function
SliderFloat4(label, v, v_min, v_max) -> Bool
SliderFloat4(label, v, v_min, v_max, format) -> Bool
SliderFloat4(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderInt — Function
SliderInt(label, v, v_min, v_max) -> Bool
SliderInt(label, v, v_min, v_max, format) -> Bool
SliderInt(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderInt2 — Function
SliderInt2(label, v, v_min, v_max) -> Bool
SliderInt2(label, v, v_min, v_max, format) -> Bool
SliderInt2(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderInt3 — Function
SliderInt3(label, v, v_min, v_max) -> Bool
SliderInt3(label, v, v_min, v_max, format) -> Bool
SliderInt3(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderInt4 — Function
SliderInt4(label, v, v_min, v_max) -> Bool
SliderInt4(label, v, v_min, v_max, format) -> Bool
SliderInt4(
    label,
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderScalar — Function
SliderScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max
) -> Bool
SliderScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max,
    format
) -> Bool
SliderScalar(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.SliderScalarN — Function
SliderScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_min,
    p_max
) -> Bool
SliderScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_min,
    p_max,
    format
) -> Bool
SliderScalarN(
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    components,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.Split — Method
Split(
    self::Ptr{CImGui.lib.ImDrawListSplitter},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    count
)

Upstream link.

source
CImGui.Split — Method
Split(
    self::Ptr{CImGui.lib.ImGuiTextRange},
    separator,
    out::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_ImGuiTextRange}}
)

Upstream link.

source
CImGui.SplitterBehavior — Function
SplitterBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    axis::CImGui.lib.ImGuiAxis,
    size1,
    size2,
    min_size1,
    min_size2
) -> Bool
SplitterBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    axis::CImGui.lib.ImGuiAxis,
    size1,
    size2,
    min_size1,
    min_size2,
    hover_extend
) -> Bool
SplitterBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    axis::CImGui.lib.ImGuiAxis,
    size1,
    size2,
    min_size1,
    min_size2,
    hover_extend,
    hover_visibility_delay
) -> Bool
SplitterBehavior(
    bb::CImGui.lib.ImRect,
    id::Integer,
    axis::CImGui.lib.ImGuiAxis,
    size1,
    size2,
    min_size1,
    min_size2,
    hover_extend,
    hover_visibility_delay,
    bg_col::Integer
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.StartMouseMovingWindowOrNode — Method
StartMouseMovingWindowOrNode(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    node::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiDockNode}},
    undock
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Step — Method
Step(self::Ptr{CImGui.lib.ImGuiListClipper}) -> Bool

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

Upstream link.

source
CImGui.SubtractMonths — Method
SubtractMonths(self::Ptr{CImGui.lib.ImGuiPackedDate}, m)

FIXME-OPT: Stupid but enough for what we do with it.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Swap — Method
Swap(
    self::Ptr{CImGui.lib.ImGuiSelectionBasicStorage},
    r::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiSelectionBasicStorage}}
)

Swap two selections.

Upstream link.

source
CImGui.TabBarAddTab — Method
TabBarAddTab(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab_flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer},
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarCloseTab — Method
TabBarCloseTab(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabItem}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarFindTabByID — Method
TabBarFindTabByID(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab_id::Integer
) -> Ptr{CImGui.lib.ImGuiTabItem}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarFindTabByOrder — Method
TabBarFindTabByOrder(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    order
) -> Ptr{CImGui.lib.ImGuiTabItem}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarGetCurrentTab — Method
TabBarGetCurrentTab(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}}
) -> Ptr{CImGui.lib.ImGuiTabItem}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarGetTabName — Method
TabBarGetTabName(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabItem}}
) -> Ptr{Int8}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarGetTabOrder — Method
TabBarGetTabOrder(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabItem}}
) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarQueueFocus — Method
TabBarQueueFocus(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab::Ref{CImGui.lib.ImGuiTabItem}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarQueueFocus — Method
TabBarQueueFocus(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab_name::Union{Ptr{Int8}, String}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarQueueReorder — Method
TabBarQueueReorder(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabItem}},
    offset
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarQueueReorderFromMousePos — Method
TabBarQueueReorderFromMousePos(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabItem}},
    mouse_pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabBarRemoveTab — Method
TabBarRemoveTab(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    tab_id::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabItemBackground — Method
TabItemBackground(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    bb::CImGui.lib.ImRect,
    flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer},
    col::Integer
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabItemButton — Function
TabItemButton(label) -> Bool
TabItemButton(
    label,
    flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer}
) -> Bool

Create a Tab behaving like a button. return true when clicked. cannot be selected in the tab bar.

Upstream link.

source
CImGui.TabItemCalcSize — Method
TabItemCalcSize(
    label::Union{Ptr{Int8}, String},
    has_close_button_or_unsaved_marker::Bool
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabItemCalcSize — Method
TabItemCalcSize(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabItemEx — Method
TabItemEx(
    tab_bar::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTabBar}},
    label,
    p_open,
    flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer},
    docked_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabItemLabelAndCloseButton — Method
TabItemLabelAndCloseButton(
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    bb::CImGui.lib.ImRect,
    flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer},
    frame_padding::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    label,
    tab_id::Integer,
    close_button_id::Integer,
    is_contents_visible,
    out_just_closed,
    out_text_clipped
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TabItemSpacing — Method
TabItemSpacing(
    str_id,
    flags::Union{CImGui.lib.ImGuiTabItemFlags_, Integer},
    width
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableAngledHeadersRowEx — Method
TableAngledHeadersRowEx(
    row_id::Integer,
    angle,
    max_label_width,
    data::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableHeaderData}},
    data_count
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableDrawDefaultContextMenu — Method
TableDrawDefaultContextMenu(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    flags_for_section_to_display::Union{CImGui.lib.ImGuiTableFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableFixColumnSortDirection — Method
TableFixColumnSortDirection(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableColumn}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetBoundSettings — Method
TableGetBoundSettings(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}}
) -> Ptr{CImGui.lib.ImGuiTableSettings}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetCellBgRect — Method
TableGetCellBgRect(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column_n
) -> CImGui.lib.ImRect
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetColumnFlags — Function
TableGetColumnFlags() -> Int32
TableGetColumnFlags(column_n) -> Int32

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

Upstream link.

source
CImGui.TableGetColumnName — Function
TableGetColumnName() -> Ptr{Int8}
TableGetColumnName(column_n::Integer) -> Ptr{Int8}

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

Upstream link.

source
CImGui.TableGetColumnName — Method
TableGetColumnName(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column_n::Integer
) -> Ptr{Int8}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetColumnResizeID — Function
TableGetColumnResizeID(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column_n
) -> UInt32
TableGetColumnResizeID(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column_n,
    instance_no
) -> UInt32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetColumnWidthAuto — Method
TableGetColumnWidthAuto(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableColumn}}
) -> Float32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetHoveredColumn — Method
TableGetHoveredColumn() -> Int32

Return hovered column. return -1 when table is not hovered. return columnscount if the unused space at the right of visible columns is hovered. Can also use (TableGetColumnFlags() & ImGuiTableColumnFlagsIsHovered) instead.

Upstream link.

source
CImGui.TableGetHoveredRow — Method
TableGetHoveredRow() -> Int32

Retrieve PREVIOUS FRAME hovered row. This difference with TableGetHoveredColumn() is the reason why this is not public yet.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetInstanceData — Method
TableGetInstanceData(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    instance_no
) -> Ptr{CImGui.lib.ImGuiTableInstanceData}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableGetSortSpecs — Method
TableGetSortSpecs() -> Ptr{CImGui.lib.ImGuiTableSortSpecs}

Tables: Sorting & Miscellaneous functions

  • Sorting: call TableGetSortSpecs() to retrieve latest sort specs for the table. NULL when not sorting. When 'sort_specs->SpecsDirty == true' you should sort your data. It will be true when sorting specs have changed since last call, or the first time. Make sure to set 'SpecsDirty = false' after sorting, else you may wastefully sort your data every frame!
  • Functions args 'int column_n' treat the default value of -1 as the same as passing the current column index.// get latest sort specs for the table (NULL if not sorting). Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable().

Upstream link.

source
CImGui.TableInitColumnDefaults — Method
TableInitColumnDefaults(
    table::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTable}},
    column::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableColumn}},
    init_mask::Union{CImGui.lib.ImGuiTableColumnFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableLoadSettingsForColumn — Method
TableLoadSettingsForColumn(
    column::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableColumn}},
    column_settings::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTableColumnSettings}},
    load_flags::Union{CImGui.lib.ImGuiTableFlags_, Integer}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TableNextRow — Function
TableNextRow()
TableNextRow(
    row_flags::Union{CImGui.lib.ImGuiTableRowFlags_, Integer}
)
TableNextRow(
    row_flags::Union{CImGui.lib.ImGuiTableRowFlags_, Integer},
    min_row_height
)

Append into the first cell of a new row. 'minrowheight' include the minimum top and bottom padding aka CellPadding.y * 2.0f.

Upstream link.

source
CImGui.TableSetBgColor — Function
TableSetBgColor(
    target::Union{CImGui.lib.ImGuiTableBgTarget_, Integer},
    color::Integer
)
TableSetBgColor(
    target::Union{CImGui.lib.ImGuiTableBgTarget_, Integer},
    color::Integer,
    column_n
)

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

Upstream link.

source
CImGui.TableSetColumnEnabled — Method
TableSetColumnEnabled(column_n, v)

Change user accessible enabled/disabled state of a column. Set to false to hide the column. User can use the context menu to change this themselves (right-click in headers, or right-click in columns body with ImGuiTableFlags_ContextMenuInBody).

Upstream link.

source
CImGui.TableSetupColumn — Function
TableSetupColumn(label)
TableSetupColumn(
    label,
    flags::Union{CImGui.lib.ImGuiTableColumnFlags_, Integer}
)
TableSetupColumn(
    label,
    flags::Union{CImGui.lib.ImGuiTableColumnFlags_, Integer},
    init_width_or_weight
)
TableSetupColumn(
    label,
    flags::Union{CImGui.lib.ImGuiTableColumnFlags_, Integer},
    init_width_or_weight,
    user_data::Integer
)

Tables: Headers & Columns declaration

  • Use TableSetupColumn() to specify label, resizing policy, default width/weight, various other flags etc. (the trailing 'ImGuiID userdata', which used to be referred to as 'ImGuiID userid', is merely user data that is blindly copied in ImGuiTableColumnSortSpecs).
  • Use TableHeadersRow() to create a header row and automatically submit a TableHeader() for each column. Headers are required to perform: reordering, sorting, and opening the context menu. The context menu can also be made available in columns body using ImGuiTableFlags_ContextMenuInBody.
  • You may manually submit headers using TableNextRow() + TableHeader() calls, but this is only useful in some advanced use cases (e.g. adding custom widgets in header row).
  • Use TableSetupScrollFreeze() to lock columns/rows so they stay visible when scrolled. When freezing columns you would usually also use ImGuiTableColumnFlags_NoHide on them.

Upstream link.

source
CImGui.TempInputScalar — Function
TempInputScalar(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    format
) -> Bool
TempInputScalar(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    format,
    p_clamp_min
) -> Bool
TempInputScalar(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    format,
    p_clamp_min,
    p_clamp_max
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TempInputText — Function
TempInputText(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    buf,
    buf_size
) -> Bool
TempInputText(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool
TempInputText(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction}
) -> Bool
TempInputText(
    bb::CImGui.lib.ImRect,
    id::Integer,
    label,
    buf,
    buf_size,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer},
    callback::Union{Ptr{Nothing}, Base.CFunction},
    user_data
) -> Bool
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TestKeyOwner — Method
TestKeyOwner(
    key::CImGui.lib.ImGuiKey,
    owner_id::Integer
) -> Bool

Test that key is either not owned, either owned by 'owner_id'.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TextAligned — Method
TextAligned(align_x, size_x, fmt)

FIXME-WIP: Works but API is likely to be reworked. This is designed for 1 item on the line. (#7024).

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TextColored — Method
TextColored(
    col::Union{CImGui.lib.ImVec4, NTuple{4, T} where T},
    fmt
)

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

Upstream link.

source
CImGui.TextEx — Function
TextEx(text)
TextEx(text, text_end)
TextEx(
    text,
    text_end,
    flags::Union{CImGui.lib.ImGuiTextFlags_, Integer}
)

Widgets: Text.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TextUnformatted — Function
TextUnformatted(text)
TextUnformatted(text, text_end)

Widgets: Text

  • Note that all functions taking format strings in the API may be passed ("%s", text) or ("%.*s", textlen, text): which will automatically bypass the formatter.// raw text without formatting. Practically equivalent to 'Text("%s", text)' but doesn't require null terminated string if 'textend' is specified.

Upstream link.

source
CImGui.TextWrapped — Method
TextWrapped(fmt)

Shortcut for PushTextWrapPos(0.0f); Text(fmt, ...); 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().

Upstream link.

source
CImGui.ToVec4 — Method
ToVec4(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec4
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Translate — Method
Translate(
    self::Ptr{CImGui.lib.ImRect},
    d::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TranslateWindowsInViewport — Method
TranslateWindowsInViewport(
    viewport::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiViewportP}},
    old_pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    new_pos::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    old_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    new_size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
)

Viewports.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TreeNode — Method
TreeNode(
    str_id::Union{Ptr{Int8}, String},
    fmt::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool

Helper variation to easily decorrelate the id from the displayed string. Read the FAQ about why and how to use ID. to align arbitrary text at the same level as a TreeNode() you can use Bullet().

Upstream link.

source
CImGui.TreeNode — Method
TreeNode(label::Union{Ptr{Int8}, String}) -> Bool

Widgets: Trees

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

Upstream link.

source
CImGui.TreeNodeBehavior — Function
TreeNodeBehavior(
    id::Integer,
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer},
    label
) -> Bool
TreeNodeBehavior(
    id::Integer,
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer},
    label,
    label_end
) -> Bool

Widgets: Tree Nodes.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TreeNodeEx — Function
TreeNodeEx(label::Union{Ptr{Int8}, String}) -> Bool
TreeNodeEx(
    label::Union{Ptr{Int8}, String},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.TreeNodeEx — Method
TreeNodeEx(
    ptr_id::Ref{Nothing},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer},
    fmt::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool

Upstream link.

source
CImGui.TreeNodeEx — Method
TreeNodeEx(
    str_id::Union{Ptr{Int8}, String},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer},
    fmt::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool

Upstream link.

source
CImGui.TreeNodeUpdateNextOpen — Method
TreeNodeUpdateNextOpen(
    storage_id::Integer,
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer}
) -> Bool

Return open state. Consume previous SetNextItemOpen() data, if any. May return true when logging.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TreePush — Method
TreePush(str_id::Union{Ptr{Int8}, String})

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

Upstream link.

source
CImGui.TypingSelectFindMatch — Method
TypingSelectFindMatch(
    req::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTypingSelectRequest}},
    items_count,
    get_item_name_func,
    user_data,
    nav_item_idx
) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.TypingSelectFindNextSingleCharMatch — Method
TypingSelectFindNextSingleCharMatch(
    req::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiTypingSelectRequest}},
    items_count,
    get_item_name_func,
    user_data,
    nav_item_idx
) -> Int32
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Unpack — Method
Unpack(self::Ptr{CImGui.lib.ImGuiPackedDate}) -> Int32

Unpack.

Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.Update — Method
Update(
    self::Ptr{CImGui.lib.ImGuiMenuColumns},
    spacing,
    window_reappearing
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.UpdatePlatformWindows — Method
UpdatePlatformWindows()

(Optional) Platform/OS interface for multi-viewport support Read comments around the ImGuiPlatformIO structure for more details. Note: You may use GetWindowViewport() to get the current viewport of the current window.// call in main loop. will call CreateWindow/ResizeWindow/etc. platform functions for each secondary viewport, and DestroyWindow for each inactive viewport.

Upstream link.

source
CImGui.UpdateWindowParentAndRootLinks — Method
UpdateWindowParentAndRootLinks(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    flags::Union{CImGui.lib.ImGuiWindowFlags_, Integer},
    parent_window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}}
)
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.VSliderFloat — Function
VSliderFloat(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    v,
    v_min,
    v_max
) -> Bool
VSliderFloat(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    v,
    v_min,
    v_max,
    format
) -> Bool
VSliderFloat(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.VSliderInt — Function
VSliderInt(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    v,
    v_min,
    v_max
) -> Bool
VSliderInt(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    v,
    v_min,
    v_max,
    format
) -> Bool
VSliderInt(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    v,
    v_min,
    v_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.VSliderScalar — Function
VSliderScalar(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max
) -> Bool
VSliderScalar(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max,
    format
) -> Bool
VSliderScalar(
    label,
    size::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    data_type::Union{CImGui.lib.ImGuiDataType_, Integer},
    p_data,
    p_min,
    p_max,
    format,
    flags::Union{CImGui.lib.ImGuiSliderFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.Value — Function
Value(
    prefix::Union{Ptr{Int8}, Ptr{Nothing}, String},
    v::Real
)
Value(
    prefix::Union{Ptr{Int8}, Ptr{Nothing}, String},
    v::Real,
    float_format::Union{Ptr{Int8}, Ptr{Nothing}, String}
)

Upstream link.

source
CImGui.Value — Method
Value(
    prefix::Union{Ptr{Int8}, Ptr{Nothing}, String},
    b::Bool
)

Widgets: Value() Helpers.

  • Those are merely shortcut to calling Text() with a format string. Output single value in "name: value" format (tip: freely declare more in your code to handle your types. you can add functions to the ImGui namespace).

Upstream link.

source
CImGui.WindowPosAbsToRel — Method
WindowPosAbsToRel(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.WindowPosRelToAbs — Method
WindowPosRelToAbs(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    p::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> CImGui.lib.ImVec2
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.WindowRectAbsToRel — Method
WindowRectAbsToRel(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    r::CImGui.lib.ImRect
) -> CImGui.lib.ImRect
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.WindowRectRelToAbs — Method
WindowRectRelToAbs(
    window::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiWindow}},
    r::CImGui.lib.ImRect
) -> CImGui.lib.ImRect
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui._PathArcToN — Method
_PathArcToN(
    self::Ptr{CImGui.lib.ImDrawList},
    center::Union{CImGui.lib.ImVec2, Tuple{T, T} where T},
    radius,
    a_min,
    a_max,
    num_segments
)

Upstream link.

source
CImGui.lib.ImColor — Type
ImColor(
    r::Integer,
    g::Integer,
    b::Integer
) -> Ptr{CImGui.lib.ImColor}
ImColor(
    r::Integer,
    g::Integer,
    b::Integer,
    a::Integer
) -> Ptr{CImGui.lib.ImColor}

Upstream link.

source
CImGui.lib.ImDrawList — Method
ImDrawList(
    shared_data::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawListSharedData}}
) -> Ptr{CImGui.lib.ImDrawList}

If you want to create ImDrawList instances, pass them ImGui::GetDrawListSharedData(). (advanced: you may create and use your own ImDrawListSharedData so you can use ImDrawList without ImGui, but that's more involved).

Upstream link.

source
CImGui.lib.ImGuiContext — Method
ImGuiContext(
    shared_font_atlas::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontAtlas}}
) -> Ptr{CImGui.lib.ImGuiContext}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.lib.ImGuiIO — Method
ImGuiIO() -> Ptr{CImGui.lib.ImGuiIO}

Legacy: before 1.87, we required backend to fill io.KeyMap[] (imgui->native map) during initialization and io.KeysDown[] (native indices) every frame. This is still temporarily supported as a legacy feature. However the new preferred scheme is for backend to call io.AddKeyEvent(). Old (<1.87): ImGui::IsKeyPressed(ImGui::GetIO().KeyMap[ImGuiKeySpace]) –> New (1.87+) ImGui::IsKeyPressed(ImGuiKeySpace) Old (<1.87): ImGui::IsKeyPressed(MYPLATFORMKEYSPACE) –> New (1.87+) ImGui::IsKeyPressed(ImGuiKeySpace) Read https://github.com/ocornut/imgui/issues/4921 for details. //int KeyMap[ImGuiKeyCOUNT]; // [LEGACY] Input: map of indices into the KeysDown[512] entries array which represent your "native" keyboard state. The first 512 are now unused and should be kept zero. Legacy backend will write into KeyMap[] using ImGuiKey_ indices which are always >512. //bool KeysDown[ImGuiKeyCOUNT]; // [LEGACY] Input: Keyboard keys that are pressed (ideally left in the "native" order your engine has access to keyboard keys, so you can use your own defines/enums for keys). This used to be [512] sized. It is now ImGuiKeyCOUNT to allow legacy io.KeysDown[GetKeyIndex(...)] to work without an overflow. //float NavInputs[ImGuiNavInputCOUNT]; // [LEGACY] Since 1.88, NavInputs[] was removed. Backends from 1.60 to 1.86 won't build. Feed gamepad inputs via io.AddKeyEvent() and ImGuiKeyGamepadXXX enums. //void* ImeWindowHandle; // [Obsoleted in 1.87] Set ImGuiViewport::PlatformHandleRaw instead. Set this to your HWND to get automatic IME cursor positioning.

Upstream link.

source
CImGui.lib.ImGuiInputTextCallbackData — Method
ImGuiInputTextCallbackData(

) -> Ptr{CImGui.lib.ImGuiInputTextCallbackData}

Helper functions for text manipulation. Use those function to benefit from the CallbackResize behaviors. Calling those function reset the selection.

Upstream link.

source
CImGui.lib.ImGuiListClipper — Method
ImGuiListClipper() -> Ptr{CImGui.lib.ImGuiListClipper}

Itemscount: Use INTMAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step, and you can call SeekCursorForItem() manually if you need) Items_height: Use -1.0f to be calculated automatically on first step. Otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing() or GetFrameHeightWithSpacing().

Upstream link.

source
CImGui.lib.ImGuiStyleMod — Method
ImGuiStyleMod(
    idx::Union{CImGui.lib.ImGuiStyleVar_, Integer},
    v::Integer
) -> Ptr{CImGui.lib.ImGuiStyleMod}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.lib.ImGuiStyleMod — Method
ImGuiStyleMod(
    idx::Union{CImGui.lib.ImGuiStyleVar_, Integer},
    v::Real
) -> Ptr{CImGui.lib.ImGuiStyleMod}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.lib.ImGuiStyleMod — Method
ImGuiStyleMod(
    idx::Union{CImGui.lib.ImGuiStyleVar_, Integer},
    v::Union{CImGui.lib.ImVec2, Tuple{T, T} where T}
) -> Ptr{CImGui.lib.ImGuiStyleMod}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.lib.ImGuiWindow — Method
ImGuiWindow(
    context::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiContext}},
    name
) -> Ptr{CImGui.lib.ImGuiWindow}
Warning

This function is internal, it may change in the future.

Upstream link.

source
CImGui.lib.ImTextureData — Method
ImTextureData() -> Ptr{CImGui.lib.ImTextureData}

Functions

  • If GetPixels() functions asserts while being called by your render loop, it could be caused by calling ImFontAtlas::Clear()/ClearFonts()?

Upstream link.

source