X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.cxx;h=436a89f2ee1ead6b6fb892d1850b6de0d018ddbf;hb=cff13ef732b851bc663de9cb8c6742592179f516;hp=986d7b93cfd76cbf727c716d5966250ae5da6a4d;hpb=f8d48c8481db84a9f2a9c140bf19c0c987d1bd59;p=clitk.git diff --git a/vv/vvMainWindow.cxx b/vv/vvMainWindow.cxx index 986d7b9..436a89f 100644 --- a/vv/vvMainWindow.cxx +++ b/vv/vvMainWindow.cxx @@ -71,6 +71,9 @@ #include #include #include +#ifdef CLITK_EXPERIMENTAL +# include +#endif #ifdef VTK_USE_VIDEO_FOR_WINDOWS # include #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;