feat(cpp/viz): split orphan TUs as separate fn entries (ADR 0003)
Cuando una funcion del registry parte su .cpp en varios TUs por testabilidad o separacion ImGui-vs-puro, cada TU adicional se registra como entrada propia con su .md en lugar de extender file_path para listar varios archivos. Aplicado a: - graph_labels_select_cpp_viz: helpers puros (compute_degrees + labels_select). - graph_viewport_selection_cpp_viz: clear/add/toggle/is_selected puros. - graph_types_cpp_viz: TU de update_bounds + find_node_by_user_data. graph_labels y graph_viewport actualizados para declarar las nuevas entradas en uses_functions. Razon detallada en docs/adr/0003 + regla actualizada en .claude/rules/uses_functions.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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, lasso, multi-select]
|
||||
uses_functions: ["graph_force_layout_cpp_viz", "graph_renderer_cpp_viz", "graph_spatial_hash_cpp_core"]
|
||||
uses_functions: ["graph_force_layout_cpp_viz", "graph_renderer_cpp_viz", "graph_spatial_hash_cpp_core", "graph_viewport_selection_cpp_viz"]
|
||||
tested: true
|
||||
tests: ["selection add/clear/toggle/is_selected", "out-of-range indices ignored"]
|
||||
test_file_path: "cpp/tests/test_graph_viewport.cpp"
|
||||
@@ -133,3 +133,15 @@ El renderer OpenGL y el spatial hash se crean en el primer frame. La camara se a
|
||||
- La textura del renderer se muestra con UV volteado en Y (`ImVec2(0,1)` a `ImVec2(1,0)`) para corregir la convencion de coordenadas de OpenGL vs ImGui.
|
||||
- El spatial hash se reconstruye cada frame desde las posiciones actuales de los nodos, garantizando hit-testing correcto despues de drag o layout.
|
||||
- El zoom hacia el cursor mantiene el punto del grafo bajo el cursor fijo en pantalla ajustando `cam_x`/`cam_y`.
|
||||
|
||||
## Split de TU (2026-05-04, ADR 0003)
|
||||
|
||||
Los helpers puros `graph_viewport_clear_selection`, `graph_viewport_is_selected`,
|
||||
`graph_viewport_add_to_selection` y `graph_viewport_toggle_selection` viven en
|
||||
`graph_viewport_selection.cpp` y se indexan como entrada propia
|
||||
`graph_viewport_selection_cpp_viz`. Esta entrada solo cubre el widget completo
|
||||
con pan/zoom/click (impuro, ImGui).
|
||||
|
||||
Apps que reusan `graph_viewport` enlazan ambos `.cpp` y declaran ambas IDs en
|
||||
su `app.md`. Apps que solo necesitan la maquinaria de seleccion (poco probable)
|
||||
pueden declarar solo `graph_viewport_selection_cpp_viz`.
|
||||
|
||||
Reference in New Issue
Block a user