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.AcceptDragDropPayloadFunction
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.ActivateItemByIDMethod
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.AddBezierCubicFunction
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.AddBezierQuadraticFunction
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.AddCallbackFunction
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.AddCircleFunction
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.AddCircleFilledFunction
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.AddContextHookMethod
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.AddCustomRectFunction
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.AddDrawCmdMethod
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.AddDrawListMethod
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.AddDrawListToDrawDataExMethod
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.AddEllipseFunction
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.AddEllipseFilledFunction
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.AddFocusEventMethod
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.AddFontMethod
AddFont(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_cfg::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontConfig}}
) -> Ptr{CImGui.lib.ImFont}

Upstream link.

source
CImGui.AddFontDefaultFunction
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.AddFontDefaultBitmapFunction
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.AddFontDefaultVectorFunction
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.AddFontFromFileTTFFunction
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.AddFontFromMemoryCompressedBase85TTFFunction
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.AddFontFromMemoryCompressedTTFFunction
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.AddFontFromMemoryTTFFunction
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.AddImageFunction
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.AddImageQuadFunction
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.AddImageRoundedFunction
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.AddKeyAnalogEventMethod
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.AddKeyEventMethod
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.AddLineFunction
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.AddLineHFunction
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.AddLineVFunction
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.AddMousePosEventMethod
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.AddMouseViewportEventMethod
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.AddMouseWheelEventMethod
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.AddNgonFunction
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.AddPolylineFunction
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.AddQuadFunction
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.AddQuadFilledMethod
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.AddRangesMethod
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.AddRectFunction
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.AddRectFilledFunction
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.AddRectFilledMultiColorMethod
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.AddRemapCharMethod
AddRemapChar(
    self::Ptr{CImGui.lib.ImFont},
    from_codepoint::UInt16,
    to_codepoint::UInt16
)

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

Upstream link.

source
CImGui.AddTextFunction
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.AddTextFunction
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.AddTextFunction
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.AddTriangleFunction
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.AddTriangleFilledMethod
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.AlignTextToFramePaddingMethod
AlignTextToFramePadding()

Vertically align upcoming text baseline to FramePadding.y so that it will align properly to regularly framed items (call if you have text on a line before a framed item).

Upstream link.

source
CImGui.AppendMethod
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.ApplyRequestsMethod
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.ApplyRequestsMethod
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.ArrowButtonExFunction
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.AsVec4Method
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.BeginFunction
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.BeginFunction
Begin(self::Ptr{CImGui.lib.ImGuiListClipper}, items_count)
Begin(
    self::Ptr{CImGui.lib.ImGuiListClipper},
    items_count,
    items_height
)

Upstream link.

source
CImGui.BeginBoxSelectMethod
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.BeginChildFunction
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.BeginChildFunction
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.BeginChildExMethod
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.BeginColumnsFunction
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.BeginComboFunction
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.BeginComboPopupMethod
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.BeginDisabledFunction
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.BeginDockedMethod
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.BeginDragDropSourceFunction
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.BeginDragDropTargetMethod
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.BeginDragDropTargetViewportFunction
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.BeginItemTooltipMethod
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.BeginListBoxFunction
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.BeginMenuBarMethod
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.BeginMenuExFunction
BeginMenuEx(label, icon) -> Bool
BeginMenuEx(label, icon, enabled) -> Bool
Warning

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

Upstream link.

source
CImGui.BeginMultiSelectFunction
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.BeginPopupFunction
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.BeginPopupContextItemFunction
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.BeginPopupContextVoidFunction
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.BeginPopupContextWindowFunction
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.BeginPopupExMethod
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.BeginPopupMenuExMethod
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.BeginPopupModalFunction
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.BeginTabBarFunction
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.BeginTabBarExMethod
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.BeginTabItemFunction
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.BeginTableFunction
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.BeginTableExFunction
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.BeginTooltipMethod
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.BeginTooltipExMethod
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.BeginViewportSideBarMethod
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.BringWindowToDisplayBehindMethod
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.BuildRangesMethod
BuildRanges(
    self::Ptr{CImGui.lib.ImFontGlyphRangesBuilder},
    out_ranges::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_ImWchar}}
)

Output new ranges.

Upstream link.

source
CImGui.BuildSortByKeyMethod
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.BulletMethod
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.ButtonFunction
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.ButtonBehaviorFunction
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.ButtonExFunction
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.CalcClipRectVisibleItemsYMethod
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.CalcItemSizeMethod
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.CalcItemWidthMethod
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.CalcTextSizeFunction
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.CalcTextSizeAFunction
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.CalcWorkRectPosMethod
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.CalcWorkRectSizeMethod
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.CallContextHooksMethod
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.ChannelsSplitMethod
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.CleanupIniSettingsMethod
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.ClearMethod
Clear(self::Ptr{CImGui.lib.ImDrawListSplitter})

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

Upstream link.

source
CImGui.ClearMethod
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.ClearMethod
Clear(self::Ptr{CImGui.lib.ImGuiKeyRoutingTable})
Warning

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

Upstream link.

source
CImGui.ClearMethod
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.ClearMethod
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.ClearMethod
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.ClearFlagsMethod
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.ClearFontsMethod
ClearFonts(self::Ptr{CImGui.lib.ImFontAtlas})

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

Upstream link.

source
CImGui.ClearInputDataMethod
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.ClearInputKeysMethod
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.ClearTexDataMethod
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.ClipWithMethod
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.ClipWithFullMethod
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.CloneOutputMethod
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.CloseButtonMethod
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.ClosePopupsOverWindowMethod
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.CollapseButtonMethod
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.CollapsingHeaderFunction
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.CollapsingHeaderFunction
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.ColorButtonFunction
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.ColorEdit3Function
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.ColorPicker4Function
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.ColorTooltipMethod
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.ColumnsFunction
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.ComboFunction
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.ComboFunction
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.ContainsWithPadMethod
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.CreateContextFunction
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.DataTypeApplyFromTextFunction
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.DataTypeApplyOpMethod
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.DataTypeClampMethod
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.DataTypeCompareMethod
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.DataTypeFormatStringMethod
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.DataTypeGetInfoMethod
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.DataTypeIsZeroMethod
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.DeIndexAllBuffersMethod
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.DebugAllocHookMethod
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.DebugHookIdInfoMethod
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.DebugNodeDrawCmdShowMeshAndBoundingBoxMethod
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.DebugNodeDrawListMethod
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.DebugNodeFontGlyphMethod
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.DebugNodeFontGlyphsForSrcMaskMethod
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.DebugNodeTableSettingsMethod
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.DebugNodeTextureFunction
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.DebugRenderViewportThumbnailMethod
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.DebugTextEncodingMethod
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.DeclColumnsMethod
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.DemoMarkerMethod
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.DestroyPlatformWindowsMethod
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.DockBuilderAddNodeFunction
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.DockBuilderCopyDockSpaceMethod
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.DockBuilderCopyNodeMethod
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.DockBuilderDockWindowMethod
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.DockBuilderRemoveNodeChildNodesMethod
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.DockBuilderSplitNodeMethod
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.DockContextCalcDropPosForDockingMethod
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.DockContextClearNodesMethod
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.DockContextFindNodeByIDMethod
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.DockContextInitializeMethod
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.DockContextProcessUndockNodeMethod
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.DockContextProcessUndockWindowFunction
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.DockContextQueueDockMethod
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.DockContextQueueUndockNodeMethod
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.DockContextQueueUndockWindowMethod
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.DockNodeGetRootNodeMethod
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.DockNodeIsInHierarchyOfMethod
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_DefaultMethod
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.DockSpaceFunction
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.DockSpaceOverViewportFunction
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.DragBehaviorMethod
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.DragFloatFunction
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.DragFloat2Function
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.DragFloat3Function
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.DragFloat4Function
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.DragFloatRange2Function
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.DragIntFunction
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.DragInt2Function
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.DragInt3Function
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.DragInt4Function
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.DragIntRange2Function
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.DragScalarFunction
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.DragScalarNFunction
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.DrawFunction
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.DummyMethod
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.EndMethod
End(self::Ptr{CImGui.lib.ImGuiListClipper})

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

Upstream link.

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

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

Upstream link.

source
CImGui.EndBoxSelectMethod
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.EndFrameMethod
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.EndGroupMethod
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.ExtendHitBoxWhenNearViewportEdgeMethod
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.FindBestWindowPosForPopupExMethod
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.FindBlockingModalMethod
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.FindGlyphMethod
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.FindOrCreateColumnsMethod
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.FindRenderedTextEndFunction
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.FocusItemMethod
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.FocusTopMostWindowUnderOneMethod
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.FocusWindowFunction
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.GetBLMethod
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.GetBRMethod
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.GetBackgroundDrawListFunction
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.GetBoolFunction
GetBool(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Bool
GetBool(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Bool

Upstream link.

source
CImGui.GetBoolRefFunction
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.GetClipboardTextMethod
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.GetColorU32Function
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.GetColorU32Function
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.GetColorU32Method
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.GetColumnOffsetFunction
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.GetColumnSettingsMethod
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.GetCursorScreenPosMethod
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.GetCursorStartPosMethod
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.GetCustomRectMethod
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.GetDragDropPayloadMethod
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.GetDrawDataMethod
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.GetFloatFunction
GetFloat(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Float32
GetFloat(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Float32

Upstream link.

source
CImGui.GetFloatRefFunction
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.GetFontBakedFunction
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.GetFontSizeMethod
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.GetFontTexUvWhitePixelMethod
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.GetForegroundDrawListFunction
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.GetGlyphRangesDefaultMethod
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.GetIDFunction
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.GetIDMethod
GetID(
    self::Ptr{CImGui.lib.ImGuiWindow},
    n::Integer
) -> UInt32
Warning

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

Upstream link.

source
CImGui.GetIDMethod
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.GetIDMethod
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.GetIDFromPosMethod
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.GetIDWithSeedMethod
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.GetIOMethod
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.GetIOMethod
GetIO() -> Ptr{CImGui.lib.ImGuiIO}

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

Upstream link.

source
CImGui.GetInputTextStateMethod
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.GetIntFunction
GetInt(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer
) -> Int32
GetInt(
    self::Ptr{CImGui.lib.ImGuiStorage},
    key::Integer,
    default_val
) -> Int32

Upstream link.

source
CImGui.GetIntRefFunction
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.GetItemClickedCountWithSingleClickDelayFunction
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.GetKeyDataMethod
GetKeyData(
    key::CImGui.lib.ImGuiKey
) -> Ptr{CImGui.lib.ImGuiKeyData}
Warning

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

Upstream link.

source
CImGui.GetKeyDataMethod
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.GetKeyMagnitude2dMethod
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.GetKeyNameMethod
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.GetKeyOwnerMethod
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.GetKeyOwnerDataMethod
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.GetKeyPressedAmountMethod
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.GetMainRectMethod
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.GetMainViewportMethod
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.GetMouseClickedCountMethod
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.GetMouseCursorMethod
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.GetMouseDragDeltaFunction
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.GetNameMethod
GetName(
    self::Ptr{CImGui.lib.ImGuiWindowSettings}
) -> Ptr{Int8}
Warning

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

Upstream link.

source
CImGui.GetNextSelectedItemMethod
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.GetPlatformIOMethod
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.GetPlatformIOMethod
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.GetScaleMethod
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.GetScrollXMethod
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.GetSizeMethod
GetSize(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec2
Warning

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

Upstream link.

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

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

Upstream link.

source
CImGui.GetStyleColorVec4Method
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.GetStyleVarInfoMethod
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.GetTLMethod
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.GetTRMethod
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.GetTexIDMethod
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.GetTexIDMethod
GetTexID(self::Ptr{CImGui.lib.ImTextureRef}) -> UInt64

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

Upstream link.

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

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

Upstream link.

source
CImGui.GetTypingSelectRequestFunction
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.GetVarPtrMethod
GetVarPtr(
    self::Ptr{CImGui.lib.ImGuiStyleVarInfo},
    parent
) -> Ptr{Nothing}
Warning

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

Upstream link.

source
CImGui.GetVersionMethod
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.GetVoidPtrRefFunction
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.GetWindowPosMethod
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.GetWindowScrollbarIDMethod
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.GetWindowScrollbarRectMethod
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.GetWindowSizeMethod
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.HelpMarkerMethod
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.ImBezierCubicCalcMethod
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.ImBezierCubicClosestPointMethod
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.ImBezierCubicClosestPointCasteljauMethod
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.ImBezierQuadraticCalcMethod
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.ImCeilFastMethod
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.ImClampMethod
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.ImDotMethod
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.ImFileLoadToMemoryFunction
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.ImFileReadMethod
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.ImFileWriteMethod
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.ImFloorMethod
ImFloor(f::Real) -> Float32

Decent replacement for floorf().

Warning

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

Upstream link.

source
CImGui.ImFloorMethod
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.ImFontAtlasBakedAddMethod
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.ImFontAtlasBakedAddFontGlyphMethod
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.ImFontAtlasBakedAddFontGlyphAdvancedXMethod
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.ImFontAtlasBakedDiscardMethod
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.ImFontAtlasBakedDiscardFontGlyphMethod
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.ImFontAtlasBakedGetClosestMatchMethod
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.ImFontAtlasBakedGetOrAddMethod
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.ImFontAtlasBakedSetFontGlyphBitmapMethod
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.ImFontAtlasBuildGetOversampleFactorsMethod
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.ImFontAtlasBuildNotifySetFontMethod
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.ImFontAtlasBuildSetupFontLoaderMethod
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.ImFontAtlasBuildSetupFontSpecialGlyphsMethod
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.ImFontAtlasFontDiscardBakesMethod
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.ImFontAtlasFontInitOutputMethod
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.ImFontAtlasFontSourceAddToFontMethod
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.ImFontAtlasFontSourceInitMethod
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.ImFontAtlasGetMouseCursorTexDataMethod
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.ImFontAtlasPackAddRectFunction
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.ImFontAtlasPackGetRectMethod
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.ImFontAtlasTextureAddMethod
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.ImFontAtlasTextureBlockConvertMethod
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.ImFontAtlasTextureBlockCopyMethod
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.ImFontAtlasTextureGrowFunction
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.ImFontCalcTextSizeExMethod
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.ImFontCalcWordWrapPositionExFunction
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.ImHashDataFunction
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.ImHashStrFunction
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.ImInvLengthMethod
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.ImLengthSqrMethod
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.ImLengthSqrMethod
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.ImLerpMethod
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.ImLerpMethod
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.ImLerpMethod
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.ImLineClosestPointMethod
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.ImLogMethod
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.ImLowerBoundMethod
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.ImMaxMethod
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.ImMemdupMethod
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.ImMinMethod
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.ImMulMethod
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.ImPowMethod
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.ImRotateMethod
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.ImSignMethod
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.ImStrbolMethod
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.ImStrchrRangeMethod
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.ImStrdupcpyMethod
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.ImStricmpMethod
ImStricmp(str1, str2) -> Int32

Helpers: String// Case insensitive compare.

Warning

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

Upstream link.

source
CImGui.ImStristrMethod
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.ImStrlenWMethod
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.ImStrncpyMethod
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.ImStrnicmpMethod
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.ImTextCalcWordWrapNextLineStartFunction
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.ImTextCharFromUtf8Method
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.ImTextCharToUtf8Method
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.ImTextClassifierClearMethod
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.ImTextClassifierSetCharClassMethod
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.ImTextCountLinesMethod
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.ImTextCountUtf8BytesFromStrMethod
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.ImTextFindValidUtf8CodepointEndMethod
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.ImTextStrFromUtf8Function
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.ImTextStrToUtf8Method
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.ImTriangleAreaMethod
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.ImTriangleBarycentricCoordsMethod
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.ImTriangleClosestPointMethod
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.ImTriangleContainsPointMethod
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.ImTriangleIsClockwiseMethod
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.ImTruncMethod
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.ImageFunction
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.ImageButtonFunction
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.ImageButtonExFunction
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.ImageWithBgFunction
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.IncludeItemByIndexMethod
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.IndentFunction
Indent()
Indent(indent_w)

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

Upstream link.

source
CImGui.InputDoubleFunction
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.InputFloatFunction
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.InputFloat2Function
InputFloat2(label, v) -> Bool
InputFloat2(label, v, format) -> Bool
InputFloat2(
    label,
    v,
    format,
    flags::Union{CImGui.lib.ImGuiInputTextFlags_, Integer}
) -> Bool

Upstream link.

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

Upstream link.

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

Upstream link.

source
CImGui.InputIntFunction
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.InputScalarFunction
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.InputScalarNFunction
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.InputTextFunction
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.InputTextExFunction
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.InputTextMultilineFunction
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.InputTextWithHintFunction
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.InsertCharsFunction
InsertChars(
    self::Ptr{CImGui.lib.ImGuiInputTextCallbackData},
    pos,
    text
)
InsertChars(
    self::Ptr{CImGui.lib.ImGuiInputTextCallbackData},
    pos,
    text,
    text_end
)

Upstream link.

source
CImGui.InvisibleButtonFunction
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.IsAnyMouseDownMethod
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.IsHiddenTabBarMethod
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.IsItemActiveMethod
IsItemActive() -> Bool

Is the last item active? (e.g. button being held, text field being edited. This will continuously return true while holding mouse button on an item. Items that don't interact will always return false).

Upstream link.

source
CImGui.IsItemActiveAsInputTextMethod
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.IsItemClickedFunction
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.IsItemDeactivatedMethod
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.IsItemDeactivatedAfterEditMethod
IsItemDeactivatedAfterEdit() -> Bool

Was the last item just made inactive and made a value change when it was active? (e.g. Slider/Drag moved). Useful for Undo/Redo patterns with widgets that 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.IsItemEditedMethod
IsItemEdited() -> Bool

Did the last item modify its underlying value this frame? or was pressed? This is generally the same as the "bool" return value of many widgets.

Upstream link.

source
CImGui.IsItemHoveredFunction
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.IsItemToggledSelectionMethod
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.IsKeyChordPressedFunction
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.IsKeyChordPressedMethod
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.IsKeyDownMethod
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.IsKeyDownMethod
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.IsKeyPressedFunction
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.IsKeyPressedFunction
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.IsMouseClickedFunction
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.IsMouseClickedFunction
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.IsMouseDoubleClickedMethod
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.IsMouseDownMethod
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.IsMouseDownMethod
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.IsMouseDragPastThresholdFunction
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.IsMouseDraggingFunction
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.IsMouseHoveringRectFunction
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.IsMousePosValidFunction
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.IsMouseReleasedMethod
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.IsMouseReleasedWithDelayFunction
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.IsNamedKeyMethod
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.IsNoTabBarMethod
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.IsPopupOpenFunction
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.IsPopupOpenMethod
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.IsRectVisibleMethod
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.IsRectVisibleMethod
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.IsWindowAboveMethod
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.IsWindowAppearingMethod
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.IsWindowChildOfMethod
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.IsWindowContentHoverableFunction
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.IsWindowFocusedFunction
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.IsWindowHoveredFunction
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.IsWindowWithinBeginStackOfMethod
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.ItemAddFunction
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.ItemHoverableMethod
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.ItemSizeFunction
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.ItemSizeFunction
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.ListBoxFunction
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.LoadIniSettingsFromDiskMethod
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.LoadIniSettingsFromMemoryFunction
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.LogBeginMethod
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.LogRenderedTextFunction
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.LogToBufferFunction
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.LogToTTYFunction
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.MarkItemEditedMethod
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.MenuItemFunction
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.MenuItemFunction
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.MenuItemExFunction
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.MouseButtonToKeyMethod
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.MultiSelectAddSetRangeMethod
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.MultiSelectItemFooterFunction
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.MultiSelectItemHeaderMethod
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.NavInitWindowMethod
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.NavMoveRequestForwardMethod
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.NavMoveRequestResolveWithPastTreeNodeMethod
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.NavMoveRequestSubmitMethod
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.NavMoveRequestTryWrappingMethod
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.OnKeyPressedMethod
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.OpenPopupFunction
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.OpenPopupFunction
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.OpenPopupExFunction
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.OpenPopupOnItemClickFunction
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.OverlapsMethod
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.PassFilterFunction
PassFilter(
    self::Ptr{CImGui.lib.ImGuiTextFilter},
    text
) -> Bool
PassFilter(
    self::Ptr{CImGui.lib.ImGuiTextFilter},
    text,
    text_end
) -> Bool

Upstream link.

source
CImGui.PathArcToFunction
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.PathArcToFastMethod
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.PathBezierCubicCurveToFunction
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.PathBezierQuadraticCurveToFunction
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.PathClearMethod
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.PathEllipticalArcToFunction
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.PathRectFunction
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.PathStrokeFunction
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.PlotExMethod
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.PlotHistogramFunction
PlotHistogram(label, values, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))
source
CImGui.PlotHistogramFunction
PlotHistogram(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=ImVec2(0,0))
source
CImGui.PlotLinesFunction
PlotLines(label, values, values_count::Integer, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0), stride=sizeof(Cfloat))
source
CImGui.PlotLinesFunction
PlotLines(label, values_getter::Ptr, data::Ptr, values_count, values_offset=0, overlay_text=C_NULL, scale_min=FLT_MAX, scale_max=FLT_MAX, graph_size=(0,0))
source
CImGui.PrimQuadUVMethod
PrimQuadUV(
    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.PrimRectMethod
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.PrimRectUVMethod
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.PrimReserveMethod
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.PrimVtxMethod
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.PrimWriteVtxMethod
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.ProgressBarFunction
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.PushClipRectFunction
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.PushClipRectMethod
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.PushFocusScopeMethod
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.PushFontMethod
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.PushIDMethod
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.PushIDMethod
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.PushItemFlagMethod
PushItemFlag(
    option::Union{CImGui.lib.ImGuiItemFlags_, Integer},
    enabled
)

Modify specified shared item flag, e.g. PushItemFlag(ImGuiItemFlags_NoTabStop, true).

Upstream link.

source
CImGui.PushItemWidthMethod
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.PushOverrideIDMethod
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.PushStyleColorMethod
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.PushStyleVarMethod
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.PushStyleVarMethod
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.PushTextWrapPosFunction
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.RadioButtonMethod
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.RadioButtonMethod
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.RectMethod
Rect(
    self::Ptr{CImGui.lib.ImGuiDockNode}
) -> CImGui.lib.ImRect
Warning

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

Upstream link.

source
CImGui.RectMethod
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.RegisterUserTextureMethod
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.ReloadUserBufAndSelectAllMethod
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.RemoveContextHookMethod
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.RemoveCustomRectMethod
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.RenderArrowFunction
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.RenderArrowDockMenuMethod
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.RenderArrowPointingAtMethod
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.RenderBulletMethod
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.RenderCharFunction
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.RenderCheckMarkMethod
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.RenderColorRectWithAlphaCheckerboardFunction
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.RenderFrameFunction
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.RenderFrameBorderFunction
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.RenderMouseCursorMethod
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.RenderNavCursorFunction
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.RenderPlatformWindowsDefaultFunction
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.RenderRectFilledInRangeHMethod
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.RenderRectFilledWithHoleMethod
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.RenderTextFunction
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.RenderTextFunction
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.RenderTextClippedFunction
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.RenderTextClippedExFunction
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.RenderTextEllipsisMethod
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.RenderTextWrappedMethod
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.ResetMethod
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.ResizeMethod
Resize(self::Ptr{CImGui.lib.ImGuiTextBuffer}, size)

Similar to resize(0) on ImVector: empty string but don't free buffer.

Upstream link.

source
CImGui.SameLineFunction
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.SaveIniSettingsToDiskMethod
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.SaveIniSettingsToMemoryFunction
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.ScaleAllSizesMethod
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.ScaleClipRectsMethod
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.ScrollToBringRectIntoViewMethod
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.ScrollToItemFunction
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.ScrollToRectFunction
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.ScrollToRectExFunction
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.ScrollbarExFunction
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.SeekCursorForItemMethod
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.SelectableFunction
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.SelectableFunction
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.SeparatorMethod
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.SeparatorExFunction
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.SetActiveIDMethod
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.SetAllIntMethod
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.SetAllocatorFunctionsFunction
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.SetAppAcceptingEventsMethod
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.SetColumnOffsetMethod
SetColumnOffset(column_index, offset_x)

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

Upstream link.

source
CImGui.SetContextNameMethod
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.SetCurrentFontMethod
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.SetCurrentViewportMethod
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.SetDragDropPayloadFunction
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.SetFocusIDMethod
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.SetFontLoaderMethod
SetFontLoader(
    self::Ptr{CImGui.lib.ImFontAtlas},
    font_loader::Union{Ptr{Nothing}, Ref{CImGui.lib.ImFontLoader}}
)

Change font loader at runtime.

Upstream link.

source
CImGui.SetHSVFunction
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.SetItemKeyOwnerMethod
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.SetItemKeyOwnerMethod
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.SetItemSelectedMethod
SetItemSelected(
    self::Ptr{CImGui.lib.ImGuiSelectionBasicStorage},
    id::Integer,
    selected
)

Add/remove an item from selection (generally done by ApplyRequests() function).

Upstream link.

source
CImGui.SetKeyEventNativeDataFunction
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.SetKeyOwnerFunction
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.SetKeyOwnersForKeyChordFunction
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.SetKeyboardFocusHereFunction
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.SetLastItemDataMethod
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.SetLocalFlagsMethod
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.SetNavCursorVisibleMethod
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.SetNavIDMethod
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.SetNextFrameWantCaptureKeyboardMethod
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.SetNextFrameWantCaptureMouseMethod
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.SetNextItemAllowOverlapMethod
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.SetNextItemWidthMethod
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.SetNextWindowBgAlphaMethod
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.SetNextWindowClassMethod
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.SetNextWindowContentSizeMethod
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.SetNextWindowPosFunction
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.SetNextWindowRefreshPolicyMethod
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.SetNextWindowSizeFunction
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.SetNextWindowSizeConstraintsFunction
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.SetScrollFromPosXFunction
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.SetScrollFromPosXMethod
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.SetScrollFromPosYFunction
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.SetScrollFromPosYMethod
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.SetScrollHereXFunction
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.SetScrollHereYFunction
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.SetScrollXMethod
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.SetScrollYMethod
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.SetShortcutRoutingMethod
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.SetStateStorageMethod
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.SetTabItemClosedMethod
SetTabItemClosed(tab_or_docked_window_label)

Notify TabBar or Docking system of a closed tab/window ahead (useful to reduce visual flicker on reorderable tab bars). For tab-bar: call after BeginTabBar() and before Tab submissions. Otherwise call with a window name.

Upstream link.

source
CImGui.SetTexIDMethod
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.SetTooltipMethod
SetTooltip(fmt)

Set a text-only tooltip. Often used after a ImGui::IsItemHovered() check. Override any previous call to SetTooltip().

Upstream link.

source
CImGui.SetWindowClipRectBeforeSetChannelMethod
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.SetWindowCollapsedFunction
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.SetWindowCollapsedFunction
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.SetWindowCollapsedFunction
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.SetWindowDockMethod
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.SetWindowHitTestHoleMethod
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.SetWindowParentWindowForFocusRouteMethod
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.SetWindowPosFunction
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.SetWindowPosFunction
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.SetWindowPosFunction
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.SetWindowSizeFunction
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.SetWindowSizeFunction
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.SetWindowSizeFunction
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.SetWindowViewportMethod
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.ShadeVertsLinearColorGradientKeepAlphaMethod
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.ShadeVertsLinearUVMethod
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.ShadeVertsTransformPosMethod
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.ShortcutFunction
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.ShortcutMethod
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.ShowDemoWindowFunction
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.ShowMetricsWindowFunction
ShowMetricsWindow()
ShowMetricsWindow(p_open)

Create Metrics/Debugger window. display Dear ImGui internals: windows, draw commands, various internal state, etc.

Upstream link.

source
CImGui.ShowStyleEditorFunction
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.ShrinkWidthsMethod
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.ShutdownMethod
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.SizeMethod
Size(self::Ptr{CImGui.lib.ImGuiTextIndex}) -> Int32
Warning

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

Upstream link.

source
CImGui.SliderAngleFunction
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.SliderBehaviorMethod
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.SliderFloatFunction
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.SliderFloat2Function
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.SliderFloat3Function
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.SliderFloat4Function
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.SliderIntFunction
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.SliderInt2Function
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.SliderInt3Function
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.SliderInt4Function
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.SliderScalarFunction
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.SliderScalarNFunction
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.SplitMethod
Split(
    self::Ptr{CImGui.lib.ImDrawListSplitter},
    draw_list::Union{Ptr{Nothing}, Ref{CImGui.lib.ImDrawList}},
    count
)

Upstream link.

source
CImGui.SplitMethod
Split(
    self::Ptr{CImGui.lib.ImGuiTextRange},
    separator,
    out::Union{Ptr{Nothing}, Ref{CImGui.lib.ImVector_ImGuiTextRange}}
)

Upstream link.

source
CImGui.SplitterBehaviorFunction
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.StartMouseMovingWindowOrNodeMethod
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.StepMethod
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.SubtractMonthsMethod
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.SwapMethod
Swap(
    self::Ptr{CImGui.lib.ImGuiSelectionBasicStorage},
    r::Union{Ptr{Nothing}, Ref{CImGui.lib.ImGuiSelectionBasicStorage}}
)

Swap two selections.

Upstream link.

source
CImGui.TabBarAddTabMethod
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.TabBarCloseTabMethod
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.TabBarFindTabByIDMethod
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.TabBarFindTabByOrderMethod
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.TabBarGetCurrentTabMethod
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.TabBarGetTabNameMethod
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.TabBarGetTabOrderMethod
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.TabBarQueueFocusMethod
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.TabBarQueueFocusMethod
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.TabBarQueueReorderMethod
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.TabBarQueueReorderFromMousePosMethod
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.TabBarRemoveTabMethod
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.TabItemBackgroundMethod
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.TabItemButtonFunction
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.TabItemCalcSizeMethod
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.TabItemCalcSizeMethod
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.TabItemExMethod
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.TabItemLabelAndCloseButtonMethod
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.TabItemSpacingMethod
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.TableAngledHeadersRowExMethod
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.TableDrawDefaultContextMenuMethod
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.TableFixColumnSortDirectionMethod
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.TableGetBoundSettingsMethod
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.TableGetCellBgRectMethod
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.TableGetColumnFlagsFunction
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.TableGetColumnNameFunction
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.TableGetColumnNameMethod
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.TableGetColumnResizeIDFunction
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.TableGetColumnWidthAutoMethod
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.TableGetHoveredColumnMethod
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.TableGetHoveredRowMethod
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.TableGetInstanceDataMethod
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.TableGetSortSpecsMethod
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.TableInitColumnDefaultsMethod
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.TableLoadSettingsForColumnMethod
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.TableNextRowFunction
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.TableSetBgColorFunction
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.TableSetColumnEnabledMethod
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.TableSetupColumnFunction
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.TempInputScalarFunction
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.TempInputTextFunction
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.TestKeyOwnerMethod
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.TextAlignedMethod
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.TextColoredMethod
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.TextExFunction
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.TextUnformattedFunction
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.TextWrappedMethod
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.ToVec4Method
ToVec4(self::Ptr{CImGui.lib.ImRect}) -> CImGui.lib.ImVec4
Warning

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

Upstream link.

source
CImGui.TranslateMethod
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.TranslateWindowsInViewportMethod
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.TreeNodeMethod
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.TreeNodeMethod
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.TreeNodeBehaviorFunction
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.TreeNodeExFunction
TreeNodeEx(label::Union{Ptr{Int8}, String}) -> Bool
TreeNodeEx(
    label::Union{Ptr{Int8}, String},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer}
) -> Bool

Upstream link.

source
CImGui.TreeNodeExMethod
TreeNodeEx(
    ptr_id::Ref{Nothing},
    flags::Union{CImGui.lib.ImGuiTreeNodeFlags_, Integer},
    fmt::Union{Ptr{Int8}, Ptr{Nothing}, String}
) -> Bool

Upstream link.

source
CImGui.TreeNodeExMethod
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.TreeNodeUpdateNextOpenMethod
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.TreePushMethod
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.TypingSelectFindMatchMethod
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.TypingSelectFindNextSingleCharMatchMethod
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.UnpackMethod
Unpack(self::Ptr{CImGui.lib.ImGuiPackedDate}) -> Int32

Unpack.

Warning

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

Upstream link.

source
CImGui.UpdateMethod
Update(
    self::Ptr{CImGui.lib.ImGuiMenuColumns},
    spacing,
    window_reappearing
)
Warning

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

Upstream link.

source
CImGui.UpdatePlatformWindowsMethod
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.UpdateWindowParentAndRootLinksMethod
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.VSliderFloatFunction
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.VSliderIntFunction
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.VSliderScalarFunction
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.ValueFunction
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.ValueMethod
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.WindowPosAbsToRelMethod
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.WindowPosRelToAbsMethod
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.WindowRectAbsToRelMethod
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.WindowRectRelToAbsMethod
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._PathArcToNMethod
_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.ImColorType
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.ImDrawListMethod
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.ImGuiContextMethod
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.ImGuiIOMethod
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.ImGuiInputTextCallbackDataMethod
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.ImGuiListClipperMethod
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.ImGuiStyleModMethod
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.ImGuiStyleModMethod
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.ImGuiStyleModMethod
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.ImGuiWindowMethod
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.ImTextureDataMethod
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