7eef2544ab
Funciones C++/ImGui para dashboards (grid, panel, docking, sidebar, tabs), visualizaciones (candlestick, gauge, histogram, pie, sparkline, heatmap, scatter, line, bar, surface3d, kpi, table), grafos (force layout, renderer, viewport, spatial hash, types) y utilidades (time series buffer, tracy zones, memory/fps overlay, plot theme). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
60 lines
2.0 KiB
Markdown
60 lines
2.0 KiB
Markdown
---
|
|
name: gauge
|
|
kind: component
|
|
lang: cpp
|
|
domain: viz
|
|
version: "1.0.0"
|
|
purity: pure
|
|
signature: "void gauge(const char* label, float value, float min_val, float max_val, float radius = 60.0f)"
|
|
description: "Renderiza un indicador circular tipo gauge/velocimetro usando ImGui draw primitives"
|
|
tags: [imgui, visualization, gauge, kpi, dashboard]
|
|
uses_functions: []
|
|
uses_types: []
|
|
returns: []
|
|
returns_optional: false
|
|
error_type: ""
|
|
imports: [imgui]
|
|
tested: false
|
|
tests: []
|
|
test_file_path: ""
|
|
file_path: "cpp/functions/viz/gauge.cpp"
|
|
framework: imgui
|
|
params:
|
|
- name: label
|
|
desc: "Etiqueta del gauge, se muestra centrada debajo del valor numerico"
|
|
- name: value
|
|
desc: "Valor actual a mostrar en el gauge"
|
|
- name: min_val
|
|
desc: "Valor minimo de la escala (extremo izquierdo del arco)"
|
|
- name: max_val
|
|
desc: "Valor maximo de la escala (extremo derecho del arco)"
|
|
- name: radius
|
|
desc: "Radio del gauge en pixels (default 60.0)"
|
|
output: "Renderiza el gauge en el frame ImGui actual, reservando espacio con ImGui::Dummy"
|
|
---
|
|
|
|
# gauge
|
|
|
|
Indicador circular tipo gauge/velocimetro construido sobre ImGui draw primitives. No requiere ImPlot.
|
|
|
|
El arco ocupa 240 grados (de 150deg a 390deg en sentido horario). El color del arco de valor interpolado de verde (minimo) a amarillo (mitad) a rojo (maximo). Una aguja blanca apunta al valor actual.
|
|
|
|
Debe llamarse dentro del render callback de `fn::run_app` (o cualquier contexto con un frame ImGui activo).
|
|
|
|
## Ejemplo
|
|
|
|
```cpp
|
|
// KPI card con gauge de temperatura
|
|
gauge("CPU Temp", 72.5f, 0.0f, 100.0f, 50.0f);
|
|
|
|
// Gauge grande para dashboard principal
|
|
gauge("Velocidad", 3200.0f, 0.0f, 5000.0f, 80.0f);
|
|
```
|
|
|
|
## Notas
|
|
|
|
- El arco de fondo es gris oscuro (IM_COL32(60,60,60,220)), 6px de grosor.
|
|
- La aguja tiene longitud del 75% del radio para evitar solapar el arco.
|
|
- Usa solo `float`; no ofrece overload `double` porque ImGui DrawList trabaja en coordenadas de pantalla (float).
|
|
- El espacio reservado es `diameter x (diameter + line_height)` para incluir la etiqueta.
|