Micrium

µC/GUI Overview

Bitmap Converter

Font Converter

Licensing

Font Support

Windows Manager

Widgets

Dialogs

Antialiasing

Memory Devices

Multiple Layers/Displays

Touch Screen Support

Virtual Screen Support

VNC Support

Benefits

Drivers

PC Windows Evaluation

PC Windows Samples

Simulation

µC/GUI is designed to provide an efficient, processor and LCD controller-independent graphical user interface (GUI) for any application that operates with a graphical LCD. It is compatible with single-task and multitask environments, with a proprietary operating system or with any commercial RTOS. µC/GUI is shipped as "C" source code. It may be adapted to any size physical and virtual display with any LCD controller and CPU.

µC/GUI is available in three different basic packages.

µC/GUI Color

µC/GUI Gray Scale

µC/GUI b/w

Color management (Color and Gray Scale packages)

µC/GUI features an integrated, very efficient color management system. This system allows conversion of logical colors (RGB format) into the physical colors which your LCD can display at run time. This way your application does not really need to be concerned with the available colors, LCDs can easily be interchanged. For optimized applications, the system can also display bitmaps using indices generated at (pre-) compile time by the application programmer or by the bitmap converter.

Memory footprint

The memory requirements vary depending on which parts of the software are used and how efficient your target compiler is. It is therefore not possible to specify precise values, but the following apply to typical systems.

Small systems (no window manager)
  • RAM: 100 bytes
  • Stack: 500 bytes
  • ROM: 10-25 kb (depending on the functionality used)
Big systems (including window manager and widgets)
  • RAM: 2-6 kb (depending on number of windows required)
  • Stack: 1200 bytes
  • ROM: 30-60 kb (depending on the functionality used)
Note that ROM requirements will increase if your application uses many fonts. All values are rough estimates and cannot be guaranteed.

Features common to all packages

General

  • Any 8/16/32-bit CPU; only an ANSI "C" compiler is required.
  • Any (monochrome, grayscale or color) LCD with any controller supported (if the right driver is available).
  • May work without LCD controller on smaller displays.
  • Any interface supported using configuration macros.
  • Display-size configurable.
  • Characters and bitmaps may be written at any point on the LCD, not just on even-numbered byte addresses.
  • Routines are optimized for both size and speed.
  • Compile time switches allow for different optimizations.
  • For slower LCD controllers, LCD can be cached in memory, reducing access to a minimum and resulting in very high speed.
  • Clear structure.
  • Virtual display support; the virtual display can be larger than the actual display.

Modular Design

Its design is modular, consisting of different layers in different modules. One layer - called the LCD-driver - covers all access to the LCD. µC/GUI works with all CPUs, since it is written in 100% ANSI-"C".

uC/GUI consists of 4 layers, which can be used individually:
Layer 4: Windows manager
Layer 3: Control library
Layer 2: Graphic library
Layer 1: LCD Driver(s)

Display drivers (Layer 1)

A display driver supports a particular family of display controllers (typically LCD controllers) and all displays which are connected to one or more of these controllers. The driver is essentially generic, meaning it can be configured by modifying the configuration file LCDConf.h. The driver itself does not need to be modified. This file contains all configurable options for the driver including how the hardware is accessed and how the controller(s) are connected to the display.

Configurable options include the following:

LCD_XSIZE horizontal resolution
LCD_YSIZE vertical resolution
LCD_XORG horizontal position on the logical screen
LCD_YORG vertical position on the logical screen
LCD_MIRROR_X mirrors horizontal axis if activated
LCD_MIRROR_Y mirrors vertical axis if activated
LCD_SWAP_XY swaps x/y axes

2D Graphic library (Layer 2)

µC/GUI contains a complete 2D graphic library, which should cover the needs of most applications. The routines supplied with µC/GUI can be used with or without clipping and are based on fast and efficient algorithms. The horizontal and vertical line routines do not use the single-dot routines in order to assure maximum speed.

All required graphic routines such as drawing points, lines, circles are part of the software. An efficient algorithm to draw arbitrary polygons is implemented. Bitmaps of any size and color depth (1/2/4 or 8 bits per pixel, usually generated by the Bitmap Converter) may be shown at any place on the display. All functions can work in OR- XOR- and AND mode, so visualizing in real time is no problem.

The basic drawing routines allow drawing of individual points, horizontal and vertical lines and rectangles at any position of the display. All available drawing modes can be used with these routines since these routines are called frequently in most applications, they are optimized for speed as much as possible. Most of these routines do not require floating point calculations; currently only the DrawArc set of functions does.

Window Manager (Layer 4)

  • Complete window management including clipping. Overwriting of areas outside a window's client area is impossible.
  • Windows can be moved and resized.
  • Callback routines supported (usage optional).
  • Window Manager uses minimum RAM (app. 20 bytes per window).

Optional Widgets/Dialogs (for PC look and feel) (Layer 4)

  • Widgets (window objects, also known as controls) are available. They generally operate automatically and are simple to use.
  • A dialog box (or dialog) is normally a window that appears in order to request input from the user. This widget is included in the Window Manager/Widget package which is optional.

Fonts

µC/GUI is shipped with a lot of fonts to cover most customer's needs. The standard font package contains monospaced and proportional fonts in different sizes, bit digit fonts, bold, regular and magnified fonts.Basic fonts follow the ISO 8859-1 character set. The Standard libray contains 30 proportional fonts and 19 monospaced fonts.

µC/GUI support Unicode. Additional fonts and character sets can be added by using the optional µC/FontConvert tool.

Antialiasing

Antialiasing is the smoothing of lines and curves. It reduces the jagged, stair-step appearance of any line that is not exactly horizontal or vertical. µC/GUI supports different antialiasing qualities, antialiased fonts and high-resolution coordinates. It is an optional package.

Memory device contexts available

Memory device contexts allow creation of a section to output to the display in the memory of the CPU. All drawing operations can be used. When the image has been build completely, it is transferred to the display in a single operation, allowing flicker free updates even with slow CPUs or slow displays.

Multi layer/ Multi display support

More and more graphic controller manufacturer (Fujitsu/Toshiba) offer a flexible layer concept. The multiple layer/multiple display feature allows you to access more than one layer. It also allows you to use multiple displays in your embedded application. This feature is part of the basic package. You do not need additional software to use the multi layer support. Right now up to 5 layers/displays can be supported.

Touch screen & mouse support

Touch screen support for analog touch panels is available. This includes a low level dirver,which handles the analog input (from an 8 bit or better AD-converter), debouncing and calibration of the touch screen. The window manager deals with touch messages and widgets such as button objects. It takes no more than one line of code to create a button or another widget, which then automatically handles touch messages and reacts accordingly.

VNC Support

VNC stands for "Virtual Network Computing". It is, in essence, a client server system based on a simple display protocol which allows the user to view a computing 'desk- top' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures. Client and server communicate via TCP/IP. µC/GUI VNC support is available as a separate package.

Windows simulation using Microsoft Visual C++

A simulation environment under MSVC++ is available. It can be used to write and test the entire user-interface on the PC (all routines are 100% identical to your embedded application, no matter what CPU or LCD you are using). This makes debugging and development easy and convenient. Generating screen-shots of the LCD is a snap. These screenshots can then be inserted into documentation. µC/GUIView, a separate program shows the contents of the simulated LCD even during debugging.

Touch screen simulation

The touch screen simulation is integrated into the regular µC/GUI simulation. Mouse events are used to simulate the touch screen. the simulation can be used to write the user interface of your application and can be send as a simple exe file to anybody for discussion, demonstration or verification.

PC Tools

Simulation plus viewer.  
Bitmap converter
Font converter

Samples

A lot of samples "C" code are provided to demonstrate µC/GUI features. They also can be used by customers in similar applications.