diff options
-rw-r--r-- | progress.txt | 8 | ||||
-rw-r--r-- | readme.md | 87 | ||||
-rw-r--r-- | readme.txt | 61 |
3 files changed, 87 insertions, 69 deletions
diff --git a/progress.txt b/progress.txt index 9130e3c..ec58583 100644 --- a/progress.txt +++ b/progress.txt @@ -1,15 +1,12 @@ - Approximate Progress List - Overall estimate: 85+% - Done: FLTK @@ -130,14 +127,12 @@ FLTK.Widgets.Valuators.Value_Outputs - Partially Done: Fl_Graphics_Driver / FLTK.Devices.Graphics - To-Do: Fl_GDI_Graphics_Driver @@ -168,7 +163,6 @@ Fl_PostScript_File_Device (internal Fl_PostScript_Graphics_Driver) - Never: (C++ binary plugins) (I have no idea how to bind these) @@ -189,7 +183,6 @@ Fl_System_Printer - Bugs to fix: Fl_Wizard draw() method private/protected @@ -209,7 +202,6 @@ possibly this hasn't been noticed because it's only visible to doxygen - Incomplete APIs: FLTK diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..ce1da36 --- /dev/null +++ b/readme.md @@ -0,0 +1,87 @@ + +## FLTKAda + +This is a thick, high level binding for the [FLTK](https://www.fltk.org/) +graphical widget library to the Ada programming language using only the +standard C FFI. + +Types have been marshalled. Class hierarchies have been mapped to equivalent +packages and tagged records. Controlled types have been used to make allocation +and deallocation automatic for objects. Overrideable methods called from the +FLTK event loop have been thunked. Iterators have been implemented. And a few +convenience subprograms have been provided. + +Some of the FLTK test and example programs have also been ported. + +For documentation on what C++ function, method, or class corresponds to what +Ada function, procedure, or package, see `index.html` in the `doc` +subdirectory. + + + +#### Dependencies + +Build time: +<ul> + <li>FLTK</li> + <li>g++</li> + <li>GNAT</li> + <li>GPRbuild</li> +</ul> + +Run time: +<ul> + <li>FLTK</li> +</ul> + +It may be possible to use alternate compilation tooling but this has not been +tested. If attempted, some manual modification of project files may be +necessary. + +Note that at this time only FLTK 1.3 is supported. + + + +#### Building and Installation + +This repository is written to use the GNAT Project Manager build tools. To +build, use the following command + +`gprbuild fltkada.gpr` + +There is a single build switch of `-Xbuild` which can have a value of `release` +(the default) or `debug`. The other project files in the main directory can be +used with similar build commands to build tests, examples, and tools. + +To install the binding, use + +`gprinstall -p -m fltkada.gpr` + +For further information on the build tools, consult the +[GPRbuild docs](https://docs.adacore.com/gprbuild-docs/html/gprbuild_ug.html). + + + +#### Technical Notes + +As part of its normal operation, FLTK calls a Widget's Draw and Handle methods +from its main loop to deal with draw and input events. Since it's another part +of the program that is invoking them, even if it's a part the programmer has no +direct control over, this binding is set up so that if you override Draw or +Handle the behaviour will change. + +On the other hand, something like the Push method in tabbed groups is usually +invoked from within that same tabbed group widget's Handle method. Therefore, +keeping consistency with Ada semantics, overriding the Push method will NOT +change the behaviour of the corresponding Handle method. You must also override +Handle. + + + +#### Credits and Licensing + +Written by Jedidiah Barber. + +Released into the public domain. For details see `unlicense.txt`. + + diff --git a/readme.txt b/readme.txt deleted file mode 100644 index 67d4b40..0000000 --- a/readme.txt +++ /dev/null @@ -1,61 +0,0 @@ - - -FLTK Binding for the Ada Programming Language -============================================= - - - - -This is a thick binding. In particular, dynamic allocation of FLTK objects is -not necessary as in Ada they can be placed on the stack and automatically cleaned -up. Ada 2012 iterators have also been made available for the Fl_Group and Fl_Menu -bindings. - -For documentation on what C++ method or class corresponds to what Ada function, -procedure, or package, see the /doc/index.html file. - - - - -Dependencies: - - GNAT - FLTK - - - - -How to build/install: - -This repository is written to use the GNAT Project Manager build tools. To build -this FLTK-Ada binding for testing purposes, use the following command - - gprbuild fltkada.gpr - -And to install the binding, use - - gprinstall -p -m fltkada.gpr - - - - -For further information on the build tools, consult - - https://docs.adacore.com/gprbuild-docs/html/gprbuild_ug.html - - - - -A technical note on callbacks and overriding: - -As part of its normal operation, FLTK calls a Widget's Draw and Handle methods from its -main loop to deal with draw and input events. Since it's another part of the program -that is invoking them, even if it's a part the programmer has no direct control over, -this binding is set up so that if you override Draw or Handle, the behaviour will change. - -On the other hand, something like the Push method in tabbed groups is usually invoked -from within that same tabbed group widget's Handle method. Therefore, keeping consistency -with Ada semantics, overriding the Push method will NOT change the behaviour of the -corresponding Handle method. You must also override Handle. - - |