]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fixed a problem with performing of dumpView() in the background mode.
authorouv <ouv@opencascade.com>
Thu, 29 Jan 2009 13:51:24 +0000 (13:51 +0000)
committerouv <ouv@opencascade.com>
Thu, 29 Jan 2009 13:51:24 +0000 (13:51 +0000)
src/SVTK/SVTK_ViewWindow.cxx
src/SVTK/SVTK_ViewWindow.h

index e6ef8c945e674a35163ce6803a7e6702813f07d6..b5b67ddc70039a84d004374bd5053e0e0758fa06 100755 (executable)
@@ -819,13 +819,32 @@ void SVTK_ViewWindow::RemoveActor( VTKViewer_Actor* theActor,
   emit actorRemoved(theActor);
 }
 
+QImage SVTK_ViewWindow::dumpViewContent()
+{
+  vtkRenderWindow* aWindow = getRenderWindow();
+  int* aSize = aWindow->GetSize();
+  int aWidth = aSize[0];
+  int aHeight = aSize[1];
+  
+  unsigned char *aData = 
+    aWindow->GetRGBACharPixelData( 0, 0, aWidth-1, aHeight-1, 0 );
+  
+  QImage anImage( aData, aWidth, aHeight, QImage::Format_ARGB32 );
+
+  anImage = anImage.rgbSwapped();
+  anImage = anImage.mirrored();
+  return anImage;
+}
+
 /*!
   \return QImage, containing all scene rendering in window
 */
 QImage SVTK_ViewWindow::dumpView()
 {
-  QPixmap px = QPixmap::grabWindow( GetInteractor()->winId() );
-  return px.toImage();
+  if( myDumpImage.isNull() )
+    return dumpViewContent();
+  
+  return myDumpImage;
 }
 
 QString SVTK_ViewWindow::filter() const
@@ -872,8 +891,7 @@ bool SVTK_ViewWindow::dumpViewToFormat( const QImage& img, const QString& fileNa
 */
 void SVTK_ViewWindow::RefreshDumpImage()
 {
-  QPixmap px = QPixmap::grabWindow( GetInteractor()->winId() );
-  myDumpImage = px.toImage();
+  myDumpImage = dumpViewContent();
 }
 
 /*!
index a648fc345e29c3bdb1672d2b2160ee5d3ac472f2..3a07a757c419e2d18e6c14cbdbe119cef6c4ffd1 100755 (executable)
@@ -348,6 +348,8 @@ protected:
   void doSetVisualParameters( const QString& );
   void SetEventDispatcher(vtkObject* theDispatcher);
 
+  QImage dumpViewContent();
+
   virtual QString filter() const;
   virtual bool dumpViewToFormat( const QImage& img, const QString& fileName, const QString& format );