GDK ( GIMP Drawing Kit) es una biblioteca que actúa como una capa de abstracción sobre las funciones de bajo nivel proporcionadas por los sistemas gráficos y de ventanas subyacentes. GDK se sitúa entre el servidor de visualización y la biblioteca GTK , gestionando la representación básica, como primitivas de dibujo, gráficos rasterizados (mapas de bits), cursores , fuentes , así como eventos de ventana y la funcionalidad de arrastrar y soltar .
Al igual que GTK Scene Graph Kit (GSK), GDK forma parte de GTK y está licenciado bajo la Licencia Pública General Reducida de GNU (LGPL).
Arquitectura de software

GTK se implementa sobre una capa de abstracción llamada GDK, lo que libera a GTK de las preocupaciones de bajo nivel, como la recopilación de datos de entrada, la función de arrastrar y soltar y la conversión de formato de píxeles. GDK es una capa intermedia que separa a GTK de los detalles del sistema de ventanas.
GDK es una parte importante de la portabilidad de GTK. Dado que GLib ya proporciona funcionalidades multiplataforma de bajo nivel , lo único necesario para que GTK se ejecute en otras plataformas es adaptar GDK a la capa gráfica del sistema operativo subyacente. Por lo tanto, las adaptaciones de GDK a la API de Windows y a Quartz son las que permiten que las aplicaciones GTK se ejecuten en Windows y macOS , respectivamente.
A partir de GTK+ 2.8, GDK admite Cairo , que se recomienda usar con GTK+ 3 en lugar de las funciones de dibujo de GDK. [ 2 ]
GDK es una capa intermedia que aísla GTK de los detalles del sistema de ventanas . GDK es una capa de abstracción ligera sobre Xlib . El sistema X Window incluye una biblioteca de bajo nivel llamada Xlib . Casi todas las funciones de GDK son una capa de abstracción muy ligera sobre una función correspondiente de Xlib; sin embargo, parte de la complejidad (y funcionalidad) de Xlib está oculta para simplificar la programación y facilitar la portabilidad de GDK a otros sistemas de ventanas, como Wayland o Microsoft Windows. La funcionalidad de Xlib proporcionada está dirigida principalmente a las aplicaciones; por ejemplo, muchas características utilizadas exclusivamente por los gestores de ventanas no están expuestas en GDK.
GDK es compatible con OpenGL (o OpenGL ES ) para un mejor control del flujo de procesamiento gráfico .
Reloj de marco Gdk
GdkFrameClock se agregó en GTK 3.8 [ 3 ]
Mientras que las aplicaciones GTK siguen estando controladas por el bucle principal (cf. bucle de eventos de Glib ), lo que significa que la aplicación está inactiva dentro de este bucle principal la mayor parte del tiempo esperando un evento y luego llama a la subrutina apropiada cuando ocurre uno, GdkFrameClock agrega un mecanismo adicional, que le dice a la aplicación cuándo actualizar y volver a dibujar una ventana. [ 4 ] La frecuencia de actualización se puede sincronizar con la frecuencia de actualización del monitor.
Kit de gráficos de escena GTK
En su historia, GDK contuvo y se vinculó con un par de Canvases diferentes .
- https://wiki.gnome.org/Attic/ProjectRidley/CanvasOverview
- https://wiki.gnome.org/Attic/ProjectRidley/CanvasOverview/Canvases
- https://wiki.gnome.org/Projects/GooCanvas
Los desarrolladores también estaban considerando nuevas direcciones para la biblioteca, incluyendo la eliminación de componentes API obsoletos y la adición de un sistema de grafo de escena (lienzo) integrado , similar a la biblioteca gráfica Clutter, integrando efectivamente GTK con OpenGL y Vulkan . [ 5 ] [ 6 ]
GTK+ Scene Graph Kit (GSK) se lanzó como parte de GTK+ 3.90 en marzo de 2017. Es la API de renderizado y grafo de escena para GTK. GSK no se ha integrado aún más con GDK (que también forma parte de GTK), sino que se mantiene en su propio directorio.
Sistemas de ventanas
GDK contiene back-ends para un par de sistemas de ventanas , concretamente para los protocolos X11 y Wayland , para Quartz y GDI , e incluso para el motor de protocolo de transferencia de hipertexto (HTTP) Broadway.
Con el lanzamiento de GNOME 3.16 en marzo de 2015, GDK obtuvo un backend experimental para el protocolo de servidor de visualización Mir . [ 9 ] El protocolo de servidor de visualización Mir es un producto de Canonical para su distribución Ubuntu de Linux, con la que pretenden competir con el protocolo de servidor de visualización Wayland; hasta ahora, solo está implementado en Ubuntu.
Actualmente, no existe ningún backend para KMS .
La variable de entorno GDK_BACKEND se puede utilizar para iniciar una aplicación y forzar a esta instancia a utilizar un sistema de ventanas determinado: GDK_BACKEND=wayland gnome-calculatorGDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-pixbuf
gdk-pixbuf es un conjunto de herramientas para la carga de imágenes y la manipulación de búferes de píxeles. La biblioteca proporciona funciones para cargar y guardar imágenes, escalado y composición rápidos de pixbufs, carga sencilla de animaciones (por ejemplo, GIF animados) y renderizado del búfer de imagen libart en una instancia de GdkDrawable.
gdk-pixbuf tiene una API bastante grande.
La estructura fundamental de la biblioteca gdk-pixbuf es GdkPixbuf, una estructura de datos privada y opaca que refleja muchos de los conceptos que admite ArtPixBuf. De hecho, la mayoría de los campos de datos privados de GdkPixbuf tienen los mismos nombres y tipos de datos que los correspondientes en ArtPixBuf. Esta similitud se remonta a los inicios de gdk-pixbuf, cuando era una capa de abstracción sobre libart . Desde entonces, se eliminó la dependencia de libart y gdk-pixbuf se integró en el código base de GTK+ 2.0. Por lo tanto, la existencia de gdk-pixbuf como biblioteca independiente se limita a la versión GNOME 1 .
Con el lanzamiento de GTK+ 2.22 el 23 de septiembre de 2010, gdk-pixbuf volvió a ser una biblioteca independiente, después de haber estado incluida en GTK+ desde la versión 2.0. Esto se hizo como preparación para la transición a GTK+ 3.
- https://git.gnome.org/browse/gdk-pixbuf/
La primera versión independiente se lanzó la 2.22 el 21 de septiembre de 2010, y su desarrollo comenzó con la versión 2.21.3 el 23 de junio de 2010.
Historia
GDK se desarrolló originalmente en el sistema X Window para el editor de gráficos rasterizados GIMP . [ 10 ]
Véase también
- Desorden
Referencias
- ↑ "n Espacio de nombres Gdk – 4.0; El kit de herramientas GTK Versión 4.11.5" . Febrero de 2023. Consultado el 28 de julio de 2023 .
- ↑ Migración de GTK+ 2.x a GTK+ 3: utilice cairo para dibujar
- ↑ "GdkFrameClock" .
- ↑ Larsson, Alexander (2013-11-04). "El modelo de dibujo Gtk moderno" .
- ↑ Blog de Alberto Ruiz
- ↑ Propuesta de grafo de escena de Havoc Pennington
- ↑ "El kit de gráficos de escena GTK+" . 29/07/2014.
- ↑ "Grafeno" . 2 de mayo de 2014.
- ↑ "Añadir un backend experimental para mir" .
- ↑ GIMP - Una breve (y antigua) historia de GIMP
Enlaces externos
- Código GDK de la versión GTK+ 3.19.0
- El modelo de dibujo GTK moderno – Alexander Larsson, 4 de noviembre de 2013
- Descripción general de GTK y sus bibliotecas. Archivado el 12 de marzo de 2019 en Wayback Machine - El proyecto GTK.
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg
- Bibliotecas gráficas
- GTK