99 void drawPixmap_comp_data(); |
104 void drawPixmap_comp_data(); |
100 void drawPixmap_comp(); |
105 void drawPixmap_comp(); |
101 void saveAndRestore_data(); |
106 void saveAndRestore_data(); |
102 void saveAndRestore(); |
107 void saveAndRestore(); |
103 |
108 |
|
109 void drawBorderPixmap(); |
|
110 |
104 void drawLine_data(); |
111 void drawLine_data(); |
105 void drawLine(); |
112 void drawLine(); |
106 void drawLine_clipped(); |
113 void drawLine_clipped(); |
107 void drawLine_task121143(); |
114 void drawLine_task121143(); |
108 void drawLine_task216948(); |
115 void drawLine_task216948(); |
237 void emptyClip(); |
244 void emptyClip(); |
238 |
245 |
239 void taskQT4444_dontOverflowDashOffset(); |
246 void taskQT4444_dontOverflowDashOffset(); |
240 |
247 |
241 void painterBegin(); |
248 void painterBegin(); |
|
249 void setPenColorOnImage(); |
|
250 void setPenColorOnPixmap(); |
|
251 |
|
252 void QTBUG5939_attachPainterPrivate(); |
242 |
253 |
243 private: |
254 private: |
244 void fillData(); |
255 void fillData(); |
|
256 void setPenColor(QPainter& p); |
245 QColor baseColor( int k, int intensity=255 ); |
257 QColor baseColor( int k, int intensity=255 ); |
246 QImage getResImage( const QString &dir, const QString &addition, const QString &extension ); |
258 QImage getResImage( const QString &dir, const QString &addition, const QString &extension ); |
247 QBitmap getBitmap( const QString &dir, const QString &filename, bool mask ); |
259 QBitmap getBitmap( const QString &dir, const QString &filename, bool mask ); |
248 }; |
260 }; |
249 |
261 |
968 QCOMPARE(p.background(), pal.background()); |
980 QCOMPARE(p.background(), pal.background()); |
969 |
981 |
970 delete widget; |
982 delete widget; |
971 } |
983 } |
972 |
984 |
|
985 void tst_QPainter::drawBorderPixmap() |
|
986 { |
|
987 QPixmap src(79,79); |
|
988 src.fill(Qt::transparent); |
|
989 |
|
990 QImage pm(200,200,QImage::Format_RGB32); |
|
991 QPainter p(&pm); |
|
992 p.setTransform(QTransform(-1,0,0,-1,173.5,153.5)); |
|
993 qDrawBorderPixmap(&p, QRect(0,0,75,105), QMargins(39,39,39,39), src, QRect(0,0,79,79), QMargins(39,39,39,39), |
|
994 QTileRules(Qt::StretchTile,Qt::StretchTile), 0); |
|
995 } |
|
996 |
973 void tst_QPainter::drawLine_data() |
997 void tst_QPainter::drawLine_data() |
974 { |
998 { |
975 QTest::addColumn<QLine>("line"); |
999 QTest::addColumn<QLine>("line"); |
976 |
1000 |
977 QTest::newRow("0-45") << QLine(0, 20, 100, 0); |
1001 QTest::newRow("0-45") << QLine(0, 20, 100, 0); |
2913 if (format == QImage::Format_Indexed8) |
2937 if (format == QImage::Format_Indexed8) |
2914 continue; |
2938 continue; |
2915 |
2939 |
2916 QImage img(2, 2, format); |
2940 QImage img(2, 2, format); |
2917 |
2941 |
2918 if (img.numColors() > 0) { |
2942 if (img.colorCount() > 0) { |
2919 img.setColor(0, QColor(colorPairs[j][0]).rgba()); |
2943 img.setColor(0, QColor(colorPairs[j][0]).rgba()); |
2920 img.setColor(1, QColor(colorPairs[j][1]).rgba()); |
2944 img.setColor(1, QColor(colorPairs[j][1]).rgba()); |
2921 } |
2945 } |
2922 |
2946 |
2923 img.fill(0x0); |
2947 img.fill(0x0); |
2935 |
2959 |
2936 // drawing a transparent image on top of another image |
2960 // drawing a transparent image on top of another image |
2937 // should not change the image |
2961 // should not change the image |
2938 QCOMPARE(original, img); |
2962 QCOMPARE(original, img); |
2939 |
2963 |
2940 if (img.numColors() == 0) |
2964 if (img.colorCount() == 0) |
2941 continue; |
2965 continue; |
2942 |
2966 |
2943 for (int k = 0; k < 2; ++k) { |
2967 for (int k = 0; k < 2; ++k) { |
2944 QPainter p(&img); |
2968 QPainter p(&img); |
2945 p.fillRect(0, 0, 2, 2, colorPairs[j][k]); |
2969 p.fillRect(0, 0, 2, 2, colorPairs[j][k]); |
4191 QVERIFY(testCompositionMode( 63, 63, 31, QPainter::CompositionMode_HardLight)); |
4215 QVERIFY(testCompositionMode( 63, 63, 31, QPainter::CompositionMode_HardLight)); |
4192 QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_HardLight)); |
4216 QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_HardLight)); |
4193 |
4217 |
4194 QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_SoftLight)); |
4218 QVERIFY(testCompositionMode(255, 255, 255, QPainter::CompositionMode_SoftLight)); |
4195 QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_SoftLight)); |
4219 QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_SoftLight)); |
4196 QVERIFY(testCompositionMode(127, 127, 127, QPainter::CompositionMode_SoftLight)); |
4220 QVERIFY(testCompositionMode(127, 127, 126, QPainter::CompositionMode_SoftLight)); |
4197 QVERIFY(testCompositionMode( 63, 63, 86, QPainter::CompositionMode_SoftLight)); |
4221 QVERIFY(testCompositionMode( 63, 63, 39, QPainter::CompositionMode_SoftLight)); |
4198 QVERIFY(testCompositionMode(127, 63, 63, QPainter::CompositionMode_SoftLight)); |
4222 QVERIFY(testCompositionMode(127, 63, 62, QPainter::CompositionMode_SoftLight)); |
4199 |
4223 |
4200 QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Difference)); |
4224 QVERIFY(testCompositionMode(255, 255, 0, QPainter::CompositionMode_Difference)); |
4201 QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Difference)); |
4225 QVERIFY(testCompositionMode( 0, 0, 0, QPainter::CompositionMode_Difference)); |
4202 QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Difference)); |
4226 QVERIFY(testCompositionMode(255, 0, 255, QPainter::CompositionMode_Difference)); |
4203 QVERIFY(testCompositionMode(127, 127, 0, QPainter::CompositionMode_Difference)); |
4227 QVERIFY(testCompositionMode(127, 127, 0, QPainter::CompositionMode_Difference)); |
4350 |
4374 |
4351 // Try ending an inactive painter. |
4375 // Try ending an inactive painter. |
4352 QVERIFY(!p.end()); |
4376 QVERIFY(!p.end()); |
4353 } |
4377 } |
4354 |
4378 |
|
4379 void tst_QPainter::setPenColor(QPainter& p) |
|
4380 { |
|
4381 p.setPen(Qt::NoPen); |
|
4382 |
|
4383 // Setting color, then style |
|
4384 // Should work even though the pen is "NoPen with color", temporarily. |
|
4385 QPen newPen(p.pen()); |
|
4386 newPen.setColor(Qt::red); |
|
4387 QCOMPARE(p.pen().style(), newPen.style()); |
|
4388 QCOMPARE(p.pen().style(), Qt::NoPen); |
|
4389 p.setPen(newPen); |
|
4390 |
|
4391 QCOMPARE(p.pen().color().name(), QString("#ff0000")); |
|
4392 |
|
4393 QPen newPen2(p.pen()); |
|
4394 newPen2.setStyle(Qt::SolidLine); |
|
4395 p.setPen(newPen2); |
|
4396 |
|
4397 QCOMPARE(p.pen().color().name(), QString("#ff0000")); |
|
4398 } |
|
4399 |
|
4400 void tst_QPainter::setPenColorOnImage() |
|
4401 { |
|
4402 QImage img(QSize(10, 10), QImage::Format_ARGB32_Premultiplied); |
|
4403 QPainter p(&img); |
|
4404 setPenColor(p); |
|
4405 } |
|
4406 |
|
4407 void tst_QPainter::setPenColorOnPixmap() |
|
4408 { |
|
4409 QPixmap pix(10, 10); |
|
4410 QPainter p(&pix); |
|
4411 setPenColor(p); |
|
4412 } |
|
4413 |
|
4414 class TestProxy : public QGraphicsProxyWidget |
|
4415 { |
|
4416 public: |
|
4417 TestProxy() : QGraphicsProxyWidget() {} |
|
4418 void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) |
|
4419 { |
|
4420 QGraphicsProxyWidget::paint(painter, option, widget); |
|
4421 deviceTransform = painter->deviceTransform(); |
|
4422 } |
|
4423 QTransform deviceTransform; |
|
4424 }; |
|
4425 |
|
4426 class TestWidget : public QWidget |
|
4427 { |
|
4428 Q_OBJECT |
|
4429 public: |
|
4430 TestWidget() : QWidget(), painted(false) {} |
|
4431 void paintEvent(QPaintEvent *) |
|
4432 { |
|
4433 QPainter p(this); |
|
4434 deviceTransform = p.deviceTransform(); |
|
4435 worldTransform = p.worldTransform(); |
|
4436 painted = true; |
|
4437 } |
|
4438 QTransform deviceTransform; |
|
4439 QTransform worldTransform; |
|
4440 bool painted; |
|
4441 }; |
|
4442 |
|
4443 void tst_QPainter::QTBUG5939_attachPainterPrivate() |
|
4444 { |
|
4445 QWidget *w = new QWidget(); |
|
4446 QGraphicsScene *scene = new QGraphicsScene(); |
|
4447 QGraphicsView *view = new QGraphicsView(scene, w); |
|
4448 view->move(50 ,50); |
|
4449 TestProxy *proxy = new TestProxy(); |
|
4450 TestWidget *widget = new TestWidget(); |
|
4451 proxy->setWidget(widget); |
|
4452 scene->addItem(proxy); |
|
4453 proxy->rotate(45); |
|
4454 w->resize(scene->sceneRect().size().toSize()); |
|
4455 |
|
4456 w->show(); |
|
4457 QTRY_VERIFY(widget->painted); |
|
4458 |
|
4459 QVERIFY(widget->worldTransform.isIdentity()); |
|
4460 QCOMPARE(widget->deviceTransform, proxy->deviceTransform); |
|
4461 } |
|
4462 |
4355 QTEST_MAIN(tst_QPainter) |
4463 QTEST_MAIN(tst_QPainter) |
|
4464 |
4356 #include "tst_qpainter.moc" |
4465 #include "tst_qpainter.moc" |