00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkVTKImageExportBase.h,v $ 00005 Language: C++ 00006 Date: $Date: 2003/09/10 14:28:58 $ 00007 Version: $Revision: 1.7 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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 #ifndef __itkVTKImageExportBase_h 00018 #define __itkVTKImageExportBase_h 00019 00020 #include "itkProcessObject.h" 00021 00022 namespace itk 00023 { 00024 00035 class ITK_EXPORT VTKImageExportBase: public ProcessObject 00036 { 00037 public: 00039 typedef VTKImageExportBase Self; 00040 typedef ProcessObject Superclass; 00041 typedef SmartPointer<Self> Pointer; 00042 typedef SmartPointer<const Self> ConstPointer; 00043 00045 itkTypeMacro(VTKImageExportBase,ProcessObject); 00046 00048 void* GetCallbackUserData(); 00049 00051 typedef void (*UpdateInformationCallbackType)(void*); 00052 typedef int (*PipelineModifiedCallbackType)(void*); 00053 typedef int* (*WholeExtentCallbackType)(void*); 00054 typedef float* (*SpacingCallbackType)(void*); 00055 typedef float* (*OriginCallbackType)(void*); 00056 typedef const char* (*ScalarTypeCallbackType)(void*); 00057 typedef int (*NumberOfComponentsCallbackType)(void*); 00058 typedef void (*PropagateUpdateExtentCallbackType)(void*, int*); 00059 typedef void (*UpdateDataCallbackType)(void*); 00060 typedef int* (*DataExtentCallbackType)(void*); 00061 typedef void* (*BufferPointerCallbackType)(void*); 00062 00064 UpdateInformationCallbackType GetUpdateInformationCallback() const; 00065 PipelineModifiedCallbackType GetPipelineModifiedCallback() const; 00066 WholeExtentCallbackType GetWholeExtentCallback() const; 00067 SpacingCallbackType GetSpacingCallback() const; 00068 OriginCallbackType GetOriginCallback() const; 00069 ScalarTypeCallbackType GetScalarTypeCallback() const; 00070 NumberOfComponentsCallbackType GetNumberOfComponentsCallback() const; 00071 PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const; 00072 UpdateDataCallbackType GetUpdateDataCallback() const; 00073 DataExtentCallbackType GetDataExtentCallback() const; 00074 BufferPointerCallbackType GetBufferPointerCallback() const; 00075 00076 protected: 00077 VTKImageExportBase(); 00078 ~VTKImageExportBase() {} 00079 void PrintSelf(std::ostream& os, Indent indent) const; 00080 00081 typedef DataObject::Pointer DataObjectPointer; 00082 00083 virtual void UpdateInformationCallback(); 00084 virtual int PipelineModifiedCallback(); 00085 virtual void UpdateDataCallback(); 00086 00089 virtual int* WholeExtentCallback()=0; 00090 virtual float* SpacingCallback()=0; 00091 virtual float* OriginCallback()=0; 00092 virtual const char* ScalarTypeCallback()=0; 00093 virtual int NumberOfComponentsCallback()=0; 00094 virtual void PropagateUpdateExtentCallback(int*)=0; 00095 virtual int* DataExtentCallback()=0; 00096 virtual void* BufferPointerCallback()=0; 00097 00098 private: 00099 VTKImageExportBase(const Self&); //purposely not implemented 00100 void operator=(const Self&); //purposely not implemented 00101 00105 static void UpdateInformationCallbackFunction(void*); 00106 static int PipelineModifiedCallbackFunction(void*); 00107 static int* WholeExtentCallbackFunction(void*); 00108 static float* SpacingCallbackFunction(void*); 00109 static float* OriginCallbackFunction(void*); 00110 static const char* ScalarTypeCallbackFunction(void*); 00111 static int NumberOfComponentsCallbackFunction(void*); 00112 static void PropagateUpdateExtentCallbackFunction(void*, int*); 00113 static void UpdateDataCallbackFunction(void*); 00114 static int* DataExtentCallbackFunction(void*); 00115 static void* BufferPointerCallbackFunction(void*); 00116 00117 private: 00119 unsigned long m_LastPipelineMTime; 00120 }; 00121 00122 } // end namespace itk 00123 00124 #endif