feat(viz): renderer shapes/iconos/flechas/edge-styles (issue 0049f)
graph_renderer 1.5.0: - 6 shapes SDF (circle, square, diamond, hex, triangle, rounded square) con dispatch en fragment shader y AA via fwidth. - Atlas opcional de iconos Tabler bakeado por graph_icons; el shader compone overlay desde un uniform vec4 u_icon_uvs[256]. Setter publico graph_renderer_set_icon_atlas(r, tex, uv_table, count). - Aristas direccionales: 6 vertices por arista (line + chevron de la flecha) en una sola draw call; segmento principal acortado por el radio del nodo target. - Edge styles solid/dashed/dotted via descarte por arc_length en el fragment shader; las lineas del chevron son siempre solidas. graph_icons 1.0.0 (nuevo): - Atlas RGBA8 512x512 = grid 16x16 (256 iconos max) bakeado con stb_truetype desde tabler-icons.ttf. - API: graph_icons_build/texture/region/uv_table/destroy. icon_id es 1-based; 0 reservado para "sin icono". - Hook FN_GRAPH_ICONS_SKIP_GL=1 para tests sin contexto GL. Demo demos_graph_styles en primitives_gallery: 6 EntityTypes (uno por shape) con icono Tabler representativo + 3 RelationTypes (knows/uses/ owns) con flechas direccionales y los 3 estilos. test_graph_icons: 6 casos cubriendo bake, regiones 1-indexed, uv_table consistente, layout en grid 16x16, validacion de count fuera de rango, y verificacion de alpha != 0 en las celdas tras bake. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -74,6 +74,24 @@ add_fn_test(test_graph_edge_static test_graph_edge_static.cpp
|
||||
add_fn_test(test_graph_types test_graph_types.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../functions/viz/graph_types.cpp)
|
||||
|
||||
# --- Issue 0049f — atlas de iconos Tabler para graph_renderer ---------------
|
||||
# graph_icons.cpp incluye gl_loader.h y referencia gl* — el atlas se puede
|
||||
# construir sin contexto via FN_GRAPH_ICONS_SKIP_GL=1 (set por el test), pero
|
||||
# las funciones GL siguen siendo simbolos a resolver en link. Linkamos contra
|
||||
# OpenGL::GL (Linux) u opengl32 (Win cross) para que el linker quede contento.
|
||||
add_fn_test(test_graph_icons test_graph_icons.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../functions/viz/graph_icons.cpp)
|
||||
target_include_directories(test_graph_icons PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../vendor/imgui)
|
||||
target_compile_definitions(test_graph_icons PRIVATE
|
||||
FN_CPP_ROOT="${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||
if(WIN32)
|
||||
target_link_libraries(test_graph_icons PRIVATE opengl32)
|
||||
else()
|
||||
find_package(OpenGL REQUIRED)
|
||||
target_link_libraries(test_graph_icons PRIVATE OpenGL::GL)
|
||||
endif()
|
||||
|
||||
# --- Visual golden-image diff (issue 0048) ---------------------------------
|
||||
# El binario primitives_gallery se compila con --capture; el test compara los
|
||||
# PNGs generados con los goldens en cpp/tests/golden/. Si no hay goldens o el
|
||||
|
||||
Reference in New Issue
Block a user