What's New in 1.9

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

  • Deprecated the following functions:
    • Qul::PlatformInterface::DrawingDevice::pixelAt()
    • Qul::PlatformInterface::Texture::dataAtOffset()
    • Qul::PlatformInterface::DrawingDevice::bytesPerPixel()
    • Qul::PlatformInterface::Texture::bytesPerPixel()
    • Qul::Image::bytesPerPixel()

New features

  • Added protobuf support using the nanopb 3rd party library to enable better communication between the host and the target.
  • Added the 3rd party printf implementation for embedded systems.
  • Added Qt Creator support for the QtQuickUltralite.Extras module by adding the plugin.qmltypes file.
  • Added the QUL_MONOTYPE_SPARK_HEAP_NO_PREALLOC and QUL_MONOTYPE_SPARK_HEAP_SIZE CMake target properties to configure the heap/cache buffers for Monotype Spark.
  • Added support for property bindings on the Qt.font() API.
  • Added the memory allocation API to have control over the size of memory allocations.
  • Added the PaintedItem and Qul::PaintedItemDelegate APIs to support rendering QML items using custom hardware-accelerated or software renderer.
  • Added the Screen::defaultApplicationSize API, enabling the platform to override the application window size if its root item does not have a size.
  • Upgraded to ARM GCC version 9.
  • Added support for the Qul::PixelFormat_Alpha1 pixel format.
  • Added the PixelDataPointer structure to handle pointing pixel data where bitsPerPixel() is < 8. This structure is used with the Qul::PlatformInterface::DrawingDevice::pixelDataAt() and Qul::PlatformInterface::Texture::pixelData().
  • Enabled Text and StaticText items to handle the missing glpyhs more gracefully. They render a placeholder glyph (box) for the missing glpyh.
  • Added the QUL_DEFAULT_FONT_QUALITY CMake target property and font.quality QML API to control the glyph rendering quality.

    Note: You must set the font.unicodeCoverage property if the automatic glyph generation is disabled.

  • Added painteditem example, camera example, and Swipe game demo.
  • Added support for the Infineon/Cypress Traveo II board.
  • Added support for Linux development host.
  • Upgraded the CMake minimun version to v3.17.3.
  • Added the MessageQueue API to enable implementing custom queues.

Fixed issues

  • Refactored text alignment calculation to fix horizontal alignment issues on a Text item.
  • Fixed the heap size for the charts example to support the screen size on MIMXRT1170.
  • Upgraded NXP board SDK to version 2.9.1.
  • Fixed the Thermo demo animation issues on RA6M3G by disabling the fade animation.
  • Fixed blending of PixelFormat_RGB32 on EK-RA6M3G.
  • Refactored qulrcc to not use RGB332 format for Indexed8 images.
  • Switched to std::minstd_rand() instead of std::rand() on EK-RA6M3G.
  • Updated the Watch demo to use a new time_t function to get the UTC time.
  • Optimized the Font_bindings example for STM32F7508-Discovery.
  • Added sanity check to catch common linker issues relating to C++.
  • Updated the EK-RA6M3G platform port to use fallbackDrawingEngine for the unsupported pixel formats.
  • Updated the baremetal example to use Qul::PlatformInterface::log().
  • Updated the platform adaptation for STM32 to support printing/logging.
  • Add support for Platform::qul_printf() to MIMXRT1050, MIMXRT1060, and MIMXRT1064.
  • Implemented Platform::consoleWrite() for RH850.
  • Updated the platform adaptation for EK-RA6M3G, MIMXRT1170, and MIMXRT595, to support PlatformInterface::log().
  • Replaced printf with qul_printf in platforms.
  • Dropped opacity for the background layer in the layer example.
  • Updated vglitesupport to support negative vector coordinates.
  • Fixed performance measurement crash on EK-RA6M3G.
  • Fixed unspecified CMAKE_BUILD_TYPE when building an application.
  • Fixed implicit move not added when startX == startY == 0.
  • Fixed clipped text when using spark engine in combination with text cache.
  • Adjusted the dynamic assets size threshold to smaller on STM32.
  • Added support for generating 1bpp glyphs to fontcompiler.
  • Updated build dependancy to import the core library when rebuilding a platform library.
  • Enabled Text cache updates on TextAlignment change.
  • Pooled the DynDependencyNode allocations.

New Classes and Functions

Aplication development

New Classes

New QML Types

New QML Methods

QML Type Qt:

font font(object fontConfiguration)

Platform development

New Classes

New Member Functions

Class Texture:

Qul::PlatformInterface::PixelDataPointer pixelData(int16_t x, int16_t y) const

Class MessageQueue:

uint32_t capacity() const
void clearOverrun()
bool discardSupported() const
Qul::Platform::MessageQueueStatus enqueueOrDiscard(const MessageType *message)
Qul::Platform::MessageQueueStatus enqueueOrDiscardFromInterrupt(const MessageType *message)
Qul::Platform::MessageQueueStatus enqueueOrOverwrite(const MessageType *message)
Qul::Platform::MessageQueueStatus enqueueOrOverwriteFromInterrupt(const MessageType *message)
bool isEmpty() const
bool isEmptyFromInterrupt() const
bool isOverrun() const
bool overwriteSupported() const
Qul::Platform::MessageQueueStatus receive(MessageType *message, int32_t timeout = 0)
Qul::Platform::MessageQueueStatus receiveFromInterrupt(MessageType *message, int32_t timeout = 0)

Class MessageQueueInterface:

virtual uint32_t capacity() const = 0
virtual void clearOverrun() = 0
virtual bool discardSupported() const = 0
virtual Qul::Platform::MessageQueueStatus enqueueOrDiscard(const void *message) = 0
virtual Qul::Platform::MessageQueueStatus enqueueOrDiscardFromInterrupt(const void *message)
virtual Qul::Platform::MessageQueueStatus enqueueOrOverwrite(const void *message) = 0
virtual Qul::Platform::MessageQueueStatus enqueueOrOverwriteFromInterrupt(const void *message)
virtual bool isEmpty() const = 0
virtual bool isEmptyFromInterrupt() const
virtual bool isOverrun() const = 0
virtual bool overwriteSupported() const = 0
virtual Qul::Platform::MessageQueueStatus receive(void *message, int32_t timeout = 0) = 0
virtual Qul::Platform::MessageQueueStatus receiveFromInterrupt(void *message, int32_t timeout = 0)

New Global Functions

Tvii::Configuration::Config configForOTFLayer(std::uint32_t platformId)
Tvii::Configuration::Config defaultConfigForOTFLayer()
void deleteQueue(Qul::Platform::MessageQueueInterface *queue)
bool layerHasWarping(int platformId)
int log(const char *format, ...)
std::size_t maximumQueueMessageSize()
Qul::Platform::MessageQueueInterface *requestQueue(std::size_t queueCapacity, std::size_t messageSize)
void setConfigForOTFLayer(std::uint32_t platformId, std::uint16_t copses, std::uint32_t fifo, std::uint32_t lines)
void setWarpingBufferForLayer(int platformId, const void *buffer, const int *platformStruct, int keepLines = 20)
Tvii::Warping::WarpInfo warpInfoForLayer(int platformId)

New Macros

int qul_printf(const char *format, ...)
int qul_snprintf(char *buffer, size_t count, const char *format, ...)
int qul_sprintf(char *buffer, const char *format, ...)
int qul_vprintf(const char *format, va_list va)
int qul_vsnprintf(char *buffer, size_t count, const char *format, va_list va)

New Enum Types

enum class MessageQueueStatus { Success, MessageDiscarded, MessageOverwritten, EmptyQueue, Timeout, …, OtherError }

Changes in Previous Versions

What's New in 1.1

Changes in v1.1.0

What's New in 1.2

Changes in v1.2.0

What's New in 1.3

Changes in v1.3.0

What's New in 1.4

Changes in v1.4.0

What's New in 1.5

Changes in v1.5.0

What's New in 1.6

Changes in v1.6.0

What's New in 1.7

Changes in v1.7.0

What's New in 1.8

Changes in v1.8.0

What's New in 1.9

Changes in v1.9.0

What's New in 2.0

Changes in v2.0.0

What's New in 2.1

Changes in v2.1

What's New in 2.2

Changes in v2.2

What's New in 2.3

Changes in v2.3

What's New in 2.4

Changes in v2.4.0

What's New in 2.5

Changes in v2.5

What's New in 2.6

Changes in v2.6.0

What's New in 2.7

Changes in v2.7.0

Available under certain Qt licenses.
Find out more.