{% extends "base.html" %} {% block title %}FLTK Ada{% endblock %} {% block content %}

FLTK Ada Binding

Git repository: Link
Estimated status: 40-45% complete

25/6/2017

FLTK, or by its full name the Fast Light Toolkit, is a graphical widget toolkit noteworthy for being so lightweight that it is commonly statically linked. Projects that make use of it include the Dillo web browser, the FLWM X window manager, and the Equinox Desktop Environment. There are bindings for it in several languages, including Python, Perl and Ruby, but not Ada. Until now!

This is a spinoff from Adapad, and so despite not yet being complete it can be at least guaranteed to be enough to write a text editor. It's a thick, loosely coupled binding, accomplished by first exporting the interface to C, then importing that to Ada. Attempted usage of the internal C interface as a binding on its own is not supported.

A typical FLTK Hello World program in Ada:

with FLTK.Widgets.Groups.Windows, FLTK.Widgets.Boxes; function Hello_World return Integer is My_Win : FLTK.Widgets.Groups.Windows.Window := FLTK.Widgets.Groups.Windows.Create (100, 100, 200, 200, "Untitled"); My_Box : FLTK.Widgets.Boxes.Box := FLTK.Widgets.Boxes.Create (50, 50, 100, 100, "Hello, World!"); begin My_Win.Add (My_Box); My_Win.Show; return FLTK.Run; end Hello_World;

Aside from reworking the types to better fit the strongly typed philosophy of Ada, the entire library has been structured to avoid explicit heap usage. As you can see from the above example, the intended use is to declare FLTK objects on the stack. Allocation and deallocation of the C++ internals is handled automatically.

A few other minor changes were involved, such as requiring widgets to be explicitly added to a group rather than implicitly being added to the last group not yet ended. At the moment the package specifications should provide sufficient information to allow programmers to work with the library.

{% endblock %}