feat: add C++ ImGui functions for core UI and visualization
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>
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user