]> Creatis software - clitk.git/blobdiff - vv/vvMainWindow.cxx
Simplified image snapshot code
[clitk.git] / vv / vvMainWindow.cxx
index d210d118bf2ae5c71ed4e215964130ed02d065f4..a21ec0847fc6ad420d2af4dcf7f327c09bf20d6d 100644 (file)
@@ -93,7 +93,7 @@
 #define COLUMN_RELOAD_IMAGE 6
 #define COLUMN_IMAGE_NAME 7
 
-#define EXTENSIONS "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.mha *.hdr *.vox *.his *.xdr *.SCAN )"
+#define EXTENSIONS "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.mha *.hdr *.vox *.his *.xdr *.SCAN *.nii *.nrrd *.nhdr)"
 
 /*Data Tree values
   0,Qt::UserRole full filename
@@ -2257,11 +2257,17 @@ void vvMainWindow::SaveAs()
   } else if (dimension == 3) {
     OutputListeFormat.push_back(".mhd");
     OutputListeFormat.push_back(".mha");
+    OutputListeFormat.push_back(".nii");
+    OutputListeFormat.push_back(".nrrd");
+    OutputListeFormat.push_back(".nhdr");
     OutputListeFormat.push_back(".hdr");
     OutputListeFormat.push_back(".vox");
   } else if (dimension == 4) {
     OutputListeFormat.push_back(".mhd");
     OutputListeFormat.push_back(".mha");
+    OutputListeFormat.push_back(".nii");
+    OutputListeFormat.push_back(".nrrd");
+    OutputListeFormat.push_back(".nhdr");
   }
   QString Extensions = "AllFiles(*.*)";
   for (int i = 0; i < OutputListeFormat.count(); i++) {
@@ -2745,43 +2751,39 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget)
     vtkImageData *image = w2i->GetOutput();
 
     const char *ext = fileName.toStdString().c_str() + strlen(fileName.toStdString().c_str()) - 4;
-    if (!strcmp(ext, ".bmp")) {
-      vtkBMPWriter *bmp = vtkBMPWriter::New();
-      bmp->SetInput(image);
-      bmp->SetFileName(fileName.toStdString().c_str());
-      bmp->Write();
-      bmp->Delete();
-    } else if (!strcmp(ext, ".tif")) {
-      vtkTIFFWriter *tif = vtkTIFFWriter::New();
-      tif->SetInput(image);
-      tif->SetFileName(fileName.toStdString().c_str());
-      tif->Write();
-      tif->Delete();
-    } else if (!strcmp(ext, ".ppm")) {
-      vtkPNMWriter *pnm = vtkPNMWriter::New();
-      pnm->SetInput(image);
-      pnm->SetFileName(fileName.toStdString().c_str());
-      pnm->Write();
-      pnm->Delete();
-    } else if (!strcmp(ext, ".png")) {
-      vtkPNGWriter *png = vtkPNGWriter::New();
-      png->SetInput(image);
-      png->SetFileName(fileName.toStdString().c_str());
-      png->Write();
-      png->Delete();
-    } else if (!strcmp(ext, ".jpg")) {
-      vtkJPEGWriter *jpg = vtkJPEGWriter::New();
-      jpg->SetInput(image);
-      jpg->SetFileName(fileName.toStdString().c_str());
-      jpg->Write();
-      jpg->Delete();
+
+    // Image
+    vtkImageWriter *imgwriter = NULL;
+    if (!strcmp(ext, ".bmp"))
+      imgwriter = vtkBMPWriter::New();
+    else if (!strcmp(ext, ".tif"))
+      imgwriter = vtkTIFFWriter::New();
+    else if (!strcmp(ext, ".ppm"))
+      imgwriter = vtkPNMWriter::New();
+    else if (!strcmp(ext, ".png"))
+      imgwriter = vtkPNGWriter::New();
+    else if (!strcmp(ext, ".jpg"))
+      imgwriter = vtkJPEGWriter::New();
+
+    // Snapshot image if not null
+    if(imgwriter!=NULL) {
+      imgwriter->SetInput(image);
+      imgwriter->SetFileName(fileName.toStdString().c_str());
+      imgwriter->Write();
+      return;
 #ifdef VTK_USE_FFMPEG_ENCODER
     } else if (!strcmp(ext, ".avi")) {
       vtkFFMPEGWriter *mpg = vtkFFMPEGWriter::New();
       mpg->SetInput(image);
       mpg->SetFileName(fileName.toStdString().c_str());
       mpg->SetQuality(2);
-      mpg->SetRate(5);
+      bool ok;
+      int fps = QInputDialog::getInt(this, tr("Number of frames per second"),
+                                     tr("FPS:"), 5, 0, 1024, 1, &ok);
+      if(!ok)
+        fps = 5;
+      mpg->SetRate(fps);
+      mpg->SetBitRateTolerance(int(ceil(12.0*1024*1024/fps)));
       mpg->Start();
 
       vvImage * vvImg = mSlicerManagers[smIndex]->GetImage();