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

dox/Imaging/vtkImageExport.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkImageExport.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 =========================================================================*/
00038 #ifndef __vtkImageExport_h
00039 #define __vtkImageExport_h
00040 
00041 #include "vtkProcessObject.h"
00042 
00043 class vtkImageData;
00044 
00045 class VTK_IMAGING_EXPORT vtkImageExport : public vtkProcessObject
00046 {
00047 public:
00048   static vtkImageExport *New();
00049   vtkTypeRevisionMacro(vtkImageExport,vtkProcessObject);
00050   void PrintSelf(ostream& os, vtkIndent indent);
00051   
00053   int GetDataMemorySize();
00054 
00056 
00058   void GetDataDimensions(int *ptr);
00059   int *GetDataDimensions() { 
00060     this->GetDataDimensions(this->DataDimensions);
00061     return this->DataDimensions; }
00063 
00067   int GetDataNumberOfScalarComponents();
00068 
00070 
00072   int GetDataScalarType();
00073   const char *GetDataScalarTypeAsString() { 
00074     return vtkImageScalarTypeNameMacro(this->GetDataScalarType()); }
00076 
00078 
00079   int *GetDataExtent();
00080   void GetDataExtent(int *ptr);
00081   float *GetDataSpacing();
00082   void GetDataSpacing(float *ptr);
00083   float *GetDataOrigin();
00084   void GetDataOrigin(float *ptr);
00086 
00088 
00089   void SetInput(vtkImageData *input);
00090   vtkImageData *GetInput();
00092 
00094 
00099   vtkBooleanMacro(ImageLowerLeft, int);
00100   vtkGetMacro(ImageLowerLeft, int);
00101   vtkSetMacro(ImageLowerLeft, int);
00103 
00105 
00108   void SetExportVoidPointer(void *);
00109   void *GetExportVoidPointer() { return this->ExportVoidPointer; };
00111 
00113 
00116   void Export() { this->Export(this->ExportVoidPointer); };
00117   virtual void Export(void *);
00119 
00124   void *GetPointerToData();
00125 
00127   void* GetCallbackUserData();
00128   
00129   //BTX
00131 
00133   typedef void (*UpdateInformationCallbackType)(void*);
00134   typedef int (*PipelineModifiedCallbackType)(void*);
00135   typedef int* (*WholeExtentCallbackType)(void*);
00136   typedef float* (*SpacingCallbackType)(void*);
00137   typedef float* (*OriginCallbackType)(void*);
00138   typedef const char* (*ScalarTypeCallbackType)(void*); 
00139   typedef int (*NumberOfComponentsCallbackType)(void*);
00140   typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
00141   typedef void (*UpdateDataCallbackType)(void*);
00142   typedef int* (*DataExtentCallbackType)(void*);
00143   typedef void* (*BufferPointerCallbackType)(void*);
00145   
00147 
00148   UpdateInformationCallbackType     GetUpdateInformationCallback() const;
00149   PipelineModifiedCallbackType      GetPipelineModifiedCallback() const;
00150   WholeExtentCallbackType           GetWholeExtentCallback() const;
00151   SpacingCallbackType               GetSpacingCallback() const;
00152   OriginCallbackType                GetOriginCallback() const;
00153   ScalarTypeCallbackType            GetScalarTypeCallback() const;
00154   NumberOfComponentsCallbackType    GetNumberOfComponentsCallback() const;
00155   PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const;
00156   UpdateDataCallbackType            GetUpdateDataCallback() const;
00157   DataExtentCallbackType            GetDataExtentCallback() const;
00158   BufferPointerCallbackType         GetBufferPointerCallback() const;
00159   //ETX
00161 
00162 protected:
00163   vtkImageExport();
00164   ~vtkImageExport();
00165   
00166   virtual void UpdateInformationCallback();
00167   virtual int PipelineModifiedCallback();
00168   virtual void UpdateDataCallback();  
00169   virtual int* WholeExtentCallback();
00170   virtual float* SpacingCallback();
00171   virtual float* OriginCallback();
00172   virtual const char* ScalarTypeCallback();
00173   virtual int NumberOfComponentsCallback();
00174   virtual void PropagateUpdateExtentCallback(int*);
00175   virtual int* DataExtentCallback();
00176   virtual void* BufferPointerCallback();
00177 
00178   int ImageLowerLeft;
00179   int DataDimensions[3];
00180   void *ExportVoidPointer;
00181 
00182   unsigned long LastPipelineMTime;
00183 
00184 private:  
00185   vtkImageExport(const vtkImageExport&);  // Not implemented.
00186   void operator=(const vtkImageExport&);  // Not implemented.
00187 
00188   static void UpdateInformationCallbackFunction(void*);
00189   static int PipelineModifiedCallbackFunction(void*);
00190   static int* WholeExtentCallbackFunction(void*);
00191   static float* SpacingCallbackFunction(void*);
00192   static float* OriginCallbackFunction(void*);
00193   static const char* ScalarTypeCallbackFunction(void*); 
00194   static int NumberOfComponentsCallbackFunction(void*);
00195   static void PropagateUpdateExtentCallbackFunction(void*, int*);
00196   static void UpdateDataCallbackFunction(void*);
00197   static int* DataExtentCallbackFunction(void*);
00198   static void* BufferPointerCallbackFunction(void*);
00199 };
00200 
00201 #endif
00202 
00203