Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound 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   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00050 #ifndef __vtkImageImport_h
00051 #define __vtkImageImport_h
00052 
00053 #include "vtkImageSource.h"
00054 //#include "vtkTransform.h"
00055 
00056 class VTK_IMAGING_EXPORT vtkImageImport : public vtkImageSource
00057 {
00058 public:
00059   static vtkImageImport *New();
00060   vtkTypeRevisionMacro(vtkImageImport,vtkImageSource);
00061   void PrintSelf(ostream& os, vtkIndent indent);   
00062 
00066   void CopyImportVoidPointer(void *ptr, int size);
00067   
00069 
00073   void SetImportVoidPointer(void *ptr);
00074   void *GetImportVoidPointer() {return this->ImportVoidPointer;};
00076 
00082   void SetImportVoidPointer(void *ptr, int save);
00083   
00085 
00087   vtkSetMacro(DataScalarType,int);
00088   void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00089   void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00090   void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00091   void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00092   void SetDataScalarTypeToUnsignedShort()
00093     {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00094   void SetDataScalarTypeToUnsignedChar()
00095     {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00096   vtkGetMacro(DataScalarType, int);
00097   const char *GetDataScalarTypeAsString() { 
00098     return vtkImageScalarTypeNameMacro(this->DataScalarType); }
00100 
00102 
00104   vtkSetMacro(NumberOfScalarComponents,int);
00105   vtkGetMacro(NumberOfScalarComponents,int);
00107   
00109 
00113   vtkSetVector6Macro(DataExtent,int);
00114   vtkGetVector6Macro(DataExtent,int);
00115   void SetDataExtentToWholeExtent()
00116     {this->SetDataExtent(this->GetWholeExtent());}
00118   
00120 
00122   vtkSetVector3Macro(DataSpacing,float);
00123   vtkGetVector3Macro(DataSpacing,float);
00125   
00127 
00129   vtkSetVector3Macro(DataOrigin,float);
00130   vtkGetVector3Macro(DataOrigin,float);  
00132 
00134 
00137   vtkSetVector6Macro(WholeExtent,int);
00138   vtkGetVector6Macro(WholeExtent,int);
00140   
00142   virtual void PropagateUpdateExtent(vtkDataObject *output);
00143 
00144   //BTX
00146   /*! These are function pointer types for the pipeline connection
00147       callbacks.  See furhter documentation on each individual callback. */
00148   typedef void (*UpdateInformationCallbackType)(void*);
00149   typedef int (*PipelineModifiedCallbackType)(void*);
00150   typedef int* (*WholeExtentCallbackType)(void*);
00151   typedef float* (*SpacingCallbackType)(void*);
00152   typedef float* (*OriginCallbackType)(void*);
00153   typedef const char* (*ScalarTypeCallbackType)(void*); 
00154   typedef int (*NumberOfComponentsCallbackType)(void*);
00155   typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
00156   typedef void (*UpdateDataCallbackType)(void*);
00157   typedef int* (*DataExtentCallbackType)(void*);
00158   typedef void* (*BufferPointerCallbackType)(void*);
00160 
00162 
00165   vtkSetMacro(UpdateInformationCallback, UpdateInformationCallbackType);
00166   vtkGetMacro(UpdateInformationCallback, UpdateInformationCallbackType);
00168   
00170 
00174   vtkSetMacro(PipelineModifiedCallback, PipelineModifiedCallbackType);
00175   vtkGetMacro(PipelineModifiedCallback, PipelineModifiedCallbackType);
00177 
00179 
00183   vtkSetMacro(WholeExtentCallback, WholeExtentCallbackType);
00184   vtkGetMacro(WholeExtentCallback, WholeExtentCallbackType);
00186 
00188 
00191   vtkSetMacro(SpacingCallback, SpacingCallbackType);
00192   vtkGetMacro(SpacingCallback, SpacingCallbackType);
00194 
00196 
00199   vtkSetMacro(OriginCallback, OriginCallbackType);
00200   vtkGetMacro(OriginCallback, OriginCallbackType);
00202 
00204 
00207   vtkSetMacro(ScalarTypeCallback, ScalarTypeCallbackType);
00208   vtkGetMacro(ScalarTypeCallback, ScalarTypeCallbackType);
00210   
00212 
00215   vtkSetMacro(NumberOfComponentsCallback, NumberOfComponentsCallbackType);
00216   vtkGetMacro(NumberOfComponentsCallback, NumberOfComponentsCallbackType);
00218   
00220 
00225   vtkSetMacro(PropagateUpdateExtentCallback,PropagateUpdateExtentCallbackType);
00226   vtkGetMacro(PropagateUpdateExtentCallback,PropagateUpdateExtentCallbackType);
00228   
00230 
00233   vtkSetMacro(UpdateDataCallback, UpdateDataCallbackType);
00234   vtkGetMacro(UpdateDataCallback, UpdateDataCallbackType);
00236   
00238 
00243   vtkSetMacro(DataExtentCallback, DataExtentCallbackType);
00244   vtkGetMacro(DataExtentCallback, DataExtentCallbackType);
00246   
00248 
00252   vtkSetMacro(BufferPointerCallback, BufferPointerCallbackType);
00253   vtkGetMacro(BufferPointerCallback, BufferPointerCallbackType);
00255 
00257 
00259   vtkSetMacro(CallbackUserData, void*);
00260   vtkGetMacro(CallbackUserData, void*);  
00262   
00263   //ETX
00264 
00265 protected:
00266   vtkImageImport();
00267   ~vtkImageImport();
00268 
00269   virtual void UpdateInformation();
00270   virtual void ExecuteInformation();
00271   
00272   void InvokeUpdateInformationCallbacks();
00273   void InvokeExecuteInformationCallbacks();
00274   void InvokeExecuteDataCallbacks();
00275   void LegacyCheckWholeExtent();
00276   
00277   void *ImportVoidPointer;
00278   int SaveUserArray;
00279   
00280   int NumberOfScalarComponents;
00281   int DataScalarType;
00282 
00283   int WholeExtent[6];
00284   int DataExtent[6];
00285   float DataSpacing[3];
00286   float DataOrigin[3];
00287 
00288   void* CallbackUserData;
00289   
00290   //BTX
00291   UpdateInformationCallbackType     UpdateInformationCallback;
00292   PipelineModifiedCallbackType      PipelineModifiedCallback;
00293   WholeExtentCallbackType           WholeExtentCallback;
00294   SpacingCallbackType               SpacingCallback;
00295   OriginCallbackType                OriginCallback;
00296   ScalarTypeCallbackType            ScalarTypeCallback;
00297   NumberOfComponentsCallbackType    NumberOfComponentsCallback;  
00298   PropagateUpdateExtentCallbackType PropagateUpdateExtentCallback;  
00299   UpdateDataCallbackType            UpdateDataCallback;
00300   DataExtentCallbackType            DataExtentCallback;
00301   BufferPointerCallbackType         BufferPointerCallback;
00302   //ETX
00303   
00304   virtual void ExecuteData(vtkDataObject *d);
00305 
00306 private:
00307   vtkImageImport(const vtkImageImport&);  // Not implemented.
00308   void operator=(const vtkImageImport&);  // Not implemented.
00309 };
00310 
00311 #endif