/*=========================================================================
Program: vv
Language: C++
Author : Pierre Seroul (pierre.seroul@gmail.com)
Copyright (C) 2008
Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
CREATIS-LRMN http://www.creatis.insa-lyon.fr
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
=========================================================================*/
#ifndef vvImageWriter_TXX
#define vvImageWriter_TXX
#include
#include "vvToITK.h"
//====================================================================
template
void vvImageWriter::UpdateWithDim(std::string OutputPixelType)
{
if (OutputPixelType == "short")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "unsigned short")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "unsigned_short")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "char")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "unsigned_char")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "int")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "double")
{
UpdateWithDimAndOutputPixelType();
}
else if (OutputPixelType == "float")
{
UpdateWithDimAndOutputPixelType();
}
else
{
std::cerr << "Error, output pixel type : \"" << OutputPixelType << "\" unknown !" << std::endl;
}
}
//====================================================================
//====================================================================
template
void vvImageWriter::UpdateWithDimAndOutputPixelType()
{
//Create the writer
typedef itk::Image< OutputPixelType, VImageDimension > OutputImageType;
typedef itk::ImageFileWriter WriterType;
typename WriterType::Pointer writer = WriterType::New();
writer->SetFileName(mOutputFilename);
writer->SetInput(vvImageToITK(mImage));
if (mUseAnObserver) {
writer->AddObserver(itk::ProgressEvent(), mObserver);
}
try {
writer->Update();
}
catch ( itk::ExceptionObject & err ) {
std::cerr << "Error while reading " << mOutputFilename.c_str()
<< " " << err << std::endl;
std::stringstream error;
error << err;
mLastError = error.str();
return;
}
}
//====================================================================
#endif /* end #define vvImageWriter_TXX */