80e1076d99
registry/indexer.go ahora escanea <lang>/apps/*/app.md ademas de apps/ y projects/*/apps/. cpp/apps/chart_demo y cpp/apps/shaders_lab pasan a estar en registry.db con sus manifests. Infraestructura de tests e2e (opt-in con -DFN_BUILD_TESTS=ON): - vendor de Dear ImGui Test Engine (personal/open-source license). - chart_demo_tests target con tests/chart_demo_tests.cpp. - /e2e-cpp slash command para crear y ejecutar tests e2e. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
---
|
|
name: chart_demo
|
|
lang: cpp
|
|
domain: viz
|
|
description: "Demo ImGui de primitivos viz del registry: line_plot, scatter_plot, bar_chart, heatmap. Cada chart en su propia tab del TabBar. Usado como showcase y como build gate de las funciones viz/."
|
|
tags: [imgui, demo, charts, viz, showcase]
|
|
uses_functions:
|
|
- line_plot_cpp_viz
|
|
- scatter_plot_cpp_viz
|
|
- bar_chart_cpp_viz
|
|
- heatmap_cpp_viz
|
|
# logger, app_menubar viven en fn_framework — no se listan aqui
|
|
uses_types: []
|
|
framework: "imgui"
|
|
entry_point: "main.cpp"
|
|
dir_path: "cpp/apps/chart_demo"
|
|
repo_url: ""
|
|
---
|
|
|
|
## Que hace
|
|
|
|
App de una sola ventana con cuatro tabs (Line / Scatter / Bar / Heatmap) que
|
|
renderiza datos sinteticos para mostrar el aspecto y la API de los primitivos
|
|
viz del registry. Sirve como:
|
|
|
|
- **Showcase visual** de las funciones viz existentes — al añadir una nueva
|
|
primitiva, anadir su tab aqui es la forma natural de probar el binding.
|
|
- **Build gate**: si una de las funciones rompe API, esta app deja de
|
|
compilar y lo cazamos sin tener que tocar `registry_dashboard` o
|
|
`graph_explorer`.
|
|
|
|
## Estructura
|
|
|
|
`main.cpp` (~93 lineas):
|
|
|
|
- `init_data()` — genera arrays sinteticos una vez (estado modulo).
|
|
- `render()` — DockSpaceOverViewport + TabBar con 4 tabs, cada una invoca
|
|
un primitivo del registry.
|
|
- `main()` → `fn::run_app(...)` con AppConfig estandar (titulo, tamaño,
|
|
about, log).
|
|
|
|
## Build
|
|
|
|
```bash
|
|
# Linux
|
|
cd cpp && cmake -B build/linux -S . && cmake --build build/linux --target chart_demo
|
|
|
|
# Windows (cross-compile)
|
|
cd cpp && cmake -B build/windows -S . -DCMAKE_TOOLCHAIN_FILE=toolchains/mingw-w64.cmake \
|
|
&& cmake --build build/windows --target chart_demo
|
|
```
|
|
|
|
## Decisiones
|
|
|
|
- `viewports = true` (default de `fn::run_app`): las ventanas se pueden
|
|
arrastrar fuera del main window.
|
|
- `init_gl_loader = false`: solo usa ImGui/ImPlot, sin gl* directo.
|
|
- Sin persistencia propia (no abre BD).
|
|
- `log: file_path = "chart_demo.log"` con nivel Debug — el `init_data`
|
|
emite info+debug para verificar que el logger funciona.
|