From 425785e6fc15bba19cf97a84030bc046e71cbc35 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Sun, 25 Jun 2017 11:20:10 +1000 Subject: Added article for FLTK Ada binding --- project/complexity.yml | 1 + project/templates/fltkada.html | 68 ++++++++++++++++++++++++++++++++++++++++++ project/templates/index.html | 3 ++ 3 files changed, 72 insertions(+) create mode 100644 project/templates/fltkada.html (limited to 'project') diff --git a/project/complexity.yml b/project/complexity.yml index 07417a2..3060354 100644 --- a/project/complexity.yml +++ b/project/complexity.yml @@ -14,4 +14,5 @@ unexpanded_templates: - "thue2a.html" - "adapad.html" - "stvcount.html" + - "fltkada.html" diff --git a/project/templates/fltkada.html b/project/templates/fltkada.html new file mode 100644 index 0000000..584e4f8 --- /dev/null +++ b/project/templates/fltkada.html @@ -0,0 +1,68 @@ + +{% extends "base.html" %} + + + +{% block title %}FLTK Ada{% endblock %} + + + +{% block content %} + +

FLTK Ada Binding

+ +

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.

+ +

Git repo is here.

+ +{% endblock %} + + diff --git a/project/templates/index.html b/project/templates/index.html index 5c7af6a..fd97587 100644 --- a/project/templates/index.html +++ b/project/templates/index.html @@ -16,6 +16,9 @@ {% block content %}