Release notes: Embedded Wizard 8.30

Version 8.30 contains the following changes and improvements:

Embedded Wizard Studio Free / Pro

Embedded Wizard Studio is now provided in two different editions:

Embedded Wizard Studio Free - Intended to get familiar with the technology and to evaluate it on different target systems. It can be used for production if you are creating small GUI projects. All features are available within this edition, only the complexity of your GUI application is limited. Please register on our website to download Embedded Wizard Studio Free.

Embedded Wizard Studio Pro - This is our full-featured license for professional projects without limitations. For more details please have a look to the pricing model of Embedded Wizard.

The license agreement is reworked and adapated accordingly. It is shown during the installation process and the latest version is available online.

Support of ARM NEON Instruction Set

A new Graphics Engine with support of ARM NEON instructions is now available for color format RGBA8888. The ARM NEON technology is an advanced SIMD (single instruction multiple data) architecture extension for the ARM Cortex-A series. All drawing operations within the new RGBA8888 Graphics Engine are accelerated by using this instruction set. The resulting performance improvement is quite impressive...

Build Environments for Generic Platform Packages

A set of new Build Environments for Generic RGBA8888, RGB888, RGBA4444, RGB565 and Index8 is created. This simplifies the bring-up and the customization of our Generic Platform Packages.

Platform Packages (RTE/GFX)

The RGBA8888 version of the pixel driver is optimized to perform graphical operation more efficiently.

The limitation of max. 256 pixel height of font resources has been increased to 1024 pixel. To display such large fonts, please ensure that the glyph cache is large enough.

Code Generator

The ANSI-C Code Generator is adapted to generate Chora enums as ANSI typedef enum {...} UnitNameEnumName; In this manner, the type definition can be used in C code.

The ANSI-C Code Generator is adapted to generate a description for enum and set items if the description is available. This mode has to be enabled by setting the attribute Verbose of the profile to the value true. With Verbose == false, no additional description is generated as it was in older versions.

The attribute Verbose is now per default available in every profile. In this manner you can activate the above described description generation.

The evaluation of arguments in native statement has been reworked and enhanced: The native statement accepts now additionally local arrays. The evaluation of the arguments takes place regardless of whether the code is compiled for Prototyping or target. The specified variables or arrays are signed as initialized and used when compiling code for target system. Since in Prototyping environment the native statement is ignored, the variables are not signed as initialized/used.

Mosaic Improvements

The 'rubber band effect' in the SlideTouchHandler is re-implemented. Now the effect is using the 'power' timing function instead of simply halve the distance.

New properties RubberBandEffectDuration and RubberBandEffectElasticity are added to the SlideTouchHandler permitting the user to flexibly configure the timing behavior of the handler.

The class Core::Time is modified to use string constants for AM and PM instead of hard-coded strings. This makes it possible to change the notation of AM and PM. See the new constants Resources::AM and Resources::PM.

The Text view has been enhanced by a new property Padding. With this property the user can specify an additional gap at the left and right edge of the text view. With the gap, italic fonts can be displayed correctly without clipping the first/last glyph.

The Text view method GetRowArea() has been redesigned to calculate with the exact width of the first/last glyphs. The old version calculated simply with advances so the value returned by GetRowArea() not always enclosed all glyphs. The new version returns an area enclosing precisely all row glyphs.

The new property Padding is added to the Attributed Text view. With it, the view can be configured to add an additional gap at the left/right edge so italic glyphs found at the begin/end of a text row are not clipped.

The method GetViewForItems() of the Horizontal List and Vertical List has been adapted to return null if it has been called during the list update phase. In other words, calling GetViewForItem() in context of OnLoadItem() will return null.

The Horizontal List and Vertical List are adapted to be less restrictive when calling the methods inherited from the Core::Group class, such as CountViews(), FindNextView(), FindPrevView(), FindSiblingView(), FindViewAtPosition(), FindViewInDirection(), FindViewWithinArea(), GetContentArea(), GetIndexOfView(), GetViewAtIndex(). In version 8.20 using such methods generated an error. Now, the method return constant null value without generating any errors.


The following bugs have been solved:

Mosaic: Bug fix with SlideTouchHandler and RetargetCondition. The handler has to evaluate the SlideHorz and SlideVert properties in order to decide whether it may accept a retargeted interaction.

Mosaic: Bug-fix in KeyPressHandler. The repeat counter was not reset after bypassing the event to another handler.

Mosaic: Bug-fix for lost currentEventTimestamp in DriveMultiTouchHitting() method.

Mosaic: The method DriveMultiTouchHitting() is reworked to use the value provided in SetUserInputTimestamp instead of the actual time.

Mosaic: The SlideTouchHandler is reworked to calculate with the event associated time and not with the current time.

Runtime Environment: Bug-fix in the RTE routines EwStringParseInt32(), EwStringParseUInt32(), EwStringParseFloat() and EwStringToAnsi() for handling correctly the case of a NULL string (legal empty string) being passed to the routines as parameter.

Studio: Bug-fix in the Color wheel control (used in Assistant and Generate CLUT dialog). The luminance slider displayed black only when the initially specified color was black. The correct behavior is to display gradient between white-black with black color selected.

Mosaic: The in-precise description of AttrText.GetContentArea() is adapted to inform the user that the returned width corresponds to the width of the Attributed Text view.

Graphics Engine: The function DrawAttrText() is reworked to not clip the text spans at the edges of a attributed text paragraph/column. Only the clipping resulting from the actual screen update is applied. From this results, that italic glyph within one column may appear partially within the neighbor column. The drawing reworked to first draw the filled background of all paragraphs/columns (if it has been specified in the attributes) and then draw text and images. Otherwise the background of one column may override the content of the neighbor column.

Graphics Engine: The line drawing operation for WebGL and OpenGL is fixed to correctly adjust the end positions of the line.

Mosaic: The latest updated text alignment algorithms (introduced with version 8.20) for Text views and Attributed Text views have been reworked again. The old version 8.10 ignoring the glyph area of the last glyph has been restored.

Code Generator: The correction to avoid C compiler warnings due to padding fields the compiler add to data structure to stretch them to a multiply of 4-bytes has been removed again. The modification produced other warnings wherever the data structures have been initialized. The user has to accept the warning, when data structures are not a multiply of 4-bytes.

Mosaic: The update routine in Mosaic has been corrected to not perform unnecessary updates. If EwPreserveFramebufferContent == 0, the Mosaic redraws always the areas from the preceding update. In the previous version, the update was performed permanently even if there were no new dirty screen areas. Now, the updates are performed only, when something has changed. Then the 'last areas' are combined with the 'new changed' areas.

Mosaic: The Core::Root class is corrected to react to changes of the property Opacity, Visible and AlphaBlended. Now changing the properties triggers the root to update its entire area. Previously it was ignored.

Mosaic: The class Core::Root is adapted to correctly work with the Buffered mode. Previously the buffer was not always updated.

WebGL Code Generator: Fix for critical bug with key code mapping for WebGL generated code with active Obfuscation. Due to an error in the obfuscation, some key codes were obfuscated in RTE module while in application code not. This leads to the problem, that the codes do not match. Also dispatching of key codes with pressed ALT key did not work with obfuscated code.