tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
changeset 22 79de32ba3296
parent 19 fcece45ef507
child 23 89e065397ea6
equal deleted inserted replaced
19:fcece45ef507 22:79de32ba3296
   275     item->reset();
   275     item->reset();
   276 
   276 
   277     // Make sure installing the effect triggers a repaint.
   277     // Make sure installing the effect triggers a repaint.
   278     CustomEffect *effect = new CustomEffect;
   278     CustomEffect *effect = new CustomEffect;
   279     item->setGraphicsEffect(effect);
   279     item->setGraphicsEffect(effect);
   280     QTest::qWait(50);
   280     QTRY_COMPARE(effect->numRepaints, 1);
   281     QCOMPARE(effect->numRepaints, 1);
   281     QTRY_COMPARE(item->numRepaints, 1);
   282     QCOMPARE(item->numRepaints, 1);
       
   283 
   282 
   284     // Make sure QPainter* and QStyleOptionGraphicsItem* stays persistent
   283     // Make sure QPainter* and QStyleOptionGraphicsItem* stays persistent
   285     // during QGraphicsEffect::draw/QGraphicsItem::paint.
   284     // during QGraphicsEffect::draw/QGraphicsItem::paint.
   286     QVERIFY(effect->m_painter);
   285     QVERIFY(effect->m_painter);
   287     QCOMPARE(effect->m_painter, item->m_painter);
   286     QCOMPARE(effect->m_painter, item->m_painter);
   291     effect->reset();
   290     effect->reset();
   292     item->reset();
   291     item->reset();
   293 
   292 
   294     // Make sure updating the source triggers a repaint.
   293     // Make sure updating the source triggers a repaint.
   295     item->update();
   294     item->update();
   296     QTest::qWait(50);
   295     QTRY_COMPARE(effect->numRepaints, 1);
   297     QCOMPARE(effect->numRepaints, 1);
   296     QTRY_COMPARE(item->numRepaints, 1);
   298     QCOMPARE(item->numRepaints, 1);
       
   299     QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceInvalidated);
   297     QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceInvalidated);
   300     effect->reset();
   298     effect->reset();
   301     item->reset();
   299     item->reset();
   302 
   300 
   303     // Make sure changing the effect's bounding rect triggers a repaint.
   301     // Make sure changing the effect's bounding rect triggers a repaint.
   304     effect->setMargin(20);
   302     effect->setMargin(20);
   305     QTest::qWait(50);
   303     QTRY_COMPARE(effect->numRepaints, 1);
   306     QCOMPARE(effect->numRepaints, 1);
   304     QTRY_COMPARE(item->numRepaints, 1);
   307     QCOMPARE(item->numRepaints, 1);
       
   308     effect->reset();
   305     effect->reset();
   309     item->reset();
   306     item->reset();
   310 
   307 
   311     // Make sure change the item's bounding rect triggers a repaint.
   308     // Make sure change the item's bounding rect triggers a repaint.
   312     item->setRect(0, 0, 50, 50);
   309     item->setRect(0, 0, 50, 50);
   313     QTest::qWait(50);
   310     QTRY_COMPARE(effect->numRepaints, 1);
   314     QCOMPARE(effect->numRepaints, 1);
   311     QTRY_COMPARE(item->numRepaints, 1);
   315     QCOMPARE(item->numRepaints, 1);
       
   316     QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceBoundingRectChanged);
   312     QVERIFY(effect->m_sourceChangedFlags & QGraphicsEffect::SourceBoundingRectChanged);
   317     effect->reset();
   313     effect->reset();
   318     item->reset();
   314     item->reset();
   319 
   315 
   320     // Make sure the effect is the one to issue a repaint of the item.
   316     // Make sure the effect is the one to issue a repaint of the item.
   321     effect->doNothingInDraw = true;
   317     effect->doNothingInDraw = true;
   322     item->update();
   318     item->update();
   323     QTest::qWait(50);
   319     QTRY_COMPARE(effect->numRepaints, 1);
   324     QCOMPARE(effect->numRepaints, 1);
       
   325     QCOMPARE(item->numRepaints, 0);
   320     QCOMPARE(item->numRepaints, 0);
   326     effect->doNothingInDraw = false;
   321     effect->doNothingInDraw = false;
   327     effect->reset();
   322     effect->reset();
   328     item->reset();
   323     item->reset();
   329 
   324 
   334     QCOMPARE(item->numRepaints, 1);
   329     QCOMPARE(item->numRepaints, 1);
   335     effect->reset();
   330     effect->reset();
   336     item->reset();
   331     item->reset();
   337 
   332 
   338     effect->setEnabled(true);
   333     effect->setEnabled(true);
   339     QTest::qWait(50);
   334     QTRY_COMPARE(effect->numRepaints, 1);
   340     QCOMPARE(effect->numRepaints, 1);
   335     QTRY_COMPARE(item->numRepaints, 1);
   341     QCOMPARE(item->numRepaints, 1);
       
   342     effect->reset();
   336     effect->reset();
   343     item->reset();
   337     item->reset();
   344 
   338 
   345     // Effect is already enabled; nothing should happen.
   339     // Effect is already enabled; nothing should happen.
   346     effect->setEnabled(true);
   340     effect->setEnabled(true);
   350 
   344 
   351     // Make sure uninstalling an effect triggers a repaint.
   345     // Make sure uninstalling an effect triggers a repaint.
   352     QPointer<CustomEffect> ptr = effect;
   346     QPointer<CustomEffect> ptr = effect;
   353     item->setGraphicsEffect(0);
   347     item->setGraphicsEffect(0);
   354     QVERIFY(!ptr);
   348     QVERIFY(!ptr);
   355     QTest::qWait(50);
   349     QTRY_COMPARE(item->numRepaints, 1);
   356     QCOMPARE(item->numRepaints, 1);
       
   357 }
   350 }
   358 
   351 
   359 void tst_QGraphicsEffect::opacity()
   352 void tst_QGraphicsEffect::opacity()
   360 {
   353 {
   361     // Make sure the painter's opacity is correct in QGraphicsEffect::draw.
   354     // Make sure the painter's opacity is correct in QGraphicsEffect::draw.
   513     view.show();
   506     view.show();
   514     QTest::qWaitForWindowShown(&view);
   507     QTest::qWaitForWindowShown(&view);
   515     QTRY_VERIFY(effect->repaints >= 1);
   508     QTRY_VERIFY(effect->repaints >= 1);
   516 
   509 
   517     item->rotate(180);
   510     item->rotate(180);
   518     QTest::qWait(50);
       
   519 
   511 
   520     QTRY_VERIFY(effect->repaints >= 2);
   512     QTRY_VERIFY(effect->repaints >= 2);
   521 }
   513 }
   522 
   514 
   523 class DeviceEffect : public QGraphicsEffect
   515 class DeviceEffect : public QGraphicsEffect
   558 
   550 
   559     QTRY_VERIFY(item->numRepaints >= 1);
   551     QTRY_VERIFY(item->numRepaints >= 1);
   560     int numRepaints = item->numRepaints;
   552     int numRepaints = item->numRepaints;
   561 
   553 
   562     item->translate(10, 0);
   554     item->translate(10, 0);
   563     QTest::qWait(50);
   555 
   564 
   556     QTRY_VERIFY(item->numRepaints == numRepaints);
   565     QVERIFY(item->numRepaints == numRepaints);
       
   566 }
   557 }
   567 
   558 
   568 void tst_QGraphicsEffect::inheritOpacity()
   559 void tst_QGraphicsEffect::inheritOpacity()
   569 {
   560 {
   570     QGraphicsScene scene;
   561     QGraphicsScene scene;
   586     QTRY_VERIFY(item->numRepaints >= 1);
   577     QTRY_VERIFY(item->numRepaints >= 1);
   587 
   578 
   588     int numRepaints = item->numRepaints;
   579     int numRepaints = item->numRepaints;
   589 
   580 
   590     rectItem->setOpacity(1);
   581     rectItem->setOpacity(1);
   591     QTest::qWait(50);
       
   592 
   582 
   593     // item should have been rerendered due to opacity changing
   583     // item should have been rerendered due to opacity changing
   594     QTRY_VERIFY(item->numRepaints > numRepaints);
   584     QTRY_VERIFY(item->numRepaints > numRepaints);
   595 }
   585 }
   596 
   586