C
What's New in 2.0
Qt Quick Ultralite maintains source compatibility between minor releases. However, some changes may require you to adapt the application code accordingly. The following sections highlight such changes:
Important changes
- Removed environment variable dependency for the CMake configuration API. You can provide the external tools configuration and manufacturer SDK location, using the
-DQUL_TOOLCHAIN_DIR
and-DQUL_SDK_DIR
CMake options. The Qt Quick Ultralite install location can also be provided using the-DQul_ROOT
option. - Renamed the CMake APIs to adhere to the naming policy, making them intuitive and easier to understand. See CMake API changes in 2.0 for more information.
- Replaced the existing Qul::initializePlatform() function with two new functions, Qul::initializeHardware() and Qul::initializePlatform().
- Added
initializeHardware
argument for the application's entrypoint to control when to initialize the hardware. For more information, see Building Qt Quick Ultralite application as a static library. - Removed the Charts module.
- Disabled script bindings for properties of a ListElement.
- Dropped support for the following boards by STMicroelectronics:
- STM32L4R9I-discovery
- STM32F7508-discovery
- STM32L4R9I-eval
- Removed following platform APIs that were deprecated in Qt for MCUs v1.9:
- Qul::PlatformInterface::DrawingDevice::pixelAt()
- Qul::PlatformInterface::Texture::dataAtOffset()
- Qul::PlatformInterface::DrawingDevice::bytesPerPixel()
- Qul::PlatformInterface::Texture::bytesPerPixel()
- Qul::Image::bytesPerPixel()
- Removed the JavaScript Date API.
- Removed the deprecated Qul::PlatformInterface::Screen constructor.
- Removed
QUL_*
defines from the BSP headers for EK-RA6M3G. - Removed the
QUL_REDIRECT_PRINTF_TO_*
compile options for redirecting debug output. Use the serial port output instead. - Changed macros and linker sections for asset storage locations. The image resources are by default compiled into a location independent data structure, which is stored in the
QulResourceData
segment.
New features
- Enabled architecture-based builds, separating the core library for each platform from the OS specifics. This should reduce the number core library builds required for each supported platform, making it easier to port to other platforms with same CPU architecture.
- Replaced the QUL_DEFAULT_FONT_FAMILY and QUL_FONTS_DIR CMake variables with the corresponding CMake target properties. See CMake API changes in 2.0 for all the CMake API changes.
- Added the QUL_COMPLEX_TEXT_RENDERING CMake API to enable or disable text shaping with the Montotype Spark font engine.
- Replaced
toFixedInt()
andtoExponentialAuto()
with toFixed() and toExponential() methods respectively. - Upgraded platform SDKs and libraries:
- Renasas Grapihcs Library SDK v2.0.0a
- MIMXRT1050-EVKB - MCUXpresso SDK v2.10.0
- MIMXRT1060-EVK - MCUXpresso SDK v2.10.1
- MIMXRT1064-EVK - MCUXpresso SDK v2.10.0
- MIMXRT1170-EVK - MCUXpresso SDK v2.10.1
- Monotype SDK v2.0
- Added the PlatformContext API. Made the existing global platform functions in
include/platform/platform.h
as virtual. Qt Quick Ultralite core accesses these platform functions using the getPlatformInstance() function in the Qul::Platform namespace. - Reduced CPU load by replacing empty while loops in waitForFlip() and stm32_flushFrame() with stm32_enterSleepMode().
- Moved QulPerf to the QtQuickUltralite.Extras module.
- Added Qul::ApplicationSettings to control application-specific settings. As a result, removed Qul::Application::setUiLanguage().
- Renamed the CMake APIs with more intuitive names, making it easier to choose the correct API for a given purpose. See CMake API changes in 2.0 for a list of these APIs.
- Enabled compiling the vendor's Board Support Package (BSP) sources into a separate Qul::QuickUltralitePlatformSDK library. It also enables using separate compiler flags for these libraries.
- Limited AnchorChanges to modify the anchor lines only. Use PropertyChanges to modify margins.
- Add support for Monotype Spark font engine on Renesas RH850.
- Updated the MemoryAllocator's default implementations of acquire() and release() to not call waitUntilAsyncReadFinished() and flushCachesForAsyncRead().
- Enable building from sources using the IAR toolchain with CMake 3.21 or later.
- Defined initial stack size (1K) for STM32F769i using IAR on FreeRTOS.
- Enabled using both SRAM and SDRAM for the FreeRTOS
heap_5
allocator. - Removed default touch event queue implementations for STM and NXP platforms.
- Changed touch event handling on NXP platforms. The touch data is queried only when there is an interrupt from the touchscreen.
- Added the QUL_FONT_ENGINE CMake target property to choose a font engine of choice.
- Added a CMake target to the J-Link command filename for EK-RA6M3G.
- Added support for group animations in a Behavior.
- Added support for user button on the STM32H750B-discovery board.
- Added support for TextCache blending alphamaps.
- Added text shaping support based on Monotype WorldType Shaper Spark. It enables using complex and bidirectional scripts in a Text item.
- Added PreloadAllocator and ReversePreloadAllocator to allocate cache memory for assets.
- Dropped resources from the module libraries. These resources are shipped with the module, but built with the application based on the chosen color depth.
- Added QulModuleResourceData linker section to each platform. This disables the location independent resources feature and lets the linker to remove unused resources.
- Enabled runtime resources lookup support for the Qt Quick Ultralite modules.
- Added thai and arabic language support to the translation example.
- Added support for complex scripts and BiDi text to the Thermo demo.
- Added specialization template for floats where
Wfloat-equal
is applicable. - Enabled
-Wfloat-equal
and-Wshadow
for C++ code generated by qmltocpp. - Enabled painted item example for STM32H750B.
- Added SDRAM memory allocator on RH850.
- Added support for aligning multi-line text horizontally to StaticText.
- Switched to using double precision FPUs on NXP 1060 and 1064, and STM32H750B.
- Updated platform builds based on the GCC toolchain to use dynamic heap size.
- Replaced dynamic asset heap on STM32 boards with separate allocators for SRAM and SDRAM. These allocators are based on the Memory allocator API.
- Switched to qul_malloc for all allocations.
- Added support for tiled image format on RT1170.
- Converted desktop Qt backend to a regular platform, reducing complexity of its CMake configuration.
- Added CMake build target to generate binary with qulrcc for OTA update.
- Improvements to qulrcc:
- Split into two libraries, core and main. Where, the core handles asset transformation, and the main handles input and output.
- Add texture headers' offset to the current offset.
- Warn if the cache size is too small to fit an image.
- Generate image assets based on the data read from the memory sections, which are configured using the QUL_RESOURCE_STORAGE_SECTION CMake API.
- Warn about conflicting hash values between two images, and advise to rename one of them.
Fixed issues
Qt for MCUs v2.0.0
- Updated behavior of an item in a Column layout if it's set to hidden, by:
- re-laying the items on visibility change,
- and dropping empty placeholder for hidden items.
- Dropped top-margin for the first item in a Column.
- Fixed issues related to QML property change signals. This ensures that the property change signals are emitted correctly.
- Fixed issues related to flashing RH850 D1M1A using Qt Creator.
- Disabled function-level linking to ensure that a transition animation works as expected, even for an empty state.
- Fixed context switching logic to use
qul_os_yield()
instead of going directly to sleep. This ensures that a Qt for MCUs application works as expected in both the preemptive and cooperative multitasking modes. - Added a limit to the stack memory size, avoiding overlap with the heap memory on STM32 with baremetal.
- Limited the use of
font.unicodeCoverage
to Qt.font() calls only. - Fixed issues with rendering transparent pixels for RGB image formats.
- Fixed build issues on Linux host with CMake 3.16.3.
- Re-factored the swipe_game demo to fix unexpected artifacts.
- Fixed IAR linker warnings on NXP RT1170.
- Enabled automatic text alignment based on whether the text direction is left-to-right or right-to-left.
- Fixed touch input issues on EK-RA6M3G by configuring IRQ pin 206.
- Ensure that the platform or board-specific default properties for resources are available to all the Qt Quick Ultralite modules.
- Fixed width calculation logic in a text layout.
- Fixed UI glitches in watch example.
- Fixed a regression in text layout.
- Added checks to ensure that QUL_PLATFORM_BOARD_DIR and QUL_TARGET_TOOLCHAIN_DIR are valid paths.
- Fixed FIFO buffer overflow because of too many draw calls, by merging glyphs in a StaticText item.
- Updated the TVII effects example so that it works on desktop.
- Fixed rendering issues with opaque images in RGB332 format.
- Added build target dependency to the flash target to ensure that they are built.
- Fixed artifacts with right-aligned text.
- Fixed IAR compiler errors and warnings on NXP.
- Fixed application halt on NXP FreeRTOS platforms.
- Fixed issue with using images in internal flash as a source for root ImageLayer on RH850.
Qt for MCUs v2.0.1
- Fixed an assertion due to missing source for an ImageLayer item. The layer is ignored if the source is missing.
- Fixed the right margin in thermo demo to avoid Arabic text overflow.
- Fixed following issues in fontcompiler:
- Segfault if an unsupported font file format is used with the Spark font engine.
- Updated the default QUL_MAX_PARAGRAPH_SIZE to ensure that it doesn't exceed 100.
- Fixed the missing headers for the Qul::PlatformTraveoIIExtras module. The
layerwarping.h
andtviiconfiguration.h
headers are now included using<tviiextras/layerwarping.h>
and<tviiextras/tviiconfiguration.h>
. - Fixed a regression in the Static font engine to ensure that the anchored Text items are rendered with the correct offset on y axis.
- Removed font binary data support for all toolchains except the GNU toolchain. This fixes the failure while building Qt Quick Ultralite with the IAR toolchain using CMake v3.22.0.
New APIs
APIs for application development
New Classes
New Functions in Namespaces
void | initHardware() |
New QML Methods
string | resolvedUrl(String url) |
APIs for platform development
New Classes
New Global Functions
Qul::Platform::PlatformContext * | getPlatformInstance() |
Changes in Previous Versions
Changes in v1.1.0 | |
Changes in v1.2.0 | |
Changes in v1.3.0 | |
Changes in v1.4.0 | |
Changes in v1.5.0 | |
Changes in v1.6.0 | |
Changes in v1.7.0 | |
Changes in v1.8.0 | |
Changes in v1.9.0 | |
Changes in v2.0.0 |
Available under certain Qt licenses.
Find out more.