X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.cxx;h=e53841950d599b2b1b1f8d1d29db7a2658c8f2af;hb=573d80d0f7a17607d2ee883c21c940c0ba020282;hp=5fec7b2091d91125aeec04ebfb0182f1e0767db0;hpb=451f8e875ec446efa2235abc2085fcf6ec67f523;p=clitk.git diff --git a/vv/vvMainWindow.cxx b/vv/vvMainWindow.cxx index 5fec7b2..e538419 100644 --- a/vv/vvMainWindow.cxx +++ b/vv/vvMainWindow.cxx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #include #include @@ -42,7 +42,6 @@ #include "vvMesh.h" #include "vvStructSelector.h" #include "vvMeshReader.h" -#include "vvConstants.h" #include "clitkConfiguration.h" // ITK include @@ -66,7 +65,10 @@ #include #include #include -#include +#include +#ifdef VTK_USE_MPEG2_ENCODER + #include +#endif #include #include @@ -602,7 +604,7 @@ void vvMainWindow::MergeImages() } } if (vector.size() > 0) - LoadImages(vector, MERGED); + LoadImages(vector, vvImageReader::MERGED); } //------------------------------------------------------------------------------ @@ -619,7 +621,7 @@ void vvMainWindow::SliceImages() std::vector vector; for (int i = 0; i < files.size(); i++) vector.push_back(files[i].toStdString()); - LoadImages(vector, SLICED); + LoadImages(vector, vvImageReader::SLICED); } //------------------------------------------------------------------------------ @@ -681,7 +683,7 @@ void vvMainWindow::MergeImagesWithTime() } sort(vector.begin(),vector.end()); if (vector.size() > 1) - LoadImages(vector, MERGEDWITHTIME); + LoadImages(vector, vvImageReader::MERGEDWITHTIME); else QMessageBox::warning(this,tr("Reading problem"),"You need to select at least two images to merge images with time.\nIf you only want to open one image, please use the \"Open Image\" function."); } @@ -696,7 +698,7 @@ void vvMainWindow::OpenDicom() std::cout << "dicomSeriesSelector " << std::endl; if (dicomSeriesSelector->exec() == QDialog::Accepted) { files = *(dicomSeriesSelector->GetFilenames()); - LoadImages(files,DICOM); + LoadImages(files, vvImageReader::DICOM); } } //------------------------------------------------------------------------------ @@ -714,7 +716,7 @@ void vvMainWindow::OpenImages() std::vector vector; for (int i = 0; i < files.size(); i++) vector.push_back(files[i].toStdString()); - LoadImages(vector, IMAGE); + LoadImages(vector, vvImageReader::IMAGE); } //------------------------------------------------------------------------------ void vvMainWindow::OpenRecentImage() @@ -723,7 +725,7 @@ void vvMainWindow::OpenRecentImage() std::vector images; images.push_back(caller->text().toStdString()); mInputPathName = itksys::SystemTools::GetFilenamePath(images[0]).c_str(); - LoadImages(images,IMAGE); + LoadImages(images, vvImageReader::IMAGE); } //------------------------------------------------------------------------------ @@ -742,17 +744,17 @@ void vvMainWindow::OpenImageWithTime() for (int i = 0; i < files.size(); i++) { vector.push_back(files[i].toStdString()); } - LoadImages(vector, IMAGEWITHTIME); + LoadImages(vector, vvImageReader::IMAGEWITHTIME); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvMainWindow::LoadImages(std::vector files, LoadedImageType filetype) +void vvMainWindow::LoadImages(std::vector files, vvImageReader::LoadedImageType filetype) { //Separate the way to open images and dicoms int fileSize; - if (filetype == IMAGE || filetype == IMAGEWITHTIME) + if (filetype == vvImageReader::IMAGE || filetype == vvImageReader::IMAGEWITHTIME) fileSize = files.size(); else fileSize = 1; @@ -761,7 +763,7 @@ void vvMainWindow::LoadImages(std::vector files, LoadedImageType fi std::vector nSlices; nSlices.resize(files.size()); std::fill(nSlices.begin(), nSlices.end(), 1); - if (filetype == SLICED) { + if (filetype == vvImageReader::SLICED) { for (int i = 0; i < fileSize; i++) { itk::ImageIOBase::Pointer header = clitk::readImageHeader(files[i]); QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); @@ -812,7 +814,7 @@ void vvMainWindow::LoadImages(std::vector files, LoadedImageType fi // Change filename if an image with the same already exist int number = GetImageDuplicateFilenameNumber(files[i] + std::string("_slice")); - if (filetype == IMAGE || filetype == IMAGEWITHTIME || filetype == SLICED) + if (filetype == vvImageReader::IMAGE || filetype == vvImageReader::IMAGEWITHTIME || filetype == vvImageReader::SLICED) SetImageSucceed = imageManager->SetImage(files[i],filetype, number, j); else { SetImageSucceed = imageManager->SetImages(files,filetype, number); @@ -1460,12 +1462,12 @@ void vvMainWindow::DisplaySliders(int slicer, int window) bool showVertical = false; if (mSlicerManagers[slicer]->GetSlicer(window)->GetImage()->GetNumberOfDimensions() > 3 || (mSlicerManagers[slicer]->GetSlicer(window)->GetImage()->GetNumberOfDimensions() > 2 - && mSlicerManagers[slicer]->GetType() != IMAGEWITHTIME - && mSlicerManagers[slicer]->GetType() != MERGEDWITHTIME)) + && mSlicerManagers[slicer]->GetType() != vvImageReader::IMAGEWITHTIME + && mSlicerManagers[slicer]->GetType() != vvImageReader::MERGEDWITHTIME)) showVertical = true; if (mSlicerManagers[slicer]->GetSlicer(window)->GetImage()->GetNumberOfDimensions() > 3 - || mSlicerManagers[slicer]->GetType() == IMAGEWITHTIME - || mSlicerManagers[slicer]->GetType() == MERGEDWITHTIME) + || mSlicerManagers[slicer]->GetType() == vvImageReader::IMAGEWITHTIME + || mSlicerManagers[slicer]->GetType() == vvImageReader::MERGEDWITHTIME) showHorizontal = true; if (showVertical) @@ -2543,6 +2545,9 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget) Extensions += "Images( *.bmp);;"; Extensions += "Images( *.tif);;"; Extensions += "Images( *.ppm)"; +#ifdef VTK_USE_FFMPEG_ENCODER + Extensions += "Images( *.avi)"; +#endif #ifdef VTK_USE_MPEG2_ENCODER Extensions += "Images( *.mpg)"; #endif @@ -2590,6 +2595,29 @@ void vvMainWindow::SaveScreenshot(QVTKWidget *widget) jpg->SetFileName(fileName.toStdString().c_str()); jpg->Write(); jpg->Delete(); +#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); + mpg->Start(); + + vvImage * vvImg = mSlicerManagers[smIndex]->GetImage(); + int nSlice = vvImg->GetVTKImages().size(); + for(int i=0; iSetNextTSlice(0); + vtkSmartPointer w2i = vtkSmartPointer::New(); + w2i->SetInput(widget->GetRenderWindow()); + w2i->Update(); + mpg->SetInput(w2i->GetOutput()); + mpg->Write(); + } + mpg->End(); + mpg->Delete(); +#endif #ifdef VTK_USE_MPEG2_ENCODER } else if (!strcmp(ext, ".mpg")) { vtkMPEG2Writer *mpg = vtkMPEG2Writer::New();