Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maikebing/minigui2.0.4
https://github.com/maikebing/minigui2.0.4
Last synced: 20 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/maikebing/minigui2.0.4
- Owner: maikebing
- License: other
- Created: 2018-07-24T01:03:17.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-08-30T04:02:53.000Z (over 5 years ago)
- Last Synced: 2024-05-23T05:03:49.451Z (8 months ago)
- Language: C
- Size: 9.1 MB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: LICENSE.POLICY
Awesome Lists containing this project
README
NAME
MiniGUI - a compact cross-OS Graphics User Interface support system
for real-time embedded systems.TABLE OF CONTENTS
1. Introduction
2. What's MiniGUI-Processes
3. Main changes of this version
4. Installing MiniGUI on a Linux box
5. History
6. About the authors
7. If you have a problem
8. A little FAQ
9. Copying1. INTRODUCTION
MiniGUI is a cross-operating-system Graphics User Interface support
system for real-time embedded systems. This is version 2.0.x/1.6.x
released by Feynman Software (http://www.fmsoft.cn).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, uC/OS-II, and
other tranditional RTOSes, such as VxWorks, 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 and VxWorks 6.* `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.Currently, the latest stable version of MiniGUI is version 2.0.4/1.6.10.
You can find latest information about MiniGUI and download the source
of GPL'd MiniGUI versions from the site:
http://www.minigui.org2. WHAT'S MINIGUI-PROCESSES
In one word, MiniGUI-Processes is a successor of MiniGUI-Lite. It is
a full-featured multi-process version of MiniGUI.The original MiniGUI is based on POSIX-compliant thread library.
And this thread-based architecture of MiniGUI is very fit for
most traditional embedded operating systems, such as eCos, uC/OS-II,
and VxWorks. However, if you use embedded Linux, the architecture like
X Window will have better stability and scalability, because of the
independent memory address space of every process.Now you can use MiniGUI-Processes to run more than one MiniGUI-based
program in the form of UNIX process at the same time. MiniGUI-Processes
is a full-featured multi-process version of original MiniGUI -- You
can run a program based on MiniGUI-Processes from a program called
'mginit'. Just like X Window, the former process is called a client,
and the latter the server.Clients connect to the server via UNIX domain socket, and the server
receives and responses requests from clients. The server provides shared
resources for clients, manage window objects, and sends mouse
(or touch screen) and keyboard events to the active top-most client.
If a client exits or dies for some reasons, it will not damage other
clients and the server.You can create many windows in a program based on MiniGUI-Processes,
but you can not start a new thread to create a window. So some functions
in original MiniGUI can not be used in MiniGUI-Processes. Yet since
most APIs of MiniGUI-Processes are compatible with the original MiniGUI,
porting from original MiniGUI to MiniGUI-Processes is simple.The source of MiniGUI is configured as MiniGUI-Threads by default.
When you run `./configure' to configure MiniGUI, you can use the command$ ./configure --enable-procs
to enable MiniGUI-Processes.
However, what's different between MiniGUI-Lite and MiniGUI-Processes?
A window created by client of MiniGUI-Lite is not a global object,
i.e., a client does not know the window created by others. However,
windows created by MiniGUI-Processes are all global objects, and
windows created by MiniGUI-Processes can clip each other.
This is the main different between MiniGUI-Lite and MiniGUI-Processes.Some APIs for initialization had changed from MiniGUI-Lite, and some
APIs of MiniGUI-Lite had deleted. However, those APIs only affect
the initialization of one MiniGUI programs. For the description about
this, please refer to the file 'ReleaseNotes' in the product CD-ROM.3. MAIN CHANGES OF THIS VERSION
Main changes of version 2.0.4/1.6.10 since version 2.0.3/1.6.9 are
as follow:
* Enhancement in font and charset support.
* Support for UTF-16.
* Support for FreeType2 font smoothing based-on subpixel.
* UNICODE to GBK and BIG5 map tables.* Enhancement in TextEdit and ListBox controls.
* Other enhancements:
* New function SetTimerEx to defined timer callback function.
* Optimized DrawText function.
* Dynamic loading of TrueType and QPF fonts.
* Optimized ScrollWindow function.
* New SaveDC/RestoreDC functions.For more information, please refer to ChangeLog and ReleaesNotes-2.0.4.pdf
file in the product CD-ROM.Main changes of version 2.0.3/1.6.9 since earlier versions are as follow:
* The runtime mode of MiniGUI-Processes for Linux (Version 2.0.3).
* Support for slave screens. If your system has multiple video devices,
you can use one device as the master screen of MiniGUI to create
main windows and controls and the other devices as the slave screens.
By using GDI APIs of MiniGUI, you can also render text, output graphics
to the slave screens.* Enhanced BITMAP APIs, like RotateBitmap and so on.
* Old GAL and GDI APIs are obsolete, do not use them.
For more information, please refer to ReleaesNotes-2.0.3.pdf file in
the product CD-ROM.4. INSTALLING MINIGUI ON A LINUX BOX
4.1 Before Installation
1) Choose an engine.
If your Linux kernel supports FrameBuffer, you can use our built-in
graphics engine -- the native fbcon engine. So there is no need to install
other graphics engines mentioned below.The native fbcon engine can support both MiniGUI-Threads and
MiniGUI-Processes. Note that the native fbcon engine can not provide
good support for `fbvga16' (the standard VGA 16-Color mode). And also
note that the native fbcon engine can only run on Linux console
FrameBuffer.If you are a MiniGUI application developer, you can use QVFB as
your graphics engine. QVFB is a virtual framebuffer program base-on Qt.
It runs on X Window.2) Install the engine.
If you want to use our native fbcon engine, there is no need to install
a specific library. The native fbcon engine is built in MiniGUI.If you want to use QVFB as your graphics engine, please get
the qvfb-1.1.tar.gz in product CD-ROM (dep-libs/ directory).
3) Get MiniGUI tarballsAfter having installed a graphics engine, please get the following
tarballs from product CD-ROM and extract them:* libminigui-2.0.x.tar.gz: the source of MiniGUI libraries, including
libminigui, libmgext, and libvcongui.* minigui-res-2.0.tar.gz: the resource used by MiniGUI, including
basic fonts, icons, bitmaps, cursors, and imetables.* mde-2.0.x.tar.gz: the demos for MiniGUI Version 2.0.x.
* mg-samples-2.0.x.tar.gz: the samples for MiniGUI Version 2.0.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.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-2.0.tar.gz. You can use
the following command:$ tar zxf minigui-res-2.0.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-2.0.x.tar.gz' to a new directory:
$ tar zxf libminigui-2.0.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 2.0.x or later, you should use
our new demo system called `MDE'. 'MDE' is a comprehensive demostration
environment for MiniGUI version 2.0.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
$ make3) Try to run demos and applications.
4) If you compiled and installed MiniGUI as `MiniGUI-Processes',
you should first run a server program, and then run other demos.
Building MDE will create a program called `mginit', which is the
server providing a virtual console on MiniGUI-Processes:$ cd mginit
$ ./mginit5) If you compiled and installed MiniGUI as `MiniGUI-Threads',
you can run the program directly. As an example, you can go to
`mde-2.0.x/same/' to run `same':$ cd same
$ ./same5. 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
http://www.minigui.orgThe GPL'd versions and dependent libraries of MiniGUI can be found at:
http://www.minigui.com/product/index.shtml
http://www.minigui.com/download/index.shtml7. 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~2007, Beijing Feynman Software Technology Co., Ltd.
All rights reserved.