Fix two errors in RGB30 conversions
The one converters from RGB30 was misplaced in the method table, and the unpremultiplication from A2RGB30 to RGB30 had an underflow mistake when alpha was 2. Change-Id: I92c11ede28611a3dbdce72aca1898845c120c209 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>bb10
parent
fe086ddb9e
commit
52ddfb36c8
|
|
@ -557,7 +557,7 @@ static inline uint qUnpremultiplyRgb30(uint rgb30)
|
|||
}
|
||||
case 2: {
|
||||
uint rgb = rgb30 & 0x3fffffff;
|
||||
rgb += rgb >> 1;
|
||||
rgb += (rgb >> 1) & 0x5ff7fdff;
|
||||
return (a << 30) | rgb;
|
||||
}
|
||||
case 3:
|
||||
|
|
@ -2348,9 +2348,9 @@ Image_Converter qimage_converter_map[QImage::NImageFormats][QImage::NImageFormat
|
|||
0,
|
||||
0,
|
||||
0,
|
||||
convert_BGR30_to_RGB30,
|
||||
convert_BGR30_to_RGB30,
|
||||
0,
|
||||
convert_BGR30_to_RGB30,
|
||||
convert_BGR30_to_RGB30,
|
||||
0,
|
||||
convert_passthrough,
|
||||
0, 0
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@ private slots:
|
|||
void cleanupFunctions();
|
||||
|
||||
void devicePixelRatio();
|
||||
void rgb30Unpremul();
|
||||
|
||||
void metadataPassthrough();
|
||||
|
||||
|
|
@ -2829,6 +2830,20 @@ void tst_QImage::devicePixelRatio()
|
|||
QCOMPARE(b.devicePixelRatio(), qreal(1.0));
|
||||
}
|
||||
|
||||
void tst_QImage::rgb30Unpremul()
|
||||
{
|
||||
QImage a(3, 1, QImage::Format_A2RGB30_Premultiplied);
|
||||
((uint*)a.bits())[0] = (3U << 30) | (128 << 20) | (256 << 10) | 512;
|
||||
((uint*)a.bits())[1] = (2U << 30) | (131 << 20) | (259 << 10) | 515;
|
||||
((uint*)a.bits())[2] = (1U << 30) | ( 67 << 20) | (131 << 10) | 259;
|
||||
|
||||
QImage b = a.convertToFormat(QImage::Format_RGB30);
|
||||
const uint* bbits = (const uint*)b.bits();
|
||||
QCOMPARE(bbits[0], (3U << 30) | (128 << 20) | (256 << 10) | 512);
|
||||
QCOMPARE(bbits[1], (3U << 30) | (196 << 20) | (388 << 10) | 772);
|
||||
QCOMPARE(bbits[2], (3U << 30) | (201 << 20) | (393 << 10) | 777);
|
||||
}
|
||||
|
||||
void tst_QImage::metadataPassthrough()
|
||||
{
|
||||
QImage a(64, 64, QImage::Format_ARGB32);
|
||||
|
|
|
|||
Loading…
Reference in New Issue