00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 00019 #ifndef _MITK_SURFACE_VTK_WRITER__H_ 00020 #define _MITK_SURFACE_VTK_WRITER__H_ 00021 00022 #include <iomanip> 00023 00024 #include <itkProcessObject.h> 00025 #include <mitkFileWriter.h> 00026 #include <mitkPointSet.h> 00027 #include <mitkSurface.h> 00028 00029 #include <vtkSmartPointer.h> 00030 00031 class vtkTransformPolyDataFilter; 00032 00033 namespace mitk 00034 { 00035 00050 template <class VTKWRITER> 00051 class SurfaceVtkWriter : public mitk::FileWriter 00052 { 00053 public: 00054 00055 mitkClassMacro( SurfaceVtkWriter, mitk::FileWriter ); 00056 00057 itkNewMacro( Self ); 00058 00059 mitkWriterMacro; 00060 00061 typedef VTKWRITER VtkWriterType; 00062 00067 itkSetStringMacro( FileName ); 00068 00072 itkGetStringMacro( FileName ); 00073 00082 itkSetStringMacro( Extension ); 00083 00089 itkGetStringMacro( Extension ); 00090 00097 void SetDefaultExtension(); 00098 00102 itkSetStringMacro( FilePrefix ); 00103 00107 itkGetStringMacro( FilePrefix ); 00108 00112 itkSetStringMacro( FilePattern ); 00113 00117 itkGetStringMacro( FilePattern ); 00118 00123 void SetInput( mitk::Surface* input ); 00124 00128 const mitk::Surface* GetInput(); 00129 00133 virtual std::string GetFileExtension(); 00134 00138 virtual bool CanWriteDataType( DataNode* ); 00139 00143 virtual std::string GetWritenMIMEType(); 00144 00148 virtual void SetInput( DataNode* ); 00149 00150 VtkWriterType* GetVtkWriter() 00151 { 00152 return m_VtkWriter; 00153 } 00154 00158 virtual std::vector<std::string> GetPossibleFileExtensions(); 00159 00160 protected: 00161 00165 SurfaceVtkWriter(); 00166 00170 virtual ~SurfaceVtkWriter(); 00171 00172 virtual void GenerateData(); 00173 00174 void ExecuteWrite( VtkWriterType* vtkWriter ); 00175 00176 std::string m_FileName; 00177 00178 std::string m_FilePrefix; 00179 00180 std::string m_FilePattern; 00181 00182 std::string m_Extension; 00183 00184 std::string m_MimeType; 00185 00186 vtkSmartPointer<VtkWriterType> m_VtkWriter; 00187 00188 bool m_WriterWriteHasReturnValue; 00189 }; 00190 00191 } 00192 00193 #endif //_MITK_SURFACE_VTK_WRITER__H_