- Add clearRect as verified feature - Mark fillRect as improved with SIMD @memset - Add historial entry: render 1.4ms → 1.0ms 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
240 lines
6.9 KiB
Markdown
240 lines
6.9 KiB
Markdown
# 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 |
|
|
| clearRect | ✅ | Partial redraw support |
|
|
| setPixel | ✅ | zsimifactu (via font) |
|
|
| fillRect | 🔧 | SIMD @memset optimizado 2025-12-10 |
|
|
| 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% |
|
|
| 2025-12-10 | zsimifactu | Partial redraw, fillRect SIMD - render 1.4ms → 1.0ms |
|
|
|
|
---
|
|
|
|
## 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
|