Iridescence 1.00
Embedded Graphic Framework
No Matches
Iridescence Embedded Graphic Framework


Iridescence is a complete embedded graphics framework written in C++. It goes beyond just providing a graphics library for drawing on the screen. It provides a view manager, a trove of common views like text labels, edit fields, buttons, image views, switches, sliders, selectors, lists, context menus, dialog views, an on-screen keyboard and so on... Graphical user interfaces using the Iridescence framework are defined entirely programatically. There is no graphic design software. We believe that defining user interfaces programatically offers an increased level of control, as well as reduced number of moving parts and simplicity to learn. The framework is composed of a few independent modules: the renderer, the view manager and a library of common views. New views can be created by deriving a class from an existing view and adding the extra functionality. We include a lot of features to make your life easier: support for C++ closures, LiveData (an easy, bug-free way of passing data to the graphics thread), a complete build system so you can get right to developing your application, without having to write thousands of lines of boiler plate code.


  • object based, written in C++, easy to learn and use
  • efficient code, designed to make it easy to create user applications
  • easy to derive new graphic elements and views from the existing ones
  • accepts input from a touchscreen or other pointing devices and an on-screen-keyboard
  • tap and long tap detection are integrated
  • non anti-aliased and anti-aliased renderer for drawing and filling lines, rectangles, polygons, circles, ellipses, arcs, ellipse arcs
  • clipping masks: rectangles, circles and ellipses
  • blending / filling operations for surfaces
  • hardware acceleration for specific architectures that support it (rendering, JPEG decoding, ...)
  • anti-aliased text rendering using bitmap fonts
  • includes tools for generating anti-aliased bitmap fonts from any TrueType font
  • contains a library of graphic elements: text labels, edit fields, buttons, switches, sliders, check boxes, menus, lists, image views, dialogs, gauges and so on
  • capability to add animations
  • container views like lists and drop lists that can contain any kind of view
  • support for presenting data to the user interface in a simple, reliable, bug-free way similar to the Android LiveData
  • built in PNG image decoder
  • hardware JPEG decoder driver for STM32 microcontrollers
  • auto-layout engine used for automatically placing, sizing and aligning views
  • Linux & FreeRTOS integration provided
  • simulator available for Linux and Windows using SDL2. Get started developing without needing custom hardware. (free to use)
  • we also offer free examples to make your life easier
  • STM32 port (with watermark) and demo apps provided together with the development platforms (see licensing)


For development, we advice using the latest Ubuntu LTS release (24.04 LTS). Older LTS releases of Ubuntu are supported as well: 20.04 LTS and 22.04 LTS.

Iridescence Tools

The Iridescence tools are a set of command line and graphical apps for generating bitmap fonts and surfaces. They are required in order to compile and run applications using the Iridescence framework.

The tools are available for Ubuntu releases 20.04 LTS, 22.04 LTS and 24.04 LTS on our APT repository.
Follow these instructions to add the repository to your Ubuntu system.

Download the APT repository installation script from to the current directory:


Run the script as root:

sudo bash

This will add the Thornwave Labs APT Repository key to your system and the repository to /etc/apt/sources.list.d/
Update the APT database and install Iridescence Tools

sudo apt update
sudo apt install iridescence-tools

The following tools are included:

  • dsfb2bmp - Command line tool for converting the Iridescence in-memory surface format to a BMP image. Useful for extracting screenshots from a running system that uses the Iridescence framework.
  • dsfontgen - Graphical tool for converting TrueType fonts to Iridescence bitmap fonts
  • dsfontgen_cli - Command line tool for converting TrueType fonts to Iridescence bitmap fonts. This can be used in scripts.
  • dssfacegen - Command line tool for generating a Iridescence in-memory surface format from a PNG image. This can be used to store decoded images inside the embedded system FLASH memory for faster loading (for example a splash screen at starup)

Demos & Examples

The code is hosted in a GIT repository. To retrieve it, run:

git clone ssh://

Install some required libraries (Ubuntu 24.04 LTS):

sudo apt install build-essential libsdl2-dev

Build the fonts. You can specify -jN to make, indicating how many thread to use for building. We recommend twice the number of CPUs in your system. This will extract the specified characters and sizes from all the TTF fonts located in the fonts/source directory and compile them in a static library. To change the sizes and characters extracted, edit the Makefile. (CHARS and SIZES variabled) Once make finishes you will have two files: fonts.h and fonts.a. Include the header with your project and link the .a file with your project. Only the fonts that are used in the project will pulled from the fonts.a static library.

cd iridescence_examples/fonts
make -j16

Compile the examples.

cd iridescence_examples/examples
make -j16

Once compiled, the executable files will be in build/bin/ of each example directory.


The PC port (Windows / Linux) is provided for free without watermarking. This allows you to run the existing demos and examples and also create your own applications.

The STM32 port is provided with watermark and cannot be used in a production environment. We provide lifetime licensing that applies to a single product only. There are no royalties or limitations on the volume of the product sold. Upon licensing we will compile the library for the platform of your choosing, using GCC, and the compilation flags you require. The library will be delivered via email as a set of C++ header files and a static libray (.a) ready to integrate in your project. We'll also deliver the FreeRTOS / STM32 integration layers.

For pricing contact us at:

Development Services

If you need help developing your product (hardware and firmware) we can help with that. We have 25+ years of experience designing electronics, writing C / C++ code and developing firmware for embedded systems. Since we developed the Iridescence graphics framework, we know it very well. We will deliver profesionally written code at a production level quality in record time. For larger projects we also offer a free license for the library.

Check out our graphic development platforms:

For more information, contact us at: