GDK ( GIMP Drawing Kit) es una biblioteca que actúa como un contenedor de las funciones de bajo nivel proporcionadas por los sistemas de gráficos y ventanas subyacentes. GDK se encuentra entre el servidor de visualización y la biblioteca GTK , manejando la representación básica como primitivas de dibujo, gráficos rasterizados (mapas de bits), cursores , fuentes , así como eventos de ventana y funcionalidad de arrastrar y soltar .
Autor (es) original (es) | Autores de GIMP |
---|---|
Desarrollador (es) | El proyecto GNOME |
Repositorio | |
Escrito en | C |
Sistema operativo | Linux , macOS , Microsoft Windows |
Plataforma | X11 , Wayland , Quartz y GDI |
Tipo | Biblioteca de software |
Licencia | Licencia pública general reducida de GNU (LGPL) |
Sitio web | desarrollador |
Al igual que GTK Scene Graph Kit (GSK), GDK es parte de GTK y tiene licencia de GNU Lesser General Public License (LGPL).
Arquitectura de software
GTK se implementa sobre una capa de abstracción llamada GDK, liberando a GTK de preocupaciones de bajo nivel como la recopilación de entradas, 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 la funcionalidad multiplataforma de bajo nivel , todo lo que se necesita para que GTK se ejecute en otras plataformas es portar GDK a la capa de gráficos del sistema operativo subyacente . Por lo tanto, los puertos GDK a la API de Windows y Quartz son los que permiten que las aplicaciones GTK se ejecuten en Windows y macOS , respectivamente.
Comenzando con GTK + 2.8, GDK es compatible con Cairo, que debe usarse con GTK + 3 en lugar de las funciones de dibujo de GDK. [1]
GDK es una capa intermedia que aísla a GTK de los detalles del sistema de ventanas . GDK es un envoltorio delgado alrededor de Xlib . El sistema X Window viene con una biblioteca de bajo nivel llamada Xlib . Casi todas las funciones en GDK son una envoltura muy delgada alrededor de una función Xlib correspondiente; pero parte de la complejidad (y funcionalidad) de Xlib está oculta, para simplificar la programación y hacer que GDK sea más fácil de migrar a otros sistemas de ventanas, como Wayland o Microsoft Windows. La funcionalidad oculta de Xlib rara vez será de interés para los programadores de aplicaciones; por ejemplo, muchas funciones utilizadas únicamente por los administradores de ventanas no se exponen en GDK.
GDK le permite hacer cosas de bajo nivel, como por ejemplo " blit este mapa de píxeles de la pantalla".
GDK proporciona una capa que es mucho más portátil que, digamos, el protocolo X, sin sacrificar la accesibilidad de bajo nivel que proporcionan los sistemas como X. El verdadero poder de esta abstracción es que si elige usarlo en lugar de decir X, su software se procesará automáticamente en el Framebuffer de Linux y Windows.
Tener soporte para OpenGL (o OpenGL ES ) en GDK, facilita un control ligeramente mejor de la canalización de gráficos ; OpenGL es muy adecuado para componer datos texturizados pero totalmente inadecuado para dibujar.
GdkFrameClock
GdkFrameClock se agregó en GTK 3.8 [2]
Si bien las aplicaciones GTK permanecen controladas por el bucle principal (cf. bucle de eventos Glib ), lo que significa que la aplicación está inactiva dentro de este bucle principal la mayor parte del tiempo y solo espera a que suceda algo y luego llama a la subrutina apropiada cuando lo hace, GdkFrameClock agrega un mecanismo adicional, que le da un "pulso" a la aplicación. Le dice a la aplicación cuándo actualizar y volver a pintar una ventana. [3] La frecuencia de pulsació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 Lienzos 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, incluida la eliminación de componentes API obsoletos y la adición de un sistema integrado de gráficos de escena (lienzo) , similar a la biblioteca de gráficos Clutter , integrando GTK de manera efectiva con OpenGL y Vulkan . [4] [5]
- Kit de gráficos de escena GTK (GSK) [6] [7]
GTK + Scene Graph Kit (GSK) se lanzó como parte de GTK + 3.90 en marzo de 2017. Es la API de renderización y gráficos de escena para GTK. GSK no se ha integrado más con GDK (que también es parte de GTK) pero se mantiene en su propio directorio.
Sistemas de ventanas
GDK contiene back-end para un par de sistemas de ventanas , a saber, los protocolos X11 y Wayland , Quartz y GDI , e incluso el motor Broadway del Protocolo de transferencia de hipertexto (HTTP).
Con el lanzamiento de GNOME 3.16 en marzo de 2015, GDK obtuvo un back-end experimental para el protocolo de servidor de pantalla Mir . [8] El protocolo de servidor de visualización Mir es un producto de Canonical para su distribución Ubuntu de Linux, que pretenden competir con el protocolo de servidor de visualización de Wayland; hasta ahora, está implementado solo en Ubuntu.
En la actualidad, no existe un back-end para KMS .
Para iniciar una aplicación y obligar a esta instancia a utilizar un determinado sistema de ventanas, especifique la variable GDK_BACKEND :GDK_BACKEND=wayland gnome-calculator
GDK_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úfer de píxeles. La biblioteca proporciona funciones de carga y almacenamiento de imágenes, escalado rápido y composición de pixbufs, carga de animación simple (es decir, GIF animados) y renderización del búfer de imagen de la biblioteca 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 mismos 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 días anteriores cuando gdk-pixbuf era un envoltorio de libart . Desde ese momento, la dependencia de libart se eliminó y gdk-pixbuf se fusionó en la base de código GTK + 2.0. Como tal, los días de gdk-pixbuf como biblioteca independiente están limitados a la versión GNOME 1.x.
Con el lanzamiento de GTK + 2.22 el 2010-09-23, gdk-pixbuf se ha convertido de nuevo en una biblioteca independiente, después de haber sido enviado como parte de GTK + desde gtk + 2.0. Esto se hizo en preparación para la transición a GTK + 3.
- https://git.gnome.org/browse/gdk-pixbuf/
La primera versión independiente fue la 2.22 el 21 de septiembre de 2010, su desarrollo comenzó con la 2.21.3 el 23 de junio de 2010 .
La última versión de gdk-pixbuf es gdk-pixbuf 2.36.11 de 2017-Oct-02. El desarrollo de 3.36 comenzó con 3.35.1 el 2016-04-26.
Historia
GDK se desarrolló originalmente en el sistema X Window para el editor de gráficos de trama GIMP . [9]
Ver también
- Desorden
Referencias
- ^ Migración de GTK + 2.xa GTK + 3 - Use cairo para dibujar
- ^ "GdkFrameClock" .
- ^ Larsson, Alexander (4 de noviembre de 2013). "El modelo de dibujo moderno de Gtk" .
- ^ Blog de Alberto Ruiz
- ^ Propuesta de escenario gráfico de Havoc Pennington
- ^ "El kit de gráficos de escena GTK +" . 2014-07-29.
- ^ "Grafeno" . 2014-05-02.
- ^ "agregar 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 moderno de Gtk - Alexander Larsson, 04/11/2013
- Descripción general de GTK y sus bibliotecas : el proyecto GTK
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg