GDK - GDK
|
Architettura software semplificata di GTK
| |
| Autori originali | Autori di GIMP |
|---|---|
| Sviluppatore/i | Il progetto GNOME |
| Repository |
|
| Scritto in | C |
| Sistema operativo | Linux , macOS , Microsoft Windows |
| piattaforma | X11 , Wayland , Quartz e GDI |
| genere | Libreria software |
| Licenza | GNU Lesser General Public License (LGPL) |
| Sito web | sviluppatore |
GDK ( GIMP Drawing Kit) è una libreria che funge da wrapper per le funzioni di basso livello fornite dai sistemi di finestratura e grafica sottostanti. GDK si trova tra il server di visualizzazione e la libreria GTK , gestendo il rendering di base come le primitive di disegno, la grafica raster (bitmap), i cursori , i caratteri , nonché gli eventi della finestra e la funzionalità di trascinamento della selezione .
Come GTK Scene Graph Kit (GSK), GDK fa parte di GTK ed è concesso in licenza sotto la GNU Lesser General Public License (LGPL).
Architettura software
GTK è implementato su un livello di astrazione chiamato GDK, liberando GTK da problemi di basso livello come la raccolta di input, il trascinamento della selezione e la conversione del formato pixel. GDK è uno strato intermedio che separa GTK dai dettagli del sistema di finestre.
GDK è una parte importante della portabilità di GTK. Poiché la funzionalità multipiattaforma di basso livello è già fornita da GLib , tutto ciò che è necessario per far funzionare GTK su altre piattaforme è portare GDK al livello grafico del sistema operativo sottostante . Quindi, le porte GDK per l' API di Windows e Quartz sono ciò che consente alle applicazioni GTK di funzionare rispettivamente su Windows e macOS .
A partire da GTK+ 2.8, GDK supporta Cairo che dovrebbe essere usato con GTK+ 3 invece delle funzioni di disegno di GDK.
GDK è un livello intermedio che isola GTK dai dettagli del sistema di finestre . GDK è un sottile involucro attorno a Xlib . Il sistema X Window viene fornito con una libreria di basso livello chiamata Xlib . Quasi ogni funzione in GDK è un involucro molto sottile attorno a una funzione Xlib corrispondente; ma parte della complessità (e funzionalità) di Xlib è nascosta, per semplificare la programmazione e per rendere più facile il porting di GDK su altri sistemi di finestre, come Wayland o Microsoft Windows. La funzionalità Xlib nascosta sarà raramente di interesse per i programmatori di applicazioni; ad esempio, molte funzionalità utilizzate esclusivamente dai gestori di finestre non sono esposte in GDK.
GDK ti consente di fare cose di basso livello, come ad esempio " blit this pixmap sullo schermo".
GDK fornisce un livello molto più portabile del protocollo X, senza sacrificare l'accessibilità di basso livello fornita da sistemi come X. Il vero potere di questa astrazione è che se scegli di usarla invece di dire X, il tuo software eseguirà automaticamente il rendering su Linux Framebuffer e Windows.
Avere il supporto OpenGL (o OpenGL ES ) in GDK, facilita un controllo leggermente migliore della pipeline grafica ; OpenGL è adatto per la composizione di dati strutturati ma totalmente inadatto per il disegno.
GdkFrameClock
GdkFrameClock è stato aggiunto in GTK 3.8
Mentre le applicazioni GTK rimangono guidate dal mainloop (cfr. Glib event loop ), il che significa che l'applicazione è inattiva all'interno di questo ciclo principale per la maggior parte del tempo e aspetta solo che accada qualcosa e quindi chiama la subroutine appropriata quando lo fa, GdkFrameClock aggiunge un meccanismo aggiuntivo, che dà un "impulso" all'applicazione. Indica all'applicazione quando aggiornare e ridisegnare una finestra. La frequenza dei battiti può essere sincronizzata con la frequenza di aggiornamento del monitor.
Kit grafico scena GTK
Nella sua storia GDK ha contenuto e legato ad un paio di Tele diverse .
Gli sviluppatori stavano anche valutando nuove direzioni per la libreria, inclusa la rimozione dei componenti API deprecati e l'aggiunta di un sistema integrato di scene graph (canvas) , simile alla libreria grafica Clutter , integrando efficacemente GTK con OpenGL e Vulkan .
- Kit grafico scena GTK (GSK)
GTK+ Scene Graph Kit (GSK) è stato rilasciato come parte di GTK+ 3.90 a marzo 2017. È il grafico della scena e l'API di rendering per GTK. GSK non è stato ulteriormente integrato con GDK (che è anche parte di GTK) ma è conservato nella propria directory.
Sistemi di finestre
GDK contiene back-end per un paio di sistemi a finestre , in particolare per i protocolli X11 e Wayland , per Quartz e GDI e persino per il motore HTTP ( Hypertext Transfer Protocol ) Broadway.
Con il rilascio di GNOME 3.16 nel marzo 2015, GDK ha ottenuto un back-end sperimentale per il protocollo del server di visualizzazione Mir . Il protocollo del server di visualizzazione Mir è un prodotto di Canonical per la loro distribuzione Ubuntu di Linux, che intendono competere con il protocollo del server di visualizzazione Wayland; finora, è implementato solo in Ubuntu.
Al momento, non esiste un back-end per KMS .
Per avviare un'applicazione e forzare questa istanza a utilizzare un determinato sistema di finestre, si specifica la variabile GDK_BACKEND :
GDK_BACKEND=wayland gnome-calculator
GDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-pixbuf
gdk-pixbuf è un toolkit per il caricamento delle immagini e la manipolazione del pixel buffer. La libreria fornisce funzionalità di caricamento e salvataggio delle immagini, ridimensionamento rapido e compositing di pixbuf, caricamento di animazioni semplici (ad es. GIF animate) e rendering del buffer dell'immagine libart su un'istanza di GdkDrawable.
gdk-pixbuf ha un'API abbastanza grande.
La struttura fondamentale nella libreria gdk-pixbuf è GdkPixbuf, una struttura dati privata e opaca che rispecchia molti degli stessi concetti supportati da ArtPixBuf. Infatti, la maggior parte dei campi di dati privati di GdkPixbuf hanno gli stessi nomi e tipi di dati di quelli corrispondenti in ArtPixBuf. Questa somiglianza risale ai primi giorni in cui gdk-pixbuf era un wrapper per libart . Da quel momento, la dipendenza da libart è stata eliminata e gdk-pixbuf è stato unito alla base di codice GTK+ 2.0. Pertanto, i giorni di gdk-pixbuf come libreria autonoma sono limitati alla versione GNOME 1.x.
Con il rilascio di GTK+ 2.22 il 23/09/2010, gdk-pixbuf è stato trasformato di nuovo in una libreria autonoma, dopo essere stato distribuito come parte di GTK+ a partire da gtk+ 2.0. Questo è stato fatto in preparazione per il passaggio a GTK+ 3.
La prima versione autonoma è stata la 2.22 del 21 settembre 2010, il suo sviluppo è iniziato con la 2.21.3 del 23 giugno 2010.
L'ultima versione di gdk-pixbuf è gdk-pixbuf 2.36.11 dal 2017-ottobre-02. Lo sviluppo di 3.36 è iniziato con 3.35.1 il 26/04/2016.
Storia
GDK è stato originariamente sviluppato su X Window System per l' editor di grafica raster GIMP .
Guarda anche
Riferimenti
link esterno
- Codice GDK dalla versione GTK+ 3.19.0
- Il moderno modello di disegno Gtk – Alexander Larsson, 2013/11/04
- Panoramica di GTK e delle sue librerie - Il progetto GTK
- https://git.gnome.org/browse/gtk-web/plain/images/architecture.svg