Added new QOpenGLPaintDevice test case in tst_QOpenGL.
authorSamuel Rødal <samuel.rodal@nokia.com>
Mon, 12 Sep 2011 11:01:30 +0000 (13:01 +0200)
committerGunnar Sletta <gunnar.sletta@nokia.com>
Mon, 12 Sep 2011 12:11:18 +0000 (14:11 +0200)
Change-Id: Ic56e4c236f52fbd5c570bb647d5d1f4e5f9e7924
Reviewed-on: http://codereview.qt-project.org/4662
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
tests/auto/qopengl/tst_qopengl.cpp

index 2f4bb0c..18e7e07 100644 (file)
@@ -54,6 +54,7 @@ private slots:
     void fboSimpleRendering();
     void fboRendering();
     void fboHandleNulledAfterContextDestroyed();
+    void openGLPaintDevice();
 };
 
 struct SharedResourceTracker
@@ -385,5 +386,46 @@ void tst_QOpenGL::fboHandleNulledAfterContextDestroyed()
     QCOMPARE(fbo->handle(), 0U);
 }
 
+void tst_QOpenGL::openGLPaintDevice()
+{
+    QWindow window;
+    window.setGeometry(0, 0, 128, 128);
+    window.create();
+
+    QOpenGLContext ctx;
+    ctx.create();
+
+    ctx.makeCurrent(&window);
+
+    QImage image(128, 128, QImage::Format_RGB32);
+    QPainter p(&image);
+    p.fillRect(0, 0, image.width() / 2, image.height() / 2, Qt::red);
+    p.fillRect(image.width() / 2, 0, image.width() / 2, image.height() / 2, Qt::green);
+    p.fillRect(image.width() / 2, image.height() / 2, image.width() / 2, image.height() / 2, Qt::blue);
+    p.fillRect(0, image.height() / 2, image.width() / 2, image.height() / 2, Qt::white);
+    p.end();
+
+    QOpenGLFramebufferObject fbo(128, 128);
+    fbo.bind();
+
+    QOpenGLPaintDevice device(128, 128);
+    p.begin(&device);
+    p.fillRect(0, 0, image.width() / 2, image.height() / 2, Qt::red);
+    p.fillRect(image.width() / 2, 0, image.width() / 2, image.height() / 2, Qt::green);
+    p.fillRect(image.width() / 2, image.height() / 2, image.width() / 2, image.height() / 2, Qt::blue);
+    p.fillRect(0, image.height() / 2, image.width() / 2, image.height() / 2, Qt::white);
+    p.end();
+
+    QCOMPARE(image, fbo.toImage().convertToFormat(QImage::Format_RGB32));
+
+    QSKIP("Image / pixmap painting needs to be implemented", SkipSingle);
+    p.begin(&device);
+    p.drawImage(0, 0, image);
+    p.end();
+
+    QCOMPARE(image, fbo.toImage().convertToFormat(QImage::Format_RGB32));
+}
+
+
 QTEST_MAIN(tst_QOpenGL)
 #include "tst_qopengl.moc"