Hace algunos dias fue anunciada la liberación de la nueva versión de GTK 4.0, versión que estuvo en desarrollo durante varios meses y que se convierte en la nueva rama estable del proyecto. Esta nueva versión presenta características muy interesantes, de las cuales podemos destacar las mejoras en la reproducción de medios.
GTK es un conjunto de bibliotecas de software para crear interfaces gráficas, originalmente, GTK fue desarrollado para las necesidades del software de procesamiento de imágenes GIMP. Actualmente, su alcance ya no se limita solo a GIMP, sino que se utiliza en otros proyectos. Por ejemplo, GTK está en el corazón del entorno del modelo de objetos de red GNU (GNOME), pero también se puede utilizar para escribir aplicaciones para otros entornos Linux, así como aplicaciones destinadas a Microsoft Windows y Apple macOS.
“GTK 4.0 es el resultado del arduo trabajo de un pequeño equipo de desarrolladores dedicados. Tendremos un artículo separado para repasar las estadísticas, pero el resumen rápido es que desde la versión 3.89.1 de noviembre de 2016, hemos agregado más de 18,000 confirmaciones y realizado más de 20 versiones de desarrollo.
“¡Felicitaciones y un gran agradecimiento a todos los que participaron en este esfuerzo, y en particular a Benjamin, Emmanuele, Timm, Carlos, Jonas y Christian! «
Sobre la nueva versión de GTK 4.0
GTK 4.0 presenta nuevos widgets y cambios en los elementos existentes, compatibilidad incorporada para la reproducción de medios, mejoras en la aceleración de la GPU, como el trabajo en su nuevo motor de renderizado Vulkan, y una mejor compatibilidad con macOS. También podemos notar mejoras en la transferencia de datos, sombreadores rediseñados, desplazamiento acelerado por GPU, mejoras en la representación de OpenGL más allá del trabajo de Vulkan, restauración del trabajo en HTMl5 Broadway, mejor soporte de Windows etc.
Veamos algunos puntos un poco más en profundidad.
La gestión de medios en GT4
- GTK 4 permitirá que las aplicaciones GTK muestren animaciones más fácilmente; ya sea animación programática, archivo webm o transmisión en vivo.
- GTK 4 trae una nueva API llamada GdkPaintable que se inspiró en el esfuerzo de CSS Houdini. Es muy flexible (cualquier cosa que puedas dibujar puede ser un GdkPaintable). El contenido se puede cambiar de tamaño (como svg) o cambiar con el tiempo (como webm).
- Si tiene necesidades más especializadas, cualquier cosa que se pueda capturar en una GtkSnapshot se puede convertir en un dibujo congtk_snapshot_to_paintable ( ). Si está creando un widget personalizado que quiere dibujar un objeto para pintar, es muy simple. Solo llamagdk_paintable_snapshot ( ).
- Puede tener control multimedia utilizando el widget GtkVideo.
Transferencia de datos en GTK4
Los métodos tradicionales para transferir datos iniciados por el usuario entre aplicaciones de escritorio son el portapapeles o arrastrar y soltar. GTK+ admite estos métodos pero, hasta GTK3, las API que tenía el kit de herramientas para este tipo de transferencia de datos eran copias finamente disfrazadas de las correspondientes API X11. Esto no es demasiado sorprendente, ya que toda la API de GDK se ha modelado en X11. Desafortunadamente, la implementación incluye resultados como transferencias incrementales y conversiones de formato de cadena.
Para GTK4, el equipo decidió abandonar este enfoque, optando por una modernización. Este es el concepto del nuevo enfoque:
“Si los datos que su aplicación desea enviar no son una cadena, probablemente sea un objeto, como GFile, GdkTexture o GdkRGBA. Es posible que la aplicación del lado receptor no utilice GTK o GLib y, por lo tanto, no conozca estos tipos. E incluso si lo hace, no hay forma de pasar objetos de un proceso a otro en una sola pieza.
“Dentro de ella, la transferencia de datos funciona enviando un descriptor de archivo desde la aplicación de origen y la aplicación de destino leyendo un flujo de bytes. Los protocolos para el portapapeles y DND usan tipos de mime como text / uri-list, image / png o application / x-color para identificar el formato del flujo de bytes.
«Enviar un objeto implica negociar un formato de datos compatible con ambos lados, serializar el objeto en el lado de origen en un flujo de bytes de ese formato, transferir los datos y deserialización del objeto en el lado de destino. «
Además, GTK4 viene con nuevas API.
“La primera API que presentamos para manejar estos tipos es el objeto GdkContentFormats. Puede contener una lista de formatos, que pueden ser GTypes o mime. Usamos objetos GdkContentFormats para describir los formatos en los que una aplicación puede ofrecer datos, así como los formatos en los que una aplicación puede recibir datos ”.
Fuente: gtk | desdelinux