Genera cubo procedural in-line (mesh_obj_parse de string), permite
cargar .obj desde un text input absoluto. Botones: Reload cube,
Wireframe toggle, Load .obj. Status line con tris count y
instrucciones (drag to orbit, wheel to zoom).
issue 0029
Adds three new demos to the Core section of primitives_gallery:
- demo_tween: dropdown of all 16 Ease modes + animated plot showing the
curve and a moving marker that traverses t=0..1 in a loop.
- demo_bezier_editor: live editor with reset + ease-out / ease-in-out
presets, current control points displayed, slider over t showing
bezier_eval(curve, t).
- demo_timeline: 2 tracks (hue, amp) with mixed eases, live progress bars
showing track_value_at(current_time) updating each frame.
Wires the three demos into k_demos[] in main.cpp and adds the new sources
(plus the three function .cpp files) to CMakeLists.txt.
- demos_3d.cpp con dos demos:
* demo_surface_plot_3d: malla 64x64 de A*sin(fx*x)*cos(fy*y) con
sliders fx/fy/amp en tiempo real.
* demo_scatter_3d: 3 clusters gaussianos (N=500) coloreados por
cluster, semilla fija para reproducibilidad.
- demos.h: declara las dos demos en la seccion Viz.
- main.cpp: dos entradas nuevas en k_demos[] (Viz, tras heatmap /
table_view).
- CMakeLists.txt: anade demos_3d.cpp + surface_plot_3d.cpp +
scatter_3d.cpp al target.
Issue 0028.
Cobertura del catalogo visual:
- text_editor (Wave 1, 0025): demo solo del editor con dropdown GLSL/SQL/Cpp/Generic.
- file_watcher (Wave 1, 0025): demo solo del watcher con boton touch + log.
- gl_texture_load (Wave 1, 0026): ya tenia demo (Gfx).
- process_runner: tarea simulada en background con spinner.
- candlestick: 30 dias OHLC sintetico.
- gauge: 3 indicadores con sliders (CPU/MEM/GPU).
- heatmap: gaussiana 12x12.
- table_view: 6 funciones del registry como muestra.
El demo combinado anterior (text_editor + watcher) se separa en dos para
que cada entry del sidebar exhiba un solo primitivo. Mas claro y mas
indexable.
Total entries en gallery: 26 (antes 23).
Tras integrar 0025 (que trajo la app entera) y 0026 (que solo añadio
demos_gl_texture.cpp + assets/sample.png + cpp/functions/gfx/gl_texture_load.*),
falta wire-up de la entrada nueva en los archivos compartidos del gallery.
- demos.h: declarar gallery::demo_gl_texture()
- main.cpp: entrada en k_demos[] con id "gl_texture", category "Gfx"
- CMakeLists.txt: añadir demos_gl_texture.cpp, gl_texture_load.cpp,
stb_image_impl.cpp, e include dir vendor/stb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- demos_text_editor.cpp: split horizontal con editor GLSL precargado a la
izquierda (boton Save to /tmp/fn_demo.glsl + dirty indicator) y panel de
eventos a la derecha (path, active flag, lista scrollable, boton clear).
Watcher activo sobre /tmp/fn_demo.glsl; reintenta el add() tras el primer
Save si el archivo no existia al iniciar.
- demos.h: declaracion de gallery::demo_text_editor()
- main.cpp: entry "text_editor"/"text_editor + watcher" en categoria Core
- CMakeLists.txt: anade demos_text_editor.cpp + sources de text_editor,
file_watcher y vendor TextEditor.cpp + include path de imgui_text_edit
Nota: la primitives_gallery NO se construye en este branch (sus deps —
button.cpp, toolbar.cpp, etc. — son untracked en master). El subdirectorio
se anade pero protegido por FN_BUILD_GALLERY=OFF para no romper builds.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>