X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaImageIOImageReader.cpp;h=402ca6317b5a4de40412b9cfdaa9563aa9f34075;hb=refs%2Fheads%2Fvtk8itk4wx3-mingw64;hp=d93b186c839253fbac7aa11f29e30260c2de2e75;hpb=bf3660569b1baa8be10fc708f595efc66afe3334;p=creaImageIO.git diff --git a/src/creaImageIOImageReader.cpp b/src/creaImageIOImageReader.cpp index d93b186..402ca63 100644 --- a/src/creaImageIOImageReader.cpp +++ b/src/creaImageIOImageReader.cpp @@ -1,3 +1,31 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ +*/ + + #include #include #include @@ -26,16 +54,17 @@ namespace creaImageIO //===================================================================== ImageReader::ImageReader() : - mUnreadableImage(0), + mUnreadableImage(NULL), mLastFilename("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") { // std::cout << "#### ImageReader::ImageReader()"<(new VtkImageReader(vtkPNGReader::New(), "PNG", ".png"))); - Register(boost::shared_ptr(new VtkImageReader(vtkTIFFReader::New(), "JPEG", ".jpeg"))); - Register(boost::shared_ptr(new VtkImageReader(vtkJPEGReader::New()))); - Register(boost::shared_ptr(new VtkImageReader(vtkBMPReader::New()))); + if (mUnreadableImage!=NULL) return; + + + Register( boost::shared_ptr(new VtkImageReader(vtkPNGReader::New() , "PNG", ".png"))); + Register(boost::shared_ptr(new VtkImageReader(vtkTIFFReader::New(), "TIFF", ".tiff"))); + Register(boost::shared_ptr(new VtkImageReader(vtkJPEGReader::New(), "JPEG", ".jpeg"))); + Register(boost::shared_ptr(new VtkImageReader(vtkBMPReader::New(), "BMP", ".bmp"))); Register(boost::shared_ptr(new VtkImageReader(vtkSLCReader::New()))); Register(boost::shared_ptr(new VtkImageReader(vtkMetaImageReader::New(),"MHD",".mhd"))); // Register(new VtkImageReader(vtkGESignalReader::New())); @@ -49,16 +78,28 @@ namespace creaImageIO dim[0] = dim[1] = 128; dim[2] = 1; mUnreadableImage->SetDimensions ( dim ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 mUnreadableImage->SetScalarTypeToUnsignedChar(); - mUnreadableImage->AllocateScalars(); + mUnreadableImage->AllocateScalars(); +#else + mUnreadableImage->AllocateScalars(VTK_UNSIGNED_CHAR,1); +#endif + for (int i=0;iSetScalarComponentFromFloat(i,j,0,0,0); + { + for (int j=0;jSetScalarComponentFromFloat(i,j,0,0,0); + } // for j + } // for i + for (int i=0;iSetScalarComponentFromFloat(i,i,0,0,255); - mUnreadableImage->SetScalarComponentFromFloat(dim[0]-1-i,i,0,0,255); - } + { + mUnreadableImage->SetScalarComponentFromFloat(i,i,0,0,255); + mUnreadableImage->SetScalarComponentFromFloat(dim[0]-1-i,i,0,0,255); + } // for i } //===================================================================== @@ -71,11 +112,11 @@ namespace creaImageIO //delete (*i); // } // mReader.clear(); - if (mUnreadableImage!=0) - { - mUnreadableImage->Delete(); - mUnreadableImage = 0; - } + if (mUnreadableImage!=NULL) + { + mUnreadableImage->Delete(); + mUnreadableImage = NULL; + } } //===================================================================== @@ -83,7 +124,6 @@ namespace creaImageIO void ImageReader::Register(boost::shared_ptr r) { mReader.push_back(r); - } void ImageReader::UnRegister(const std::string i_val) @@ -103,7 +143,6 @@ namespace creaImageIO std::vector::iterator i ; for (i=mUnReader.begin(); i!=mUnReader.end(); i++) { - if ( (*i).c_str() == filename) { ok = false; @@ -118,6 +157,7 @@ namespace creaImageIO // Returns true iff the file is readable bool ImageReader::CanRead( const std::string& filename ) { + bool ok = false; if( !ShallNotRead(filename)) @@ -146,22 +186,23 @@ namespace creaImageIO // Reads the file (CanRead must be called before : no test here) vtkImageData* ImageReader::ReadImage( const std::string& filename) { - if (mLastFilename!=filename) - { - if (!CanRead(filename)) - { - vtkImageData* im = vtkImageData::New(); - im->ShallowCopy(mUnreadableImage); - return im; - } - } - vtkImageData* i = mLastReader->ReadImage(mLastFilename); - if (i==0) - { - i = vtkImageData::New(); - i->ShallowCopy(mUnreadableImage); - } - return i; + if (mLastFilename!=filename) + { + if (!CanRead(filename)) + { + vtkImageData* im = vtkImageData::New(); + im->ShallowCopy(mUnreadableImage); + return im; + } // CanRead + } // for mLastFilename + vtkImageData* i = mLastReader->ReadImage(mLastFilename); + if (i==NULL) + { + i = vtkImageData::New(); + i->ShallowCopy(mUnreadableImage); + } // i + + return i; } //===================================================================== // Another function to read attributes for a file