OtherTuningSoftware/WidgetSet (2005-03-07 00:07:28)

Developer page for selecting a widget-set for OtherTuningSoftware/NintendoGameBoy

We want to develop tuning software, not widget-set (or windowing system).

So we have to find a lightweight API and implementation that abstracts the graphical and user-input HW. We have to write the tuningsoftware against this API.

API requirements

API wishes

When we choose to work on the GBA we essentially become OS and a widget-set developers to some degree (since the GBA has no OS or widget-set). But we try hard to keep it to a minimum. Minor contribution (of improvements) to the chosen widget-set is OK, of course.

Possible options for widget-sets follow. (google: design GUI control embedded lightweight)

Don't miss the [review of options] - about 6..8 toolkits.

Maybe only first 3 is competing.


GGI


SDL - Simple DirectMedia Layer

GGI and SDL seem to be the most widely used API-s on linux. Lightweight. I didn't see usage inside win32 window, but should be possible the same way as in x11 window.


Microwindows

For now (without trying prototype for either one), my vote is to check microwindows first.

We still have to choose between 2 APIs:

Unfortunately GPL (not LGPL).

Footprint: on 16 bit systems, the entire system, including screen, mouse and keyboard drivers runs in less than 64k. On 32-bit systems, support includes proportional fonts and applications are typically less than 100k. (note: my guess is that's flash; and RAM usage depends heavily on app)

It seems to provide more functionality than GGI or SDL. (note: I read that SDL is being ported to microwindows? does this makes sense?)


Minigui

Unfortunately it's GPL, not LGPL. Apparently closed development, but sometimes they release the old version as GPL. Registration required to download old source.

Microwindows seems to be better.


DirectFb

I'm not even sure that this is suitable.

OpenGL

Although this would provide exactly the desired functionality, memory footprint probably rules it out.


Dropped


GTK

GTK/GDK/Glib memory footprint seems to rule it out for Nintendo. X11 is out of the question.

It's not worth to consider porting GTK/GDK/Glib/GLADE to 256kbyte RAM and framebuffer. The question is if it's already done.

GTK+/fb - from [article]: The stripped, shared GtkFB libraries occupy about 2 MB of disk space. Additionally FreeType is 202KB, libjpeg is 138KB, libpng 126KB, libz (needed by libpng) 58KB. The flash footprint would be acceptable, but I bet that RAM usage would be beyond 256kybte.

GTK+/Microwindows.

With static linking we can be sure only the required code is included. Still much redundant stuff left: internal code that handles overlapping windows, themes, true-type fonts (that we don't strictly need). Pixmap handling (via XPM is inefficient).

Even with GTK, the reuse of MegaTunix code seems problematic.

[FLTK] seems similar to GTK, maybe smaller, but not as widespread.