2 puntos por GN⁺ 2024-04-02 | Aún no hay comentarios. | Compartir por WhatsApp

¿Qué es esto?

  • Es una biblioteca que replica gran parte de la API "Toolbox" de Macintosh Classic; no es una implementación completa, pero alcanza para crear algunas aplicaciones sencillas.
  • Es una función añadida al emulador MII Apple //e, uno de esos proyectos que parecen competir por un récord mundial en cantidad de funciones agregadas.

¿Por qué?

  • Hacía falta una biblioteca de UI para MII, con pocas dependencias y sin un estilo tipo "videojuego".
  • Empezó con la UI de modo inmediato de Nuklear, pero la sintió muy limitada e incómoda cuando había que personalizarla.
  • El motor de layout de UI no le satisfacía y, pese a la promesa de mantener estado, en la práctica lo hacía basándose en valores hash.
  • Antes las interfaces se hacían con artesanía; ahora muchas veces se toman decisiones sin sentido del diseño ni de la usabilidad.
  • Así que empezó a crear su propia biblioteca aprovechando varias piezas que ya tenía.

¿Qué puede hacer esta biblioteca?

  • Incluye algunos de los "managers" del Macintosh Toolbox y funciona como un sistema moderno.
  • Está diseñada para dibujar en una "pantalla" mediante un búfer ARGB, que luego puede copiarse donde haga falta.
  • La biblioteca rastrea las regiones "inválidas" y minimiza el overdraw redibujando solo las partes necesarias.

¿En qué se diferencia del original?

  • En lo visual, partió de MacOS 8/9, pero eliminó todos los tonos de gris.
  • A nivel de API, es completamente asíncrona, y no se puede dibujar en una ventana o GrafPort cuando uno quiera como en el original.
  • Todo está compuesto por mui_window o mui_control.

Gestor de ventanas

  • Puede crear y dibujar ventanas.
  • Tiene hasta 15 "capas" y puede hacer clipping, entre otras cosas.

Gestor de menús

  • Ofrece barra de menú, menús, marcas de verificación, atajos de teclado, etc., con apariencia de System 7/8 o GS/OS.

Gestor de controles

  • Ofrece botones, casillas de verificación, botones de opción, barras de desplazamiento (verticales), cuadros de texto y más.

Gestor de listas

  • Está diseñado para mostrar nombres de archivo y puede manejar teclas de flecha, Page Up/Down, rueda de desplazamiento, etc.

Alertas

  • Ofrece alertas típicas con botones de "Cancelar" y "Aceptar".

Archivos estándar

  • Ofrece un cuadro de diálogo para abrir archivos.

Gestor de recursos

  • No incluye gestor de recursos.

¿Cuáles son las dependencias?

  • La única dependencia externa es libpixman.
  • Usa libpixman, libcg, stb_truetype.h, stb_ttc.h, etc.

¿Cómo se compila?

  • Usa un Makefile simple, y desde el directorio raíz se puede compilar la biblioteca y los tests/demos/ejemplos con el comando 'make'.

¿Cómo se usa?

  • Lo mejor es usarlo modificando mui_shell.c y mui_widgets_demo.c.
  • Carga mui_widgets_demo.so como plugin y la vuelve a cargar automáticamente cuando detecta cambios.

FAQ!

  • No ofrece modo oscuro, temas, ventanas transparentes, efecto cubo, menús persistentes, herramientas o frameworks modernos y de moda, nuevos bindings de lenguaje, soporte para Wayland, etc.

Opinión de GN⁺

  • Esta biblioteca es un proyecto interesante que reinventa la UI clásica de Macintosh para sistemas modernos. Puede despertar nostalgia por el diseño de interfaces del pasado entre los desarrolladores.
  • Una biblioteca de UI asíncrona se adapta mejor al desarrollo moderno de aplicaciones, y esta biblioteca adopta ese enfoque contemporáneo.
  • Puede ser especialmente útil para desarrolladores que valoran la eficiencia de recursos. Su capacidad para minimizar el overdraw y redibujar solo lo necesario puede ayudar a optimizar el rendimiento.
  • Sin embargo, como no ofrece funciones modernas como modo oscuro o soporte de temas, puede que no satisfaga las necesidades de todos los desarrolladores.
  • Bibliotecas UI modernas con funciones similares incluyen frameworks como Qt, GTK o Electron, que ofrecen un conjunto más amplio de características y soporte.

Aún no hay comentarios.

Aún no hay comentarios.