VTK  9.3.0
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
30 #ifndef vtkImageSliceMapper_h
31 #define vtkImageSliceMapper_h
32 
33 #include "vtkImageMapper3D.h"
34 #include "vtkRenderingCoreModule.h" // For export macro
35 
36 VTK_ABI_NAMESPACE_BEGIN
37 class vtkCamera;
38 class vtkPoints;
39 
40 class VTKRENDERINGCORE_EXPORT vtkImageSliceMapper : public vtkImageMapper3D
41 {
42 public:
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
48 
51  virtual void SetSliceNumber(int slice);
52  virtual int GetSliceNumber();
54 
56 
61  virtual int GetSliceNumberMinValue();
62  virtual int GetSliceNumberMaxValue();
64 
66 
71  vtkSetClampMacro(Orientation, int, 0, 2);
72  vtkGetMacro(Orientation, int);
73  void SetOrientationToI() { this->SetOrientation(0); }
74  void SetOrientationToJ() { this->SetOrientation(1); }
75  void SetOrientationToK() { this->SetOrientation(2); }
76  // old methods
77  void SetOrientationToX() { this->SetOrientation(0); }
78  void SetOrientationToY() { this->SetOrientation(1); }
79  void SetOrientationToZ() { this->SetOrientation(2); }
81 
83 
87  vtkSetMacro(Cropping, vtkTypeBool);
88  vtkBooleanMacro(Cropping, vtkTypeBool);
89  vtkGetMacro(Cropping, vtkTypeBool);
91 
93 
97  vtkSetVector6Macro(CroppingRegion, int);
98  vtkGetVector6Macro(CroppingRegion, int);
100 
104  void Render(vtkRenderer* renderer, vtkImageSlice* prop) override;
105 
112 
116  vtkMTimeType GetMTime() override;
117 
119 
123  double* GetBounds() override;
124  void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
126 
127  // return the bounds in index space
128  void GetIndexBounds(double extent[6]) override;
129 
135  void GetSlicePlaneInDataCoords(vtkMatrix4x4* propMatrix, double plane[4]) override;
136 
141  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
142 
144 
148  void SetDisplayExtent(const int extent[6])
149  {
150  this->DisplayExtent[0] = extent[0];
151  this->DisplayExtent[1] = extent[1];
152  this->DisplayExtent[2] = extent[2];
153  this->DisplayExtent[3] = extent[3];
154  this->DisplayExtent[4] = extent[4];
155  this->DisplayExtent[5] = extent[5];
156  }
158 
159 protected:
162 
168  vtkPoints* GetPoints() { return this->Points; }
169 
174  void SetExactPixelMatch(int v) { this->ExactPixelMatch = (v != 0); }
175 
180  void SetPassColorData(int v) { this->PassColorData = (v != 0); }
181 
187  int GetOrientationFromCamera(double const* propMatrix, vtkCamera* camera);
188 
192  int GetSliceFromCamera(double const* propMatrix, vtkCamera* camera);
193 
197  static void GetDimensionIndices(int orientation, int& xdim, int& ydim);
198 
204  int CroppingRegion[6];
205  int DisplayExtent[6];
209 
210 private:
211  vtkImageSliceMapper(const vtkImageSliceMapper&) = delete;
212  void operator=(const vtkImageSliceMapper&) = delete;
213 
214  friend class vtkImageResliceMapper;
215 };
216 
217 VTK_ABI_NAMESPACE_END
218 #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:50
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.
double * GetBounds() override
The bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
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.
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
Definition: vtkImageSlice.h:48
a simple class to control print indentation
Definition: vtkIndent.h:38
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:40
represent and manipulate 3D points
Definition: vtkPoints.h:38
abstract specification for renderers
Definition: vtkRenderer.h:71
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
@ points
Definition: vtkX3D.h:446
@ orientation
Definition: vtkX3D.h:262
@ extent
Definition: vtkX3D.h:345
int vtkTypeBool
Definition: vtkABI.h:64
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270