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

vtkImageExport.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkImageExport.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 =========================================================================*/
00047 #ifndef __vtkImageExport_h
00048 #define __vtkImageExport_h
00049 
00050 #include "vtkProcessObject.h"
00051 
00052 class vtkImageData;
00053 
00054 class VTK_IMAGING_EXPORT vtkImageExport : public vtkProcessObject
00055 {
00056 public:
00057   static vtkImageExport *New();
00058   vtkTypeRevisionMacro(vtkImageExport,vtkProcessObject);
00059   void PrintSelf(ostream& os, vtkIndent indent);
00060   
00062   int GetDataMemorySize();
00063 
00065 
00067   void GetDataDimensions(int *ptr);
00068   int *GetDataDimensions() { 
00069     this->GetDataDimensions(this->DataDimensions);
00070     return this->DataDimensions; }
00072 
00076   int GetDataNumberOfScalarComponents();
00077 
00079 
00081   int GetDataScalarType();
00082   const char *GetDataScalarTypeAsString() { 
00083     return vtkImageScalarTypeNameMacro(this->GetDataScalarType()); }
00085 
00087 
00088   int *GetDataExtent();
00089   void GetDataExtent(int *ptr);
00090   double *GetDataSpacing();
00091   void GetDataSpacing(double *ptr);
00092   double *GetDataOrigin();
00093   void GetDataOrigin(double *ptr);
00095 
00097 
00098   void SetInput(vtkImageData *input);
00099   vtkImageData *GetInput();
00101 
00103 
00108   vtkBooleanMacro(ImageLowerLeft, int);
00109   vtkGetMacro(ImageLowerLeft, int);
00110   vtkSetMacro(ImageLowerLeft, int);
00112 
00114 
00117   void SetExportVoidPointer(void *);
00118   void *GetExportVoidPointer() { return this->ExportVoidPointer; };
00120 
00122 
00125   void Export() { this->Export(this->ExportVoidPointer); };
00126   virtual void Export(void *);
00128 
00133   void *GetPointerToData();
00134 
00136   void* GetCallbackUserData();
00137   
00138   //BTX
00140 
00142   typedef void (*UpdateInformationCallbackType)(void*);
00143   typedef int (*PipelineModifiedCallbackType)(void*);
00144   typedef int* (*WholeExtentCallbackType)(void*);
00145   typedef double* (*SpacingCallbackType)(void*);
00146   typedef double* (*OriginCallbackType)(void*);
00147   typedef const char* (*ScalarTypeCallbackType)(void*); 
00148   typedef int (*NumberOfComponentsCallbackType)(void*);
00149   typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
00150   typedef void (*UpdateDataCallbackType)(void*);
00151   typedef int* (*DataExtentCallbackType)(void*);
00152   typedef void* (*BufferPointerCallbackType)(void*);
00154   
00156 
00157   UpdateInformationCallbackType     GetUpdateInformationCallback() const;
00158   PipelineModifiedCallbackType      GetPipelineModifiedCallback() const;
00159   WholeExtentCallbackType           GetWholeExtentCallback() const;
00160   SpacingCallbackType               GetSpacingCallback() const;
00161   OriginCallbackType                GetOriginCallback() const;
00162   ScalarTypeCallbackType            GetScalarTypeCallback() const;
00163   NumberOfComponentsCallbackType    GetNumberOfComponentsCallback() const;
00164   PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const;
00165   UpdateDataCallbackType            GetUpdateDataCallback() const;
00166   DataExtentCallbackType            GetDataExtentCallback() const;
00167   BufferPointerCallbackType         GetBufferPointerCallback() const;
00168   //ETX
00170 
00171 protected:
00172   vtkImageExport();
00173   ~vtkImageExport();
00174   
00175   virtual void UpdateInformationCallback();
00176   virtual int PipelineModifiedCallback();
00177   virtual void UpdateDataCallback();  
00178   virtual int* WholeExtentCallback();
00179   virtual double* SpacingCallback();
00180   virtual double* OriginCallback();
00181   virtual const char* ScalarTypeCallback();
00182   virtual int NumberOfComponentsCallback();
00183   virtual void PropagateUpdateExtentCallback(int*);
00184   virtual int* DataExtentCallback();
00185   virtual void* BufferPointerCallback();
00186 
00187   int ImageLowerLeft;
00188   int DataDimensions[3];
00189   void *ExportVoidPointer;
00190 
00191   unsigned long LastPipelineMTime;
00192 
00193 private:  
00194   vtkImageExport(const vtkImageExport&);  // Not implemented.
00195   void operator=(const vtkImageExport&);  // Not implemented.
00196 
00197   static void UpdateInformationCallbackFunction(void*);
00198   static int PipelineModifiedCallbackFunction(void*);
00199   static int* WholeExtentCallbackFunction(void*);
00200   static double* SpacingCallbackFunction(void*);
00201   static double* OriginCallbackFunction(void*);
00202   static const char* ScalarTypeCallbackFunction(void*); 
00203   static int NumberOfComponentsCallbackFunction(void*);
00204   static void PropagateUpdateExtentCallbackFunction(void*, int*);
00205   static void UpdateDataCallbackFunction(void*);
00206   static int* DataExtentCallbackFunction(void*);
00207   static void* BufferPointerCallbackFunction(void*);
00208 };
00209 
00210 #endif
00211 
00212