merge: issue/0044-cpp-orphans-audit — implementación paralela

This commit is contained in:
2026-04-28 23:44:52 +02:00
55 changed files with 79 additions and 22 deletions
+1
View File
@@ -29,6 +29,7 @@ params:
- name: label
desc: "Texto del MenuItem en la menubar (default 'About...')"
output: "about_window_set_info muta el estado global del modulo. about_window_render es no-op si la ventana esta cerrada. about_window_menu_item retorna true si el usuario clico"
notes: "consumido por cpp/framework/app_base.cpp"
---
# app_about
+1 -1
View File
@@ -8,7 +8,7 @@ purity: pure
signature: "bool fn_ui::app_menubar(const fn_ui::PanelToggle* panels, size_t count, fn_ui::LayoutCallbacks* layouts_cb)"
description: "MainMenuBar ImGui completa con menu View (toggles de paneles) y menu Layouts (guardar/aplicar layouts persistentes). Punto de entrada unificado para la menubar de cualquier app fn_ui."
tags: [imgui, ui, menu, panels, layouts, dockspace, menubar]
uses_functions: [panel_menu_cpp_core, layouts_menu_cpp_core]
uses_functions: ["app_about_cpp_core", "app_settings_cpp_core", "layouts_menu_cpp_core", "panel_menu_cpp_core"]
uses_types: []
returns: []
returns_optional: false
+1
View File
@@ -29,6 +29,7 @@ params:
- name: label
desc: "Texto del MenuItem en la menubar (default 'Settings...')"
output: "settings() devuelve referencia mutable al estado vivo. settings_window_render() es no-op si la ventana esta cerrada. add_section es idempotente por id"
notes: "consumido por cpp/framework/app_base.cpp"
---
# app_settings
+1
View File
@@ -27,6 +27,7 @@ params:
- name: min_height
desc: "Alto minimo del panel en pixels (0 = sin restriccion)"
output: "true si el panel es visible y se debe renderizar contenido; llamar siempre dashboard_panel_end() independientemente del valor de retorno"
notes: "scaffolding/demo en primitives_gallery"
---
# dashboard_panel
+1
View File
@@ -20,6 +20,7 @@ test_file_path: ""
file_path: "cpp/functions/core/file_watcher.cpp"
params: []
output: "FileWatcher opaco con cola interna de eventos. poll() devuelve std::vector<FileEvent> con {path, kind in {Modified, Created, Deleted}}. Errores acumulados en last_error()."
notes: "consumido por cpp/apps/text_editor_smoke/main.cpp; scaffolding/demo en primitives_gallery"
---
# file_watcher
+1
View File
@@ -21,6 +21,7 @@ file_path: "cpp/functions/core/fps_overlay.cpp"
framework: imgui
params: []
output: "Renderiza el overlay de FPS en el frame ImGui actual"
notes: "consumido por cpp/framework/app_base.cpp"
---
# fps_overlay
+1
View File
@@ -23,6 +23,7 @@ params:
- name: id
desc: "Identificador ImGui de la ventana, default ##fullscreen (el prefijo ## oculta el texto del titulo)"
output: "true si la ventana es visible (siempre true en fullscreen); llamar siempre fullscreen_window_end() independientemente del valor de retorno"
notes: "scaffolding/demo en primitives_gallery"
---
# fullscreen_window
+2 -1
View File
@@ -8,7 +8,7 @@ purity: impure
signature: "void fn_ui::load_default_fonts(float size_px = 13.0f)"
description: "Carga Karla-Regular (texto vectorial) + mergea Tabler Icons al mismo tamaño en el atlas de ImGui. Tras esta llamada los TI_* (icons_tabler.h) renderizan inline con el texto."
tags: [imgui, fonts, icons, tabler, atlas, init]
uses_functions: []
uses_functions: ["app_settings_cpp_core"]
uses_types: []
returns: []
returns_optional: false
@@ -23,6 +23,7 @@ params:
- name: size_px
desc: "Tamaño en px compartido por texto e iconos. Default 13 = ImGui default historico, render vectorial nitido en Karla y Tabler. El icon merge cuadra el line-height con el texto al usar el mismo tamaño"
output: "void — texto + iconos quedan activos en io.Fonts. Si Karla no se encuentra, fallback a ProggyClean default; si Tabler no se encuentra, los TI_* salen como cuadritos. Estado consultable via text_font_loaded() y tabler_font_loaded()"
notes: "consumido por cpp/framework/app_base.cpp"
---
# icon_font
@@ -26,6 +26,7 @@ params:
- name: blob
desc: "Contenido INI serializado con ImGui::SaveIniSettingsToMemory."
output: "Las funciones bool retornan true en exito, false en error SQLite. load_blob retorna string vacia si el layout no existe o hay error. list retorna vector vacio en error. Ningun error se propaga como excepcion."
notes: "consumido por cpp/apps/shaders_lab/main.cpp"
---
# layout_storage_sqlite
+1
View File
@@ -25,6 +25,7 @@ params:
- name: cb
desc: "LayoutCallbacks con los cinco hooks (list, on_apply, on_save, on_delete, on_reset) y el campo active_name para marcar el layout activo. Callbacks nulos se saltan silenciosamente."
output: "true si el usuario disparo alguna accion (aplicar layout, guardar, borrar o reset) en este frame."
notes: "consumido por cpp/apps/shaders_lab/main.cpp"
---
# layouts_menu
+1
View File
@@ -27,6 +27,7 @@ params:
- name: wheel
desc: "Float scroll wheel (Imgui::GetIO().MouseWheel). distance *= (1 - wheel*0.1), clamp >0.1"
output: "orbit_camera_matrices: CameraMatrices con view (lookAt eye→origin, up=Y) y proj (perspective). Ambas row-major; al pasar a glUniformMatrix4fv usar transpose=GL_TRUE. orbit_camera_handle_drag: muta cam in-place, sin allocacion."
notes: "scaffolding/demo en primitives_gallery"
---
# orbit_camera
+1
View File
@@ -27,6 +27,7 @@ params:
- name: count
desc: "Numero de elementos en items."
output: "true si el usuario togglo algun panel este frame; false si no hubo cambios o si la MainMenuBar no se abrio (solo para panel_menu)."
notes: "consumido por cpp/apps/shaders_lab/main.cpp"
---
# panel_menu
+1 -1
View File
@@ -8,7 +8,7 @@ purity: impure
signature: "void fn::sql_workbench(const char* id, sqlite3* db, fn::SqlWorkbenchState& state, ImVec2 size); bool fn::sql_workbench_run_query(sqlite3*, const char*, fn::SqlWorkbenchState&); void fn::sql_workbench_load_schema(sqlite3*, fn::SqlWorkbenchState&); void fn::sql_workbench_destroy(fn::SqlWorkbenchState&)"
description: "Workbench SQL embebido en ImGui: editor con highlighting (text_editor + CodeLang::SQL), tabla de resultados (table_view), sidebar de schema (sqlite_master) e historial. Ejecuta queries contra una sqlite3* del caller (no abre/cierra la DB)."
tags: [imgui, sql, sqlite, editor, table, dashboard, registry, debug]
uses_functions: [text_editor_cpp_core, table_view_cpp_viz, button_cpp_core, tokens_cpp_core]
uses_functions: ["button_cpp_core", "table_view_cpp_viz", "text_editor_cpp_core", "tokens_cpp_core"]
uses_types: []
returns: []
returns_optional: false
+1
View File
@@ -24,6 +24,7 @@ source_license: "MIT"
source_file: "TextEditor.h, TextEditor.cpp"
params: []
output: "TextEditorState opaco — encapsula el editor del vendor + buffer de texto cacheado + flag dirty. Render devuelve true cuando el contenido cambio en el frame actual."
notes: "consumido por cpp/apps/text_editor_smoke/main.cpp; scaffolding/demo en primitives_gallery"
---
# text_editor
+1
View File
@@ -21,6 +21,7 @@ file_path: "cpp/functions/core/tokens.cpp"
framework: imgui
params: []
output: "Tokens constexpr accesibles como fn_tokens::colors::*, spacing::*, radius::*, font_size::*. apply_dark_theme() aplica los tokens al ImGuiStyle global."
notes: "consumido por cpp/framework/app_base.cpp; scaffolding/demo en primitives_gallery"
---
# tokens
+1
View File
@@ -25,6 +25,7 @@ params:
- name: t
desc: "Progreso normalizado en [0,1]. Para t<0 o t>1 algunas curvas extrapolan razonablemente, otras saturan."
output: "f(t) — valor de la curva en t. Para curvas no oscilantes f(0)=0 y f(1)=1. Para elastic/bounce f(0)=0 y f(1)=1 pero f puede salir del rango [0,1] en valores intermedios."
notes: "scaffolding/demo en primitives_gallery"
---
# tween_curves