FLTK
Fast Light Toolkit (FLTK), in informatica, è un toolkit multipiattaforma per la realizzazione di interfacce grafiche (GUI)[1], sviluppata inizialmente da Bill Spitzak e altri. Utilizzando i propri widget, sistemi di disegno ed eventi astratti dal sistema sottostante, consente di scrivere programmi che hanno lo stesso aspetto su tutti i sistemi operativi supportati. FLTK è un software libero e open source, concesso in licenza sotto GNU Lesser General Public License (LGPL) con una clausola aggiunta che consente il collegamento statico da applicazioni con licenze incompatibili. A differenza delle librerie dell'interfaccia utente come GTK, Qt e wxWidgets, FLTK utilizza un design più leggero e si limita alla funzionalità della GUI. Per questo motivo, la libreria è molto piccola (il programma FLTK di "Hello World" è di circa 100 KiB) e di solito è collegata staticamente. Evita inoltre macro complesse, preprocessori di codice separati e l'uso di alcune funzionalità avanzate di C++: modelli, eccezioni e informazioni sul tipo di runtime (RTTI) o, per FLTK 1.x, i namespace. Il tutto, in combinazione con le dimensioni modeste del pacchetto, rende relativamente facile l'apprendimento per i nuovi utenti.[2] Questi vantaggi comportano anche svantaggi corrispondenti. FLTK offre meno widget rispetto alla maggior parte dei toolkit GUI e, a causa dell'utilizzo di widget non nativi, non ha un aspetto nativo su nessuna piattaforma. Origini del nomeFLTK è stato originariamente progettato per essere compatibile con la libreria Forms sviluppata per macchine Silicon Graphics (SGI) (un derivato di questa libreria chiamato XForms è ancora abbastanza usato). In quella libreria, tutte le funzioni e le strutture iniziano con ArchitetturaFLTK è un toolkit widget orientato agli oggetti scritto nel linguaggio di programmazione C++. Mentre GTK è ottimizzato principalmente per X Window System e Wayland, FLTK funziona bene su altre piattaforme, tra cui Microsoft Windows (interfacciato con Windows API) e MacOS (interfacciato con Quartz). È stato implementato un back-end Wayland che sarà disponibile nella versione 1.4.0.[4] FLTK2 ha ottenuto il supporto sperimentale per l'utilizzo facoltativo della libreria grafica Cairo. Supporto dei linguaggi di programmazioneUna libreria scritta in un linguaggio di programmazione può essere utilizzata in un altro linguaggio se vengono sviluppati i relativi binding. FLTK ha una gamma di associazioni per vari linguaggi. FLTK è stato scritto e progettato principalmente nel linguaggio di programmazione C++. Tuttavia, esistono binding per altri linguaggi, ad esempio Lua[5], Perl[6], Python[7], Ruby[8], Rust[9] e Tcl[10]. Per FLTK 1.x, questo esempio di codice crea una finestra con un pulsante OK: # include <FL/Fl.H>
# include <FL/Fl_Window.H>
# include <FL/Fl_Button.H>
int main(int argc, char *argv[]) {
Fl_Window* w = new Fl_Window(330, 190);
new Fl_Button(110, 130, 100, 35, "Okay");
w->end();
w->show(argc, argv);
return Fl::run();
}
Progettazione della GUIFLTK include Fast Light User Interface Designer (FLUID), un designer grafico della GUI che genera file sorgente e di intestazione C++. VersioniQuesta cronologia delle versioni è un esempio della natura talvolta tumultuosa dello sviluppo open source.[11] 1.0.xQuesta è la versione stabile precedente, ora non mantenuta. 1.1.xQuesta è la versione stabile precedente, ora non mantenuta. Ramo di sviluppo 2.0Questo era un ramo di sviluppo, a lungo pensato come il step successivo nell'evoluzione di FLTK, con molte nuove funzionalità e uno stile di programmazione più pulito. Non ha mai raggiunto la stabilità e lo sviluppo è sostanzialmente cessato. 1.2.xQuesto è stato un tentativo di prendere alcune delle migliorie della versione 2.0 e di unirle nuovamente nel più popolare ramo 1.1. Non è più sviluppato. 1.3.xVersione stabile attuale.[11] Fornisce il supporto UTF-8. 1.4.xRamo di sviluppo attuale. Aggiunge più funzionalità alla versione 1.3.[11] Ramo di sviluppo 3.0Questo ramo è principalmente un modello concettuale per il lavoro futuro. Ora inattivo. Note
Voci correlateAltri progetti
Collegamenti esterni
|