VTK  9.1.0
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 =========================================================================*/
139 #ifndef vtkImageSliceMapper_h
140 #define vtkImageSliceMapper_h
141 
142 #include "vtkImageMapper3D.h"
143 #include "vtkRenderingCoreModule.h" // For export macro
144 
145 class vtkCamera;
146 class vtkPoints;
147 
148 class VTKRENDERINGCORE_EXPORT vtkImageSliceMapper : public vtkImageMapper3D
149 {
150 public:
153  void PrintSelf(ostream& os, vtkIndent indent) override;
154 
156 
159  virtual void SetSliceNumber(int slice);
160  virtual int GetSliceNumber();
162 
164 
169  virtual int GetSliceNumberMinValue();
170  virtual int GetSliceNumberMaxValue();
172 
174 
179  vtkSetClampMacro(Orientation, int, 0, 2);
180  vtkGetMacro(Orientation, int);
181  void SetOrientationToI() { this->SetOrientation(0); }
182  void SetOrientationToJ() { this->SetOrientation(1); }
183  void SetOrientationToK() { this->SetOrientation(2); }
184  // old methods
185  void SetOrientationToX() { this->SetOrientation(0); }
186  void SetOrientationToY() { this->SetOrientation(1); }
187  void SetOrientationToZ() { this->SetOrientation(2); }
189 
191 
195  vtkSetMacro(Cropping, vtkTypeBool);
196  vtkBooleanMacro(Cropping, vtkTypeBool);
197  vtkGetMacro(Cropping, vtkTypeBool);
199 
201 
205  vtkSetVector6Macro(CroppingRegion, int);
206  vtkGetVector6Macro(CroppingRegion, int);
208 
212  void Render(vtkRenderer* renderer, vtkImageSlice* prop) override;
213 
220 
224  vtkMTimeType GetMTime() override;
225 
227 
231  double* GetBounds() override;
232  void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
234 
235  // return the bounds in index space
236  void GetIndexBounds(double extent[6]) override;
237 
243  void GetSlicePlaneInDataCoords(vtkMatrix4x4* propMatrix, double plane[4]) override;
244 
249  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
250 
252 
256  void SetDisplayExtent(const int extent[6])
257  {
258  this->DisplayExtent[0] = extent[0];
259  this->DisplayExtent[1] = extent[1];
260  this->DisplayExtent[2] = extent[2];
261  this->DisplayExtent[3] = extent[3];
262  this->DisplayExtent[4] = extent[4];
263  this->DisplayExtent[5] = extent[5];
264  }
266 
267 protected:
270 
276  vtkPoints* GetPoints() { return this->Points; }
277 
282  void SetExactPixelMatch(int v) { this->ExactPixelMatch = (v != 0); }
283 
288  void SetPassColorData(int v) { this->PassColorData = (v != 0); }
289 
295  int GetOrientationFromCamera(double const* propMatrix, vtkCamera* camera);
296 
300  int GetSliceFromCamera(double const* propMatrix, vtkCamera* camera);
301 
305  static void GetDimensionIndices(int orientation, int& xdim, int& ydim);
306 
312  int CroppingRegion[6];
313  int DisplayExtent[6];
317 
318 private:
319  vtkImageSliceMapper(const vtkImageSliceMapper&) = delete;
320  void operator=(const vtkImageSliceMapper&) = delete;
321 
322  friend class vtkImageResliceMapper;
323 };
324 
325 #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:155
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:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:145
represent and manipulate 3D points
Definition: vtkPoints.h:143
abstract specification for renderers
Definition: vtkRenderer.h:173
window superclass for vtkRenderWindow
Definition: vtkWindow.h:36
@ points
Definition: vtkX3D.h:452
@ orientation
Definition: vtkX3D.h:268
@ extent
Definition: vtkX3D.h:351
int vtkTypeBool
Definition: vtkABI.h:69
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287