VTK  9.2.20221001
vtkImageSliceMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkImageSliceMapper.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
142 #ifndef vtkImageSliceMapper_h
143 #define vtkImageSliceMapper_h
144 
145 #include "vtkImageMapper3D.h"
146 #include "vtkRenderingCoreModule.h" // For export macro
147 
148 VTK_ABI_NAMESPACE_BEGIN
149 class vtkCamera;
150 class vtkPoints;
151 
152 class VTKRENDERINGCORE_EXPORT vtkImageSliceMapper : public vtkImageMapper3D
153 {
154 public:
157  void PrintSelf(ostream& os, vtkIndent indent) override;
158 
160 
163  virtual void SetSliceNumber(int slice);
164  virtual int GetSliceNumber();
166 
168 
173  virtual int GetSliceNumberMinValue();
174  virtual int GetSliceNumberMaxValue();
176 
178 
183  vtkSetClampMacro(Orientation, int, 0, 2);
184  vtkGetMacro(Orientation, int);
185  void SetOrientationToI() { this->SetOrientation(0); }
186  void SetOrientationToJ() { this->SetOrientation(1); }
187  void SetOrientationToK() { this->SetOrientation(2); }
188  // old methods
189  void SetOrientationToX() { this->SetOrientation(0); }
190  void SetOrientationToY() { this->SetOrientation(1); }
191  void SetOrientationToZ() { this->SetOrientation(2); }
193 
195 
199  vtkSetMacro(Cropping, vtkTypeBool);
200  vtkBooleanMacro(Cropping, vtkTypeBool);
201  vtkGetMacro(Cropping, vtkTypeBool);
203 
205 
209  vtkSetVector6Macro(CroppingRegion, int);
210  vtkGetVector6Macro(CroppingRegion, int);
212 
216  void Render(vtkRenderer* renderer, vtkImageSlice* prop) override;
217 
224 
228  vtkMTimeType GetMTime() override;
229 
231 
235  double* GetBounds() override;
236  void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
238 
239  // return the bounds in index space
240  void GetIndexBounds(double extent[6]) override;
241 
247  void GetSlicePlaneInDataCoords(vtkMatrix4x4* propMatrix, double plane[4]) override;
248 
253  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
254 
256 
260  void SetDisplayExtent(const int extent[6])
261  {
262  this->DisplayExtent[0] = extent[0];
263  this->DisplayExtent[1] = extent[1];
264  this->DisplayExtent[2] = extent[2];
265  this->DisplayExtent[3] = extent[3];
266  this->DisplayExtent[4] = extent[4];
267  this->DisplayExtent[5] = extent[5];
268  }
270 
271 protected:
274 
280  vtkPoints* GetPoints() { return this->Points; }
281 
286  void SetExactPixelMatch(int v) { this->ExactPixelMatch = (v != 0); }
287 
292  void SetPassColorData(int v) { this->PassColorData = (v != 0); }
293 
299  int GetOrientationFromCamera(double const* propMatrix, vtkCamera* camera);
300 
304  int GetSliceFromCamera(double const* propMatrix, vtkCamera* camera);
305 
309  static void GetDimensionIndices(int orientation, int& xdim, int& ydim);
310 
316  int CroppingRegion[6];
317  int DisplayExtent[6];
321 
322 private:
323  vtkImageSliceMapper(const vtkImageSliceMapper&) = delete;
324  void operator=(const vtkImageSliceMapper&) = delete;
325 
326  friend class vtkImageResliceMapper;
327 };
328 
329 VTK_ABI_NAMESPACE_END
330 #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:162
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
a simple class to control print indentation
Definition: vtkIndent.h:120
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:152
represent and manipulate 3D points
Definition: vtkPoints.h:150
abstract specification for renderers
Definition: vtkRenderer.h:183
window superclass for vtkRenderWindow
Definition: vtkWindow.h:40
@ points
Definition: vtkX3D.h:458
@ orientation
Definition: vtkX3D.h:274
@ extent
Definition: vtkX3D.h:357
int vtkTypeBool
Definition: vtkABI.h:71
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:281