Migrate to TouchGFX 4.22.0

This commit is contained in:
Jasper Blanckenburg 2023-07-24 18:54:12 +02:00
parent 61729b302c
commit 90b55ffa1c
1032 changed files with 1754 additions and 111124 deletions

4
.gitignore vendored
View File

@ -4,3 +4,7 @@
.clangd
compile_commands.json
TouchGFX/build
/Middlewares/ST/touchgfx_backup/
/TouchGFX/screenshots
/TouchGFX/*_backup.touchgfx
/steering-wheel.ioc_bkp

View File

@ -21,12 +21,12 @@
/* Includes ------------------------------------------------------------------*/
#include "app_azure_rtos.h"
#include "leds.h"
#include "stm32h7xx.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "app.h"
#include "leds.h"
#include "main.h"
#include "ui.h"
#include "vehicle.h"

View File

@ -24,7 +24,7 @@
/* Defines ------------------------------------------------------------------*/
/* STMicroelectronics.X-CUBE-AZRTOS-H7.3.0.0 */
#define THREADX_ENABLED
/* STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2 */
/* STMicroelectronics.X-CUBE-TOUCHGFX.4.22.0 */
#define TOUCHGFX_APP
#endif /* __RTE_COMPONENTS_H__ */

View File

@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.19.2] date: [Fri Mar 24 19:11:35 CET 2023]
# File automatically-generated by tool: [projectgenerator] version: [4.1.0] date: [Mon Jul 24 18:47:29 CEST 2023]
##########################################################################################################################
# ------------------------------------------------

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -284,6 +284,32 @@ public:
*/
void enableTextureMapperA4_NearestNeighbor();
/**
* Enables all the decompressors available for L8 images (L4, RLE and LZW9).
* This allows drawing L4, RLE and LZW9 compressed L8 images.
*
* @see enableDecompressorL8_L4, enableDecompressorL8_RLE, enableDecompressorL8_LZW9
*/
void enableDecompressorL8_All();
/**
* Enables the decompressor for L8 images compressed with the L4 algorithm.
* This allows drawing L4 compressed L8 images.
*/
void enableDecompressorL8_L4();
/**
* Enables the decompressor for L8 images compressed with the RLE algorithm.
* This allows drawing RLE compressed L8 images.
*/
void enableDecompressorL8_RLE();
/**
* Enables the decompressor for L8 images compressed with the LZW9 algorithm.
* This allows drawing LZW9 compressed L8 images.
*/
void enableDecompressorL8_LZW9();
protected:
virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
@ -361,7 +387,7 @@ protected:
* @param alpha The alpha value to use for blending applied to the whole image (255 =
* solid, no blending)
*/
static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
/**
* Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
@ -837,6 +863,61 @@ private:
FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapStride, const uint8_t UFrac, const uint8_t VFrac) const;
void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
};
class DecompressorL8Base
{
public:
virtual ~DecompressorL8Base()
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
};
class DecompressorL8_L4 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
uint16_t blendPixelRGB565(uint16_t imagePixel, uint16_t fbPixel, int alpha, int ialpha) const;
uint16_t blendPixelARGB8888(uint32_t imagePixel, uint16_t fbPixel, int alpha, uint8_t alphapix) const;
uint16_t blendPixelRGB888(const uint8_t* imagePixel, uint16_t fbPixel, uint8_t alpha, uint8_t ialpha) const;
};
class DecompressorL8_RLE : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t BLOCK_SIZE = 1024U;
};
class DecompressorL8_LZW9 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t MAX_DICT_SIZE = 512U;
static const uint16_t BLOCK_SIZE = 1024U;
LZW9DictionaryEntry lzw9Dictionary[MAX_DICT_SIZE];
uint8_t entryBuffer[64]; // Having 64byte max entry sizes entails 1 + 2 + ... + 63 + 64 = 2080px size image blocks
};
DecompressorL8Base* decompressorL8_L4;
DecompressorL8Base* decompressorL8_RLE;
DecompressorL8Base* decompressorL8_LZW9;
};
} // namespace touchgfx

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -289,6 +289,32 @@ public:
*/
void enableTextureMapperA4_NearestNeighbor();
/**
* Enables all the decompressors available for L8 images (L4, RLE and LZW9).
* This allows drawing L4, RLE and LZW9 compressed L8 images.
*
* @see enableDecompressorL8_L4, enableDecompressorL8_RLE, enableDecompressorL8_LZW9
*/
void enableDecompressorL8_All();
/**
* Enables the decompressor for L8 images compressed with the L4 algorithm.
* This allows drawing L4 compressed L8 images.
*/
void enableDecompressorL8_L4();
/**
* Enables the decompressor for L8 images compressed with the RLE algorithm.
* This allows drawing RLE compressed L8 images.
*/
void enableDecompressorL8_RLE();
/**
* Enables the decompressor for L8 images compressed with the LZW9 algorithm.
* This allows drawing LZW9 compressed L8 images.
*/
void enableDecompressorL8_LZW9();
protected:
virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
@ -812,6 +838,109 @@ private:
FORCE_INLINE_FUNCTION void writePixel(uint16_t* const destBits, const uint16_t* const textureBits, const uint32_t offset, const int16_t bitmapWidth, const uint8_t UFrac, const uint8_t VFrac) const;
void writePixelOnEdge(uint16_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
};
class FlashDataProvider
{
public:
FlashDataProvider(FlashDataReader& _flashReader);
void initialize(const uint8_t* _sourceData, uint32_t _maxBytesToRead);
bool addressIsAddressable(const void* address) const;
void increment();
uint8_t getCurrent() const
{
return *currentBytePtr;
}
private:
void readFromFlash();
FlashDataReader& flashReader;
const uint8_t* sourceData;
uint32_t maxBytesToRead;
uint32_t bytesToRead;
const uint8_t* bufferEnd;
const uint8_t* currentBytePtr;
bool isAddressable;
static const uint16_t MAX_BYTES_TO_READ = 64;
};
class DecompressorL8Base
{
public:
virtual ~DecompressorL8Base()
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
};
class DecompressorL8_L4 : public DecompressorL8Base
{
public:
DecompressorL8_L4(FlashDataReader& _flashReader)
: flashReader(_flashReader)
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
uint16_t blendPixelRGB565(uint16_t imagePixel, uint16_t fbPixel, int alpha, int ialpha) const;
uint16_t blendPixelARGB8888(uint32_t imagePixel, uint16_t fbPixel, int alpha, uint8_t alphapix) const;
FlashDataReader& flashReader;
};
class DecompressorL8_RLE : public DecompressorL8Base
{
public:
DecompressorL8_RLE(FlashDataReader& _flashReader)
: flashDataProvider(_flashReader)
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
FlashDataProvider flashDataProvider;
static const uint16_t BLOCK_SIZE = 1024U;
};
class DecompressorL8_LZW9 : public DecompressorL8Base
{
public:
DecompressorL8_LZW9(FlashDataReader& _flashReader)
: flashDataProvider(_flashReader)
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
FlashDataProvider flashDataProvider;
static const uint16_t MAX_DICT_SIZE = 512U;
static const uint16_t BLOCK_SIZE = 1024U;
struct LZW9DictionaryEntry
{
uint8_t character; // Current character of the entry
uint8_t length; // Remaining length of the entry
uint16_t prefixIndex; // Index to previous character
};
LZW9DictionaryEntry lzw9Dictionary[MAX_DICT_SIZE];
uint8_t entryBuffer[64]; // Having 64byte max entry sizes entails 1 + 2 + ... + 63 + 64 = 2080px size image blocks
};
DecompressorL8Base* decompressorL8_L4;
DecompressorL8Base* decompressorL8_RLE;
DecompressorL8Base* decompressorL8_LZW9;
};
} // namespace touchgfx

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -263,14 +263,14 @@ private:
uint8_t getNextHalfByte()
{
assert(data != 0 && "class bwRLEdata not properly initialized");
if (firstHalfByte) // Start of new byte, read data from BW_RLE stream
{
assert(data);
rleByte = *data++;
}
uint8_t len = rleByte & 0xF; // Read lower half
rleByte >>= 4; // Shift upper half down to make it ready
firstHalfByte = !firstHalfByte; // Toggle 'start of byte'
const uint8_t len = rleByte & 0xF; // Read lower half
rleByte >>= 4; // Shift upper half down to make it ready
firstHalfByte = !firstHalfByte; // Toggle 'start of byte'
return len;
}

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -26,6 +26,8 @@
namespace touchgfx
{
struct GlyphNode;
/**
* This class contains the various low-level drawing routines for drawing bitmaps, texts and
* rectangles on 16 bits per pixel displays.
@ -213,6 +215,32 @@ public:
*/
void enableTextureMapperA4_NearestNeighbor();
/**
* Enables all the decompressors available for L8 images (L4, RLE and LZW9).
* This allows drawing L4, RLE and LZW9 compressed L8 images.
*
* @see enableDecompressorL8_L4, enableDecompressorL8_RLE, enableDecompressorL8_LZW9
*/
void enableDecompressorL8_All();
/**
* Enables the decompressor for L8 images compressed with the L4 algorithm.
* This allows drawing L4 compressed L8 images.
*/
void enableDecompressorL8_L4();
/**
* Enables the decompressor for L8 images compressed with the RLE algorithm.
* This allows drawing RLE compressed L8 images.
*/
void enableDecompressorL8_RLE();
/**
* Enables the decompressor for L8 images compressed with the LZW9 algorithm.
* This allows drawing LZW9 compressed L8 images.
*/
void enableDecompressorL8_LZW9();
protected:
virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
@ -278,7 +306,7 @@ protected:
* @param alpha The alpha value to use for blending applied to the whole image (255 =
* solid, no blending)
*/
static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
/**
* Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
@ -580,6 +608,63 @@ private:
FORCE_INLINE_FUNCTION void writePixel(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
void writePixelOnEdge(uint8_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
};
class DecompressorL8Base
{
public:
virtual ~DecompressorL8Base()
{
}
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
};
class DecompressorL8_L4 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
void blendPixelRGB888(const uint8_t* imagePixel, uint8_t* const fbPixel, int alpha) const;
void blendPixelARGB8888(const uint8_t* imagePixel, uint8_t* const fbPixel, int alpha, uint8_t alphapix) const;
};
class DecompressorL8_RLE : public DecompressorL8Base
{
public:
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t BLOCK_SIZE = 1024U;
};
class DecompressorL8_LZW9 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t MAX_DICT_SIZE = 512U;
static const uint16_t BLOCK_SIZE = 1024U;
struct LZW9DictionaryEntry
{
uint8_t character; // Current character of the entry
uint8_t length; // Remaining length of the entry
uint16_t prefixIndex; // Index to previous character
};
LZW9DictionaryEntry lzw9Dictionary[MAX_DICT_SIZE];
uint8_t entryBuffer[64]; // Having 64byte max entry sizes entails 1 + 2 + ... + 63 + 64 = 2080px size image blocks
};
DecompressorL8Base* decompressorL8_L4;
DecompressorL8Base* decompressorL8_RLE;
DecompressorL8Base* decompressorL8_LZW9;
};
} // namespace touchgfx

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -279,6 +279,32 @@ public:
*/
void enableTextureMapperA4_NearestNeighbor();
/**
* Enables all the decompressors available for L8 images (L4, RLE and LZW9).
* This allows drawing L4, RLE and LZW9 compressed L8 images.
*
* @see enableDecompressorL8_L4, enableDecompressorL8_RLE, enableDecompressorL8_LZW9
*/
void enableDecompressorL8_All();
/**
* Enables the decompressor for L8 images compressed with the L4 algorithm.
* This allows drawing L4 compressed L8 images.
*/
void enableDecompressorL8_L4();
/**
* Enables the decompressor for L8 images compressed with the RLE algorithm.
* This allows drawing RLE compressed L8 images.
*/
void enableDecompressorL8_RLE();
/**
* Enables the decompressor for L8 images compressed with the LZW9 algorithm.
* This allows drawing LZW9 compressed L8 images.
*/
void enableDecompressorL8_LZW9();
protected:
virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
@ -344,7 +370,7 @@ protected:
* @param alpha The alpha value to use for blending applied to the whole image (255 =
* solid, no blending)
*/
static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
/**
* Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
@ -897,6 +923,61 @@ private:
FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
};
class DecompressorL8Base
{
public:
virtual ~DecompressorL8Base()
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
};
class DecompressorL8_L4 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
void blendPixelRGB565(const uint16_t imagePixel, uint32_t* fbPixel, const uint8_t alpha) const;
void blendPixelARGB8888(const uint8_t* imagePixel, uint32_t* fbPixel, const uint8_t alpha, const uint8_t alphapix) const;
void blendPixelRGB888(const uint8_t* imagePixel, uint32_t* fbPixel, const uint8_t alpha) const;
};
class DecompressorL8_RLE : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t BLOCK_SIZE = 1024U;
};
class DecompressorL8_LZW9 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t MAX_DICT_SIZE = 512U;
static const uint16_t BLOCK_SIZE = 1024U;
LZW9DictionaryEntry lzw9Dictionary[MAX_DICT_SIZE];
uint8_t entryBuffer[64]; // Having 64byte max entry sizes entails 1 + 2 + ... + 63 + 64 = 2080px size image blocks
};
DecompressorL8Base* decompressorL8_L4;
DecompressorL8Base* decompressorL8_RLE;
DecompressorL8Base* decompressorL8_LZW9;
};
} // namespace touchgfx

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -381,6 +381,32 @@ public:
return blendRGBwithXrgb8888(r | (r >> 5), g | (g >> 6), b | (b >> 5), bgXRGB8888, fgAlpha, bgAlpha);
}
/**
* Enables all the decompressors available for L8 images (L4, RLE and LZW9).
* This allows drawing L4, RLE and LZW9 compressed L8 images.
*
* @see enableDecompressorL8_L4, enableDecompressorL8_RLE, enableDecompressorL8_LZW9
*/
void enableDecompressorL8_All();
/**
* Enables the decompressor for L8 images compressed with the L4 algorithm.
* This allows drawing L4 compressed L8 images.
*/
void enableDecompressorL8_L4();
/**
* Enables the decompressor for L8 images compressed with the RLE algorithm.
* This allows drawing RLE compressed L8 images.
*/
void enableDecompressorL8_RLE();
/**
* Enables the decompressor for L8 images compressed with the LZW9 algorithm.
* This allows drawing LZW9 compressed L8 images.
*/
void enableDecompressorL8_LZW9();
protected:
virtual DrawTextureMapScanLineBase* getTextureMapperDrawScanLine(const TextureSurface& texture, RenderingVariant renderVariant, uint8_t alpha);
@ -446,7 +472,7 @@ protected:
* @param alpha The alpha value to use for blending applied to the whole image (255 =
* solid, no blending)
*/
static void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
void blitCopyL8(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
/**
* Blits a 2D indexed 8-bit source to the framebuffer performing alpha-blending per
@ -884,6 +910,61 @@ private:
FORCE_INLINE_FUNCTION void writePixel(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
void writePixelOnEdge(uint32_t* const destBits, const uint16_t* const textureBits, const int16_t bitmapStride, const int16_t bitmapWidth, const int16_t bitmapHeight, const int UInt, const int VInt, const uint8_t UFrac, const uint8_t VFrac) const;
};
class DecompressorL8Base
{
public:
virtual ~DecompressorL8Base()
{
}
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha) = 0;
};
class DecompressorL8_L4 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
void blendPixelRGB565(const uint16_t imagePixel, uint32_t* fbPixel, const uint8_t alpha, const uint8_t ialpha) const;
void blendPixelARGB8888(const uint8_t* imagePixel, uint32_t* fbPixel, const uint8_t alpha) const;
void blendPixelRGB888(const uint8_t* imagePixel, uint32_t* fbPixel, const uint8_t alpha, const uint8_t ialpha) const;
};
class DecompressorL8_RLE : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t BLOCK_SIZE = 1024U;
};
class DecompressorL8_LZW9 : public DecompressorL8Base
{
public:
virtual void blitCopyRGB565(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyRGB888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
virtual void blitCopyARGB8888(const uint8_t* sourceData, const uint8_t* clutData, const Rect& source, const Rect& blitRect, uint8_t alpha);
private:
static const uint16_t MAX_DICT_SIZE = 512U;
static const uint16_t BLOCK_SIZE = 1024U;
LZW9DictionaryEntry lzw9Dictionary[MAX_DICT_SIZE];
uint8_t entryBuffer[64]; // Having 64byte max entry sizes entails 1 + 2 + ... + 63 + 64 = 2080px size image blocks
};
DecompressorL8Base* decompressorL8_L4;
DecompressorL8Base* decompressorL8_RLE;
DecompressorL8Base* decompressorL8_LZW9;
};
} // namespace touchgfx

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -284,17 +284,29 @@ public:
/**
* Invalidates the entire screen.
*
* @param area The area to invalidate.
*/
void invalidate();
virtual void invalidate();
/**
* Invalidates the given area.
*
* @param area The area to invalidate.
*/
void invalidateArea(Rect area);
virtual void invalidateArea(Rect area);
/**
* Get list of the invalidated areas in the current frame.
* The list is cleared in the beginning of HAL::tick.
*
* The list can be usefull on some platforms where the information
* can be used to reduce the amount of pixels sent to the display.
*
* @return Const reference to the list.
*/
const Vector<Rect, 8>& getInvalidatedAreas()
{
return cachedDirtyAreas;
}
protected:
/** Protected constructor. */

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -71,6 +71,15 @@ public:
CUSTOM ///< Non-standard platform specific format
};
/** Algorithms used for L8 images compression can be stored in the following formats. */
enum Compression
{
COMPRESSION_L8_NONE = 0, ///< No compression applied on the L8 image
COMPRESSION_L8_L4 = 1, ///< L4 compression applied on the L8 image
COMPRESSION_L8_RLE = 2, ///< RLE compression applied on the L8 image
COMPRESSION_L8_LZW9 = 3 ///< LZW9 compression applied on the L8 image
};
/** Data of a bitmap. */
struct BitmapData
{
@ -314,6 +323,23 @@ public:
/** Clears the cached bitmaps from RAM. */
static void clearCache();
/**
* Decompress a compressed bitmap into the bitmap cache. The
* decompressed bitmap will automatically be used by all Widgets.
*
* Only compressed L8 images can be decompressed. The decompressed
* bitmap will be L8 with an unchanged palette.
*
* When decompressing L8 bitmaps compressed with LZW an array of
* size 2048 bytes (16 bit aligned) must be supplied. The array is
* only used during decompressing.
*
* @param id The id of the Bitmap to decompress.
* @param buffer Pointer to a buffer for LZW decompression.
* @return true if the bitmap was decompressed.
*/
static bool decompress(BitmapId id, uint16_t* buffer = 0);
/**
* Create a dynamic Bitmap. The clutFormat parameter is ignored for bitmaps not in L8 format
* (consider using dynamicBitmapCreateL8 instead). Creation of a new dynamic bitmap may cause
@ -536,10 +562,13 @@ private:
static uint32_t getSizeOfBitmap(BitmapId id);
static uint32_t getSizeOfBitmapData(BitmapId id);
static uint32_t getSizeOfBitmapExtraData(BitmapId id);
static bool cacheInternal(BitmapId id, uint32_t size);
static bool cacheInternal(BitmapId id, uint32_t size, bool doCopy = true);
static bool isCustomDynamicBitmap(BitmapId id);
static bool copyBitmapToCache(BitmapId id, uint8_t* const dst);
static uint32_t firstFreeDynamicBitmapId();
static uint32_t decompressL8_L4(uint8_t* dst, BitmapId id);
static uint32_t decompressL8_RLE(uint8_t* dst, BitmapId id);
static uint32_t decompressL8_LZW9(uint8_t* dst, BitmapId id, uint16_t* buffer = 0);
BitmapId bitmapId;
static const BitmapData* bitmaps;
@ -553,6 +582,8 @@ private:
static uint16_t numberOfBitmaps;
static uint16_t numberOfDynamicBitmaps;
static uint16_t uncachedCount; ///< Uncached images, sort of ...
static const uint16_t RLE_BLOCK_SIZE = 1024U;
};
} // namespace touchgfx

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -321,13 +321,12 @@ public:
TOUCHGFX_DEPRECATED("Please use getBaseline() instead.", virtual uint16_t getFontHeight() const);
/**
* Returns the position of the baseline of this font. The returned value corresponds to the
* maximum height occupied by a character in the font.
* Returns the position of the baseline of this font in pixels from the top of the line.
*
* @return The height in pixels of this font.
* @return The baseline position.
*
* @note It is not sufficient to allocate text areas with this height. Use
* getMinimumTextHeight for this.
* getHeight for this.
*/
FORCE_INLINE_FUNCTION virtual uint16_t getBaseline() const
{

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -467,9 +467,9 @@ public:
static uint16_t toUTF8(const UnicodeChar* unicode, uint8_t* utf8, uint16_t maxbytes);
private:
static void composeString(const UnicodeChar*& bufptr, UnicodeChar sign, UnicodeChar formatChar, bool hasPrecision, bool zeroPrefix, int precision, bool hasWidth, int width, bool alignLeft, int& charNumber, uint16_t dstSize, UnicodeChar* dst);
static void composeString(const UnicodeChar*& bufptr, UnicodeChar numberSign, UnicodeChar formatChar, bool hasPrecision, bool zeroPrefix, int precision, bool hasWidth, int width, bool alignLeft, int& charNumber, uint16_t dstSize, UnicodeChar* dst);
static void parseFlagsAndPrecision(const UnicodeChar*& ucFormat, const char*& cFormat, UnicodeChar& sign, bool& alignLeft, bool& forceDecimalPoint, bool& zeroPrefix, bool& hasWidth, int& width, bool& hasPrecision, int& precision);
static void parseFlagsAndPrecision(const UnicodeChar*& ucFormat, const char*& cFormat, UnicodeChar& numberSign, bool& alignLeft, bool& forceDecimalPoint, bool& zeroPrefix, bool& hasWidth, int& width, bool& hasPrecision, int& precision);
static const UnicodeChar* skip_spaces(const UnicodeChar* str);
static const UnicodeChar* skip_whitespace(const UnicodeChar* str);

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -13,9 +13,9 @@
#ifndef TOUCHGFX_VERSION_HPP
#define TOUCHGFX_VERSION_HPP
#define TOUCHGFX_VERSION 42102
#define TOUCHGFX_VERSION 42200
#define TOUCHGFX_VERSION_MAJOR 4
#define TOUCHGFX_VERSION_MINOR 21
#define TOUCHGFX_VERSION_PATCH 2
#define TOUCHGFX_VERSION_MINOR 22
#define TOUCHGFX_VERSION_PATCH 0
#endif // TOUCHGFX_VERSION_HPP

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -70,7 +70,6 @@ public:
* @return Size of memory area used internally by Outline.
*/
static unsigned int getOutlineBufferSize();
/// @endcond
#ifdef SIMULATOR
/**

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -139,7 +139,7 @@ public:
* @note The x and y position of the Slider will either be the left/top of the background or
* the left/top of the indicator in its minimum x coordinate.
*/
virtual void setupHorizontalSlider(uint16_t backgroundX, uint16_t backgroundY, uint16_t indicatorY, uint16_t indicatorMinX, uint16_t indicatorMaxX);
virtual void setupHorizontalSlider(int16_t backgroundX, int16_t backgroundY, int16_t indicatorY, int16_t indicatorMinX, int16_t indicatorMaxX);
/**
* Sets up the slider in vertical mode with the range going from the bottom to top.
@ -167,7 +167,7 @@ public:
* @note The x and y position of the Slider will either be the left/top of the background or
* the left/top of the indicator in its minimum y coordinate.
*/
virtual void setupVerticalSlider(uint16_t backgroundX, uint16_t backgroundY, uint16_t indicatorX, uint16_t indicatorMinY, uint16_t indicatorMaxY);
virtual void setupVerticalSlider(int16_t backgroundX, int16_t backgroundY, int16_t indicatorX, int16_t indicatorMinY, int16_t indicatorMaxY);
/**
* Gets indicator minimum previously set using setupHorizontalSlider() or
@ -177,7 +177,7 @@ public:
*
* @see setupHorizontalSlider, setupVerticalSlider, getIndicatorMax
*/
virtual uint16_t getIndicatorMin() const
virtual int16_t getIndicatorMin() const
{
return indicatorMinPosition;
}
@ -190,7 +190,7 @@ public:
*
* @see setupHorizontalSlider, setupVerticalSlider, getIndicatorMin
*/
virtual uint16_t getIndicatorMax() const
virtual int16_t getIndicatorMax() const
{
return indicatorMaxPosition;
}
@ -208,7 +208,7 @@ public:
* @note If the range is larger than the number of pixels specified for the indicator min and
* max some values will not be represented by the slider.
*/
virtual void setValueRange(int minValue, int maxValue, int newValue);
virtual void setValueRange(int16_t minValue, int16_t maxValue, int16_t newValue);
/**
* Gets the minimum value previously set using setValueRange().
@ -217,7 +217,7 @@ public:
*
* @see setValueRange, getMaxValue
*/
virtual uint16_t getMinValue() const
virtual int16_t getMinValue() const
{
return valueRangeMin;
}
@ -229,7 +229,7 @@ public:
*
* @see setValueRange, getMinValue
*/
virtual uint16_t getMaxValue() const
virtual int16_t getMaxValue() const
{
return valueRangeMax;
}
@ -247,7 +247,7 @@ public:
* @note If the range is larger than the number of pixels specified for the indicator min and
* indicator max, some values will not be represented by the slider.
*/
virtual void setValueRange(int minValue, int maxValue);
virtual void setValueRange(int16_t minValue, int16_t maxValue);
/**
* Places the indicator at the specified value relative to the specified value range.
@ -263,7 +263,7 @@ public:
* thus is not possible to set with this method. In this case the value will be
* rounded to the nearest value that is represented in the current setting.
*/
virtual void setValue(int value);
virtual void setValue(int16_t value);
/**
* Gets the current value represented by the indicator.
@ -289,10 +289,10 @@ protected:
SliderOrientation sliderOrientation; ///< The selected slider orientation
int currentValue; ///< The current value represented by the slider
int16_t currentValue; ///< The current value represented by the slider
int valueRangeMin; ///< The value range min
int valueRangeMax; ///< The value range max
int16_t valueRangeMin; ///< The value range min
int16_t valueRangeMax; ///< The value range max
Image background; ///< The background image
Image backgroundSelected; ///< The backgroundSelected image
@ -340,7 +340,7 @@ protected:
*
* @return The the indicator radius.
*/
virtual uint16_t getIndicatorRadius() const;
virtual int16_t getIndicatorRadius() const;
/**
* Gets the indicator position range, i.e. the difference between max and min for the

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.
@ -29,8 +29,8 @@
namespace touchgfx
{
/**
* A SwipeContainer is a Container with a horizontally laid out list of identically sized Drawables. The bottom of
* the SwipeContainer shows a page indicator to indicate the position in the horizontal
* A SwipeContainer is a Container with a horizontally laid out list of identically sized Drawables.
* The bottom of the SwipeContainer shows a page indicator to indicate the position in the horizontal
* list of items in the SwipeContainer.
*
* @see ListLayout

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

View File

@ -2,7 +2,7 @@
* Copyright (c) 2018(-2023) STMicroelectronics.
* All rights reserved.
*
* This file is part of the TouchGFX 4.21.2 distribution.
* This file is part of the TouchGFX 4.22.0 distribution.
*
* This software is licensed under terms that can be found in the LICENSE file in
* the root directory of this software component.

Some files were not shown because too many files have changed in this diff Show More