00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkImageFileWriter_h
00018
#define __itkImageFileWriter_h
00019
00020
#include "itkProcessObject.h"
00021
#include "itkImageIOBase.h"
00022
#include "itkExceptionObject.h"
00023
#include "itkSize.h"
00024
#include "itkImageIORegion.h"
00025
00026
namespace itk
00027 {
00028
00030 class ImageFileWriterException :
public ExceptionObject
00031 {
00032
public:
00034
itkTypeMacro(
ImageFileWriterException, ExceptionObject );
00035
00037 ImageFileWriterException(
char *file,
unsigned int line,
00038
const char* message =
"Error in IO") :
00039 ExceptionObject(file, line)
00040 {
00041 SetDescription(message);
00042 }
00043
00045 ImageFileWriterException(
const std::string &file,
unsigned int line,
00046
const char* message =
"Error in IO") :
00047 ExceptionObject(file, line)
00048 {
00049 SetDescription(message);
00050 }
00051 };
00052
00053
00075
template <
class TInputImage>
00076
class ITK_EXPORT ImageFileWriter :
public ProcessObject
00077 {
00078
public:
00080
typedef ImageFileWriter
Self;
00081 typedef ProcessObject Superclass;
00082 typedef SmartPointer<Self> Pointer;
00083 typedef SmartPointer<const Self> ConstPointer;
00084
00086
itkNewMacro(
Self);
00087
00089
itkTypeMacro(ImageFileWriter,
ProcessObject);
00090
00092
typedef TInputImage
InputImageType;
00093 typedef typename InputImageType::Pointer
InputImagePointer;
00094 typedef typename InputImageType::RegionType
InputImageRegionType;
00095 typedef typename InputImageType::PixelType
InputImagePixelType;
00096
00098
void SetInput(
const InputImageType *input);
00099
const InputImageType * GetInput(
void);
00100
const InputImageType * GetInput(
unsigned int idx);
00101
00103
itkSetStringMacro(FileName);
00104
itkGetStringMacro(FileName);
00105
00112
itkSetObjectMacro(ImageIO,
ImageIOBase);
00113
itkGetObjectMacro(ImageIO,
ImageIOBase);
00114
00122
virtual void Write(
void);
00123
00126
void SetIORegion(
const ImageIORegion & region);
00127
itkGetConstMacro( IORegion,
ImageIORegion );
00128
00131
virtual void Update()
00132 {this->Write();}
00133
00134
protected:
00135 ImageFileWriter();
00136 ~ImageFileWriter();
00137
void PrintSelf(std::ostream& os,
Indent indent)
const;
00138
00140
void GenerateData(
void);
00141
00142
private:
00143 ImageFileWriter(
const Self&);
00144
void operator=(
const Self&);
00145
00146 std::string m_FileName;
00147
00148
ImageIOBase::Pointer m_ImageIO;
00149
bool m_UserSpecifiedImageIO;
00150
00151
ImageIORegion m_IORegion;
00152
bool m_UserSpecifiedIORegion;
00153
00154 };
00155
00156
00157 }
00158
00159
#ifndef ITK_MANUAL_INSTANTIATION
00160
#include "itkImageFileWriter.txx"
00161
#endif
00162
00163
#endif // __itkImageFileWriter_h
00164