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 and written in C++, Iridescence is easy to learn and easy to work with. You don't have to know any programming languages other than C++. The code is efficient and writing your own application is a breeze.

The code is modular and extensible. Just add new views by deriving them from existing ones. Provide your own code to draw the view on the screen and intercept user input.

Iridescence accepts input from a touchscreen or other pointing devices. It also offers an on-screen-keyboard. Tap, long tap, vertical and horizontal scrolling support is integrated. You can use edit fields to accept input from the user or display lists and context menus from which the user can choose. You can develop your own custom dialog views or use the standard ones we provide: confirmations, notifications, progress and text input dialog views.

The renderer we developed supports anti-aliased and non anti-aliased drawing and filling of lines, rectangles, rounded rectangles, polygons, circles, ellipses, arcs, ellipse arcs. Both integer and floating point coordinates and sizes are supported. You can use multiple clipping masks while drawing (rectangular, circular or elliptical). Blending and filling operations are supported as well.

Supports anti-aliased bitmap fonts. Your application can include as many as you need as resources. We provide tools to generate the bitmap fonts used by the graphic library starting from any TrueType font.

Iridescence contains a trove of common graphical widgets you can use: text labels, edit fields, image views, buttons, switches, sliders, check boxes, selectors, progress bars, context menus, lists, drop lists, dialog views, gauges and so on. Container views like lists and drop lists can hold other views. You can interact with all the widgets. If you want a custom view you can very easily create it.

Views can be placed at fixed coordinates on the screen or you can use the auto-layout features we included. Auto-layout will allow Iridescence size and align your views based on certain constraints you specify. This way your layout can scale automatically based on content it displays or screen size it runs on.

Iridescence supports any real time operating system. We tested it extensively with FreeRTOS and will also provide the required integration layer.

Iridescence was designed to utilize the hardware acceleration available on the STM32 micro-controllers. We prefer the STM32H7 series. We also provide the hardware JPEG decoder driver.

The STM32 port of Iridescence and embedded demos are provided with watermarking and cannot be used for any commercial project without licensing from Thornwave Labs Inc.

Include beautiful images in your graphical user interface thanks to the Iridescence PNG decoder and the STM32 hardware JPEG decoder.

Iridescence is ported to run on Linux using the SDL2 library. Get started developing without needing custom hardware. This also makes sharing the user interface you created very easily. Having multiple team members involved in developing and testing the user interface has never been easier.

We offer examples too. The PC port is free to use, no licensing required.

Go ahead and try our embedded graphics framework! You'll find it very easy to get started with and develop your own embedded graphical user interfaces. If you need help, we are here. Contact us and we can develop the application for you. Either way, you won't need an army to write a complex graphical user interface.


For the Iridescence Framework documentation and instructions on how to get started follow this link:

Do you have any question?