NAME
MiniGUI - a compact cross-OS Graphics User Interface support system
for real-time embedded systems.
TABLE OF CONTENTS
1. Introduction
2. Main features of this version
3. Notes for GPL release
4. Installing MiniGUI on a Linux box
5. History
6. About the authors
7. If you have a problem
8. A little FAQ
9. Copying
10. If you are developing commercial or proprietary software by using MiniGUI
1. INTRODUCTION
MiniGUI is a cross-operating-system Graphics User Interface support
system for real-time embedded systems. This is GPL'd version 1.6.10
released by Feynman Software (http://www.minigui.com).
MiniGUI aims to provide a fast, stable, lightweight, and cross-platform
Graphics User Interface support system, which is especially fit for
real-time embedded systems based-on Linux/uClinux, eCos, and
other tranditional RTOSes, such as VxWorks, uC/OS-II, pSOS, ThreadX,
Nucleus, and OSE.
MiniGUI defines a set of light windowing and GDI (Grahpics Device
Interface) APIs for applications. By using them, an application can create
multiple windows and/or controls, and can draw in these windows/controls.
MiniGUI is composed of three libiraries: libminigui (source is in src/),
libmgext (ext/), and libvcongui (vcongui/). Libminigui is the core library,
which provides windowing and graphics interfaces as well as standard
controls.
Libmgext is an extension library of libminigui and provides some
useful controls and convenient user interface functions, such as
`Open File Dialog Box' and 'Color Selection Dialog Box'. Libvcongui
provides a virtual console window in which you can run UNIX
programs which are in character mode.
You can configure and compile MiniGUI as one of three runtime modes:
* `MiniGUI-Threads': A program running on MiniGUI-Threads can create
multiple cascaded windows in different threads, and all the windows
belong to a single process. MiniGUI-Threads is fit for some real-time
systems on Linux/uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX,
and OSE.
* `MiniGUI-Processes': A program running on MiniGUI-Processes is
an independent process, which can also create multiple windows.
MiniGUI-Processes is fit for some complex embedded systems, such as
PDAs, Thin-Clients or STBs. This mode is only useful for full-featured
UNIX-like operating systems, like Linux.
* `MiniGUI-Standalone': A single process version of MiniGUI. This mode
is useful for some systems which lack of PThread support, like some
buggy uClinux systems.
2. MAIN FEATURES OF THIS VERSION
The main features of this version is illustrated as follow:
* Support for three embedded operating systems: Linux, uClinux and eCos.
* Support for MiniGUI-Threads runtime mode.
* 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.
* Features of windowing sub-system:
* Maturate multi-window and messaging mechanism.
* Support for dialog box and message box.
* Common 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 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 multiple keyboard layouts, including American PC,
French, German, Italian, Spanish, etc..
* Support for input method interface to support special input method,
such as softkey, hand-writing, and so on.
* Features of graphics sub-system:
* 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.
* Support for Windows resource files, for example, Windows icon
and cursor.
* Support for almost all popular image file types including
GIF, JPEG, PNG, Win32 BMP, etc..
* Support for multiple char sets and multiple font types.
At present, what are supported char sets include ISO8859-x,
GB2312, GBK, BIG5, UNICODE UTF-8/UTF-16 encodings.
The font types supported are RBF, VBF, and QPF.
3. NOTES FOR THIS GPL RELEASE
This is the GPL release of MiniGUI V1.6.10. This version has the
almost same features as the commercial version MiniGUI-VAR V1.6.10.
However, this version has the following limitations:
* It only provides support for Linux, uClinux, and eCos operating systems.
You still need to get a commercial license from Feynman Software
for other RTOSes, like VxWorks, OSE, uC/OS-II, ThreadX, and Nucleus.
* It only provides support for MiniGUI-Threads runtime mode. You still
need to get a commercial license from Feynman Software for
MiniGUI-Processes and/or MiniGUI-Standalone runtime modes.
* It only includes font engines for RBF, VBF, QPF font types. You still
need to get a commercial license from Feynman Software if you
want to use TrueType fonts.
* It only provides support for the following char sets/encodings:
ISO8859-1, GB2312, BIG5, UNICODE UTF-8, and UNICODE UTF-16. You
sitll need to get a commercial license from Feynman Software if you
want to use more char sets/encodings.
* It does not include any builit-in input method. You can develop
you own input method or use mGi component provided by Feynman
Software.
* It only includs GAL engines of Dummy, FBCON, QVFB, CommLCD, and Shadow.
* It only includs IAL engines of Dummy, Console, QVFB, CommInput, Custome,
Auto, and Random.
4. INSTALLING MINIGUI ON A LINUX PC BOX
4.1 Before installation
Please download the following tarballs from http://www.minigui.org:
* libminigui-1.6.x.tar.gz: the source of MiniGUI libraries, including
libminigui, libmgext, and libvcongui.
* minigui-res-1.6.x.tar.gz: the resource used by MiniGUI, including
basic fonts, icons, bitmaps, cursors, and imetables.
* mde-1.6.x.tar.gz: the demos for MiniGUI Version 1.6.x.
* mg-samples-1.6.x.tar.gz: the samples for MiniGUI Version 1.6.x.
Note that the tarballs needed by the current MiniGUI release are
listed in "Version" file. Please make sure you have installed the
correct tarballs.
MiniGUI can run on Linux console with FrameBuffer activated. If you video chip
is VESA 2.0 compliant (most video chips support VESA 2.0), you can active Linux
kernel's VESA FrameBuffer by add a boot option 'vga=0x0317'. This option will
use VESA BIOS to enter a 1024x768-16bpp display mode. Please make sure that
your display can support this mode.
You can also run MiniGUI on a virtual Frame Buffer. Currently, MiniGUI V1.6.10
can run on Qt Virtual Frame Buffer (QVFB). Please download qvfb-1.1.tar.gz
tarball from the download zone of this site and install qvfb first.
4.2 Installing resource files of MiniGUI
We must install resource files of MiniGUI first. Please follow
the steps below to do it:
1) Use `tar' to extract minigui-res-1.6.x.tar.gz. You can use
the following command:
$ tar zxf minigui-res-1.6.x.tar.gz
2) Change to new directory and run `make' as a super user:
$ su -c make install
4.3 Configure and compile MiniGUI
MiniGUI uses `automake' and `autoconf', so configuration and compilation
of MiniGUI are very easy:
1) Use `tar' to extract `libminigui-1.6.x.tar.gz' to a new directory:
$ tar zxf libminigui-1.6.x.tar.gz
2) Change to the new directory and run `./configure':
$ ./configure
3) Run the following commands to compile and install MiniGUI:
$ make; su -c 'make install';
4) By default, libraries of MiniGUI will be installed in
`/usr/local/lib'. You should make sure that this directory
is listed in `/etc/ld.so.conf' file. And after having installed
them, you should run the following command to update the cache
of shared library system:
$ su -c ldconfig
5) If you want to specify which features MiniGUI provides, you
can run
$ ./configure --help
to see the complete configuration options listed, then disable or
enable some features by using command line switches. For example,
if you do not want MiniGUI to load JPEG pictures via the function
LoadBitmap, you can use
$ ./configure --disable-jpgsupport
6) Note that some features of MiniGUI depend on other libraries.
Please make sure that you have installed them.
4.4 Run demos of MiniGUI
If you have installed MiniGUI version 1.6.x or later, you should use
our new demo system called `MDE'. 'MDE' is a comprehensive demostration
environment for MiniGUI version 1.6.x, more pretty and useful.
Before running the demo programs, you should extract these tarballs
and compile them:
1) Extract the tarball to a new directory by using `tar' command.
2) Run `./configure' and `make' to compile the demos.
$ ./configure
$ make
3) Try to run demos and applications. For example, you can go to
`mde-1.6.x/same/' to run `same':
$ cd same
$ ./same
5. HISTORY
About seven years have pasted since MiniGUI was initially created at
the end of 1998, and now it becomes much reliable and stable.
During the past years, many remarkable changes have taken place in
the MiniGUI project.
At the original, the version 0.2.xx was based on SVGALib and PThread
(LinuxThreads). Then the version 0.3.xx had many enhanced features
including Graphics Abstract Layer (GAL), Input Abstract Layer (IAL),
and the support for multiple charsets and multiple fonts.
In version 1.0.00, we designed MiniGUI-Lite, which was more fit for
some complex embedded systems, such as PDAs, Thin-Clients, or STBs.
MiniGUI-Lite made the embedded systems more stable and efficient.
The version 1.0.00 provided the native fbcon engine based on Linux
FrameBuffer device directly as well.
In the development of version 1.1.00, we re-wrote the GAL and GDI
interfaces, and provided some advanced video features, such as raster
operation, transparent blitting, alpha blending, and video hardware
acceleration. We also provided some important GDI functions, such as
Ellipse, Arc, Polygon, and FloodFill.
In the development of version 1.5.0, we added advanced 2D graphics
functions to MiniGUI. It provides the abstract logical pen and brush
objects, and can be used to render advanced graphics objects.
In the development of version 2.0.0, we developed MiniGUI-Processes.
A brief history description of the developement progress lay below:
0) 1994 ~ 1996: MiniGUI DOS version.
1) Dec, 1998: Began to write.
2) Apr, 1999: The skeleton of MiniGUI, windowing sub-system
and basic graphics device interfaces.
3) May, 1999: Timer, menu, and the sekleton of control sub-system.
4) Jun, 1999: Chinese input method (by Kang Xiaoning).
5) July, 1999: GIF and JPG loading support (by LI Zhuo).
6) Aug, 1999: Some standard controls (Portion by Zhao Jianghua).
7) Sep, 1999: Dialog boxes and message boxes.
8) Sep, 1999: Snapshot of screen or window.
9) Jan., 2000: VCOnGUI (Virtual Console on MiniGUI) version 0.2.02.
10) Mar., 2000: Linux distribution installer based-on MiniGUI for
HappyLinux 1.0.
11) Jun., 2000: Began to develop version 1.0.xx.
12) Sep., 2000: MiniGUI version 0.3.06 released.
13) Oct., 2000: MiniGUI version 0.9.00 released.
14) Nov., 2000: MiniGUI version 0.9.96 released.
15) Jan., 2001: MiniGUI version 0.9.98 released. You can build
MiniGUI-Lite from this version.
16) Jan., 2001: MiniGUI version 1.0.00Beta1 released.
17) Feb., 2001: MiniGUI version 1.0.00Pre1 released.
18) Apr., 2001: MiniGUI version 1.0.00 released (2001/04/16).
18) Sep., 2001: MiniGUI version 1.1.0Pre1 released (2001/09/12).
19) Sep., 2001: MiniGUI version 1.0.9 released (2001/09/17),
this will be the last version of
source branch 1.0.x.
20) Oct., 2001: MiniGUI version 1.1.0Pre4 released (2001/10/22).
This version have new GAL and GDI interfaces.
21) Mar., 2002: MiniGUI official version 1.1.0 released
(2002/03/08).
MiniGUI API Reference documentation
version 0.9 released.
22) Mar., 2002: MiniGUI API Reference documentation
version 1.0 released.
23) Apr., 2002: MiniGUI the new stable version 1.2.0 released
(2002/04/11).
24) Sep., 2002: The main developers of MiniGUI founded a
new software corporation: Beijing Feynman Software
Technology Co., Ltd.. And the development and
maintenance of MiniGUI changes from
loosely-knit team to business organization.
25) Mar., 2003: MiniGUI official version 1.2.5 released
(2003/03/23).
25) May., 2003: MiniGUI official version 1.2.6 released
(2003/05/18).
26) Sep., 2003: MiniGUI official version 1.3.1 released
(2003/09/11).
27) Jan., 2004: MiniGUI official version 1.5.1 released
(2004/01/18).
28) Feb., 2004: MiniGUI tested on eCos and uC/OS-II.
29) Jun., 2004: MiniGUI tested on VxWorks.
30) Jan., 2005: MiniGUI tested on ThreadX and pSOS.
31) Feb., 2005: MiniGUI official version 1.6.1 released.
32) Aug., 2005: MiniGUI beta version 2.0.0 released.
32) Sep., 2005: MiniGUI official version 1.6.8 released.
33) Oct., 2005: MiniGUI official version 2.0.2 released.
34) Jun., 2006: MiniGUI provides support for OSE.
35) Jul., 2006: MiniGUI official version 2.0.3/1.6.9 released.
35) Nov., 2007: MiniGUI official version 2.0.4/1.6.10 released.
6. ABOUT THE AUTHORS
The original author of MiniGUI is Wei Yongming, and now MiniGUI is
maintained by Feynman Software. More information, please browse
our home page:
http://www.minigui.com
The GPL'd versions and dependent libraries of MiniGUI can be found at:
http://www.minigui.org
7. IF YOU HAVE A PROBLEM
If you have any technical problem, advice or comment, please send
messages to [email protected].
If you are interested in the commercial MiniGUI products and licensing,
please write to [email protected]. Other mail can be sent to
[email protected].
8. A LITTLE FAQ
Q: Is GPL'd MiniGUI free for commercial use?
A: Simply no. Feynman Software release some versions of MiniGUI under
GPL license. It is free for those who are 100% GPL and those who
never copy, modify and distribute MiniGUI. But if you want to use
these GPL'd versions for commerce, you should get the commercial
license from Feynman Software first.
Q: Which operating system does MiniGUI support?
A: MiniGUI can run on Linux/uClinux, uC/OS-II, eCos, ThreadX, pSOS,
VxWorks, ThreadX, OSE, and even Win32. Any other real-time OSes can
be supported theoretically.
Q: Which hardware platform does MiniGUI support?
A: Intel x86, ARM (ARM7/AMR9/StrongARM/xScale), PowerPC, MIPS,
M68K (DragonBall/ColdFire), such kind of hardware platforms.
Q: Does MiniGUI offer the support for grey LCD with 4bpp (bits per pixel)?
A: Yes, it offers. It even offers the support for 1bpp and 2bpp LCD.
9. COPYING
Copyright (C) 2002~2008, Beijing Feynman Software Technology Co., Ltd.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
10. IF YOU ARE DEVELOPING COMMERCIAL OR PROPRIETARY SOFTWARE BY USING MINIGUI
The edition you downloaded freely from our site may only be used to
develop GPL (non-proprietary) Software. The COPYING file explains
what you may or may not do with the free edition.
If you are using MiniGUI for developing commercial, proprietary, or other
software not covered by the terms listed in the COPYING file, you
must have a commercial license for MiniGUI. Please see
http://www.minigui.com/product/index.html for how to obtain this.
If you are interested in the commercial MiniGUI licensing, please write
to [email protected]. Other mail can be sent to [email protected].