# VERIFIED_FEATURES.md - zcatgui Estado de verificación de funcionalidades en aplicaciones reales. **Leyenda:** - ✅ **Verificado** - Probado en aplicación real, funciona correctamente - ⚠️ **Tests only** - Solo tests unitarios, no probado en app real - 🔧 **Mejorado** - Probado y mejorado/corregido durante uso real - ❌ **Incompleto** - Conocido como incompleto o con limitaciones - ❓ **Sin probar** - No tiene tests ni uso real --- ## Core ### context.zig | Feature | Estado | Notas | |---------|--------|-------| | Context init/deinit | ✅ | zsimifactu | | beginFrame/endFrame | ✅ | zsimifactu | | pushCommand | ✅ | zsimifactu | | getId (widget IDs) | ✅ | zsimifactu | | frameAllocator | ⚠️ | Tests only | | dirty_rects tracking | ⚠️ | Infraestructura lista, no usada aún | | resize | ✅ | zsimifactu | ### input.zig | Feature | Estado | Notas | |---------|--------|-------| | handleKeyEvent | ✅ | zsimifactu - navegación tabla | | mousePos/setMousePos | ✅ | zsimifactu | | mousePressed | ✅ | zsimifactu - clicks | | getTextInput | ✅ | zsimifactu - edición TextInput | | navKeyPressed | ⚠️ | 1 test fallando | | Key repeat detection | ✅ | zsimifactu - scroll continuo | ### layout.zig | Feature | Estado | Notas | |---------|--------|-------| | LayoutState | ✅ | zsimifactu | | Rect operations | ✅ | zsimifactu | | nextRect | ✅ | zsimifactu | | row_height | ✅ | zsimifactu | ### style.zig | Feature | Estado | Notas | |---------|--------|-------| | Color struct | ✅ | zsimifactu | | Color.toABGR | 🔧 | Optimizado para font rendering | | Color.blend | ⚠️ | Tests only | | Theme.dark | ✅ | zsimifactu | ### command.zig | Feature | Estado | Notas | |---------|--------|-------| | DrawCommand.rect | ✅ | zsimifactu | | DrawCommand.text | ✅ | zsimifactu | | DrawCommand.rect_outline | ✅ | zsimifactu | | DrawCommand.line | ⚠️ | Tests only | | DrawCommand.clip | ✅ | zsimifactu - tabla clipping | --- ## Render ### framebuffer.zig | Feature | Estado | Notas | |---------|--------|-------| | init/deinit | ✅ | zsimifactu | | clear | ✅ | zsimifactu | | setPixel | ✅ | zsimifactu (via font) | | fillRect | ✅ | zsimifactu | | resize | ✅ | zsimifactu | | getData/getPitch | ✅ | zsimifactu - SDL2 present | | drawLine | ⚠️ | Tests only | | Alpha blending | ⚠️ | Tests only | ### font.zig | Feature | Estado | Notas | |---------|--------|-------| | Font 8x8 ASCII | ⚠️ | Tests only | | Font 8x8 Latin-1 | ⚠️ | Tests only | | Font 8x16 ASCII | ⚠️ | Tests only | | Font 8x16 Latin-1 | 🔧 | zsimifactu - optimizado 2025-12-10 | | drawChar fast path | 🔧 | Añadido 2025-12-10, ~26x más rápido | | drawChar clipping | ✅ | zsimifactu | | UTF-8 decoding | ✅ | zsimifactu - caracteres españoles | | getFontForSize | ⚠️ | Tests only | ### software.zig | Feature | Estado | Notas | |---------|--------|-------| | SoftwareRenderer init | ✅ | zsimifactu | | execute commands | ✅ | zsimifactu | | drawRect | ✅ | zsimifactu | | drawText (UTF-8) | 🔧 | zsimifactu - fix UTF-8 2025-12-10 | | drawRectOutline | ✅ | zsimifactu | | clip stack | ✅ | zsimifactu | ### ttf.zig | Feature | Estado | Notas | |---------|--------|-------| | TtfFont.loadFromFile | ❌ | Placeholder - no rasteriza curvas | | TTF parsing | ⚠️ | Parsea headers, no glyphs reales | ### animation.zig | Feature | Estado | Notas | |---------|--------|-------| | Todas | ❓ | Sin probar | ### antialiasing.zig | Feature | Estado | Notas | |---------|--------|-------| | Todas | ❓ | Sin probar | ### effects.zig | Feature | Estado | Notas | |---------|--------|-------| | Todas | ❓ | Sin probar | --- ## Backend ### sdl2.zig | Feature | Estado | Notas | |---------|--------|-------| | init/deinit | ✅ | zsimifactu | | pollEvent | ✅ | zsimifactu | | waitEvent | ✅ | zsimifactu - 0% CPU idle | | waitEventTimeout | 🔧 | zsimifactu - sleep progresivo 2025-12-10 | | present | ✅ | zsimifactu | | getSize | ✅ | zsimifactu | | Window resize | ✅ | zsimifactu | | VSync | 🔧 | Configurado, funciona con GPU | | Key translation | ✅ | zsimifactu | | Mouse events | ✅ | zsimifactu | | Text input events | ✅ | zsimifactu | ### wasm.zig | Feature | Estado | Notas | |---------|--------|-------| | Todas | ❓ | Sin probar | ### android.zig | Feature | Estado | Notas | |---------|--------|-------| | Todas | ❓ | Sin probar | ### ios.zig | Feature | Estado | Notas | |---------|--------|-------| | Todas | ❓ | Sin probar | --- ## Widgets ### Verificados en zsimifactu | Widget | Estado | Notas | |--------|--------|-------| | table.zig | ✅ | 510 registros, scroll, selección | | text_input.zig | 🔧 | Edición, cursor, fix buffers 2025-12-10 | | split.zig | ✅ | hsplit con drag | | panel.zig | ✅ | Con título | | scroll.zig | ✅ | Via Table | ### Solo tests unitarios | Widget | Estado | Notas | |--------|--------|-------| | button.zig | ⚠️ | | | checkbox.zig | ⚠️ | | | label.zig | ⚠️ | | | select.zig | ⚠️ | | | slider.zig | ⚠️ | | | radio.zig | ⚠️ | | | tabs.zig | ⚠️ | | | list.zig | ⚠️ | | | menu.zig | ⚠️ | | | modal.zig | ⚠️ | | | tooltip.zig | ⚠️ | | | toast.zig | ⚠️ | | | progress.zig | ⚠️ | | ### Sin probar / Avanzados | Widget | Estado | Notas | |--------|--------|-------| | autocomplete.zig | ❓ | | | chart.zig | ❓ | | | colorpicker.zig | ❓ | | | datepicker.zig | ❓ | | | textarea.zig | ❓ | | | tree.zig | ❓ | | | image.zig | ❓ | | | canvas.zig | ❓ | | | richtext.zig | ❓ | | | virtual_scroll.zig | ❓ | | | reorderable.zig | ❓ | | | numberentry.zig | ❓ | | | badge.zig | ❓ | | | breadcrumb.zig | ❓ | | | appbar.zig | ❓ | | | navdrawer.zig | ❓ | | | sheet.zig | ❓ | | | icon.zig | ❓ | | | iconbutton.zig | ❓ | | | divider.zig | ❓ | | | loader.zig | ❓ | | | switch.zig | ❓ | | | discloser.zig | ❓ | | | selectable.zig | ❓ | | | resize.zig | ❓ | | | surface.zig | ❓ | | | grid.zig | ❓ | | | focus.zig | ❓ | | --- ## Historial de Verificación | Fecha | Proyecto | Features Verificadas | |-------|----------|---------------------| | 2025-12-10 | zsimifactu | Table, TextInput, Split, Panel, Font 8x16 Latin-1, UTF-8 | | 2025-12-10 | zsimifactu | Optimización font.drawChar (26x speedup) | | 2025-12-10 | zsimifactu | waitEvent, waitEventTimeout - CPU 92% → 1.9% | --- ## Próximos a Verificar (Prioridad zsimifactu) 1. **button.zig** - Guardar, Cancelar, Nuevo 2. **select.zig** - Dropdowns (tipo WHO, país, provincia) 3. **modal.zig** - Confirmaciones, errores 4. **tabs.zig** - Navegación entre secciones 5. **checkbox.zig** - Opciones booleanas