X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvLabelImageLoaderWidget.cxx;h=482d86b4c1453c9dcd712def7e709a0bfe8ec96d;hb=f57924a2649534451ac1ae5a2bdc63e0b6a0092d;hp=b10f00ffb813e0eb2ebc2447fb85cec6a2b81af5;hpb=558ee3aac5989966a5695cf1ab361317bccfcc4a;p=clitk.git diff --git a/vv/vvLabelImageLoaderWidget.cxx b/vv/vvLabelImageLoaderWidget.cxx index b10f00f..482d86b 100644 --- a/vv/vvLabelImageLoaderWidget.cxx +++ b/vv/vvLabelImageLoaderWidget.cxx @@ -15,9 +15,13 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html ======================================================================-====*/ + #ifndef VVTOOLINPUTSELECTORWIDGET_CXX #define VVTOOLINPUTSELECTORWIDGET_CXX +// clitk +#include + // vv #include "vvLabelImageLoaderWidget.h" #include "vvSlicerManager.h" @@ -60,10 +64,16 @@ double vvLabelImageLoaderWidget::GetBackgroundValue() //------------------------------------------------------------------------------ -void vvLabelImageLoaderWidget::OpenImage() +void vvLabelImageLoaderWidget::SetText(QString t) { - DD("OpenImage"); + mOpenLabel->setText(t); +} +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +void vvLabelImageLoaderWidget::OpenImage() +{ // Browse for file QString Extensions = "Images files ( *.mhd *.hdr *.his)"; Extensions += ";;All Files (*)"; @@ -72,54 +82,49 @@ void vvLabelImageLoaderWidget::OpenImage() "",Extensions); //mMainWindow->GetInputPathName() if (filename == "") return; // nothing to do + itk::ImageIOBase::Pointer header = clitk::readImageHeader(filename.toStdString()); + // Open Image - vvImageReader * mReader = new vvImageReader; - mReader->SetInputFilename(filename.toStdString()); - mReader->Update(IMAGE); - if (mReader->GetLastError().size() != 0) { + QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + if (!header) { std::cerr << "Error while reading " << filename.toStdString() << std::endl; - QString error = "Cannot open file \n"; - error += mReader->GetLastError().c_str(); + QString error = QString("Cannot open file %1\n").arg(filename); QMessageBox::information(this,tr("Reading problem"),error); - delete mReader; return; } // Create output pointer - m_Output = vvImage::New(); - - // Check type and convert if needed - vvImage::Pointer temp = mReader->GetOutput(); - - if (temp->GetNumberOfDimensions() != 3) { + if (header->GetNumberOfDimensions() != 3) { std::cerr << "Error while reading " << filename.toStdString() << std::endl; QString error; error = QString("Cannot open file %1 because it is not 3D\n").arg(filename); QMessageBox::information(this,tr("Reading problem"),error); - delete mReader; return; } - DD(temp->GetScalarTypeAsITKString()); - if (temp->GetScalarTypeAsITKString() != "unsigned_char") { - DD("Cast"); - vtkImageData * p = vtkImageData::New(); - p->SetExtent(temp->GetFirstVTKImageData()->GetExtent ()); // Only first ! could not be 4D - p->SetScalarTypeToUnsignedChar(); - p->AllocateScalars (); - p->CopyAndCastFrom(temp->GetFirstVTKImageData(), temp->GetFirstVTKImageData()->GetExtent ()); - m_Output->AddImage(p); - vvImageWriter * writer = new vvImageWriter; - writer->SetOutputFileName("a.mhd"); - writer->SetInput(m_Output); - writer->Update(); + // Convert to unsigned char while reading (if not already) + typedef itk::ImageFileReader< itk::Image< unsigned char, 3 > > ReaderType; + ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(filename.toStdString()); + reader->Update(); + + // Create vv image + m_Output = vvImage::New(); + try { + m_Output->AddItkImage( reader->GetOutput() ); } - else { - m_Output = temp; + catch ( itk::ExceptionObject & err ) { + std::cerr << "Error while reading " << filename.toStdString() << std::endl + << "The error is " << err << std::endl; + QString error; + error = QString("Cannot open file %1\n").arg(filename); + QMessageBox::information(this,tr("Reading problem"),error); + return; } - + // Set GUI mLabelInputInfo->setText(vtksys::SystemTools::GetFilenameName(filename.toStdString()).c_str()); + QApplication::restoreOverrideCursor(); emit accepted(); } //------------------------------------------------------------------------------