Evolution of MiniGUI
Twety years have passed since MiniGUI was launched at the end of 1998. Originally, MiniGUI was designed to provide a simple human-machine interface for a control system, which was based on Linux; no one foresaw that MiniGUI would become a cross-OS embedded GUI system. Fortunately, MiniGUI has been widely used in various projects since launched, and the increasing requirements from practical projects make MiniGUI grow into a cross-OS embedded GUI middleware product gradually.
In December 1998, the initiator of FMSoft, Wei Yongming, began to develop MiniGUI, and applied it in a computerized numerical control (CNC) system. In March 2000, Lenovo adopted MiniGUI to develop the installer for HappyLinux V1.0 (a Linux distribution). At that time, MiniGUI had been a powerful embedded GUI support system for Linux. From April 2000 to September 2002, as one of the famous free software, MiniGUI was developed and released under the GPL license.
In September 2002, the core developers of MiniGUI founded Beijing FMSoft Technologies Co., Ltd., and started the commercial marketing with free software. MiniGUI V1.2.6 and MiniGUI V1.3.0 were released in May 2003 and September 2003 respectively.
In October 2003, MiniGUI was ported to the uClinux and eCos operating systems. Thus, MiniGUI had become a cross-OS embedded GUI system.
In August 2004, the most famous telecommunication equipment supplier in China used MiniGUI as the platform on STBs, hand-held devices, etc. In January 2005, the main TD-SCDMA standard maker chose MiniGUI as the MMI solution for its TD-SCDMA mobile phones.
At present, the latest release of MiniGUI is version 3.0.x, which supports Linux/uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX, Nucleus, and Win32 platform.
In Jan., 2012, FMSoft released MiniGUI V3.0.x for Linux under GPL license.
In Aug., 2017, FMSoft released mDolphin V3.0.x under Apache 2.0 license.
In Jan., 2018, FMSoft released miniStudio V1.2.x as a shareware.
In July, 2018, FMSoft released MiniGUI V3.2.0.
In July, 2019, FMSoft released MiniGUI V4.0.0.
Milestones
MiniGUI v4.0.0 (July, 2019)
- Support for Unicode 12.0.
- Support for complex/mixed scripts.
- Support for extra input messages.
MiniGUI v3.2.0 (July, 2018)
- Support for 64-bit architectures.
- mGNCS4Touch component.
miniStudio v1.2.1 (Feb., 2018)
- Released as a shareware.
mDolphin v3.0.4 (Aug., 2017)
- Released under Apache 2.0.
MiniGUI v3.0.x (Jan., 2012)
- Double-Buffering of main window.
- New control/widget set (releasing as mGNCS component).
- New animation framework (releasing as mGEff component).
Version 2.0.x (Oct., 2005)
MiniGUI version 2.0.x offers the following key feature:
- The rumtime mode of MiniGUI-Processes for Linux.
Version 1.6.x (Dec., 2004)
MiniGUI version 1.6 offers the following new features:
- support for VxWorks and ThreadX operating systems. MiniGUI now can run on Linux/uClinux, eCos, uC/OS-II, VxWorks, ThreadX, and Windows operating systems.
- More controls. Transparent style, ScrollView and ScrollWnd controls, GridView control, IconView control, Animation control, and enhanced SLEdit and MLEdit controls.
- Enhanced GDI APIs providing support for advanced 2D graphics functions, lick pen-width, pen-style, and brush-pattern.
- Many bugs fixed.
Version 1.3.x (Oct. 2003)
MiniGUI version 1.3 offers the following new features:
- In-core resources. You can compile the resources (bitmaps, icons, and fonts) into the library (libminigui), and there is no need to read the resource configuration information from MiniGUI.cfg. The feature is useful for many embedded systems which are lack of file system support.
- The new run-time mode - MiniGUI-Standalone. You can configure and compile MiniGUI as MiniGUI-Standalone version. This mode is useful for some systems which lack of POSIX Thread support, like some uClinux system.
- Support for uClinux and eCos.
- Support for skin. You can now use skin to build your dashy UI.
- Useful configuration interface. You can configure MiniGUI by using 'make menuconfig' command, which gives you a very easy-to-use interface to configure MiniGUI.
The features of old releases
Features since version 1.2.x:
- Enhance MiniGUI-Lite and provide support for Layer. More than one clients on the same layer can output to the screen at the same time.
- Enhance interfaces of GAL engine, and clean up the interfaces of IAL engine.
- Rewrite GDI APIs and provide support for advanced graphics features, such as alpha blending, transparent blitting, and raster operations.
- Provide support for other graphics plateforms, such as X, or SVGALib.
- Clean up the code of window manager, and enhance built-in controls.
- Implement layout theme for windows and controls.
- Provide the support for vector fonts in MiniGUI-Lite.
Features since version 1.0.x:
- MiniGUI-Lite: Start applications in form of processes.
- Multiple windows (in seperated threads or single thread).
- Main windows hosting (in single thread).
- Pre-defined control classes (STATIC, EDIT, BUTTON, PROGRESSBAR, TRACKBAR, LISTBOX, MENUBUTTON, etc.).
- Dialog boxes.
- Message passing and dispatching.
- GDI functions (MoveTo, LineTo, FillBox, Rectangle, Circle, TextOut, DrawText, etc.).
- Support for Windows bitmap, icon and cursor resource files.
- Caret.
- Win32-like Timer.
- Accelarator keys.
- GB2312, BIG5, EUCKR, UJIS charsets support. And you can add new charset support easily.
- Multi-font support.
- Chinese (GB2312) input method.
- GIF, JPG, and PNG images support.
- Miscellouse. (Beep, ETC/INI File Operatios)
Features since version 0.9.x:
- MiniGUI-Lite enhanced and some bugs fixed.
- TrackBar control enhanced.
- The format of MiniGUI.cfg changed.
- Add a new API: SetWindowBkColor.
- The APIs are stable now.
- MiniGUI Lite version joined to version 0.9.98. Please use "./configure --enable-lite" to enable lite version. Lite version is the default setting. You can use "./configure --disable-lite" to make the original MiniGUI which based on pthreads. Note that Lite version can only run on the NATIVE engine, and do not provide support for TTF and Adobe Type1 fonts.
- Added a new control: TrackBar.
- Native engine by Song Lixin. This engine is based on framebuffer directly. Currently provide support for Linear 16bpp, Linear 8bpp drivers.
- Sub-control support. You can create child controls in a control, not limited only in a main window, and create child child control is possible as well.
- MEDIT control enhanced. Use MiniGUI's multiple fonts and multiple charsets interface. See "notebook".
- Toolbar control enhanced. You can add tool buttons with different size.
- Menubutton control added. Menubutton behaves as dropdown combobox, but displays list items in a popup menu instead in a listbox.
- Add a extended style for control, WS_EX_CTRLASMAINWIN. You can use this style to create a control that can display its content outside the main window which the control belong to.
- Support for TrueType fonts and Adobe Type1 fonts.
- Support for PCX, TGA, GIF, JPG images via LoadBitmap function call.
- Toolbar control added.
- Multiple line editor control enhanced.
- The Intelligent Pinyin Module has been added as a module to Chinese Input Method.
- An application "notebook" based on medit control added.
- Add a predefined main window "LogWin" in mywins library to provide a debugging facility for MiniGUI-based application.
- Add a predefined dialog "FileOpenDialog" in mywins library to provide a standard OpenFile dialog box.
- Enhance or add some demo programs.
Features since version 0.3.x:
- Add a new Graphics Abstract Layer (GAL) and a new Input Abstract Layer (IAL). By using GAL and IAL, MiniGUI can run on many graphics engines, such as SVGALib and LibGGI, and we can easily port MiniGUI to other POSIX system by implement a new graphics engine complicant to our GAL and IAL interfaces. Now, MiniGUI Applications can run on X Window, and we can easily debug MiniGUI apps. Apeared in version 0.3.00.
- Add multiple fonts and multiple charset support. This feature will apear in version 0.3.02.
- Some enhancements of GUI. This feature will apear in version 0.3.04.
- Add some raster operations to GDI. This feature will apear in version 0.3.06.
- Use autoconf and automake. We can easily make and install MiniGUI. Apeared in version 0.3.00.
- Integrate mywins library and vcongui library. Apeared in version 0.3.00.
- Add some interesting demos to demostrate MiniGUI's functions.
Further Reading
Please refer to MiniGUI Overview for the features and history of MiniGUI in details.