VTK  9.0.2
vtkImageExport.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageExport.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
32 #ifndef vtkImageExport_h
33 #define vtkImageExport_h
34 
35 #include "vtkIOImageModule.h" // For export macro
36 #include "vtkImageAlgorithm.h"
37 
38 class VTKIOIMAGE_EXPORT vtkImageExport : public vtkImageAlgorithm
39 {
40 public:
41  static vtkImageExport* New();
43  void PrintSelf(ostream& os, vtkIndent indent) override;
44 
49 
51 
55  void GetDataDimensions(int* ptr);
57  {
58  this->GetDataDimensions(this->DataDimensions);
59  return this->DataDimensions;
60  }
62 
69 
76  {
77  return vtkImageScalarTypeNameMacro(this->GetDataScalarType());
78  }
79 
81 
85  void GetDataExtent(int* ptr);
86  double* GetDataSpacing() VTK_SIZEHINT(3);
87  void GetDataSpacing(double* ptr);
88  double* GetDataOrigin() VTK_SIZEHINT(3);
89  void GetDataOrigin(double* ptr);
90  double* GetDataDirection() VTK_SIZEHINT(9);
91  void GetDataDirection(double* ptr);
93 
97  vtkImageData* GetInput();
98 
100 
108  vtkBooleanMacro(ImageLowerLeft, vtkTypeBool);
109  vtkGetMacro(ImageLowerLeft, vtkTypeBool);
110  vtkSetMacro(ImageLowerLeft, vtkTypeBool);
112 
114 
119  void SetExportVoidPointer(void*);
120  void* GetExportVoidPointer() { return this->ExportVoidPointer; }
122 
124 
129  void Export() { this->Export(this->ExportVoidPointer); }
130  virtual void Export(void*);
132 
141 
146 
148 
152  typedef void (*UpdateInformationCallbackType)(void*);
153  typedef int (*PipelineModifiedCallbackType)(void*);
154  typedef int* (*WholeExtentCallbackType)(void*);
155  typedef double* (*SpacingCallbackType)(void*);
156  typedef double* (*OriginCallbackType)(void*);
157  typedef double* (*DirectionCallbackType)(void*);
158  typedef const char* (*ScalarTypeCallbackType)(void*);
159  typedef int (*NumberOfComponentsCallbackType)(void*);
160  typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
161  typedef void (*UpdateDataCallbackType)(void*);
162  typedef int* (*DataExtentCallbackType)(void*);
163  typedef void* (*BufferPointerCallbackType)(void*);
165 
167 
170  UpdateInformationCallbackType GetUpdateInformationCallback() const;
171  PipelineModifiedCallbackType GetPipelineModifiedCallback() const;
172  WholeExtentCallbackType GetWholeExtentCallback() const;
173  SpacingCallbackType GetSpacingCallback() const;
174  OriginCallbackType GetOriginCallback() const;
175  DirectionCallbackType GetDirectionCallback() const;
176  ScalarTypeCallbackType GetScalarTypeCallback() const;
177  NumberOfComponentsCallbackType GetNumberOfComponentsCallback() const;
178  PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const;
179  UpdateDataCallbackType GetUpdateDataCallback() const;
180  DataExtentCallbackType GetDataExtentCallback() const;
181  BufferPointerCallbackType GetBufferPointerCallback() const;
183 
184 protected:
186  ~vtkImageExport() override;
187 
188  // This is called by the superclass.
189  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
190  vtkInformationVector* outputVector) override;
191 
194  virtual void UpdateDataCallback();
195  virtual int* WholeExtentCallback();
196  virtual double* SpacingCallback();
197  virtual double* OriginCallback();
198  virtual double* DirectionCallback();
199  virtual const char* ScalarTypeCallback();
201  virtual void PropagateUpdateExtentCallback(int*);
202  virtual int* DataExtentCallback();
203  virtual void* BufferPointerCallback();
204 
206  int DataDimensions[3];
208 
210 
211 private:
212  vtkImageExport(const vtkImageExport&) = delete;
213  void operator=(const vtkImageExport&) = delete;
214 
215  static void UpdateInformationCallbackFunction(void*);
216  static int PipelineModifiedCallbackFunction(void*);
217  static int* WholeExtentCallbackFunction(void*);
218  static double* SpacingCallbackFunction(void*);
219  static double* OriginCallbackFunction(void*);
220  static double* DirectionCallbackFunction(void*);
221  static const char* ScalarTypeCallbackFunction(void*);
222  static int NumberOfComponentsCallbackFunction(void*);
223  static void PropagateUpdateExtentCallbackFunction(void*, int*);
224  static void UpdateDataCallbackFunction(void*);
225  static int* DataExtentCallbackFunction(void*);
226  static void* BufferPointerCallbackFunction(void*);
227 
230 };
231 
232 #endif
Superclass for all sources, filters, and sinks in VTK.
Definition: vtkAlgorithm.h:63
vtkInformation * GetInputInformation()
Equivalent to GetInputInformation(0, 0)
Definition: vtkAlgorithm.h:534
vtkAlgorithm * GetInputAlgorithm()
Equivalent to GetInputAlgorithm(0, 0).
Definition: vtkAlgorithm.h:508
Generic algorithm superclass for image algs.
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
Export VTK images to third-party systems.
virtual double * OriginCallback()
virtual void * BufferPointerCallback()
const char * GetDataScalarTypeAsString()
WholeExtentCallbackType GetWholeExtentCallback() const
DataExtentCallbackType GetDataExtentCallback() const
void * ExportVoidPointer
static vtkImageExport * New()
int GetDataNumberOfScalarComponents()
Get the number of scalar components of the data.
NumberOfComponentsCallbackType GetNumberOfComponentsCallback() const
int GetDataScalarType()
Get the scalar type of the data.
vtkTypeBool ImageLowerLeft
virtual void Export(void *)
BufferPointerCallbackType GetBufferPointerCallback() const
PipelineModifiedCallbackType GetPipelineModifiedCallback() const
void * GetPointerToData()
An alternative to Export(): Use with caution.
PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const
OriginCallbackType GetOriginCallback() const
virtual int NumberOfComponentsCallback()
UpdateDataCallbackType GetUpdateDataCallback() const
void * GetCallbackUserData()
Get the user data that should be passed to the callback functions.
ScalarTypeCallbackType GetScalarTypeCallback() const
SpacingCallbackType GetSpacingCallback() const
virtual const char * ScalarTypeCallback()
int * GetDataDimensions()
int * GetDataExtent()
Get miscellaneous additional information about the data.
virtual int * WholeExtentCallback()
virtual double * SpacingCallback()
vtkIdType GetDataMemorySize()
Get the number of bytes required for the output C array.
void Export()
The main interface: update the pipeline and export the image to the memory pointed to by SetExportVoi...
~vtkImageExport() override
virtual void UpdateDataCallback()
vtkMTimeType LastPipelineMTime
virtual void PropagateUpdateExtentCallback(int *)
void GetDataDimensions(int *ptr)
Get the (x,y,z) index dimensions of the data.
virtual int * DataExtentCallback()
DirectionCallbackType GetDirectionCallback() const
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
This is called in response to a REQUEST_DATA request from the executive.
virtual double * DirectionCallback()
UpdateInformationCallbackType GetUpdateInformationCallback() const
Get pointers to the pipeline interface callbacks.
virtual int PipelineModifiedCallback()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void UpdateInformationCallback()
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
int vtkTypeBool
Definition: vtkABI.h:69
int vtkIdType
Definition: vtkType.h:338
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:293
#define VTK_SIZEHINT(...)