diff options
Diffstat (limited to 'project/templates/fltkada.html')
-rw-r--r-- | project/templates/fltkada.html | 68 |
1 files changed, 68 insertions, 0 deletions
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 %} + +<h4>FLTK Ada Binding</h4> + +<p>Estimated status: 40-45% complete</p> + + +<h5>25/6/2017</h5> + +<p>FLTK, or by its full name the <a href="http://www.fltk.org/" target="_blank">Fast Light Toolkit</a>, +is a graphical widget toolkit noteworthy for being so lightweight that it is commonly statically linked. +Projects that make use of it include the <a href="http://www.dillo.org/" target="_blank">Dillo</a> web +browser, the <a href="http://flwm.sourceforge.net/" target="_blank">FLWM</a> X window manager, and the +<a href="http://www.equinox-project.org/" target="_blank">Equinox Desktop Environment</a>. There are +bindings for it in several languages, including Python, Perl and Ruby, but not Ada. Until now!</p> + +<p>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.</p> + +<p>A typical FLTK Hello World program in Ada: +<code> + 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; +</code> +</p> + +<p>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.</p> + +<p>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.</p> + +<p>Git repo is <a href="/cgit/cgit.cgi/fltkada.git/" target="_blank">here</a>.</p> + +{% endblock %} + + |