FLTK

FLTK
software
Logo
Logo
Schermata di esempio
Schermata di esempio
GenereLibreria grafica (non in lista)
Data prima versione1998
Ultima versione1.3.9 (9 novembre 2023)
Sistema operativoLinux
Microsoft Windows
macOS
LinguaggioC++
LicenzaGNU Lesser General Public License
(licenza libera)
LinguaMultilingue

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 nome

[modifica | modifica wikitesto]

FLTK è stato originariamente progettato per essere compatibile con la libreria Forms svilippata 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 fl_ . Questa denominazione è stata estesa a tutti i nuovi metodi e widget nella libreria C++ e questo prefisso FL è stato utilizzato come nome della libreria. Dopo che FL è stato rilasciato come open source, si è scoperto che cercare "FL" su Internet era un problema, perché è anche l'abbreviazione dello stato della Florida. Dopo molte discussioni e la ricerca di un nuovo nome per il toolkit, che era già utilizzato da diverse persone, Bill Spitzak ha inventato Fast Light Tool Kit (FLTK).[3]

FLTK è 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 programmazione

[modifica | modifica wikitesto]

Una 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 GUI

[modifica | modifica wikitesto]

FLTK include Fast Light User Interface Designer (FLUID), un designer grafico della GUI che genera file sorgente e di intestazione C++.

Questa cronologia delle versioni è un esempio della natura talvolta tumultuosa dello sviluppo open source.[11]

Questa è la versione stabile precedente, ora non mantenuta.

Questa è la versione stabile precedente, ora non mantenuta.

Ramo di sviluppo 2.0

[modifica | modifica wikitesto]

Questo 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.

Questo è 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.

Versione stabile attuale.[11] Fornisce il supporto UTF-8.

Ramo di sviluppo attuale. Aggiunge più funzionalità alla versione 1.3.[11]

Ramo di sviluppo 3.0

[modifica | modifica wikitesto]

Questo ramo è principalmente un modello concettuale per il lavoro futuro. Ora inattivo.

  1. ^ (EN) Fast Light Toolkit, su www.fltk.org. URL consultato il 30 gennaio 2020.
  2. ^ (EN) Fast Light ToolKit (FLTK), su cpplibs.com (archiviato dall'url originale il 18 maggio 2015).
  3. ^ (EN) Article #363: What does "FLTK" mean?, su www.fltk.org. URL consultato il 7 maggio 2024.
  4. ^ (EN) STR #3371, su www.fltk.org, 2 aprile 2017. URL consultato il 7 maggio 2024.
  5. ^ (EN) murgaLua, su murga-projects.com (archiviato dall'url originale il 22 marzo 2016).
  6. ^ (EN) FLTK.pm, su www.fltk.org. URL consultato il 7 maggio 2024.
  7. ^ (EN) pyFLTK Home Page, su pyfltk.sourceforge.io. URL consultato il 7 maggio 2024.
  8. ^ (EN) Ruby/FLTK, su ruby-fltk.sourceforge.net. URL consultato il 7 maggio 2024.
  9. ^ (EN) fltk-rs/fltk-rs, fltk-rs, 6 maggio 2024. URL consultato il 7 maggio 2024.
  10. ^ (EN) Tcl/Fltk dynamic extension for Tcl, su SourceForge, 3 aprile 2013. URL consultato il 7 maggio 2024.
  11. ^ a b c (EN) Article #825: What are the Versions of FLTK?, su fltk.org. URL consultato il 7 maggio 2024.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero