1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://www.centreleonberard.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18 #ifndef vvImageWriter_TXX
19 #define vvImageWriter_TXX
21 #include <itkImageFileWriter.h>
25 //====================================================================
26 template<unsigned int VImageDimension>
27 void vvImageWriter::UpdateWithDim(std::string OutputPixelType)
29 if (OutputPixelType == "short") {
30 UpdateWithDimAndOutputPixelType<short,VImageDimension>();
31 } else if (OutputPixelType == "unsigned short") {
32 UpdateWithDimAndOutputPixelType<unsigned short,VImageDimension>();
33 } else if (OutputPixelType == "unsigned_short") {
34 UpdateWithDimAndOutputPixelType<unsigned short,VImageDimension>();
35 } else if (OutputPixelType == "char") {
36 UpdateWithDimAndOutputPixelType<char,VImageDimension>();
37 } else if (OutputPixelType == "unsigned_char") {
38 UpdateWithDimAndOutputPixelType<unsigned char,VImageDimension>();
39 } else if (OutputPixelType == "int") {
40 UpdateWithDimAndOutputPixelType<int,VImageDimension>();
41 } else if (OutputPixelType == "double") {
42 UpdateWithDimAndOutputPixelType<double,VImageDimension>();
43 } else if (OutputPixelType == "float") {
44 UpdateWithDimAndOutputPixelType<float,VImageDimension>();
46 std::cerr << "Error, output pixel type : \"" << OutputPixelType << "\" unknown !" << std::endl;
49 //====================================================================
51 //====================================================================
52 template<class OutputPixelType, unsigned int VImageDimension>
53 void vvImageWriter::UpdateWithDimAndOutputPixelType()
56 typedef itk::Image< OutputPixelType, VImageDimension > OutputImageType;
57 typedef itk::ImageFileWriter<OutputImageType> WriterType;
58 typename WriterType::Pointer writer = WriterType::New();
59 writer->SetFileName(mOutputFilename);
60 writer->SetInput(vvImageToITK<OutputImageType>(mImage));
62 writer->AddObserver(itk::ProgressEvent(), mObserver);
66 } catch ( itk::ExceptionObject & err ) {
67 std::cerr << "Error while reading " << mOutputFilename.c_str()
68 << " " << err << std::endl;
69 std::stringstream error;
71 mLastError = error.str();
75 //====================================================================
77 #endif /* end #define vvImageWriter_TXX */