diff --git a/.claude/rules/INDEX.md b/.claude/rules/INDEX.md index 222fe0aa..1adc6558 100644 --- a/.claude/rules/INDEX.md +++ b/.claude/rules/INDEX.md @@ -21,3 +21,4 @@ Reglas operativas del proyecto. Cada archivo es una regla independiente. | 15 | [projects.md](projects.md) | Projects: agrupar apps, analysis y vaults bajo un tema | | 16 | [kiss.md](kiss.md) | KISS en proyectos y apps: cuestionar herramientas externas, sin abstracciones especulativas | | 17 | [apps_tbd.md](apps_tbd.md) | Trunk-based development obligatorio en apps generadas con `fn` (registry exento) | +| 18 | [uses_functions.md](uses_functions.md) | Convencion de uses_functions para C++: el .md del consumidor declara las dependencias | diff --git a/.claude/rules/uses_functions.md b/.claude/rules/uses_functions.md new file mode 100644 index 00000000..4ddac966 --- /dev/null +++ b/.claude/rules/uses_functions.md @@ -0,0 +1,15 @@ +## uses_functions + +Cuando un .cpp llama a otra funcion del registry, el `.md` del CONSUMIDOR +debe anadir la dependencia a `uses_functions`. El indexer NO lo deduce +automaticamente para C++ (parser no trivial). + +Como auditar: + sqlite3 registry.db "SELECT id FROM functions WHERE lang='cpp' AND uses_functions='[]';" + +Convencion: +- Funciones de framework (cpp/framework/) no estan indexadas — sus consumos + se anotan en `notes:` del huerfano (no en uses_functions). +- Apps (`cpp/apps/`, `projects/*/apps/`) no estan en el grafo de uses_functions + del registry — los huerfanos solo consumidos por apps llevan nota en `notes:`. +- DEMO_ONLY en primitives_gallery se etiqueta `notes: scaffolding/demo`. diff --git a/cpp/functions/core/app_about.md b/cpp/functions/core/app_about.md index fb7b991f..091fa3a5 100644 --- a/cpp/functions/core/app_about.md +++ b/cpp/functions/core/app_about.md @@ -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 diff --git a/cpp/functions/core/app_menubar.md b/cpp/functions/core/app_menubar.md index 6062b485..c746c035 100644 --- a/cpp/functions/core/app_menubar.md +++ b/cpp/functions/core/app_menubar.md @@ -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 diff --git a/cpp/functions/core/app_settings.md b/cpp/functions/core/app_settings.md index bcec249e..f05f3faf 100644 --- a/cpp/functions/core/app_settings.md +++ b/cpp/functions/core/app_settings.md @@ -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 diff --git a/cpp/functions/core/dashboard_panel.md b/cpp/functions/core/dashboard_panel.md index 1e3d4373..c3f4abbd 100644 --- a/cpp/functions/core/dashboard_panel.md +++ b/cpp/functions/core/dashboard_panel.md @@ -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 diff --git a/cpp/functions/core/file_watcher.md b/cpp/functions/core/file_watcher.md index 11deb877..517b38e4 100644 --- a/cpp/functions/core/file_watcher.md +++ b/cpp/functions/core/file_watcher.md @@ -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 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 diff --git a/cpp/functions/core/fps_overlay.md b/cpp/functions/core/fps_overlay.md index 3ec9c16d..601a23c1 100644 --- a/cpp/functions/core/fps_overlay.md +++ b/cpp/functions/core/fps_overlay.md @@ -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 diff --git a/cpp/functions/core/fullscreen_window.md b/cpp/functions/core/fullscreen_window.md index ecdda5d9..f517b67e 100644 --- a/cpp/functions/core/fullscreen_window.md +++ b/cpp/functions/core/fullscreen_window.md @@ -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 diff --git a/cpp/functions/core/icon_font.md b/cpp/functions/core/icon_font.md index 816c513d..25bfdf95 100644 --- a/cpp/functions/core/icon_font.md +++ b/cpp/functions/core/icon_font.md @@ -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 diff --git a/cpp/functions/core/layout_storage_sqlite.md b/cpp/functions/core/layout_storage_sqlite.md index 89de5b4f..f0bf69f8 100644 --- a/cpp/functions/core/layout_storage_sqlite.md +++ b/cpp/functions/core/layout_storage_sqlite.md @@ -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 diff --git a/cpp/functions/core/layouts_menu.md b/cpp/functions/core/layouts_menu.md index 5fbb1f8b..384e8e45 100644 --- a/cpp/functions/core/layouts_menu.md +++ b/cpp/functions/core/layouts_menu.md @@ -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 diff --git a/cpp/functions/core/orbit_camera.md b/cpp/functions/core/orbit_camera.md index c7f59aa0..8288c694 100644 --- a/cpp/functions/core/orbit_camera.md +++ b/cpp/functions/core/orbit_camera.md @@ -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 diff --git a/cpp/functions/core/panel_menu.md b/cpp/functions/core/panel_menu.md index ca59de2c..48ff10c1 100644 --- a/cpp/functions/core/panel_menu.md +++ b/cpp/functions/core/panel_menu.md @@ -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 diff --git a/cpp/functions/core/sql_workbench.md b/cpp/functions/core/sql_workbench.md index 338eb04f..2b4d219e 100644 --- a/cpp/functions/core/sql_workbench.md +++ b/cpp/functions/core/sql_workbench.md @@ -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 diff --git a/cpp/functions/core/text_editor.md b/cpp/functions/core/text_editor.md index 3f620fa0..25a35df5 100644 --- a/cpp/functions/core/text_editor.md +++ b/cpp/functions/core/text_editor.md @@ -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 diff --git a/cpp/functions/core/tokens.md b/cpp/functions/core/tokens.md index e37c6b4a..4acb8619 100644 --- a/cpp/functions/core/tokens.md +++ b/cpp/functions/core/tokens.md @@ -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 diff --git a/cpp/functions/core/tween_curves.md b/cpp/functions/core/tween_curves.md index 7425261a..7e38351f 100644 --- a/cpp/functions/core/tween_curves.md +++ b/cpp/functions/core/tween_curves.md @@ -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 diff --git a/cpp/functions/gfx/dag_catalog.md b/cpp/functions/gfx/dag_catalog.md index 0d8f1b94..d3433bc6 100644 --- a/cpp/functions/gfx/dag_catalog.md +++ b/cpp/functions/gfx/dag_catalog.md @@ -21,6 +21,7 @@ test_file_path: "" file_path: "cpp/functions/gfx/dag_catalog.cpp" params: [] output: "dag_catalog(): referencia const estable al vector de DagNodeDef (instancia estatica, no se invalida). dag_find(name): puntero al nodo con ese nombre o nullptr si no existe." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- ## Nodos incluidos diff --git a/cpp/functions/gfx/dag_node_editor.md b/cpp/functions/gfx/dag_node_editor.md index 11b5d033..f318e3ee 100644 --- a/cpp/functions/gfx/dag_node_editor.md +++ b/cpp/functions/gfx/dag_node_editor.md @@ -8,7 +8,7 @@ purity: impure signature: "bool dag_node_editor(std::vector& pipeline)" description: "Renderiza el node editor visual (imgui-node-editor) para el DAG de shaders. Modifica el pipeline in-place: añade/borra nodos, gestiona aristas (source_ids). Devuelve true si la topologia cambio." tags: [dag, imgui, node-editor, shader, visual, pipeline, gfx] -uses_functions: [] +uses_functions: ["dag_catalog_cpp_gfx", "dag_node_previews_cpp_gfx"] uses_types: [] returns: [] returns_optional: false @@ -22,6 +22,7 @@ params: - name: pipeline desc: "vector de DagStep que representa el pipeline actual; modificado in-place" output: "true si la topologia cambio (nodos o aristas añadidos/quitados); false en caso contrario" +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- ## Notas diff --git a/cpp/functions/gfx/dag_node_previews.md b/cpp/functions/gfx/dag_node_previews.md index 7ac7d6bc..1a484304 100644 --- a/cpp/functions/gfx/dag_node_previews.md +++ b/cpp/functions/gfx/dag_node_previews.md @@ -8,7 +8,7 @@ purity: impure signature: "void dag_previews_render(const std::vector&, unsigned program, int w, int h); unsigned dag_preview_texture(unsigned editor_uid); void dag_previews_destroy()" description: "Renderiza un thumbnail por cada DagStep con preview_open=true a un FBO propio (lazy, keyed por editor_uid). Bind del FBO + glUniform1i(u_preview_target, i) + draw del quad. Devuelve la textura via dag_preview_texture para mostrarla con ImGui::Image." tags: [opengl, fbo, preview, dag, gfx] -uses_functions: [gl_loader_cpp_gfx, gl_framebuffer_cpp_gfx, fullscreen_quad_cpp_gfx, dag_catalog_cpp_gfx] +uses_functions: ["dag_catalog_cpp_gfx", "fullscreen_quad_cpp_gfx", "gl_framebuffer_cpp_gfx", "gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/dag_palette.md b/cpp/functions/gfx/dag_palette.md index 7cba964e..c44bee15 100644 --- a/cpp/functions/gfx/dag_palette.md +++ b/cpp/functions/gfx/dag_palette.md @@ -8,7 +8,7 @@ purity: impure signature: "void dag_palette()" description: "Paleta de nodos del catalogo, agrupada por kind (Gen/Op/Blend). Cada entrada es un drag source con payload DAG_NODE_TYPE que contiene el name del nodo. El node editor recibe el drop y anade un nuevo DagStep en la posicion del mouse." tags: [imgui, dag, palette, drag-and-drop, gfx, component] -uses_functions: [dag_catalog_cpp_gfx] +uses_functions: ["dag_catalog_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/dag_uniforms.md b/cpp/functions/gfx/dag_uniforms.md index 45f15448..91d6f972 100644 --- a/cpp/functions/gfx/dag_uniforms.md +++ b/cpp/functions/gfx/dag_uniforms.md @@ -9,6 +9,7 @@ signature: "void dag_uniforms_apply(const std::vector& pipeline, unsign description: "Sube los params del pipeline al shader activo via glUniform4fv. Construye un float[64] con los params de cada DagStep (hasta 16 pasos) y llama glUniform4fv(u_params, 16, data)." tags: [dag, shader, uniforms, opengl, gfx, pipeline] uses_functions: + - dag_catalog_cpp_gfx - gl_loader_cpp_gfx uses_types: - dag_types_cpp_gfx diff --git a/cpp/functions/gfx/fullscreen_quad.md b/cpp/functions/gfx/fullscreen_quad.md index 8e21dbce..65aed29e 100644 --- a/cpp/functions/gfx/fullscreen_quad.md +++ b/cpp/functions/gfx/fullscreen_quad.md @@ -8,7 +8,7 @@ purity: impure signature: "void quad_init(Quad& q); void quad_draw(const Quad& q); void quad_destroy(Quad& q)" description: "VAO/VBO para un fullscreen quad de 6 vértices. El vertex shader genera las posiciones via gl_VertexID, por lo que el VBO queda vacío. quad_draw emite glDrawArrays(GL_TRIANGLES, 0, 6)." tags: [opengl, quad, fullscreen, vao, vbo, gfx] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/gl_framebuffer.md b/cpp/functions/gfx/gl_framebuffer.md index b8c3840b..0a215039 100644 --- a/cpp/functions/gfx/gl_framebuffer.md +++ b/cpp/functions/gfx/gl_framebuffer.md @@ -8,7 +8,7 @@ purity: impure signature: "void fb_init(Framebuffer& f); void fb_resize(Framebuffer& f, int w, int h); void fb_destroy(Framebuffer& f)" description: "CRUD de un framebuffer OpenGL (FBO + textura RGBA8). fb_resize es no-op si las dimensiones no cambian. Listo para uso con ImGui::Image." tags: [opengl, framebuffer, fbo, texture, gfx, offscreen] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/gl_loader.md b/cpp/functions/gfx/gl_loader.md index b1688617..14305dd6 100644 --- a/cpp/functions/gfx/gl_loader.md +++ b/cpp/functions/gfx/gl_loader.md @@ -21,6 +21,7 @@ file_path: "cpp/functions/gfx/gl_loader.cpp" framework: opengl params: [] output: "true si todos los simbolos se resolvieron (Linux siempre true; Windows depende de que el contexto GL este activo antes de llamar). false si algun simbolo no esta disponible en el driver." +notes: "scaffolding/demo en primitives_gallery" --- # gl_loader diff --git a/cpp/functions/gfx/gl_shader.md b/cpp/functions/gfx/gl_shader.md index 2efed100..c566dd46 100644 --- a/cpp/functions/gfx/gl_shader.md +++ b/cpp/functions/gfx/gl_shader.md @@ -8,7 +8,7 @@ purity: impure signature: "CompileResult compile_fragment(const std::string& user_fragment_src)" description: "Compila un cuerpo de fragment shader GLSL 330 y retorna un GL program listo para usar. Prepende automáticamente version, out vec4 fragColor y uniforms u_resolution/u_time/u_mouse. Usa GL_GLEXT_PROTOTYPES + GL/glext.h." tags: [opengl, shader, glsl, compile, fragment, gfx] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false @@ -23,6 +23,7 @@ params: - name: user_fragment_src desc: "Cuerpo del fragment shader GLSL sin #version, sin 'out vec4 fragColor' ni declaraciones de uniforms. Solo el void main() y funciones auxiliares." output: "CompileResult con program=GL id si ok=true, o err_msg/err_line si falla. program=0 indica error." +notes: "consumido por cpp/apps/shaders_lab/main.cpp; scaffolding/demo en primitives_gallery" --- # gl_shader diff --git a/cpp/functions/gfx/gl_texture_load.md b/cpp/functions/gfx/gl_texture_load.md index e6dd6135..ec1e8dc9 100644 --- a/cpp/functions/gfx/gl_texture_load.md +++ b/cpp/functions/gfx/gl_texture_load.md @@ -8,7 +8,7 @@ purity: impure signature: "GlTexture gl_texture_load(const char* path, bool flip_y, bool srgb)" description: "Carga PNG/JPG/BMP/TGA/HDR desde disco (o memoria) a una textura OpenGL lista para usar como sampler2D. Vendorea stb_image. Soporta sRGB (GL_SRGB8_ALPHA8) y HDR (GL_RGBA16F via stbi_loadf). Genera mipmaps automaticamente. flip_y=true por defecto coincide con la convencion UV de OpenGL." tags: [opengl, texture, image, png, jpg, hdr, stb_image, gfx] -uses_functions: [gl_loader_cpp_gfx] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/mesh_gpu.md b/cpp/functions/gfx/mesh_gpu.md index c311ce50..449596e0 100644 --- a/cpp/functions/gfx/mesh_gpu.md +++ b/cpp/functions/gfx/mesh_gpu.md @@ -8,7 +8,7 @@ purity: impure signature: "MeshGpu mesh_gpu_upload(const Mesh&); void mesh_gpu_destroy(MeshGpu&)" description: "Sube un Mesh CPU a OpenGL como VAO + VBO interleaved (pos.xyz, normal.xyz) + EBO uint32. Layout: location 0 = a_pos vec3, location 1 = a_normal vec3, stride 6 floats." tags: [opengl, mesh, vao, vbo, ebo, gpu, gfx] -uses_functions: [mesh_obj_load_cpp_gfx] +uses_functions: ["gl_loader_cpp_gfx", "mesh_obj_load_cpp_gfx"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/gfx/mesh_obj_load.md b/cpp/functions/gfx/mesh_obj_load.md index a2172a0d..53f0d560 100644 --- a/cpp/functions/gfx/mesh_obj_load.md +++ b/cpp/functions/gfx/mesh_obj_load.md @@ -27,6 +27,7 @@ params: - name: path desc: "Ruta absoluta o relativa del .obj a leer (mesh_obj_load impuro)" output: "Mesh con positions/normals (stride 3, mismo length) y indices (tri-list, multiplo de 3). Si no hay vn, normales por face (flat shading) y vertices duplicados por face. Mesh vacio si parse falla." +notes: "scaffolding/demo en primitives_gallery" --- # mesh_obj_load diff --git a/cpp/functions/gfx/shader_canvas.md b/cpp/functions/gfx/shader_canvas.md index 558caa0e..cb3f2734 100644 --- a/cpp/functions/gfx/shader_canvas.md +++ b/cpp/functions/gfx/shader_canvas.md @@ -9,9 +9,10 @@ signature: "void canvas_render(ShaderCanvas& c, float time_seconds, const std::f description: "Componente ImGui que renderiza un fragment shader GLSL a un FBO y lo muestra en el panel actual. Compone gl_framebuffer, fullscreen_quad y gl_shader. Gestiona resize automático y coordenadas de mouse. Acepta callback opcional uniforms_fn invocado tras glUseProgram para uniforms custom." tags: [opengl, shader, canvas, imgui, fbo, gfx, component] uses_functions: - - gl_shader_cpp_gfx - - gl_framebuffer_cpp_gfx - fullscreen_quad_cpp_gfx + - gl_framebuffer_cpp_gfx + - gl_loader_cpp_gfx + - gl_shader_cpp_gfx - uniform_panel_cpp_gfx uses_types: [] returns: [] diff --git a/cpp/functions/gfx/shaderlab_db.md b/cpp/functions/gfx/shaderlab_db.md index d8ba3ab9..5a1a160e 100644 --- a/cpp/functions/gfx/shaderlab_db.md +++ b/cpp/functions/gfx/shaderlab_db.md @@ -34,6 +34,7 @@ params: - name: err desc: "Mensaje de error opcional si save falla (constraint, schema, IO)." output: "Persistencia en la tabla generators de shaders_lab.db. Las listas vienen ordenadas por label." +notes: "consumido por cpp/apps/shaders_lab/main.cpp" --- ## Schema diff --git a/cpp/functions/gfx/uniform_panel.md b/cpp/functions/gfx/uniform_panel.md index 0530ace0..52cab7d5 100644 --- a/cpp/functions/gfx/uniform_panel.md +++ b/cpp/functions/gfx/uniform_panel.md @@ -9,8 +9,8 @@ signature: "void uniforms_panel(UniformStore&, const std::vectoramarillo)" +notes: "scaffolding/demo en primitives_gallery" --- # contour diff --git a/cpp/functions/viz/gauge.md b/cpp/functions/viz/gauge.md index 793e8037..128cdb5a 100644 --- a/cpp/functions/viz/gauge.md +++ b/cpp/functions/viz/gauge.md @@ -31,6 +31,7 @@ params: - 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" +notes: "scaffolding/demo en primitives_gallery" --- # gauge diff --git a/cpp/functions/viz/graph_force_layout.md b/cpp/functions/viz/graph_force_layout.md index 679ad9d3..22749982 100644 --- a/cpp/functions/viz/graph_force_layout.md +++ b/cpp/functions/viz/graph_force_layout.md @@ -25,6 +25,7 @@ params: - name: config desc: "Parametros de la simulacion: repulsion (fuerza coulombiana), attraction (spring constant), damping (decay de velocidad), theta (precision Barnes-Hut 0=exacto/1=rapido), gravity (atraccion al centro), max_velocity, iterations." output: "Energia cinetica total (suma de |v|^2). Cuando cae por debajo de un umbral elegido por el caller, el layout ha convergido y se puede dejar de llamar." +notes: "scaffolding/demo en primitives_gallery" --- # graph_force_layout diff --git a/cpp/functions/viz/graph_renderer.md b/cpp/functions/viz/graph_renderer.md index b3a19a34..dc401f08 100644 --- a/cpp/functions/viz/graph_renderer.md +++ b/cpp/functions/viz/graph_renderer.md @@ -8,7 +8,7 @@ purity: impure signature: "GraphRenderer* graph_renderer_create(int width, int height, const GraphRendererConfig& config)" description: "Renderer GPU de grafos con instanced rendering a FBO, compatible con ImGui::Image para visualizacion de grafos grandes" tags: [graph, renderer, opengl, gpu, instanced, fbo, visualization] -uses_functions: [] +uses_functions: ["gl_loader_cpp_gfx"] uses_types: ["GraphData_cpp_viz"] returns: [] returns_optional: false diff --git a/cpp/functions/viz/graph_viewport.md b/cpp/functions/viz/graph_viewport.md index d3a0c611..3cd5046e 100644 --- a/cpp/functions/viz/graph_viewport.md +++ b/cpp/functions/viz/graph_viewport.md @@ -8,7 +8,7 @@ purity: impure signature: "bool graph_viewport(const char* id, GraphData& graph, GraphViewportState& state, ImVec2 size)" description: "Widget ImGui completo para visualizacion interactiva de grafos con pan, zoom, hover, seleccion y layout en vivo" tags: [graph, viewport, imgui, interactive, pan, zoom, dashboard] -uses_functions: ["graph_renderer_cpp_viz", "graph_force_layout_cpp_viz", "graph_spatial_hash_cpp_core"] +uses_functions: ["graph_force_layout_cpp_viz", "graph_renderer_cpp_viz", "graph_spatial_hash_cpp_core"] uses_types: ["GraphData_cpp_viz"] returns: [] returns_optional: false diff --git a/cpp/functions/viz/heatmap.md b/cpp/functions/viz/heatmap.md index 85ddda03..81f6d491 100644 --- a/cpp/functions/viz/heatmap.md +++ b/cpp/functions/viz/heatmap.md @@ -33,6 +33,7 @@ params: - name: scale_max desc: "Valor maximo de la escala de color (0 para autodetectar)" output: "Renderiza el heatmap en el frame ImGui actual" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # heatmap diff --git a/cpp/functions/viz/histogram.md b/cpp/functions/viz/histogram.md index 12382731..6509ed06 100644 --- a/cpp/functions/viz/histogram.md +++ b/cpp/functions/viz/histogram.md @@ -8,7 +8,7 @@ purity: pure signature: "void histogram(const char* title, const float* values, int count, int bins = -1, float height = 200.0f)" description: "Histograma con bins automaticos, ejes lock (con AutoFit para bins dinamicos) y altura explicita" tags: [implot, chart, visualization, gpu, histogram, distribution, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -31,6 +31,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con AutoResizeY" output: "Renderiza el histograma en el frame ImGui actual" +notes: "scaffolding/demo en primitives_gallery" --- # histogram diff --git a/cpp/functions/viz/line_plot.md b/cpp/functions/viz/line_plot.md index 1516d16a..0e0becb8 100644 --- a/cpp/functions/viz/line_plot.md +++ b/cpp/functions/viz/line_plot.md @@ -8,7 +8,7 @@ purity: pure signature: "void line_plot(const char* title, const float* xs, const float* ys, int count, float height = 200.0f)" description: "Line plot 2D con ImPlot, ejes pineados y altura explicita para no vibrar al redimensionar" tags: [implot, chart, visualization, gpu, line, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -31,6 +31,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con contenedores AutoResizeY" output: "Renderiza la linea en el frame ImGui actual con ejes pineados" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # line_plot diff --git a/cpp/functions/viz/mesh_viewer.md b/cpp/functions/viz/mesh_viewer.md index dff986d3..343da9ba 100644 --- a/cpp/functions/viz/mesh_viewer.md +++ b/cpp/functions/viz/mesh_viewer.md @@ -8,7 +8,7 @@ purity: impure signature: "void mesh_viewer(const char* id, const MeshViewerConfig& cfg)" description: "Renderiza un MeshGpu (3D) en un FBO interno cacheado por id, con orbit camera, iluminacion Lambert headlight, opcion wireframe. Drag/wheel del mouse mueven la camara." tags: [imgui, opengl, mesh, 3d, viewer, viz, fbo] -uses_functions: [mesh_gpu_cpp_gfx, orbit_camera_cpp_core, gl_framebuffer_cpp_gfx] +uses_functions: ["gl_framebuffer_cpp_gfx", "gl_loader_cpp_gfx", "gl_shader_cpp_gfx", "mesh_gpu_cpp_gfx", "orbit_camera_cpp_core"] uses_types: [] returns: [] returns_optional: false diff --git a/cpp/functions/viz/pie_chart.md b/cpp/functions/viz/pie_chart.md index 1fa3e45e..8eb7011a 100644 --- a/cpp/functions/viz/pie_chart.md +++ b/cpp/functions/viz/pie_chart.md @@ -8,7 +8,7 @@ purity: pure signature: "void pie_chart(const char* title, const char* const* labels, const float* values, int count, float radius = 0.0f, float height = 200.0f)" description: "Pie/donut chart con ImPlot, ejes pineados, altura explicita y tooltip por slice al pasar el mouse" tags: [implot, chart, visualization, gpu, pie, donut, tooltip, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -33,6 +33,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con contenedores AutoResizeY" output: "Renderiza el pie en el frame ImGui actual; muestra tooltip con label + valor + % al pasar por encima de un slice" +notes: "scaffolding/demo en primitives_gallery" --- # pie_chart diff --git a/cpp/functions/viz/sankey.md b/cpp/functions/viz/sankey.md index dcecdd77..59d364af 100644 --- a/cpp/functions/viz/sankey.md +++ b/cpp/functions/viz/sankey.md @@ -29,6 +29,7 @@ params: - name: size desc: "Tamano del diagrama. x <= 0 usa el ancho disponible" output: "Renderiza nodos como rectangulos verticales por columna y links como bandas con bezier cubico, con alpha bajo y color del nodo origen" +notes: "scaffolding/demo en primitives_gallery" --- # sankey diff --git a/cpp/functions/viz/scatter_3d.md b/cpp/functions/viz/scatter_3d.md index 3fd868eb..f6ff89ea 100644 --- a/cpp/functions/viz/scatter_3d.md +++ b/cpp/functions/viz/scatter_3d.md @@ -25,6 +25,7 @@ params: - name: cfg desc: "fn::Scatter3DConfig — xs, ys, zs (length n), sizes opcional, colors opcional (ImU32 RGBA), size del plot" output: "Renderiza una nube de puntos 3D dentro del frame ImGui actual; soporta orbit (drag), zoom (wheel) y pan" +notes: "scaffolding/demo en primitives_gallery" --- # scatter_3d diff --git a/cpp/functions/viz/scatter_plot.md b/cpp/functions/viz/scatter_plot.md index 50fe896c..65b298b2 100644 --- a/cpp/functions/viz/scatter_plot.md +++ b/cpp/functions/viz/scatter_plot.md @@ -8,7 +8,7 @@ purity: pure signature: "void scatter_plot(const char* title, const float* xs, const float* ys, int count, float height = 200.0f)" description: "Scatter plot 2D con ImPlot, ejes pineados y altura explicita para no vibrar al redimensionar" tags: [implot, chart, visualization, gpu, scatter, locked-axes] -uses_functions: [] +uses_functions: ["plot_static_cpp_viz"] uses_types: [] returns: [] returns_optional: false @@ -31,6 +31,7 @@ params: - name: height desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops" output: "Renderiza el scatter en el frame ImGui actual con ejes pineados" +notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery" --- # scatter_plot diff --git a/cpp/functions/viz/sparkline.md b/cpp/functions/viz/sparkline.md index 74981921..a706b023 100644 --- a/cpp/functions/viz/sparkline.md +++ b/cpp/functions/viz/sparkline.md @@ -31,6 +31,7 @@ params: - name: height desc: "Alto en pixels del sparkline (default 20.0)" output: "Renderiza el sparkline inline en el frame ImGui actual, reservando espacio con ImGui::Dummy" +notes: "scaffolding/demo en primitives_gallery" --- # sparkline diff --git a/cpp/functions/viz/surface_plot_3d.md b/cpp/functions/viz/surface_plot_3d.md index ef6537d9..9ab3cfde 100644 --- a/cpp/functions/viz/surface_plot_3d.md +++ b/cpp/functions/viz/surface_plot_3d.md @@ -25,6 +25,7 @@ params: - name: cfg desc: "fn::SurfacePlot3DConfig — z (nx*ny row-major), nx, ny, x/y_min, x/y_max, labels, size, show_colormap" output: "Renderiza una superficie 3D dentro del frame ImGui actual; soporta orbit (drag), zoom (wheel) y pan via ImPlot3D" +notes: "scaffolding/demo en primitives_gallery" --- # surface_plot_3d diff --git a/cpp/functions/viz/table_view.md b/cpp/functions/viz/table_view.md index 927ad8a6..cadef164 100644 --- a/cpp/functions/viz/table_view.md +++ b/cpp/functions/viz/table_view.md @@ -31,6 +31,7 @@ params: - name: row_count desc: "Numero de filas de datos, sin contar el header" output: "true si la tabla se renderizo visible, false si fue clipped o skipped por ImGui" +notes: "scaffolding/demo en primitives_gallery" --- # table_view diff --git a/cpp/functions/viz/treemap.md b/cpp/functions/viz/treemap.md index 4cb4a249..5e2811c2 100644 --- a/cpp/functions/viz/treemap.md +++ b/cpp/functions/viz/treemap.md @@ -27,6 +27,7 @@ params: - name: size desc: "Tamano del rect del treemap. x <= 0 usa el ancho disponible" output: "Renderiza el treemap en el frame ImGui actual usando AddRectFilled + AddText sobre el WindowDrawList" +notes: "scaffolding/demo en primitives_gallery" --- # treemap diff --git a/cpp/functions/viz/voronoi.md b/cpp/functions/viz/voronoi.md index 5585c7db..fb62268b 100644 --- a/cpp/functions/viz/voronoi.md +++ b/cpp/functions/viz/voronoi.md @@ -31,6 +31,7 @@ params: - name: size desc: "Tamano del area Voronoi. x <= 0 usa el ancho disponible" output: "Renderiza la teselacion de Voronoi como mosaico de tiles 4x4 px coloreados + seeds visibles como circulos blancos sobre negros" +notes: "scaffolding/demo en primitives_gallery" --- # voronoi