VTK  9.7.20261031
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
58
59#ifndef vtkImageResliceMapper_h
60#define vtkImageResliceMapper_h
61
62#include "vtkImageMapper3D.h"
63#include "vtkRenderingImageModule.h" // For export macro
64#include "vtkWrappingHints.h"
65
66VTK_ABI_NAMESPACE_BEGIN
68class vtkRenderer;
69class vtkRenderWindow;
70class vtkCamera;
71class vtkLookupTable;
72class vtkImageSlice;
73class vtkImageData;
75class vtkMatrix4x4;
78
79class VTKRENDERINGIMAGE_EXPORT VTK_MARSHALAUTO vtkImageResliceMapper : public vtkImageMapper3D
80{
81public:
84 void PrintSelf(ostream& os, vtkIndent indent) override;
85
87
93 virtual void SetSlicePlane(vtkPlane* plane);
94 vtkPlane* GetSlicePlane() override { return this->SlicePlane; }
96
98
108
110
113 vtkSetMacro(SlabThickness, double);
114 vtkGetMacro(SlabThickness, double);
116
118
128 vtkGetMacro(SlabType, int);
133 virtual const char* GetSlabTypeAsString();
135
137
142 vtkSetClampMacro(SlabSampleFactor, int, 1, 2);
143 vtkGetMacro(SlabSampleFactor, int);
145
147
153 vtkSetClampMacro(ImageSampleFactor, int, 1, 16);
154 vtkGetMacro(ImageSampleFactor, int);
156
158
166
168
178
180
190
192
201
205 void Render(vtkRenderer* renderer, vtkImageSlice* prop) override;
206
213
218
220
224 double* GetBounds() override;
225 void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
227
232 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
233
234 // return the bounds in index space
235 void GetIndexBounds(double extent[6]) override;
236
239
240protected:
243
248
253
259
264
270
275
280
285
287
290 bool Update(int port) override;
291 bool Update() override;
292 vtkTypeBool Update(int port, vtkInformationVector* requests) override;
293 vtkTypeBool Update(vtkInformation* requests) override;
295
300
301 vtkImageChangeInformation* ChangeInformation; // Prepare image for mapper
302 vtkImageSliceMapper* SliceMapper; // Does the OpenGL rendering
303
304 vtkTypeBool JumpToNearestSlice; // Adjust SliceAtFocalPoint
305 vtkTypeBool AutoAdjustImageQuality; // LOD-style behavior
306 vtkTypeBool SeparateWindowLevelOperation; // Do window/level as a separate step
307 double SlabThickness; // Current slab thickness
308 int SlabType; // Current slab mode
309 int SlabSampleFactor; // Sampling factor for slab mode
310 int ImageSampleFactor; // Sampling factor for image pixels
311 vtkTypeBool ResampleToScreenPixels; // Use software interpolation only
312 int InternalResampleToScreenPixels; // Use software interpolation only
313 int ResliceNeedUpdate; // Execute reslice on next render
314 vtkImageResliceToColors* ImageReslice; // For software interpolation
315 vtkMatrix4x4* ResliceMatrix; // Cached reslice matrix
316 vtkMatrix4x4* WorldToDataMatrix; // World to Data transform matrix
317 vtkMatrix4x4* DataToSliceMatrix; // Data to Slice transform matrix
318 vtkMatrix4x4* SliceToWorldMatrix; // Slice to World transform matrix
320
321private:
323 void operator=(const vtkImageResliceMapper&) = delete;
324};
325
326VTK_ABI_NAMESPACE_END
327#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:151
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:108
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:141
create a window for renderers to draw into
abstract specification for renderers
record modification and/or execution time
window superclass for vtkRenderWindow
Definition vtkWindow.h:62
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)