Showing results for 
Search instead for 
Did you mean: 

X-CUBE-TOUCHGFX 4.18.0 is out

Senior III

4.18.0 was released 20th of October.

Release notes (which can be found here: is as follows:

  • New TouchGFX Designer Features:
    • New Widget: Video.
    • Added support for new .xml text database.
    • Removed TextEntries database from .touchgfx file.
    • Added support for XRGB.
    • Added full path of applications in recent applications list.
    • Added various animations to icons.
  • Bugfixes in TouchGFX Designer:
    • Fixed missing proxy dialog.
    • Fixed Gauge widget code generation error when placed in Custom Container Definition.
    • Fixed TouchGFX Designer reporting file changes on disk, when files were opened in other editors.
    • Fixed Analog Clock being able to resize.
    • Fixed typography selector in text manager not resizing correctly.
    • Fixed drop down controls sometimes autoselecting.
    • Improved performance of text manager.
    • Improved performance of color pickers.
    • Improved UX behaviour of alpha slider controls.
    • Fixed numeric property up/down controls not working after using mouse wheel.
    • Fixed tabbing between property controls.
    • Fixed dither algorithm selector items missing their names.
    • Fixed ScrollWheel widget erroneous state after deleting the custom container used for Selected Style template.
    • Fixed crash when trying to open recent application that has been deleted on disk.
  • New TouchGFX Core Features:
    • Texts and Languages (translations) are now stored in texts.xml instead of texts.xlsx (Excel format). Tool for exporting and importing translations have been added (touchgfx/framework/tools/textconvert/translation.rb).
    • New Widget: VideoWidget.
    • Added libjpeg libraries for Linux and Windows in 3rdparty/libjpeg (note that Red and Blue are swapped compared to official libjpeg).
    • The simulator can now handle display size not equal to framebuffer size. After call to touchgfx_generic_init() use HAL::setFrameBufferSize() to set the (larger) framebuffer size.
    • Added Drawable::center(), centerX(), centerY() to center a drawable inside its parent.
    • Added Drawable::expand() to make a Drawable the same size as its parent, optionally with a margin around the edge.
    • Added LCD::fillBuffer() to fill a color pattern in any memory buffer.
    • Added ScrollableContainer::getChildrenContainedArea().
    • Faster drawing of ARGB8888 images on 16bpp LCD's.
    • Application::getCurrentScreen() is now static for ease of use.
    • Updated Freetype 2.10.4 to 2.11.0 (used by the font convert utility).
    • Updated nlohmann json 3.9.1 to 3.10.2 (used by the image convert utility).
    • Updated Ruby 1.9.3 to 3.0.2 (used by the text convert utility).
    • ScrollableContainer::doScroll() is now public and ensures that scrolling is valid.
    • The position and size of the root Container in a Screen can now be set.
    • All Bitmap Painters can offset the bitmap, and can tile the bitmap (to help save memory).
  • Bugfixes in TouchGFX Core:
    • TextArea automatic wordwrapping (WideTextAction) did not take indentation into account.
    • ImageConvert would not allow writing to another drive or a full path.
    • TextProvider::initalize() with ... parameter could generate unexpected results.
    • All extern declarations in generated files now match the actual declarations.
    • Possible mess up of FRAME_BUFFER_WIDTH and FRAME_BUFFER_HEIGHT when performing display orientation change.
    • ProgressIndicators and Gauges could not be used with mixins with a timer.
    • PixelDataWidget::getSolidRect() now returns empty Rect when no pixel data buffer has been set.
    • PixelDataWidget::getPixelData() and PixelDataWidget::getBitmapFormat() added.
    • Made simulator applications more responsive to mouse and keyboard events.
    • ScrollableContainer::moveChildrenRelative() now updates values for getScrolledX() and getScrolledY(), but does not update scrollbars. However, moveChildrenRelative() is scheduled to be deprecated, please use doScroll() instead.
    • Fix incorrect use of relative coordinates in ScrollableContainer.
    • Fixed EasingEquations::elasticEaseIn(), EasingEquations::elasticEaseOut() and EasingEquations::elasticEaseInOut().
    • Some 8bpp painters would use the wrong color and in rare cases L8_RGB888 on 32bpp displays would be wrong.
    • LCD16bpp::blitCopy() did not support RGB888.
    • LCD16bpp::fillRect() and LCD16bpp::drawGlyph() now passes 24bit color instead of native 16bit color to DMA.
  • Deprecated TouchGFX Core Features:
    • TouchGFX will soon have support for RGB565 with alpha channel removed. ImageConvert will report this to help a move to e.g. ARGB8888.
    • SDL2 for Linux is no longer included in TouchGFX. Please install package libsdl2-dev and libsdl2-image-dev in your Linux environment.

I'm looking forward to give the new version a testdrive 🙂

What do you think of the new version? Bugs? nice features? Let ST know in the comments

(I'm not affilitated with ST - This post was simply missing so I made it)



Regarding the new video widget. I'm using the mdk-arm compiler.

Adding the video widget result with a linker error:

Error: L6218E: Undefined symbol touchgfx::VideoController::getInstance() (referred from videowidget.o).

What am I missing?



Are you working on a custom board or from a TBS for one of ST development kits ?

To work with the video widgets you need to enable Video Decoding in STM32CubeMX. This is done for some of the TBS for now (we are updating the others at the moment). Here is a link to the Generator User Guide and to the Video Decoding article which will help you understand how to work with the video widget. You can look at the TBS for the STM32H750dk board as well if you want, which has both hardware and software video decoding capabilities.




The offline PDF documentation still V4.16, can you update it?

Associate II


I just wanted to tryout the new video decoding feature in TouchGFX 4.18, from the fromer post I see that there is much additional configuration needed to make it really run on a hardware.

However after migrating to TouchGFX 4.18 there is a file generated (even without using the video widget) which I can not use and which is generating errors in the build process.

The file is: ./TouchGFX/generated/videos/src/keil/Video.s

I removed it from build configuration to be able to complete the build process.

We don't use Keil compiler in this project, how can I configure the TouchGFX project so it generates a correctly usable file for my project?

Best /Andreas

Is there an easier way to use the converter than constantly startup 'Enviroment', move to folder, ...?

Probably a provided batch file or something like that?

How is a translation agency supposed to edit the xml file?

Associate II


I'm just trying out the video widget.

I would like to put the generated video files to a separate section of the memory.

How can I do that?