00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00062 #ifndef __vtkImageImport_h
00063 #define __vtkImageImport_h
00064
00065 #include "vtkImageSource.h"
00066 #include "vtkTransform.h"
00067
00068 class VTK_IMAGING_EXPORT vtkImageImport : public vtkImageSource
00069 {
00070 public:
00071 static vtkImageImport *New();
00072 vtkTypeMacro(vtkImageImport,vtkImageSource);
00073 void PrintSelf(ostream& os, vtkIndent indent);
00074
00078 void CopyImportVoidPointer(void *ptr, int size);
00079
00081
00085 void SetImportVoidPointer(void *ptr);
00086 void *GetImportVoidPointer() {return this->ImportVoidPointer;};
00088
00094 void SetImportVoidPointer(void *ptr, int save);
00095
00097
00099 vtkSetMacro(DataScalarType,int);
00100 void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00101 void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00102 void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00103 void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00104 void SetDataScalarTypeToUnsignedShort()
00105 {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00106 void SetDataScalarTypeToUnsignedChar()
00107 {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00108 vtkGetMacro(DataScalarType, int);
00109 const char *GetDataScalarTypeAsString() {
00110 return vtkImageScalarTypeNameMacro(this->DataScalarType); }
00112
00114
00116 vtkSetMacro(NumberOfScalarComponents,int);
00117 vtkGetMacro(NumberOfScalarComponents,int);
00119
00121
00125 vtkSetVector6Macro(DataExtent,int);
00126 vtkGetVector6Macro(DataExtent,int);
00127 void SetDataExtentToWholeExtent()
00128 {this->SetDataExtent(this->GetWholeExtent());}
00130
00132
00134 vtkSetVector3Macro(DataSpacing,float);
00135 vtkGetVector3Macro(DataSpacing,float);
00137
00139
00141 vtkSetVector3Macro(DataOrigin,float);
00142 vtkGetVector3Macro(DataOrigin,float);
00144
00146
00149 vtkSetVector6Macro(WholeExtent,int);
00150 vtkGetVector6Macro(WholeExtent,int);
00152
00154 virtual void PropagateUpdateExtent(vtkDataObject *output);
00155
00156
00158
00159 callbacks. See furhter documentation on each individual callback. */
00160 typedef void (*UpdateInformationCallbackType)(void*);
00161 typedef int (*PipelineModifiedCallbackType)(void*);
00162 typedef int* (*WholeExtentCallbackType)(void*);
00163 typedef float* (*SpacingCallbackType)(void*);
00164 typedef float* (*OriginCallbackType)(void*);
00165 typedef const char* (*ScalarTypeCallbackType)(void*);
00166 typedef int (*NumberOfComponentsCallbackType)(void*);
00167 typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
00168 typedef void (*UpdateDataCallbackType)(void*);
00169 typedef int* (*DataExtentCallbackType)(void*);
00170 typedef void* (*BufferPointerCallbackType)(void*);
00172
00174
00177 vtkSetMacro(UpdateInformationCallback, UpdateInformationCallbackType);
00178 vtkGetMacro(UpdateInformationCallback, UpdateInformationCallbackType);
00180
00182
00186 vtkSetMacro(PipelineModifiedCallback, PipelineModifiedCallbackType);
00187 vtkGetMacro(PipelineModifiedCallback, PipelineModifiedCallbackType);
00189
00191
00195 vtkSetMacro(WholeExtentCallback, WholeExtentCallbackType);
00196 vtkGetMacro(WholeExtentCallback, WholeExtentCallbackType);
00198
00200
00203 vtkSetMacro(SpacingCallback, SpacingCallbackType);
00204 vtkGetMacro(SpacingCallback, SpacingCallbackType);
00206
00208
00211 vtkSetMacro(OriginCallback, OriginCallbackType);
00212 vtkGetMacro(OriginCallback, OriginCallbackType);
00214
00216
00219 vtkSetMacro(ScalarTypeCallback, ScalarTypeCallbackType);
00220 vtkGetMacro(ScalarTypeCallback, ScalarTypeCallbackType);
00222
00224
00227 vtkSetMacro(NumberOfComponentsCallback, NumberOfComponentsCallbackType);
00228 vtkGetMacro(NumberOfComponentsCallback, NumberOfComponentsCallbackType);
00230
00232
00237 vtkSetMacro(PropagateUpdateExtentCallback,PropagateUpdateExtentCallbackType);
00238 vtkGetMacro(PropagateUpdateExtentCallback,PropagateUpdateExtentCallbackType);
00240
00242
00245 vtkSetMacro(UpdateDataCallback, UpdateDataCallbackType);
00246 vtkGetMacro(UpdateDataCallback, UpdateDataCallbackType);
00248
00250
00255 vtkSetMacro(DataExtentCallback, DataExtentCallbackType);
00256 vtkGetMacro(DataExtentCallback, DataExtentCallbackType);
00258
00260
00264 vtkSetMacro(BufferPointerCallback, BufferPointerCallbackType);
00265 vtkGetMacro(BufferPointerCallback, BufferPointerCallbackType);
00267
00269
00271 vtkSetMacro(CallbackUserData, void*);
00272 vtkGetMacro(CallbackUserData, void*);
00274
00275
00276
00277 protected:
00278 vtkImageImport();
00279 ~vtkImageImport();
00280
00281 virtual void UpdateInformation();
00282 virtual void ExecuteInformation();
00283
00284 void InvokeUpdateInformationCallbacks();
00285 void InvokeExecuteInformationCallbacks();
00286 void InvokeExecuteDataCallbacks();
00287 void LegacyCheckWholeExtent();
00288
00289 void *ImportVoidPointer;
00290 int SaveUserArray;
00291
00292 int NumberOfScalarComponents;
00293 int DataScalarType;
00294
00295 int WholeExtent[6];
00296 int DataExtent[6];
00297 float DataSpacing[3];
00298 float DataOrigin[3];
00299
00300 void* CallbackUserData;
00301
00302
00303 UpdateInformationCallbackType UpdateInformationCallback;
00304 PipelineModifiedCallbackType PipelineModifiedCallback;
00305 WholeExtentCallbackType WholeExtentCallback;
00306 SpacingCallbackType SpacingCallback;
00307 OriginCallbackType OriginCallback;
00308 ScalarTypeCallbackType ScalarTypeCallback;
00309 NumberOfComponentsCallbackType NumberOfComponentsCallback;
00310 PropagateUpdateExtentCallbackType PropagateUpdateExtentCallback;
00311 UpdateDataCallbackType UpdateDataCallback;
00312 DataExtentCallbackType DataExtentCallback;
00313 BufferPointerCallbackType BufferPointerCallback;
00314
00315
00316 virtual void ExecuteData(vtkDataObject *d);
00317
00318 private:
00319 vtkImageImport(const vtkImageImport&);
00320 void operator=(const vtkImageImport&);
00321 };
00322
00323 #endif