VTK  9.7.0
vtkImageResliceMapper.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
19
20#ifndef vtkImageResliceMapper_h
21#define vtkImageResliceMapper_h
22
23#include "vtkImageMapper3D.h"
24#include "vtkRenderingImageModule.h" // For export macro
25#include "vtkWrappingHints.h"
26
27VTK_ABI_NAMESPACE_BEGIN
29class vtkRenderer;
30class vtkRenderWindow;
31class vtkCamera;
32class vtkLookupTable;
33class vtkImageSlice;
34class vtkImageData;
36class vtkMatrix4x4;
39
40class VTKRENDERINGIMAGE_EXPORT VTK_MARSHALAUTO vtkImageResliceMapper : public vtkImageMapper3D
41{
42public:
45 void PrintSelf(ostream& os, vtkIndent indent) override;
46
48
54 virtual void SetSlicePlane(vtkPlane* plane);
55 vtkPlane* GetSlicePlane() override { return this->SlicePlane; }
57
59
69
71
74 vtkSetMacro(SlabThickness, double);
75 vtkGetMacro(SlabThickness, double);
77
79
89 vtkGetMacro(SlabType, int);
94 virtual const char* GetSlabTypeAsString();
96
98
103 vtkSetClampMacro(SlabSampleFactor, int, 1, 2);
104 vtkGetMacro(SlabSampleFactor, int);
106
108
114 vtkSetClampMacro(ImageSampleFactor, int, 1, 16);
115 vtkGetMacro(ImageSampleFactor, int);
117
119
127
129
139
141
151
153
162
166 void Render(vtkRenderer* renderer, vtkImageSlice* prop) override;
167
174
179
181
185 double* GetBounds() override;
186 void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
188
193 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
194
195 // return the bounds in index space
196 void GetIndexBounds(double extent[6]) override;
197
200
201protected:
204
209
214
220
225
231
236
241
246
248
251 bool Update(int port) override;
252 bool Update() override;
253 vtkTypeBool Update(int port, vtkInformationVector* requests) override;
254 vtkTypeBool Update(vtkInformation* requests) override;
256
261
262 vtkImageChangeInformation* ChangeInformation; // Prepare image for mapper
263 vtkImageSliceMapper* SliceMapper; // Does the OpenGL rendering
264
265 vtkTypeBool JumpToNearestSlice; // Adjust SliceAtFocalPoint
266 vtkTypeBool AutoAdjustImageQuality; // LOD-style behavior
267 vtkTypeBool SeparateWindowLevelOperation; // Do window/level as a separate step
268 double SlabThickness; // Current slab thickness
269 int SlabType; // Current slab mode
270 int SlabSampleFactor; // Sampling factor for slab mode
271 int ImageSampleFactor; // Sampling factor for image pixels
272 vtkTypeBool ResampleToScreenPixels; // Use software interpolation only
273 int InternalResampleToScreenPixels; // Use software interpolation only
274 int ResliceNeedUpdate; // Execute reslice on next render
275 vtkImageResliceToColors* ImageReslice; // For software interpolation
276 vtkMatrix4x4* ResliceMatrix; // Cached reslice matrix
277 vtkMatrix4x4* WorldToDataMatrix; // World to Data transform matrix
278 vtkMatrix4x4* DataToSliceMatrix; // Data to Slice transform matrix
279 vtkMatrix4x4* SliceToWorldMatrix; // Slice to World transform matrix
281
282private:
284 void operator=(const vtkImageResliceMapper&) = delete;
285};
286
287VTK_ABI_NAMESPACE_END
288#endif
interpolate data values from images
virtual double * GetBounds()=0
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
a virtual camera for 3D rendering
Definition vtkCamera.h:42
Detect and break reference loops.
modify spacing, origin and extent.
topologically and geometrically regular array of data
image display properties
bool Update() override
Override Update to handle some tricky details.
void CheckerboardImage(vtkImageData *input, vtkCamera *camera, vtkImageProperty *property)
Do a checkerboard pattern to the alpha of an RGBA image.
void GetIndexBounds(double extent[6]) override
vtkImageResliceToColors * ImageReslice
void UpdateResliceInformation(vtkRenderer *ren)
Set all of the reslicing parameters.
void SetImageReslice(vtkImageResliceToColors *)
void UpdateResliceInterpolation(vtkImageProperty *property)
Set the interpolation.
vtkTypeBool Update(vtkInformation *requests) override
Override Update to handle some tricky details.
void SetSlabTypeToSum()
The slab type, for thick slicing (default: Mean).
vtkMTimeType GetMTime() override
Get the mtime for the mapper.
virtual void SetSlabType(int)
The slab type, for thick slicing (default: Mean).
void Render(vtkRenderer *renderer, vtkImageSlice *prop) override
This should only be called by the renderer.
virtual const char * GetSlabTypeAsString()
The slab type, for thick slicing (default: Mean).
void SetSlabTypeToMean()
The slab type, for thick slicing (default: Mean).
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetSlicePlane(vtkPlane *plane)
Set the slice that will be used to cut through the image.
void ReportReferences(vtkGarbageCollector *) override
Garbage collection for reference loops.
virtual void SetInterpolator(vtkAbstractImageInterpolator *interpolator)
Set a custom interpolator.
vtkImageSliceMapper * SliceMapper
vtkPlane * GetSlicePlane() override
Set the slice that will be used to cut through the image.
vtkTypeBool ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) override
Handle requests from the pipeline executive.
vtkTypeBool Update(int port, vtkInformationVector *requests) override
Override Update to handle some tricky details.
static vtkImageResliceMapper * New()
void UpdateResliceMatrix(vtkRenderer *ren, vtkImageSlice *prop)
Update the reslice matrix, which is the slice-to-data matrix.
void UpdateWorldToDataMatrix(vtkImageSlice *prop)
Check if the vtkProp3D matrix has changed, and if so, set the WorldToDataMatrix to its inverse.
virtual vtkAbstractImageInterpolator * GetInterpolator()
Set a custom interpolator.
void UpdatePolygonCoords(vtkRenderer *ren)
Make a polygon by cutting the data bounds with a plane.
vtkImageChangeInformation * ChangeInformation
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
double * GetBounds() override
The bounding box (array of six doubles) of the data expressed as (xmin,xmax, ymin,...
void UpdateColorInformation(vtkImageProperty *property)
Update anything related to the image coloring.
bool Update(int port) override
Override Update to handle some tricky details.
void UpdateSliceToWorldMatrix(vtkCamera *camera)
Update the slice-to-world matrix from the camera.
void SetSlabTypeToMax()
The slab type, for thick slicing (default: Mean).
void SetSlabTypeToMin()
The slab type, for thick slicing (default: Mean).
~vtkImageResliceMapper() override
Reslice and produce color scalars.
map a slice of a vtkImageData to the screen
represents an image in a 3D scene
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
map scalar values into colors via a lookup table
represent and manipulate 4x4 transformation matrices
perform various plane computations
Definition vtkPlane.h:32
create a window for renderers to draw into
abstract specification for renderers
Definition vtkRenderer.h:64
record modification and/or execution time
window superclass for vtkRenderWindow
Definition vtkWindow.h:42
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_IMAGE_SLAB_MAX
#define VTK_IMAGE_SLAB_MIN
#define VTK_IMAGE_SLAB_SUM
#define VTK_IMAGE_SLAB_MEAN
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
#define VTK_MARSHAL_EXCLUDE_REASON_IS_REDUNDANT
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)