Skip to main content
HP_it
Senior II
October 27, 2021
Question

X-CUBE-TOUCHGFX 4.18.0 is out

  • October 27, 2021
  • 8 replies
  • 4566 views

4.18.0 was released 20th of October.

Release notes (which can be found here: https://support.touchgfx.com/docs/miscellaneous/changelog) 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)

This topic has been closed for replies.

8 replies

Romain DIELEMAN
ST Employee
October 27, 2021

You stole my post, I was writing that just now :face_with_tears_of_joy:.

Thank you for doing it, please everyone share your thoughts and feedback.

/Romain

HP_it
HP_itAuthor
Senior II
October 28, 2021

Sorry - I was too impatient :)

Questions about 4.18 started popping up and I couldn't find any place to discuss new features.

Keep up the good work!

Tuoman
Senior II
October 27, 2021

Base view still not implemented?

https://community.st.com/s/question/0D50X0000CBl27ZSQR/add-an-interaction-to-all-screens

https://community.st.com/s/question/0D53W000003NieGSAS/example-grouping-of-views-with-common-functionality

Why?

How are you supposed to implement for example UI dialogs that are global and can occur in any view?

-> You must copy & paste that dialog handling code into 100+ views. What if you want to change this handling? You must issue the fix into 100+ views.

I don't understand why the BaseView / View inheritance is not at the top of your priority list, even though nearly all GUI projects need the use of global elements and you have acknowledged it as well 24 months ago.

In my TouchGFX use case external sensor can spawn dialogs within any view, and this is nightmare with this setup. 100% of the views must implement the same buttonup, buttondown, buttonselect handling for this global dialog. We also have a globally available main menu, which must be copy-pasted into 100+ views.

Romain DIELEMAN
ST Employee
October 27, 2021

Hi,

It is on the top of the priority list for TouchGFX 4.19. The top priority for 4.18 was the video widget. It has been something we have wished to do for a long time as you know but it requires more ressources than we had before.

I completely agree with you, don't mistake me. It is something that should have been added a long time ago it is one of the big downsides of the actual tool...

I believe an application with a 100+ views can be optimized. Are you using custom containers ? It stills requires to add user code every time but still saves some time.

/Romain

Tuoman
Senior II
October 29, 2021

>It is on the top of the priority list for TouchGFX 4.19

Great, thanks for the update. Any ETA for 4.19? 3 months? 6 months?

4.19 Might be too late for our current project, but maybe next time.

>I believe an application with a 100+ views can be optimized. Are you using custom containers ? 

Yes we do. We have split logic into Views, i.e. each view serve logically same purpose, even if they are visually the same.

For example we have a lot of scroll list Views for device settings. They all use the same ScrollList custom container, but for different purpose. This is to avoid one bloated View that serves multiple purposes by if-else logic.

I think it is better to have all different displayBrightness, keyClickSound, setLanguage, setStandbyTimer Views (which all use the same ScrollList custom container) than a monolith View that has 30 different settings menus integrated into it and logic is based on if-else cases.

-> Monolith View becomes very memory heavy, and more subject to SW regression. Change one setting and another one breaks. And monolith View has zero benefits to my knowledge. Even if we integrated all settings into one View, we would have 70+ views to deal with.

MHenz
Associate III
October 28, 2021

Trying to install TouchGFX Generator 4.18 into CubeMX.

After clicking on "Refresh" . . . latest available version is 4.17.

4.18 is not listed.

Romain DIELEMAN
ST Employee
October 28, 2021

Hi,

In STM32CubeMX make sure you first go to the "CHECK FOR UPDATES" window to look for and download the TouchGFX 4.18.0 package. Only then can you see it and install it from the "INSTALL/REMOVE" window.0693W00000FE1sCQAT.png 

/Romain

ari_v2
Senior
November 2, 2021

Hi,

Touchgfx 4.18 documentation, in Translations chapter:

To export the texts, the developer uses the new tool, which is located in 

touchgfx/framework/tools/textconvert/translations.rb

The tool can be run in the TouchGFX Environment.

I couldn't find the environment in TouchGFX designer. Is there a command window to run translations.rb?

How could I run this command from windows?

Thanks,

Ari

Romain DIELEMAN
ST Employee
November 2, 2021

To find the environment type "TouchGFX 4.18.0 Environment" in the search bar of your computer.

Otherwise it should be under Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\STMicroelectronics folder

You can also open it by opening msys.bat in the C:\TouchGFX\4.18.0\env\MinGW\msys\1.0 folder

/Romain

AUnte.1
Associate
November 17, 2021

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?

ari_v2
Senior
November 2, 2021

Thanks!

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?

Thanks,

Ari

Romain DIELEMAN
ST Employee
November 3, 2021

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.

/Romain

V.H
Senior
November 10, 2021

Hi,

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

AUnte.1
Associate
November 17, 2021

Hi,

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

AUnte.1
Associate
November 30, 2021

Hi,

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?