/*========================================================================= 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_H #define vvImageWriter_H #include // ITK includes #include "itkImage.h" #include "itkCommand.h" #include "vvImage.h" class vvImageWriter { public: // constructor vvImageWriter(); ~vvImageWriter(); void SetOutputFileName(std::string filename); void SetObserver(itk::Command::Pointer o) { mUseAnObserver = true; mObserver = o; } void DisableObserver() { mUseAnObserver = false; } void SetInput(vvImage::Pointer image) { mImage = image; } std::string GetLastError() { return mLastError; } //==================================================================== // Main function void Update() { Update(mImage->GetNumberOfDimensions(),mImage->GetScalarTypeAsString()); } void Update(int dim, std::string OutputPixelType); protected: //==================================================================== std::string mOutputFilename; itk::Command::Pointer mObserver; std::string mLastError; bool mUseAnObserver; //==================================================================== template void UpdateWithDim(std::string OutputPixelType); //==================================================================== template void UpdateWithDimAndOutputPixelType(); private: vvImage::Pointer mImage; }; // end class vvImageWriter #endif /* end #define vvImageWriter_H */