VTK  9.3.20240328
vtkImageExport.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
42 #ifndef vtkImageExport_h
43 #define vtkImageExport_h
44 
45 #include "vtkIOImageModule.h" // For export macro
46 #include "vtkImageAlgorithm.h"
47 
48 VTK_ABI_NAMESPACE_BEGIN
49 class VTKIOIMAGE_EXPORT vtkImageExport : public vtkImageAlgorithm
50 {
51 public:
52  static vtkImageExport* New();
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
60 
62 
66  void GetDataDimensions(int* ptr);
68  {
69  this->GetDataDimensions(this->DataDimensions);
70  return this->DataDimensions;
71  }
73 
80 
87  {
88  return vtkImageScalarTypeNameMacro(this->GetDataScalarType());
89  }
90 
92 
96  void GetDataExtent(int* ptr);
97  double* GetDataSpacing() VTK_SIZEHINT(3);
98  void GetDataSpacing(double* ptr);
99  double* GetDataOrigin() VTK_SIZEHINT(3);
100  void GetDataOrigin(double* ptr);
101  double* GetDataDirection() VTK_SIZEHINT(9);
102  void GetDataDirection(double* ptr);
104 
108  vtkImageData* GetInput();
109 
111 
119  vtkBooleanMacro(ImageLowerLeft, vtkTypeBool);
120  vtkGetMacro(ImageLowerLeft, vtkTypeBool);
121  vtkSetMacro(ImageLowerLeft, vtkTypeBool);
123 
125 
130  void SetExportVoidPointer(void*);
131  void* GetExportVoidPointer() { return this->ExportVoidPointer; }
133 
135 
140  void Export() { this->Export(this->ExportVoidPointer); }
141  virtual void Export(void*);
143 
152 
157 
159 
163  typedef void (*UpdateInformationCallbackType)(void*);
164  typedef int (*PipelineModifiedCallbackType)(void*);
165  typedef int* (*WholeExtentCallbackType)(void*);
166  typedef double* (*SpacingCallbackType)(void*);
167  typedef double* (*OriginCallbackType)(void*);
168  typedef double* (*DirectionCallbackType)(void*);
169  typedef const char* (*ScalarTypeCallbackType)(void*);
170  typedef int (*NumberOfComponentsCallbackType)(void*);
171  typedef void (*PropagateUpdateExtentCallbackType)(void*, int*);
172  typedef void (*UpdateDataCallbackType)(void*);
173  typedef int* (*DataExtentCallbackType)(void*);
174  typedef void* (*BufferPointerCallbackType)(void*);
176 
178 
181  UpdateInformationCallbackType GetUpdateInformationCallback() const;
182  PipelineModifiedCallbackType GetPipelineModifiedCallback() const;
183  WholeExtentCallbackType GetWholeExtentCallback() const;
184  SpacingCallbackType GetSpacingCallback() const;
185  OriginCallbackType GetOriginCallback() const;
186  DirectionCallbackType GetDirectionCallback() const;
187  ScalarTypeCallbackType GetScalarTypeCallback() const;
188  NumberOfComponentsCallbackType GetNumberOfComponentsCallback() const;
189  PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const;
190  UpdateDataCallbackType GetUpdateDataCallback() const;
191  DataExtentCallbackType GetDataExtentCallback() const;
192  BufferPointerCallbackType GetBufferPointerCallback() const;
194 
195 protected:
197  ~vtkImageExport() override;
198 
199  // This is called by the superclass.
200  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
201  vtkInformationVector* outputVector) override;
202 
205  virtual void UpdateDataCallback();
206  virtual int* WholeExtentCallback();
207  virtual double* SpacingCallback();
208  virtual double* OriginCallback();
209  virtual double* DirectionCallback();
210  virtual const char* ScalarTypeCallback();
212  virtual void PropagateUpdateExtentCallback(int*);
213  virtual int* DataExtentCallback();
214  virtual void* BufferPointerCallback();
215 
217  int DataDimensions[3];
219 
221 
222 private:
223  vtkImageExport(const vtkImageExport&) = delete;
224  void operator=(const vtkImageExport&) = delete;
225 
226  static void UpdateInformationCallbackFunction(void*);
227  static int PipelineModifiedCallbackFunction(void*);
228  static int* WholeExtentCallbackFunction(void*);
229  static double* SpacingCallbackFunction(void*);
230  static double* OriginCallbackFunction(void*);
231  static double* DirectionCallbackFunction(void*);
232  static const char* ScalarTypeCallbackFunction(void*);
233  static int NumberOfComponentsCallbackFunction(void*);
234  static void PropagateUpdateExtentCallbackFunction(void*, int*);
235  static void UpdateDataCallbackFunction(void*);
236  static int* DataExtentCallbackFunction(void*);
237  static void* BufferPointerCallbackFunction(void*);
238 
241 };
242 
243 VTK_ABI_NAMESPACE_END
244 #endif
Superclass for all sources, filters, and sinks in VTK.
Definition: vtkAlgorithm.h:161
vtkInformation * GetInputInformation()
Equivalent to GetInputInformation(0, 0)
Definition: vtkAlgorithm.h:666
vtkAlgorithm * GetInputAlgorithm()
Equivalent to GetInputAlgorithm(0, 0).
Definition: vtkAlgorithm.h:640
Generic algorithm superclass for image algs.
topologically and geometrically regular array of data
Definition: vtkImageData.h:155
Export VTK images to third-party systems.
virtual double * OriginCallback()
virtual void * BufferPointerCallback()
const char * GetDataScalarTypeAsString()
WholeExtentCallbackType GetWholeExtentCallback() const
Get pointers to the pipeline interface callbacks.
DataExtentCallbackType GetDataExtentCallback() const
Get pointers to the pipeline interface callbacks.
void * ExportVoidPointer
static vtkImageExport * New()
int GetDataNumberOfScalarComponents()
Get the number of scalar components of the data.
NumberOfComponentsCallbackType GetNumberOfComponentsCallback() const
Get pointers to the pipeline interface callbacks.
int GetDataScalarType()
Get the scalar type of the data.
vtkTypeBool ImageLowerLeft
virtual void Export(void *)
The main interface: update the pipeline and export the image to the memory pointed to by SetExportVoi...
BufferPointerCallbackType GetBufferPointerCallback() const
Get pointers to the pipeline interface callbacks.
PipelineModifiedCallbackType GetPipelineModifiedCallback() const
Get pointers to the pipeline interface callbacks.
void * GetPointerToData()
An alternative to Export(): Use with caution.
PropagateUpdateExtentCallbackType GetPropagateUpdateExtentCallback() const
Get pointers to the pipeline interface callbacks.
OriginCallbackType GetOriginCallback() const
Get pointers to the pipeline interface callbacks.
virtual int NumberOfComponentsCallback()
UpdateDataCallbackType GetUpdateDataCallback() const
Get pointers to the pipeline interface callbacks.
void * GetCallbackUserData()
Get the user data that should be passed to the callback functions.
ScalarTypeCallbackType GetScalarTypeCallback() const
Get pointers to the pipeline interface callbacks.
SpacingCallbackType GetSpacingCallback() const
Get pointers to the pipeline interface callbacks.
virtual const char * ScalarTypeCallback()
int * GetDataDimensions()
Get the (x,y,z) index dimensions of the data.
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
Get pointers to the pipeline interface callbacks.
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:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
int vtkTypeBool
Definition: vtkABI.h:64
int vtkIdType
Definition: vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270
#define VTK_SIZEHINT(...)