© by Zack Smith All rights reserved.
Over the years I've worked on creating an open-source widget library.
The earliest vestiges of the TouchWidgets code base probably began in my C and Xlib-based widget library that
I wrote around 2002, and refined in 2006.
I intended it to be fast enough to run on the slow (200-600 MHz) but wonderful IBM Thinkpad laptops
that I owned at the time, which always ran GNU/Linux.
The code base's next incarnation was suited to a Lenovo laptop,
which ran Windows XP.
For this I converted the code to C++ and adapted it to use GDI calls.
The major application I was writing at the time was a video editor that used AVILIB.
When I gave up on Windows,
the code remained C++ but I switched it back to Xlib-based again so that I could run it on GNU/Linux.
When I switched to the Macintosh around 2008, after a
14 year hiatus from that product line,
it was basically the same code, using XQuartz as X-Windows system,
but before long I realized I preferred Objective C, so I translated it from C++ to Objective-C.
Eventually I had to admit that I'd never return to sub-600 MHz computers and that virtually
all computers now had 3D hardware and virtually all operating systems now support OpenGL in some form,
so there was no longer a reason
to not refactor the code to sit on top of OpenGL, which had ascended,
instead of the passé X-Windows or GDI.
A clear example that this was possible was/is the GLUI library,
which I had used for the Maxilla project.
It is a somewhat clunky widget set that sits on top of OpenGL.
So I developed the new variant of TouchWidgets that sits on top of OpenGL (not ES),
and I abandoned the Xlib code.
But Objective C was a bad language choice. It really only runs well on Apple products;
the GNU Objective-C compiler that comes with Linux is an unfinished, buggy, abandoned effort.
So recently I have retranslated the most recent code base
from Objective C back to C++.
I am also adding OpenGL ES 1.1 support, which is supported differently
on each platform, but I have working code for iOS.