Graphic display driver library packages for Black & White display controllers

Be up and running with your graphic display application using advanced features, such as text string and character output, soft-font handling, graphic drawing and graphic symbol output, in just a few hours. Save weeks of hard programming.

GUI driver libraries packages for B&W display controllers

Black and White display driver library

B&W GUI display driver library package overview

Graphic-User-Interface (GUI) feature overview

  • GUI library support for B&W display controllers
  • Library is supplied as C source code.
  • Common high-level function interface
  • Library is designed for use with embedded processors. Very small memory footprint.
  • Can operate directly on internal video buffer in the display controller chip. No need for a graphic video buffer in processor RAM.
  • Portable and C-compiler-independent source code with standardized I/O functions.
  • Viewports with scroll, auto-wrap and auto-alignment.
  • Switching between multiple viewports.
  • Graphic line drawing and pixel setting.
  • Graphic Rectangle and Block drawing.
  • Tabs and column alignment support.
  • Graphic buffer Cut and Paste.
  • Black-on-White, White-on-Black.
  • Character and text string functions.
  • Rotation of text and graphic symbols
  • Soft-font support.
  • Text and graphic symbols.
  • Support for transparent text
  • Mono-space and Proportional fonts.
  • Support for extended character sets. Multibyte character strings, wide-char strings.
  • Support for extended codepage tables, ISO-IEC 10646, and UNICODE.
  • Full UTF-8 support, incl. conversion functions.
  • Free user definition of special symbols.
  • Full support for Virtual Fonts, pictures stored in external memory devices.
  • Full support for Virtual Files, text and application data stored in external memory devices.
  • Comprehensive easy-to-read manual with examples.
  • No run-time licenses.


GUI Function Interface

The powerful and flexible function interface provides the basic drawing features that make it simple for a programmer to create screen data fields, pull-down menus, pop-up menus, progress bars, etc. The library facilitates the creation of the GUI "style" and "look" most suitable for a particular target application area.

The library functions are well modularized. Advanced features can be added successively to the basic GUI driver system. For instance: graphic support, viewport support, symbol and icon support, and soft-font text support. This makes it easy to adapt the library to the requirements of your application.

Easy text handling and GUI "look" management

Multiple viewports with wrap and scroll. This makes it easy to reserve areas on the display for icons and to prevent overwriting. Within a viewport, text can be output as left or right-aligned, cut at the edges, or centered horizontally and vertically. Each viewport can have its own font, codepage, and output styling. Automatic text scrolling can be done individually for each viewport.

Viewports can be "styled" individually and are allowed to overlap. This makes it easy reserve areas on the display for icons and to prevent overwriting.

The library function set facilitates the design of run-time adaptable GUI layouts. Promotes the design of reusable GUI API features, automatic screen sizes adaption, etc.

Text, Fonts, International language support

The library supports soft fonts for both mono-space and proportional graphic text. All font handling is done transparently by the library. The programmer just selects the required font and output a text string.

Font support for 8-bit character sets, extended 16-bit character sets, national ASCII character sets, ISO-IEC 10646, and UNICODE. Supports dynamic codepage look-up and segmented fonts. This makes it possible to reduce a large font so that it only contains the character symbols used by the application, while the C text strings remain unchanged. Ideal for memory-constrained embedded systems.

Processor independent C source code

The libraries are written entirely in C, using standardized function syntax for basic low-level I/O read and write operations. The library is supplied as C source code and can therefore be compiled with C, C++ or EC++ standard-conforming compilers.

Targets all common embedded processor families, from small 8-bit processor to embedded PCs. For instance: 80x51, 80x86, PIC17, PIC18, PIC24, PIC32, dsPIC, AVR, AT9x, ARM, etc.

Low RAM and ROM memory consumption

The libraries are designed for small embedded processor systems and optimized for low memory consumption and low runtime overhead.

Large soft-fonts, large graphic symbols, and similar memory consuming constant objects, can be located in external memory devices. Data is fetched directly in the order needed when rendering. No RAM load buffers needed. Please see Virtual Fonts for details

Display controller PC Simulation

Start GUI programming and testing before your hardware is ready. The PC-mode display controller simulator for Windows supplied with all library packages allows you to program and logically test embedded GUI applications using common PC compilers from, for instance, Borland and Microsoft. Your application source code looks the same in PC-mode and target mode.

Function overview.  (Common for B&W libraries)

Basic initialization and error handling

ginit Initialize display module
ghw_puterr Initialize display and output an error message at the center of the display
gexit Release display resources
gsetupdate Activate / deactivate delayed update
ghw_err Report error status from hardware drivers
ghw_dispoff Turn off display screen
ghw_dispon Turn on display screen
ghw_cont_set Set LCD contrast level (absolute)
ghw_cont_change Change LCD contrast level (relative)

Basic text functions

gputs Print a string.
The string can be an (UTF-8) multi-byte encoded string.
gputch Print a character
gputcsym Print a symbol as a character
gputsrot Print a string rotated in any direction.
The string can be an (UTF-8) multi-byte encoded string.
gputchrot Print a character in any rotated orientation
ggetcxpos Report cursor x position in character coordinates
ggetcypos Report cursor y position in character coordinates
gsetcpos Set cursor position in character coordinates
gsetpos Set cursor position in graphic coordinates
gsetcursor Set cursor size and type
ggetfw Default width of current font
ggetfh Height of current font
gfgetfw Default width of a named font
gfgetfh Height of a named font
ggetmbc Fetch a char or a multibyte character from a string. The string pointer is advanced to the following character
gstrlines Report number of text lines in a multi-line string
gsetspch Set text character spacing. Add extra pixel space between text string characters
ggetspch Report text character spacing
gsetspln Set text line spacing. Add extra pixel space between text lines
ggetspln Report text line spacing

Basic graphic functions

gcarc Draw corner arcs as a full circle, half circle, or quarter circle. Draw as perimeter, as filled area, or both.
gcircle Draw a circle as perimeter or as filled area. Any perimeter fragment using any radius can be drawn. Center can be located outside screen.
Write a logical pixel using current viewport settings.
Read pixel a as logical value
Draw a rectangular box using the current viewport setting.
groundrec Draw a rectangle with rounded corners. Create any figure from a pure rectangle to a circle. Draw as perimeter, as filled area, or both.
gmoveto Set start position for line draw
glineto Draw a line from last position to new position
ggetxpos Report current pixel x position
ggetypos Report current pixel y position
ghw_rdblk Read display area to buffer
ghw_restoreblk Write the display area stored in the buffer back to the same position as it was read by ghw_rdblk
ghw_wrblk Write buffer to display area
ghw_blksize Calculate needed buffer size for read block

Symbol (icon)

gputfsym Output a graphic B&W symbol from a font
gputsym Output a graphic B&W symbol
gputsymrot Output a graphic B&W symbol using any rotation direction. Rotation anchor can be outside symbol or screen creating a pendulous effect.
ggetsym Read display area as a B&W symbol
gfillfsym Fill area with a B&W symbol from a font
gfillsym Fill area with a B&W symbol
gsymsize Calculate minimum buffer size to hold a symbol
ggetsymw Get the pixel width of a character symbol using the current font
gsymh Report pixel height of symbol
gsymw Report pixel width of symbol

Viewport functions

ggetvp Report graphic viewport size
gsetvp Set graphic viewport size
ggetvpnum Report viewport number
gsetcvp Set character viewport size
gsetupvp Initialize all viewport parameters
ggetvpw Report current viewport width
ggetvph Report current viewport height
gselvp Select viewport to be current
gfillvp Fill rectangular area in viewport
ginvertvp Invert rectangular area in viewport
gresetvp Reset viewport to default
gresetposvp Reset viewport coordinates to full screen. Leave font and text mode setting unchanged
gclrvp Clear viewport
gsetmode Set normal, inverse, and alignment modes
gscrollcvp Scroll character viewport
gvpxl Report left edge coordinate for viewport
gvpxr Report right edge coordinate for viewport
gvpyb Report bottom edge coordinate for viewport
gvpyt Report top edge coordinate for viewport
ggetapp Get pointer to application-specific data for viewport
ggetvpapp Translate application-specific data pointer to viewport number

Tabulator functions in viewports

gsettab Set a tab position
gsettabs Set tab spacing
gclrtabs Clear tab(s)

Soft-font functions

gfgetcp Report codepage for a named font
ggetfont Report font for the current viewport
gselfont Select current font for viewport
ggetcp Report current codepage for viewport
gselcp Set current codepage for viewport
gpstrheight Report height in pixels of a multi-line string based on the current font
gpstrlen Report string length in pixels with current font
gpstrheight Report width in pixels of the longest line in a multi-line string based on the current font
gpwordlen Length in pixels of first word in string with current font
gcursorblink Cursor blink function

Display multi-screen functions

gscinit Initialize a newly allocated screen buffer and make it owner of the resources.
gscisowner Check wether a screen buffer is the current owner
gscsize Calculate required size for screen buffer allocation
gscsave Save the complete screen and library settings in screen buffer
gscrestore Swap to another screen. Restore screen and library settings from screen buffer and make it the current owner

Wide-char text functions

(Require wide-char support from compiler)
gpstrheightw Report height in pixels of a multi-line wide-char string based on the current font
gpstrlenw Report length in pixels of a wide-char string based on the current font
gpstrheightw Report width in pixels of the longest line in a multi-line wide-char string based on the current font
gpwordlenw Length in pixels of first word in wide-char string with current font
gputchw Print an extended character (wide-char or multibyte character)
gputchwrot Print an extended character in any rotated orientation
gputsw Print a wide-char string
gputswrot Print a wide-char string rotated in any direction.

Multibyte-char text functions

(UTF-8 or compressed multi-byte)
gwcmbsize Report number of multibyte characters needed to hold a wide character value
gmstrlen Report multi-byte length of string in number of bytes (storage length)
gmstrlenw Report multi-byte string length needed to hold wide char string (storage length)
gmsstrlen Report logical symbol length of multibyte string (= corresponding size of wide-char string)
ggetmbc Convert multibyte to wide-char
gwctomb Convert wide-char to multibyte
gwstrcpymb Copy and convert wide-char string to multibyte string
gmbstrcpyw Copy and convert multibyte string to wide-char string

The GUI application interface for Black & White display controllers is a true subset of the GUI application interface for RGB color and grey-level display controllers. Creates a secure migration path should application code later be changed from using a B&W display to using a color display. This enables easy reuse of your application code and reduces future development costs.