Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Imaging/vtkImageImport.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkImageImport.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00033 #ifndef __vtkImageImport_h
00034 #define __vtkImageImport_h
00035 
00036 #include "vtkImageSource.h"
00037 //#include "vtkTransform.h"
00038 
00039 class VTK_IMAGING_EXPORT vtkImageImport : public vtkImageSource
00040 {
00041 public:
00042   static vtkImageImport *New();
00043   vtkTypeRevisionMacro(vtkImageImport,vtkImageSource);
00044   void PrintSelf(ostream& os, vtkIndent indent);   
00045 
00049   void CopyImportVoidPointer(void *ptr, int size);
00050   
00052 
00056   void SetImportVoidPointer(void *ptr);
00057   void *GetImportVoidPointer() {return this->ImportVoidPointer;};
00059 
00065   void SetImportVoidPointer(void *ptr, int save);
00066   
00068 
00070   vtkSetMacro(DataScalarType,int);
00071   void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00072   void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00073   void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00074   void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00075   void SetDataScalarTypeToUnsignedShort()
00076     {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00077   void SetDataScalarTypeToUnsignedChar()
00078     {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00079   vtkGetMacro(DataScalarType, int);
00080   const char *GetDataScalarTypeAsString() { 
00081     return vtkImageScalarTypeNameMacro(this->DataScalarType); }
00083 
00085 
00087   vtkSetMacro(NumberOfScalarComponents,int);
00088   vtkGetMacro(NumberOfScalarComponents,int);
00090   
00092 
00096   vtkSetVector6Macro(DataExtent,int);
00097   vtkGetVector6Macro(DataExtent,int);
00098   void SetDataExtentToWholeExtent()
00099     {this->SetDataExtent(this->GetWholeExtent());}
00101   
00103 
00105   vtkSetVector3Macro(DataSpacing,double);
00106   vtkGetVector3Macro(DataSpacing,double);
00108   
00110 
00112   vtkSetVector3Macro(DataOrigin,double);
00113   vtkGetVector3Macro(DataOrigin,double);  
00115 
00117 
00120   vtkSetVector6Macro(WholeExtent,int);
00121   vtkGetVector6Macro(WholeExtent,int);
00123   
00125   virtual void PropagateUpdateExtent(vtkDataObject *output);
00126 
00127   //BTX
00129 
00131   typedef void (*UpdateInformationCallbackType)(void*);
00132   typedef int (*PipelineModifiedCallbackType)(void*);
00133   typedef int* (*WholeExtentCallbackType)(void*);
00134   typedef double* (*SpacingCallbackType)(void*);
00135   typedef double* (*OriginCallbackType)(void*);
00136   typedef const char* (*ScalarTypeCallbackType)(void*); 
00137   typedef int (*NumberOfComponentsCallbackType)(void*);
00138   typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
00139   typedef void (*UpdateDataCallbackType)(void*);
00140   typedef int* (*DataExtentCallbackType)(void*);
00141   typedef void* (*BufferPointerCallbackType)(void*);
00143 
00145 
00148   vtkSetMacro(UpdateInformationCallback, UpdateInformationCallbackType);
00149   vtkGetMacro(UpdateInformationCallback, UpdateInformationCallbackType);
00151   
00153 
00157   vtkSetMacro(PipelineModifiedCallback, PipelineModifiedCallbackType);
00158   vtkGetMacro(PipelineModifiedCallback, PipelineModifiedCallbackType);
00160 
00162 
00166   vtkSetMacro(WholeExtentCallback, WholeExtentCallbackType);
00167   vtkGetMacro(WholeExtentCallback, WholeExtentCallbackType);
00169 
00171 
00174   vtkSetMacro(SpacingCallback, SpacingCallbackType);
00175   vtkGetMacro(SpacingCallback, SpacingCallbackType);
00177 
00179 
00182   vtkSetMacro(OriginCallback, OriginCallbackType);
00183   vtkGetMacro(OriginCallback, OriginCallbackType);
00185 
00187 
00190   vtkSetMacro(ScalarTypeCallback, ScalarTypeCallbackType);
00191   vtkGetMacro(ScalarTypeCallback, ScalarTypeCallbackType);
00193   
00195 
00198   vtkSetMacro(NumberOfComponentsCallback, NumberOfComponentsCallbackType);
00199   vtkGetMacro(NumberOfComponentsCallback, NumberOfComponentsCallbackType);
00201   
00203 
00208   vtkSetMacro(PropagateUpdateExtentCallback,PropagateUpdateExtentCallbackType);
00209   vtkGetMacro(PropagateUpdateExtentCallback,PropagateUpdateExtentCallbackType);
00211   
00213 
00216   vtkSetMacro(UpdateDataCallback, UpdateDataCallbackType);
00217   vtkGetMacro(UpdateDataCallback, UpdateDataCallbackType);
00219   
00221 
00226   vtkSetMacro(DataExtentCallback, DataExtentCallbackType);
00227   vtkGetMacro(DataExtentCallback, DataExtentCallbackType);
00229   
00231 
00235   vtkSetMacro(BufferPointerCallback, BufferPointerCallbackType);
00236   vtkGetMacro(BufferPointerCallback, BufferPointerCallbackType);
00238 
00240 
00242   vtkSetMacro(CallbackUserData, void*);
00243   vtkGetMacro(CallbackUserData, void*);  
00245   
00246   //ETX
00247 
00248 protected:
00249   vtkImageImport();
00250   ~vtkImageImport();
00251 
00252   virtual void UpdateInformation();
00253   virtual void ExecuteInformation();
00254   
00255   void InvokeUpdateInformationCallbacks();
00256   void InvokeExecuteInformationCallbacks();
00257   void InvokeExecuteDataCallbacks();
00258   void LegacyCheckWholeExtent();
00259   
00260   void *ImportVoidPointer;
00261   int SaveUserArray;
00262   
00263   int NumberOfScalarComponents;
00264   int DataScalarType;
00265 
00266   int WholeExtent[6];
00267   int DataExtent[6];
00268   double DataSpacing[3];
00269   double DataOrigin[3];
00270 
00271   void* CallbackUserData;
00272   
00273   //BTX
00274   UpdateInformationCallbackType     UpdateInformationCallback;
00275   PipelineModifiedCallbackType      PipelineModifiedCallback;
00276   WholeExtentCallbackType           WholeExtentCallback;
00277   SpacingCallbackType               SpacingCallback;
00278   OriginCallbackType                OriginCallback;
00279   ScalarTypeCallbackType            ScalarTypeCallback;
00280   NumberOfComponentsCallbackType    NumberOfComponentsCallback;  
00281   PropagateUpdateExtentCallbackType PropagateUpdateExtentCallback;  
00282   UpdateDataCallbackType            UpdateDataCallback;
00283   DataExtentCallbackType            DataExtentCallback;
00284   BufferPointerCallbackType         BufferPointerCallback;
00285   //ETX
00286   
00287   virtual void ExecuteData(vtkDataObject *d);
00288 
00289 private:
00290   vtkImageImport(const vtkImageImport&);  // Not implemented.
00291   void operator=(const vtkImageImport&);  // Not implemented.
00292 };
00293 
00294 #endif