From af2daafde72db02454d24b7d691aa6861525ab99 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 18 Nov 2019 17:01:26 +0100 Subject: Deprecate constructing QFlags from a pointer This was used to support QFlags f = 0 initialization, but with 0 used as a pointer literal now considered bad form, it had been changed many places to QFlags f = nullptr, which is meaningless and confusing. Change-Id: I4bc592151c255dc5cab1a232615caecc520f02e8 Reviewed-by: Thiago Macieira --- tests/auto/gui/painting/qpainter/tst_qpainter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/auto/gui/painting') diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index 6e48439944..de9c876b3f 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -715,7 +715,7 @@ void tst_QPainter::drawBorderPixmap() QPainter p(&pm); p.setTransform(QTransform(-1,0,0,-1,173.5,153.5)); qDrawBorderPixmap(&p, QRect(0,0,75,105), QMargins(39,39,39,39), src, QRect(0,0,79,79), QMargins(39,39,39,39), - QTileRules(Qt::StretchTile,Qt::StretchTile), 0); + QTileRules(Qt::StretchTile,Qt::StretchTile), { }); } #endif -- cgit v1.2.3 From 03b1d2c44940322208c12c7bceee376b51d8e852 Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Sat, 30 Jun 2018 21:23:02 +0200 Subject: QColor: unify behavior when passing invalid values to setFoo() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Calling QColor::setFoo() is currently inconsistent - some setter do invalidate the colors, some don't. Unify it by calling invalidate in every setter. Task-number: QTBUG-62452 Change-Id: Ia4f0bd16ea30e9659bc989ffc2b319892438b84b Reviewed-by: André Hartmann Reviewed-by: Allan Sandfeld Jensen --- tests/auto/gui/painting/qcolor/tst_qcolor.cpp | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'tests/auto/gui/painting') diff --git a/tests/auto/gui/painting/qcolor/tst_qcolor.cpp b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp index 07c820dc86..f8502c1e2f 100644 --- a/tests/auto/gui/painting/qcolor/tst_qcolor.cpp +++ b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp @@ -1032,6 +1032,15 @@ void tst_QColor::setRgbF() QCOMPARE(qfloat16(b2), qfloat16(b)); } } + QVERIFY(color.isValid()); + QColor invalidRgb = color; + QColor invalidRgbF = color; + QTest::ignoreMessage(QtWarningMsg, "QColor::setRgb: RGB parameters out of range"); + invalidRgb.setRgb(-1, -1, -1); + QTest::ignoreMessage(QtWarningMsg, "QColor::setRgb: RGB parameters out of range"); + invalidRgbF.setRgb(-1, -1, -1, -1); + QVERIFY(!invalidRgb.isValid()); + QVERIFY(!invalidRgbF.isValid()); } void tst_QColor::setRgba() @@ -1146,6 +1155,16 @@ void tst_QColor::setHsv() QCOMPARE(v2, v); } } + QVERIFY(color.isValid()); + QVERIFY(color.isValid()); + QColor invalidHsv = color; + QColor invalidHsvF = color; + QTest::ignoreMessage(QtWarningMsg, "QColor::setHsv: HSV parameters out of range"); + invalidHsv.setHsv(-1, -1, -1); + QTest::ignoreMessage(QtWarningMsg, "QColor::setHsvF: HSV parameters out of range"); + invalidHsvF.setHsvF(-1, -1, -1); + QVERIFY(!invalidHsv.isValid()); + QVERIFY(!invalidHsvF.isValid()); } void tst_QColor::setCmyk() @@ -1271,6 +1290,15 @@ void tst_QColor::setCmyk() QCOMPARE(k2, k); } } + QVERIFY(color.isValid()); + QColor invalidCmyk = color; + QColor invalidCmykF = color; + QTest::ignoreMessage(QtWarningMsg, "QColor::setCmyk: CMYK parameters out of range"); + invalidCmyk.setCmyk(-1, -1, -1, -1, -1); + QTest::ignoreMessage(QtWarningMsg, "QColor::setCmykF: CMYK parameters out of range"); + invalidCmykF.setCmykF(-1, -1, -1, -1, -1); + QVERIFY(!invalidCmyk.isValid()); + QVERIFY(!invalidCmykF.isValid()); } void tst_QColor::setHsl() @@ -1372,6 +1400,15 @@ void tst_QColor::setHsl() QCOMPARE(l2, l); } } + QVERIFY(color.isValid()); + QColor invalidHsl = color; + QColor invalidHslF = color; + QTest::ignoreMessage(QtWarningMsg, "QColor::setHsl: HSL parameters out of range"); + invalidHsl.setHsl(-1, -1, -1, -1); + QTest::ignoreMessage(QtWarningMsg, "QColor::setHslF: HSL parameters out of range"); + invalidHslF.setHslF(-1, -1, -1, -1); + QVERIFY(!invalidHsl.isValid()); + QVERIFY(!invalidHslF.isValid()); } void tst_QColor::toRgb_data() -- cgit v1.2.3 From d556d7a6b80d862c1b010358e16ee29004a32f75 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 25 Nov 2019 10:49:54 +0100 Subject: Avoid initializing QFlags with 0 or nullptr in tests Amends qtbase/af2daafde72db02454d24b7d691aa6861525ab99. Change-Id: Ib5d17611e43e7ab2c63c7f0587f549377f262e32 Reviewed-by: Allan Sandfeld Jensen --- tests/auto/gui/painting/qpainter/tst_qpainter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/auto/gui/painting') diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index de9c876b3f..e05de64be5 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -1739,7 +1739,7 @@ void tst_QPainter::renderHints() // Turn off all... p.setRenderHints(QPainter::RenderHints(0xffffffff), false); - QCOMPARE(p.renderHints(), QPainter::RenderHints(0)); + QCOMPARE(p.renderHints(), QPainter::RenderHints{}); // Single set/get p.setRenderHint(QPainter::Antialiasing); -- cgit v1.2.3 From 5b4b437b30b320e2cd7c9a566999a39772e5d431 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 10 Jun 2019 15:57:52 +0200 Subject: WebGradients: redo implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous implementation was *extremely* expensive. It relied on loading a binary JSON file from resources (which involved decompressing it), then extracting information out of it to build a gradient. Already-loaded gradients were kept in a local cache, which had to be mutex protected. Instead, this patch extends the gradient generator to build static arrays filled with the web gradient data, sitting in .rodata. These arrays are used when building QGradient objects with a web gradient. No explicit mutex protection is necessary, since accesses will just read from the arrays. As benefits, this patch removes: * the binary json representation from QtGui's resources (~4KB compressed, ~50KB uncompressed) * the overhead of reading from the JSON for each used web gradient; * the startup costs of registering the webgradients in the resources; * all the overhead of mutex locking when building such gradients; * all the runtime memory allocations to load, parse and cache the web gradients (including the memory + CPU spike on first load due to the uncompression of the JSON data, as well as a couple of deep copies). Change-Id: If5c3d704430df76ce8faf55ee75ebd4639ba09c4 Reviewed-by: Tor Arne Vestbø Reviewed-by: Ulf Hermann Reviewed-by: Qt CI Bot Reviewed-by: Thiago Macieira Reviewed-by: Edward Welbourne --- tests/auto/gui/painting/qbrush/tst_qbrush.cpp | 6 ------ 1 file changed, 6 deletions(-) (limited to 'tests/auto/gui/painting') diff --git a/tests/auto/gui/painting/qbrush/tst_qbrush.cpp b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp index f35d4f330b..ac357c92db 100644 --- a/tests/auto/gui/painting/qbrush/tst_qbrush.cpp +++ b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp @@ -341,12 +341,6 @@ void tst_QBrush::gradientPresets() QCOMPARE(lg->stops().at(0), QGradientStop(0, QColor(QLatin1String("#ff9a9e")))); QCOMPARE(lg->stops().at(1), QGradientStop(0.99, QColor(QLatin1String("#fad0c4")))); QCOMPARE(lg->stops().at(2), QGradientStop(1, QColor(QLatin1String("#fad0c4")))); - - - QGradient invalidPreset(QGradient::Preset(-1)); - QCOMPARE(invalidPreset.type(), QGradient::NoGradient); - QBrush brush(invalidPreset); - QCOMPARE(brush.style(), Qt::NoBrush); } void fill(QPaintDevice *pd) { -- cgit v1.2.3 From a1a3a7cd8abbfcc778c3b57953fd931c87a49278 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 12 Dec 2019 11:36:47 +0100 Subject: Avoid crashing when constructing color-space from invalid enum This is not to be taken as supported and is still undefined behavior, but I prefer we do not crash. Change-Id: Icf4f3398bfd57fcbdc611a5a821a1f2de0838330 Reviewed-by: Eirik Aavitsland --- .../gui/painting/qcolorspace/tst_qcolorspace.cpp | 34 ++++++++++++++++------ 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'tests/auto/gui/painting') diff --git a/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp b/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp index 531e14d25b..945a4772f3 100644 --- a/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp +++ b/tests/auto/gui/painting/qcolorspace/tst_qcolorspace.cpp @@ -105,37 +105,47 @@ void tst_QColorSpace::movable() void tst_QColorSpace::namedColorSpaces_data() { QTest::addColumn("namedColorSpace"); + QTest::addColumn("isValid"); QTest::addColumn("primariesId"); QTest::addColumn("transferFunctionId"); - QTest::newRow("sRGB") << QColorSpace::SRgb + QTest::newRow("sRGB") << QColorSpace::SRgb << true << QColorSpace::Primaries::SRgb << QColorSpace::TransferFunction::SRgb; - QTest::newRow("sRGB Linear") << QColorSpace::SRgbLinear + QTest::newRow("sRGB Linear") << QColorSpace::SRgbLinear << true << QColorSpace::Primaries::SRgb << QColorSpace::TransferFunction::Linear; - QTest::newRow("Adobe RGB") << QColorSpace::AdobeRgb + QTest::newRow("Adobe RGB") << QColorSpace::AdobeRgb << true << QColorSpace::Primaries::AdobeRgb << QColorSpace::TransferFunction::Gamma; - QTest::newRow("Display-P3") << QColorSpace::DisplayP3 + QTest::newRow("Display-P3") << QColorSpace::DisplayP3 << true << QColorSpace::Primaries::DciP3D65 << QColorSpace::TransferFunction::SRgb; - QTest::newRow("ProPhoto RGB") << QColorSpace::ProPhotoRgb + QTest::newRow("ProPhoto RGB") << QColorSpace::ProPhotoRgb << true << QColorSpace::Primaries::ProPhotoRgb << QColorSpace::TransferFunction::ProPhotoRgb; + QTest::newRow("0") << QColorSpace::NamedColorSpace(0) + << false + << QColorSpace::Primaries::Custom + << QColorSpace::TransferFunction::Custom; + QTest::newRow("1027") << QColorSpace::NamedColorSpace(1027) + << false + << QColorSpace::Primaries::Custom + << QColorSpace::TransferFunction::Custom; } void tst_QColorSpace::namedColorSpaces() { QFETCH(QColorSpace::NamedColorSpace, namedColorSpace); + QFETCH(bool, isValid); QFETCH(QColorSpace::Primaries, primariesId); QFETCH(QColorSpace::TransferFunction, transferFunctionId); + if (!isValid) + QTest::ignoreMessage(QtWarningMsg, QRegularExpression("QColorSpace attempted constructed from invalid QColorSpace::NamedColorSpace")); QColorSpace colorSpace = namedColorSpace; - QVERIFY(colorSpace.isValid()); - - QCOMPARE(colorSpace, namedColorSpace); + QCOMPARE(colorSpace.isValid(), isValid); QCOMPARE(colorSpace.primaries(), primariesId); QCOMPARE(colorSpace.transferFunction(), transferFunctionId); } @@ -149,15 +159,21 @@ void tst_QColorSpace::toIccProfile_data() void tst_QColorSpace::toIccProfile() { QFETCH(QColorSpace::NamedColorSpace, namedColorSpace); + QFETCH(bool, isValid); QFETCH(QColorSpace::Primaries, primariesId); QFETCH(QColorSpace::TransferFunction, transferFunctionId); Q_UNUSED(primariesId); Q_UNUSED(transferFunctionId); + if (!isValid) + QTest::ignoreMessage(QtWarningMsg, QRegularExpression("QColorSpace attempted constructed from invalid QColorSpace::NamedColorSpace")); QColorSpace colorSpace = namedColorSpace; QByteArray iccProfile = colorSpace.iccProfile(); - QVERIFY(!iccProfile.isEmpty()); + QCOMPARE(iccProfile.isEmpty(), !isValid); + + if (!isValid) + return; QColorSpace colorSpace2 = QColorSpace::fromIccProfile(iccProfile); QVERIFY(colorSpace2.isValid()); -- cgit v1.2.3 From 9d6b4d11424cdcd6c572cdcc50b3b790b6e673c0 Mon Sep 17 00:00:00 2001 From: Jordi Pujol Foyo Date: Fri, 13 Dec 2019 14:27:11 +0100 Subject: New features for QPdfWriter Added new API setDocumentXmpMetadata/documentXmpMetadata and addFileAttachment [ChangeLog][QtGui][QPdfWriter] New API to provide external document XMP metadata and attach files to PDF. Fixes: QTBUG-78651 Fixes: QTBUG-78764 Change-Id: Ic0b37e8d12899f907001db469080594c14c87655 Reviewed-by: Eirik Aavitsland --- .../gui/painting/qpdfwriter/tst_qpdfwriter.cpp | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/auto/gui/painting') diff --git a/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp b/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp index b2b2b685ae..3fbe16575d 100644 --- a/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp +++ b/tests/auto/gui/painting/qpdfwriter/tst_qpdfwriter.cpp @@ -112,6 +112,29 @@ void tst_QPdfWriter::basics() QCOMPARE(writer.pageLayout().fullRect(QPageLayout::Millimeter), QRectF(0, 0, 297, 210)); QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(50, 50, 197, 110)); + + QByteArray metadata ( + "\n" + "\n" + " \"\n" + " \n" + " \n" + " \n" + " TITLE\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n" + "\n" + ); + + QCOMPARE(writer.documentXmpMetadata(), QByteArray()); + writer.setDocumentXmpMetadata(metadata); + QCOMPARE(writer.documentXmpMetadata(), metadata); } // Test the old page metrics methods, see also QPrinter tests for the same. -- cgit v1.2.3