If you need a lightweight cross-platform GUI for real-time embedded devices and an embedded graphics middleware, you may want to check out MiniGUI. It runs on Linux/uClinux, eCos, VxWorks, pSOS, ThreadX, Nucleus, uC/OS-II, Win32. Hardware platforms tested with it include Intel x86, ARM (ARM7, ARM9, StrongARM, xScale), PowerPC, MIPS, and M68K (DragonBall, ColdFire). You can run it with support for threads, processes or compile it to run standalone. It has support for built-in resources like bitmaps, icons, fonts. It has a multi-window and messaging mechanism, commonly used controls like labels, buttons, multi-line edit boxes, list boxes, combo boxes, progress bars, property sheets, toolbars, track bar, tree view, list view, month calendar, grid view, animation, etc, as well as support for dialog boxes and message boxes. You can also use menus, accelarator keys, the caret, timers, Windows resource files, popular image file formats (GIF, JPEG, PNG, Windows BMP, etc), multiple character sets, fonts, etc. The graphics API allows you to do raster operations such as create complex regions, draw and fill ellipses, arcs, polygons, etc. There is also special support for embedded systems such as common I/O operations, byte-order functions, touch screen calibration, etc. The library is released under the GPL. Be sure to select the GPL open source package when you download.