Salome HOME
Merge branch 'BR_2017' of ssh://git.salome-platform.org/modules/hydro into BR_2017
[modules/hydro.git] / src / HYDRO_tests / TestViewer.cxx
index 0a629299dd5e9ba0ebda0daf2a0b7cc2e90a7498..d02aa1f7dedd21bf163e6e5914fff27afebb36b9 100644 (file)
@@ -186,6 +186,7 @@ void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll,
   if( isFitAll )
     fitAll();
 }
+
 void TestViewer::show( const TopoDS_Shape& theShape, int theMode, bool isFitAll, const char* theKey,
                        int theUIANb, int theVIANb)
 {
@@ -277,6 +278,21 @@ bool AreImagesEqual( const QImage& theImage1, const QImage& theImage2, double th
   return true;
 }
 
+QImage TestViewer::diff( const QImage& theExpectedRefImage, const QImage& theActualImage )
+{
+  const QImage::Format aFormat = QImage::Format_RGB32;
+
+  QImage anExpectedRefImage = theExpectedRefImage.convertToFormat( aFormat );
+  QImage anActualImage = theActualImage.convertToFormat( aFormat );
+
+  QImage aDiff( anExpectedRefImage.width(), anExpectedRefImage.height(), aFormat );
+  QPainter aPainter( &aDiff );
+  aPainter.drawImage( 0, 0, anExpectedRefImage );
+  aPainter.setCompositionMode( QPainter::RasterOp_SourceXorDestination );
+  aPainter.drawImage( 0, 0, anActualImage );
+  return aDiff;
+}
+
 bool TestViewer::AssertImages( QString& theMessage, const QImage* theImage, const char* theCase, bool swapRGB )
 {
   QImage anActualImage;
@@ -321,11 +337,7 @@ bool TestViewer::AssertImages( QString& theMessage, const QImage* theImage, cons
   //std::cout << anActualImage.width() << "x" << anActualImage.height() << std::endl;
   theMessage = "The viewer contents does not correspond to the reference image: " + myKey;
   
-  QImage aDiff( anExpectedRefImage.width(), anExpectedRefImage.height(), QImage::Format_ARGB32 );
-  QPainter aPainter( &aDiff );
-  aPainter.drawImage( 0, 0, anExpectedRefImage );
-  aPainter.setCompositionMode( QPainter::RasterOp_SourceXorDestination );
-  aPainter.drawImage( 0, 0, anActualImage );
+  QImage aDiff = diff( anExpectedRefImage, anActualImage );
 
   QString aDiffFilePath = temp + "/" + myKey + "_diff.png";
   aDiff.save( aDiffFilePath );