X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.cxx;h=303ab3a8b60e1ddb8dcfadfe9ecb6e5fc00b299d;hb=9b9e0b969b87e4e5799436d503e9cde6ea551ca7;hp=9dbd407e4168aee728bc700f638ca0695bc0bd42;hpb=bbb9427a59a56c9e9f3a139814adb104031eae2b;p=clitk.git diff --git a/vv/vvMainWindow.cxx b/vv/vvMainWindow.cxx index 9dbd407..303ab3a 100644 --- a/vv/vvMainWindow.cxx +++ b/vv/vvMainWindow.cxx @@ -2297,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()) { @@ -2336,8 +2357,6 @@ void vvMainWindow::SaveCurrentStateAs(const std::string& stateFile) { vvSaveState save_state; save_state.Run(this, stateFile); - - std::cout << "void vvMainWindow::SaveCurrentState()" << std::endl; } //------------------------------------------------------------------------------ @@ -2760,19 +2779,19 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget) w2i->Update(); vtkImageData *image = w2i->GetOutput(); - const char *ext = fileName.toStdString().c_str() + strlen(fileName.toStdString().c_str()) - 4; + std::string ext(itksys::SystemTools::GetFilenameLastExtension(fileName.toStdString())); // Image vtkImageWriter *imgwriter = NULL; - if (!strcmp(ext, ".bmp")) + if (ext==".bmp") imgwriter = vtkBMPWriter::New(); - else if (!strcmp(ext, ".tif")) + else if (ext==".tif") imgwriter = vtkTIFFWriter::New(); - else if (!strcmp(ext, ".ppm")) + else if (ext==".ppm") imgwriter = vtkPNMWriter::New(); - else if (!strcmp(ext, ".png")) + else if (ext==".png") imgwriter = vtkPNGWriter::New(); - else if (!strcmp(ext, ".jpg")) + else if (ext==".jpg") imgwriter = vtkJPEGWriter::New(); // Snapshot image if not null @@ -2785,32 +2804,32 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget) // Video vtkGenericMovieWriter *vidwriter = NULL; -#ifdef CLITK_EXPERIMENTAL - if (!strcmp(ext, ".gif")) { +#if CLITK_EXPERIMENTAL == 1 + if (ext==".gif") { vvAnimatedGIFWriter *gif = vvAnimatedGIFWriter::New(); vidwriter = gif; // FPS 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, 1000, 1, &ok); if(ok) gif->SetRate(fps); // Loops - int loops = QInputDialog::getInt(this, tr("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")) { + if (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; @@ -2818,12 +2837,12 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget) } #endif #ifdef VTK_USE_FFMPEG_ENCODER - if (!strcmp(ext, ".avi")) { + if (ext==".avi") { vtkFFMPEGWriter *mpg = vtkFFMPEGWriter::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; @@ -2832,7 +2851,7 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget) } #endif #ifdef VTK_USE_MPEG2_ENCODER - if (!strcmp(ext, ".mpg")) { + if (ext==".mpg") { vtkMPEG2Writer *mpg = vtkMPEG2Writer::New(); vidwriter = mpg; }