]> Creatis software - clitk.git/blobdiff - vv/vvMainWindow.cxx
Add RemoveActors
[clitk.git] / vv / vvMainWindow.cxx
index 986d7b93cfd76cbf727c716d5966250ae5da6a4d..436a89f2ee1ead6b6fb892d1850b6de0d018ddbf 100644 (file)
@@ -71,6 +71,9 @@
 #include <vtkPNGWriter.h>
 #include <vtkJPEGWriter.h>
 #include <vtkGenericMovieWriter.h>
+#ifdef CLITK_EXPERIMENTAL
+#  include <vvAnimatedGIFWriter.h>
+#endif
 #ifdef VTK_USE_VIDEO_FOR_WINDOWS
 #  include <vtkAVIWriter.h>
 #endif
@@ -2294,6 +2297,27 @@ void vvMainWindow::SaveAs()
       vvImageWriter::Pointer writer = vvImageWriter::New();
       writer->SetOutputFileName(fileName.toStdString());
       writer->SetInput(mSlicerManagers[index]->GetImage());
+
+      // Check on transform and prompt user
+      writer->SetSaveTransform(false);
+      bool bId = true;
+      for(int i=0; i<4; i++)
+        for(int j=0; j<4; j++) {
+          double elt = mSlicerManagers[index]->GetImage()->GetTransform()->GetMatrix()->GetElement(i,j);
+          if(i==j && elt!=1.)
+            bId = false;
+          if(i!=j && elt!=0.)
+            bId = false;
+        }
+      if( !bId ) {
+        QString warning = "The image has an associated linear transform. Do you want to save it along?";
+        QMessageBox msgBox(QMessageBox::Warning, tr("Save transform"), warning, 0, this);
+        msgBox.addButton(tr("Yes"), QMessageBox::AcceptRole);
+        msgBox.addButton(tr("No"), QMessageBox::RejectRole);
+        if (msgBox.exec() == QMessageBox::AcceptRole)
+          writer->SetSaveTransform(true);
+      }
+
       writer->Update();
       QApplication::restoreOverrideCursor();
       if (writer->GetLastError().size()) {
@@ -2735,11 +2759,14 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget)
   Extensions += "Images( *.bmp);;";
   Extensions += "Images( *.tif);;";
   Extensions += "Images( *.ppm)";
-#ifdef VTK_USE_FFMPEG_ENCODER
-  Extensions += "Images( *.avi)";
+#if defined(VTK_USE_FFMPEG_ENCODER) || defined(VTK_USE_VIDEO_FOR_WINDOWS)
+  Extensions += ";;Video( *.avi)";
 #endif
 #ifdef VTK_USE_MPEG2_ENCODER
-  Extensions += "Images( *.mpg)";
+  Extensions += ";;Video( *.mpg)";
+#endif
+#ifdef CLITK_EXPERIMENTAL
+  Extensions += ";;Video( *.gif)";
 #endif
 
   int smIndex=GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
@@ -2779,13 +2806,32 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget)
 
     // Video
     vtkGenericMovieWriter *vidwriter = NULL;
+#ifdef CLITK_EXPERIMENTAL
+    if (!strcmp(ext, ".gif")) {
+      vvAnimatedGIFWriter *gif = vvAnimatedGIFWriter::New();
+      vidwriter = gif;
+
+      // FPS
+      bool ok;
+      int fps = QInputDialog::getInteger(this, tr("Number of frames per second"),
+                                     tr("FPS:"), 5, 0, 1000, 1, &ok);
+      if(ok)
+        gif->SetRate(fps);
+
+      // Loops
+      int loops = QInputDialog::getInteger(this, tr("Loops"),
+                                     tr("Number of loops (0 means infinite):"), 0, 0, 1000000000, 1, &ok);
+      if(ok)
+        gif->SetLoops(loops);
+    }
+#endif
 #ifdef VTK_USE_VIDEO_FOR_WINDOWS
     if (!strcmp(ext, ".avi")) {
       vtkAVIWriter *mpg = vtkAVIWriter::New();
       vidwriter = mpg;
       mpg->SetQuality(2);
       bool ok;
-      int fps = QInputDialog::getInt(this, tr("Number of frames per second"),
+      int fps = QInputDialog::getInteger(this, tr("Number of frames per second"),
                                      tr("FPS:"), 5, 0, 1024, 1, &ok);
       if(!ok)
         fps = 5;
@@ -2798,7 +2844,7 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget)
       vidwriter = mpg;
       mpg->SetQuality(2);
       bool ok;
-      int fps = QInputDialog::getInt(this, tr("Number of frames per second"),
+      int fps = QInputDialog::getInteger(this, tr("Number of frames per second"),
                                      tr("FPS:"), 5, 0, 1024, 1, &ok);
       if(!ok)
         fps = 5;