VTK  9.4.20241221
vtkImageSliceMapper.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
130#ifndef vtkImageSliceMapper_h
131#define vtkImageSliceMapper_h
132
133#include "vtkImageMapper3D.h"
134#include "vtkRenderingCoreModule.h" // For export macro
135#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
136
137VTK_ABI_NAMESPACE_BEGIN
138class vtkCamera;
139class vtkPoints;
140
141class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkImageSliceMapper : public vtkImageMapper3D
142{
143public:
146 void PrintSelf(ostream& os, vtkIndent indent) override;
147
149
152 virtual void SetSliceNumber(int slice);
153 virtual int GetSliceNumber();
155
157
165
167
172 vtkSetClampMacro(Orientation, int, 0, 2);
173 vtkGetMacro(Orientation, int);
174 void SetOrientationToI() { this->SetOrientation(0); }
175 void SetOrientationToJ() { this->SetOrientation(1); }
176 void SetOrientationToK() { this->SetOrientation(2); }
177 // old methods
178 void SetOrientationToX() { this->SetOrientation(0); }
179 void SetOrientationToY() { this->SetOrientation(1); }
180 void SetOrientationToZ() { this->SetOrientation(2); }
182
184
188 vtkSetMacro(Cropping, vtkTypeBool);
189 vtkBooleanMacro(Cropping, vtkTypeBool);
190 vtkGetMacro(Cropping, vtkTypeBool);
192
194
198 vtkSetVector6Macro(CroppingRegion, int);
199 vtkGetVector6Macro(CroppingRegion, int);
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
228 // return the bounds in index space
229 void GetIndexBounds(double extent[6]) override;
230
236 void GetSlicePlaneInDataCoords(vtkMatrix4x4* propMatrix, double plane[4]) override;
237
242 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
243
245
249 void SetDisplayExtent(const int extent[6])
250 {
251 this->DisplayExtent[0] = extent[0];
252 this->DisplayExtent[1] = extent[1];
253 this->DisplayExtent[2] = extent[2];
254 this->DisplayExtent[3] = extent[3];
255 this->DisplayExtent[4] = extent[4];
256 this->DisplayExtent[5] = extent[5];
257 }
259
260protected:
263
268 void SetPoints(vtkPoints* points);
269 vtkPoints* GetPoints() { return this->Points; }
270
275 void SetExactPixelMatch(int v) { this->ExactPixelMatch = (v != 0); }
276
281 void SetPassColorData(int v) { this->PassColorData = (v != 0); }
282
288 int GetOrientationFromCamera(double const* propMatrix, vtkCamera* camera);
289
293 int GetSliceFromCamera(double const* propMatrix, vtkCamera* camera);
294
298 static void GetDimensionIndices(int orientation, int& xdim, int& ydim);
299
305 int CroppingRegion[6];
306 int DisplayExtent[6];
310
311private:
313 void operator=(const vtkImageSliceMapper&) = delete;
314
316};
317
318VTK_ABI_NAMESPACE_END
319#endif
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
abstract class for mapping images to the screen
map a slice of a vtkImageData to the screen
map a slice of a vtkImageData to the screen
int GetOrientationFromCamera(double const *propMatrix, vtkCamera *camera)
Get the camera orientation as a simple integer [0,1,2,3,4,5] that indicates one of the six major dire...
virtual int GetSliceNumberMaxValue()
Use GetSliceNumberMinValue() and GetSliceNumberMaxValue() to get the range of allowed slices.
void GetIndexBounds(double extent[6]) override
void SetOrientationToX()
Set the orientation of the slices to display.
void SetOrientationToZ()
Set the orientation of the slices to display.
virtual int GetSliceNumberMinValue()
Use GetSliceNumberMinValue() and GetSliceNumberMaxValue() to get the range of allowed slices.
void GetSlicePlaneInDataCoords(vtkMatrix4x4 *propMatrix, double plane[4]) override
Get the plane as a homogeneous 4-vector that gives the plane equation coefficients.
virtual void SetSliceNumber(int slice)
The slice to display, if there are multiple slices.
void GetBounds(double bounds[6]) override
The bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
void SetExactPixelMatch(int v)
Force linear interpolation.
int GetSliceFromCamera(double const *propMatrix, vtkCamera *camera)
Get the current slice as the one closest to the focal point.
void SetPoints(vtkPoints *points)
Set points that describe a polygon on which the slice will be rendered.
static void GetDimensionIndices(int orientation, int &xdim, int &ydim)
Get the dimension indices according to the orientation.
void SetPassColorData(int v)
Pass color data.
vtkMTimeType GetMTime() override
Get the mtime for the mapper.
~vtkImageSliceMapper() override
void Render(vtkRenderer *renderer, vtkImageSlice *prop) override
This should only be called by the renderer.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetDisplayExtent(const int extent[6])
Set the display extent.
virtual int GetSliceNumber()
The slice to display, if there are multiple slices.
vtkTypeBool ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) override
Handle requests from the pipeline executive.
double * GetBounds() override
The bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
void SetOrientationToK()
Set the orientation of the slices to display.
void SetOrientationToI()
Set the orientation of the slices to display.
static vtkImageSliceMapper * New()
void SetOrientationToJ()
Set the orientation of the slices to display.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
void SetOrientationToY()
Set the orientation of the slices to display.
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.
represent and manipulate 4x4 transformation matrices
represent and manipulate 3D points
Definition vtkPoints.h:139
abstract specification for renderers
window superclass for vtkRenderWindow
Definition vtkWindow.h:48
int vtkTypeBool
Definition vtkABI.h:64
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270
#define VTK_MARSHALAUTO