Basic concepts: Platform Package

Embedded Wizard provides an environment to develop highly platform independent GUI applications. In practice, based on one and the same project you can run the application on any target system. This abstraction is made possible by our programming language Chora designed to strictly conceal all platform specific constructs and the concept of a Platform Package. The following figure demonstrates the components belonging to a Platform Package (highlighted with gray background):

Code Generator

Code Generator takes care of the right translation of the platform independent Chora code in the code valid for the particular target system. Accordingly, the results of the code generation are files you can integrate directly into your target specific development system. For example, you can add the files to the Keil MDK-ARM environment or simply to a GCC makefile.

Actually, our Code Generators support ANSI C and JavaScript as output formats. In case of ANSI C the resulting code can be compiled with any C compiler. Eventual architecture or operating system specific aspects are handled individually in the respective version of the Code Generator. In particular, the Code Generator for the Win32 target system optimizes the resulting code for the Microsoft Visual Studio C compiler.

With this concept we are highly flexible to adapt Embedded Wizard to any target system be it running on an operating system or bare-metal. Even future support for new output formats like C++, Java, Swift or C# is possible. The unique requirement is a 32- or 64-bit target system architecture. Please note, in case of 64-bit our ANSI C generators support actually the I32LP64 data model only.

Resource Converters

Resource Converters take care of the conversion of bitmap and font resources used in the GUI application in a format or code valid for the target system. Depending on the target this may include color reduction, dithering and compression of resource data. Per default, the resource converter store the bitmap and font information in a format intended to be used without any additional image decoder or TrueType font engine. For example, font glyphs are pre-rasterized.

If your target system supports a PNG image decoder, we can provide you corresponding Resource Converter able to store the bitmap resources directly as PNG files. Similarly, if there is a TrueType font engine available in your target system, the appropriate Resource Converter can be used to rasterize the glyphs on the fly during the runtime of the application instead of using the pre-rasterized glyphs. This possibility is particularly interesting for large projects containing many images and large fonts (e.g. for Chinese language).

Graphics Engine

Graphics Engine is a library implementing functions to perform graphical operations, like drawing lines, filling rectangles, copying or 3D transforming images, printing formatted text or rendering vector graphic. All graphical operations support alpha-blending and can be performed with an additionally specified color or opacity gradient.

Every Graphics Engine is optimized individually for the respective target specific color format. Actually our engines support following formats:

Framebuffer format

Bitmap formats

Description

RGBA8888

RGBA8888

RGB565

Index8

Alpha8

The framebuffer is stored in 32-bit per pixel format RGBA8888.

Bitmaps (e.g. assets) support following formats: 32-bit per pixel (RGBA8888), 16-bit per pixel (RGB565), 8-bit per pixel with an associated CLUT (Index8) and 8-bit per pixel opacity only (Alpha8).

The order of RGBA and RGB channels can be configured flexibly. In case of the RGBA8888 color format, the RGB (color) channels can optionally be pre-multiplied by the corresponding A (alpha) value.

RGB888

RGBA8888

RGB565

Index8

Alpha8

The framebuffer is stored in 24-bit per pixel format RGB888 without any opacity (alpha) information.

Bitmaps (e.g. assets) support following formats: 32-bit per pixel (RGBA8888), 16-bit per pixel (RGB565), 8-bit per pixel with an associated CLUT (Index8) and 8-bit per pixel opacity only (Alpha8).

The order of RGBA and RGB channels can be configured flexibly. In case of the RGBA8888 color format, the RGB (color) channels can optionally be pre-multiplied by the corresponding A (alpha) value.

RGBA4444

RGBA4444

Index8

Alpha8

The framebuffer is stored in 16-bit per pixel format RGBA4444.

Bitmaps (e.g. assets) support following formats: 16-bit per pixel (RGBA4444), 8-bit per pixel with an associated CLUT (Index8) and 8-bit per pixel opacity only (Alpha8).

The order of RGBA channels can be configured flexibly. The RGB (color) channels can optionally be pre-multiplied by the corresponding A (alpha) value.

RGB565

RGBA8888

RGB565

Index8

Alpha8

The framebuffer is stored in 16-bit per pixel format RGB565 without any opacity (alpha) information.

Bitmaps (e.g. assets) support following formats: 32-bit per pixel (RGBA8888), 16-bit per pixel (RGB565), 8-bit per pixel with an associated CLUT (Index8) and 8-bit per pixel opacity only (Alpha8).

The order of RGBA and RGB channels can be configured flexibly. In case of the RGBA8888 color format, the RGB (color) channels can optionally be pre-multiplied by the corresponding A (alpha) value.

LumA44

LumA44

Alpha8

The framebuffer is stored in 8-bit per pixel format LumA44. This format is intended for monochrome displays.

Bitmaps (e.g. assets) support following formats: 8-bit per pixel (LumA44) and 8-bit per pixel opacity only (Alpha8).

The order of LumA channels can be configured flexibly. The Lum (luminance) channel can optionally be pre-multiplied by the corresponding A (alpha) value.

Index8

Index8

The framebuffer and the bitmaps are stored with 8-bit per pixel using additional color look-up table (CLUT) to translate the 8-bit value in real RGBA color.

The CLUT is optimized individually for every application. When performing alpha-blending operations Embedded Wizard ensures to map quickly the resulting RGBA color value to the corresponding CLUT index. Thus you don't need to worry about the CLUT.

The implementation of the Graphics Engine permits every drawing operation to be individually delegated to the hardware or graphics API available in the target system. This allows the Graphics Engine to be flexibly scaled between target systems not providing hardware acceleration for any of the drawing operations and systems containing powerful 3D cores being able to execute every drawing operation natively per hardware.

Drawing operations, which are not supported natively in the target are automatically performed by the Graphics Engine own, highly optimized Software Pixel Driver. Dedicated versions of the Software Pixel Driver support the NEON ARM instruction set.

With every Platform Package you get two versions of the Graphics Engine. One version is intended to be used in the target system. The other version is a module, Embedded Wizard Studio uses in order to ensure that what you see during prototyping does in fact correspond to what you will get in the target system.

Depending on your Platform Package license, the Graphics Engine for the target system is provided in source code or as compiled library. In particular no source code is contained in the Evaluation edition of the Platform Package. Similar is true if you are working with the Small Business edition. The version provided for Evaluation edition can additionally be watermarked.

Runtime Environment

Runtime Environment is a library providing functions necessary to run applications implemented in the programming language Chora. You can consider the Runtime Environment as an interface between the generated code and the target system. Simplified, the Runtime Environment contains functions to manage Chora objects and to communicate between them.

With every Platform Package you get a version of a Runtime Environment intended to be used in the target system. Depending on your Platform Package license, the Runtime Environment is provided in source code or as compiled library. In particular no source code is contained in the Evaluation edition of the Platform Package. Similar is true if you are working with the Small Business edition. The version provided for Evaluation edition can additionally be watermarked.