#imgui #ui #docking #multiview #graphics

dear-imguizmo-quat

High-level Rust bindings for ImGuIZMO.quat (C API) with Dear ImGui integration

5 releases (3 breaking)

Uses new Rust 2024

0.6.0 Nov 28, 2025
0.5.0 Oct 24, 2025
0.4.1 Oct 7, 2025
0.4.0 Oct 7, 2025
0.3.0 Oct 6, 2025

#2230 in GUI

MIT/Apache

5.5MB
98K SLoC

C++ 51K SLoC // 0.2% comments Rust 48K SLoC // 0.0% comments

Dear ImGuIZMO.quat – Rust Bindings

Crates.io Documentation

Safe, idiomatic Rust bindings for ImGuIZMO.quat (quaternion + 3D gizmo helpers) built on the C API wrapper cimguizmo_quat, integrated with dear-imgui-rs.

ImGuIZMO.quat

Compatibility

Item Version
Crate 0.5.x
dear-imgui-rs 0.5.x
dear-imguizmo-quat-sys 0.5.x

See also: docs/COMPATIBILITY.md in the workspace for the full matrix.

Features

  • glam (default): pass and mutate glam::Quat, glam::Vec3, glam::Vec4 directly
  • mint (optional): interop via mint::{Quaternion, Vector3, Vector4}
  • freetype: passthrough to dear-imgui-sys/freetype (enable from any crate once)

All math parameters are generic over lightweight traits so you can also use plain arrays: [f32; 4] for quaternions, [f32; 3|4] for vectors.

Quick Start

[dependencies]
dear-imgui-rs = "0.5"
dear-imguizmo-quat = "0.5"

Minimal usage with the Ui extension and builder API:

use dear_imgui_rs::Ui;
use dear_imguizmo_quat::{GizmoQuatExt, Mode};

fn draw(ui: &Ui) {
    let mut rot = glam::Quat::IDENTITY; // or [f32; 4]

    let used = ui
        .gizmo_quat()
        .builder()
        .size(220.0)
        .mode(Mode::MODE_DUAL | Mode::CUBE_AT_ORIGIN)
        .quat("##rot", &mut rot);

    if used {
        // rotation changed this frame
    }
}

Pan+Dolly + quaternion + light direction variant:

use dear_imguizmo_quat::{GizmoQuatExt, Mode};

let mut pan_dolly = glam::Vec3::ZERO;
let mut rot = glam::Quat::IDENTITY;
let mut light_dir = glam::Vec3::new(1.0, 0.0, 0.0);

ui.gizmo_quat()
    .builder()
    .mode(Mode::MODE_PAN_DOLLY | Mode::MODE_DUAL | Mode::CUBE_AT_ORIGIN)
    .pan_dolly_quat_light_vec3("##gizmo", &mut pan_dolly, &mut rot, &mut light_dir);

Notes

  • Begin once per frame with ui.gizmo_quat() and call into the builder; no extra context is required.
  • RAII and ID usage follow dear-imgui patterns; use unique labels or ##suffix to avoid ID clashes in loops.
  • See examples/imguizmo_quat_basic.rs for a complete WGPU demo (cube + view controls).

Dependencies

~6–11MB
~272K SLoC