* QOpenGLPaintDevice has been added to be able to use QPainter to render into
the currently bound context.
+* Behavioral change in QImage::fill() on an image with format Format_RGB888:
+ For consistency with RGB32 and other 32-bit formats, function now expects
+ image data in RGB layout as opposed to BGR layout.
+
QtWidgets
---------
* QInputContext removed as well as related getters and setters on QWidget and QApplication.
{ 6, 12, 6, 6, 6, 0, 6, 18, true, QPixelLayout::BPP24, convertToARGB32PM, convertFromARGB32PM }, // Format_ARGB6666_Premultiplied
{ 5, 10, 5, 5, 5, 0, 0, 0, false, QPixelLayout::BPP16, convertToRGB32, convertFromARGB32PM }, // Format_RGB555
{ 5, 18, 5, 13, 5, 8, 8, 0, true, QPixelLayout::BPP24, convertToARGB32PM, convertFromARGB32PM }, // Format_ARGB8555_Premultiplied
- { 8, 0, 8, 8, 8, 16, 0, 0, false, QPixelLayout::BPP24, convertToRGB32, convertFromARGB32PM }, // Format_RGB888
+ { 8, 16, 8, 8, 8, 0, 0, 0, false, QPixelLayout::BPP24, convertToRGB32, convertFromARGB32PM }, // Format_RGB888
{ 4, 8, 4, 4, 4, 0, 0, 0, false, QPixelLayout::BPP16, convertToRGB32, convertFromARGB32PM }, // Format_RGB444
{ 4, 8, 4, 4, 4, 0, 4, 12, true, QPixelLayout::BPP16, convertToARGB32PM, convertFromARGB32PM } // Format_ARGB4444_Premultiplied
};
inline quint24::quint24(uint value)
{
- data[0] = uchar(value);
+ data[0] = uchar(value >> 16);
data[1] = uchar(value >> 8);
- data[2] = uchar(value >> 16);
+ data[2] = uchar(value);
}
inline quint24::operator uint() const
{
- return data[0] | (data[1] << 8) | (data[2] << 16);
+ return data[2] | (data[1] << 8) | (data[0] << 16);
}
template <class T>
void fillColorWithAlpha();
+ void fillRGB888();
+
void rgbSwapped_data();
void rgbSwapped();
QTest::newRow("ARGB8555_Premultiplied blue") << int(QImage::Format_ARGB8555_Premultiplied)
<< 0xff0000ff << 0x001fffu;
QTest::newRow("RGB888 red") << int(QImage::Format_RGB888)
- << 0xffff0000 << 0x0000ffu;
+ << 0xffff0000 << 0xff0000u;
QTest::newRow("RGB888 green") << int(QImage::Format_RGB888)
<< 0xff00ff00 << 0x00ff00u;
QTest::newRow("RGB888 blue") << int(QImage::Format_RGB888)
- << 0xff0000ff << 0xff0000u;
+ << 0xff0000ff << 0x0000ffu;
}
void tst_QImage::setPixel()
QCOMPARE(argb32pm.pixel(0, 0), 0x7f7f0000u);
}
+void tst_QImage::fillRGB888()
+{
+ QImage expected(1, 1, QImage::Format_RGB888);
+ QImage actual(1, 1, QImage::Format_RGB888);
+
+ for (int c = Qt::black; c < Qt::transparent; ++c) {
+ QColor color = QColor(Qt::GlobalColor(c));
+
+ expected.fill(color);
+ actual.fill(color.rgba());
+
+ QCOMPARE(actual.pixel(0, 0), expected.pixel(0, 0));
+ }
+}
+
void tst_QImage::rgbSwapped_data()
{
QTest::addColumn<QImage::Format>("format");
QImage src(16, 16, QImage::Format_RGB888);
QImage dest(33, 33, QImage::Format_RGB888);
src.fill(0x00ff00);
- dest.fill(0x0000ff);
+ dest.fill(0xff0000);
QPainter painter(&dest);
painter.drawImage(QRectF(0.499, 0.499, 32, 32), src, QRectF(0, 0, 16, 16));