Features of MiniGUI
First, MiniGUI is a complete embedded graphics support system designed and optimized for embedded systems. As a middleware between OS and applications, MiniGUI hides the diversities of different underlying OSes and hardware platforms, and provides identical APIs for top-level applications. The main technical features of MiniGUI are as follow:
Support for many different real-time embedded operating systems, including Linux, uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX and Nucleus. SDK on Win32 platform is available also; it can facilitate the development and debugging of embedded applications. Support for three runtime modes. You can configure and compile MiniGUI as one of three runtime modes: MiniGUI-Threads, MiniGUI-Processes, and MiniGUI-Standalone. Support for built-in resources. You can compile the resources (bitmaps, icons, and fonts) into the library, and there are no needs to read the resources from files. Thus, MiniGUI can be used on some embedded systems without file systems. Maturate multi-window and messaging mechanism. Commonly used controls, including static label, button, single-line and multi-line edit boxes, list box, combo box, progress bar, property sheet, toolbar, track bar, tree view, list view, month calendar, grid view, animation, and so on. Support for dialog box and message box. Support for other GUI elements, including menu, acceleration key, caret, timer, etc. Support for skin UI. You can use skin APIs to build your dashy user interfaces. Support for enhanced graphics APIs for high-end video device. You can use these APIs to do raster operations, create complex regions, draw or fill ellipses, arcs, and polygons, etc. There are advanced 2D graphics functions available on C99 math library. We can even implement these advanced graphics interfaces on low-end video devices by using Shadow engine which runs under the graphics abstract layer of MiniGUI. Support for Windows resource files, for example, Windows bitmap, icon, cursor, etc.. Support for almost all popular image file types including GIF, JPEG, PNG, Win32 BMP, etc.. Support for multiple character sets and multiple font types. At present, what are supported include such character sets as ISO8859-1 ~ ISO8859-15, GB2312, BIG5, EUCKR, SHIFT-JIS, bitmap fonts such as Qt Pre-rendered fonts, and vector fonts such as TrueType as well as Adobe Type1. MiniGUI also provides auto zoom out function, anti-alias function for TV and other output equipments. Support for multiple keyboard layouts, including American PC, French, German, Italian, Spanish, etc.. Input method interface to support special embedded devices. Moreover, input methods for Simplified Chinese are built-in. Special support for embedded systems, including the common I/O operations, byte-orders related functions, touch screen calibration interface, and so on.
Secondly, many technical innovations have been made in the course of nearly seven years of development. These technical innovations enable MiniGUI to become more suitable for real-time embedded systems and exhibit agreeable flexibility, applicable to various high-end or low-end embedded systems including handheld devices, set-top-boxes, game terminals and so forth. These technical innovations include:
Graphics and input abstract layer (GAL and IAL) that, placing no influence on API of the top-level, greatly facilitate the porting and debugging of MiniGUI itself as well as applications. At present, MiniGUI has been proven to be capable of running smoothly on the embedded systems based on i386, ARM (44B0, MX1, StrongARM, xScale), MIPS, PowerPC, and DragonBall, ColdFire etc. By using the graphics and input abstract layers, we also could implement some software engines; the ¡°Random¡± IAL engine simulating the real input can be used to do auto-test of MiniGUI and its applications. For another example, we could support output devices in YUV color space like TV set by using the ¡°Shadow¡± GAL engine. This engine can also provide support for those graphics chipsets whose frame buffer can not be accessed directly, provide support for the devices with a color depth less than 8-bpp, and implement the screen rotation. An optimized architecture to support multiple -charsets and multiple fonts. It is very easy to add a new font type and/or a new charset support in MiniGUI. Support for various charsets is achieved by creating specific logical fonts in different charsets and/or encodings such as GB2312, BIG5, EUCKR, Shift-JIS, UNICODE UTF-8, etc. In a single MiniGUI application, it is very easy to display characters in different languages. Different from the conventional multi-charset implementations, which are achieved by UNICODE, MiniGUI¡¯s implementation, consumes fewer resources and has a better flexibility. Three runtime modes. Different from the general-purpose operating systems like Linux, the traditional embedded operating systems have some particularities. For example, uClinux, uC/OS-II, eCos, and VxWorks usually run on non-MMU CPUs, without support for processes that have separate address spaces but only threads or tasks. Therefore, the runtime environments are entirely different. Therefore, we can configure and compile MiniGUI into three runtime modes for different operating systems: MiniGUI-Threads, MiniGUI-Processes, and MiniGUI-Standalone.
At last, in MiniGUI V2.0.x, we not only provide full support for Linux, which has a multi-process environment by the runtime mode of MiniGUI-Processes, but also keep the concept of layer. By using layer, we can create many workspaces for different processes like X Window, whereas, the footprint of MiniGUI-Processes is far less than X Window. MiniGUI-Processes can run very well on high-end embedded devices.