summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-04-13 18:27:49 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-04-15 19:34:04 +0000
commit95f694682e762dd6860213dbf26fddaebc637da8 (patch)
tree8a36ef1bec8182e760844066c973a01a5dafb018 /tests/auto/gui/painting/qpainter/tst_qpainter.cpp
parentac659cd203bc43c472c58191cba3fe4f96247dfa (diff)
Implement radial and conical gradients for rgb64 rendering
Adds the last two missing source types to rgb64 rendering. Conical and radial gradients. At the same time linear gradients are moved to a template form to increase code sharing. Change-Id: I30fdd0837b0da03e3447683856ebbe4d7f48df6c Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'tests/auto/gui/painting/qpainter/tst_qpainter.cpp')
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp43
1 files changed, 36 insertions, 7 deletions
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index 3c5fcba06e..53e9ad6f20 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -203,8 +203,10 @@ private slots:
void gradientPixelFormat_data();
void gradientPixelFormat();
- void gradientRgb30_data();
- void gradientRgb30();
+ void linearGradientRgb30_data();
+ void linearGradientRgb30();
+ void radialGradientRgb30_data();
+ void radialGradientRgb30();
void fpe_pixmapTransform();
void fpe_zeroLengthLines();
@@ -3952,7 +3954,7 @@ void tst_QPainter::gradientInterpolation()
}
}
-void tst_QPainter::gradientRgb30_data()
+void tst_QPainter::linearGradientRgb30_data()
{
QTest::addColumn<QColor>("stop0");
QTest::addColumn<QColor>("stop1");
@@ -3962,21 +3964,48 @@ void tst_QPainter::gradientRgb30_data()
QTest::newRow("white->red") << QColor(Qt::white) << QColor(Qt::red);
}
-void tst_QPainter::gradientRgb30()
+void tst_QPainter::linearGradientRgb30()
{
QFETCH(QColor, stop0);
QFETCH(QColor, stop1);
- QLinearGradient gradient(0, 0, 512, 1);
+ QLinearGradient gradient(0, 0, 1000, 1);
gradient.setColorAt(0.0, stop0);
gradient.setColorAt(1.0, stop1);
- QImage image(512, 1, QImage::Format_RGB30);
+ QImage image(1000, 1, QImage::Format_RGB30);
QPainter painter(&image);
painter.fillRect(image.rect(), gradient);
painter.end();
- for (int i = 0; i < 511; ++i) {
+ for (int i = 0; i < 1000; ++i) {
+ QColor p1 = image.pixelColor(i, 0);
+ QColor p2 = image.pixelColor(i + 1, 0);
+ QVERIFY(p1 != p2);
+ QVERIFY(qGray(p1.rgb()) >= qGray(p2.rgb()));
+ }
+}
+
+void tst_QPainter::radialGradientRgb30_data()
+{
+ linearGradientRgb30_data();
+}
+
+void tst_QPainter::radialGradientRgb30()
+{
+ QFETCH(QColor, stop0);
+ QFETCH(QColor, stop1);
+
+ QRadialGradient gradient(0, 0, 1000);
+ gradient.setColorAt(0.0, stop0);
+ gradient.setColorAt(1.0, stop1);
+
+ QImage image(1000, 1, QImage::Format_A2BGR30_Premultiplied);
+ QPainter painter(&image);
+ painter.fillRect(image.rect(), gradient);
+ painter.end();
+
+ for (int i = 0; i < 1000; ++i) {
QColor p1 = image.pixelColor(i, 0);
QColor p2 = image.pixelColor(i + 1, 0);
QVERIFY(p1 != p2);