VTK
vtkVolumeMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVolumeMapper.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 =========================================================================*/
28 #ifndef vtkVolumeMapper_h
29 #define vtkVolumeMapper_h
30 
31 #include "vtkRenderingVolumeModule.h" // For export macro
33 
34 class vtkRenderer;
35 class vtkVolume;
36 class vtkImageData;
37 
38 #define VTK_CROP_SUBVOLUME 0x0002000
39 #define VTK_CROP_FENCE 0x2ebfeba
40 #define VTK_CROP_INVERTED_FENCE 0x5140145
41 #define VTK_CROP_CROSS 0x0417410
42 #define VTK_CROP_INVERTED_CROSS 0x7be8bef
43 
44 class vtkWindow;
45 
46 class VTKRENDERINGVOLUME_EXPORT vtkVolumeMapper : public vtkAbstractVolumeMapper
47 {
48 public:
50  void PrintSelf( ostream& os, vtkIndent indent ) override;
51 
53 
56  virtual void SetInputData( vtkImageData * );
57  virtual void SetInputData( vtkDataSet * );
58  virtual vtkImageData* GetInput();
59  virtual vtkImageData* GetInput(const int port);
61 
63 
105  vtkSetMacro( BlendMode, int );
107  { this->SetBlendMode( vtkVolumeMapper::COMPOSITE_BLEND ); }
109  { this->SetBlendMode( vtkVolumeMapper::MAXIMUM_INTENSITY_BLEND ); }
111  { this->SetBlendMode( vtkVolumeMapper::MINIMUM_INTENSITY_BLEND ); }
113  { this->SetBlendMode( vtkVolumeMapper::AVERAGE_INTENSITY_BLEND ); }
115  { this->SetBlendMode( vtkVolumeMapper::ADDITIVE_BLEND ); }
117  { this->SetBlendMode( vtkVolumeMapper::ISOSURFACE_BLEND ); }
118  vtkGetMacro( BlendMode, int );
120 
122 
130  vtkSetVector2Macro(AverageIPScalarRange, double);
131  vtkGetVectorMacro(AverageIPScalarRange, double, 2);
133 
135 
139  vtkSetClampMacro(Cropping,vtkTypeBool,0,1);
140  vtkGetMacro(Cropping,vtkTypeBool);
141  vtkBooleanMacro(Cropping,vtkTypeBool);
143 
145 
150  vtkSetVector6Macro( CroppingRegionPlanes, double );
151  vtkGetVectorMacro( CroppingRegionPlanes, double, 6 );
153 
155 
159  vtkGetVectorMacro( VoxelCroppingRegionPlanes, double, 6 );
161 
163 
174  vtkSetClampMacro( CroppingRegionFlags, int, 0x0, 0x7ffffff );
175  vtkGetMacro( CroppingRegionFlags, int );
177  {this->SetCroppingRegionFlags( VTK_CROP_SUBVOLUME );};
179  {this->SetCroppingRegionFlags( VTK_CROP_FENCE );};
181  {this->SetCroppingRegionFlags( VTK_CROP_INVERTED_FENCE );};
183  {this->SetCroppingRegionFlags( VTK_CROP_CROSS );};
185  {this->SetCroppingRegionFlags( VTK_CROP_INVERTED_CROSS );};
187 
193  void Render(vtkRenderer *ren, vtkVolume *vol) override =0;
194 
202 
246  {
252  ISOSURFACE_BLEND
253  };
254 
255 protected:
256  vtkVolumeMapper();
257  ~vtkVolumeMapper() override;
258 
264  double SpacingAdjustedSampleDistance(double inputSpacing[3],
265  int inputExtent[6]);
266 
268 
272  double AverageIPScalarRange[2];
273 
275 
280  double CroppingRegionPlanes[6];
281  double VoxelCroppingRegionPlanes[6];
283  void ConvertCroppingRegionPlanesToVoxels();
285 
286  int FillInputPortInformation(int, vtkInformation*) override;
287 
288 private:
289  vtkVolumeMapper(const vtkVolumeMapper&) = delete;
290  void operator=(const vtkVolumeMapper&) = delete;
291 };
292 
293 
294 #endif
295 
296 
VTK_CROP_INVERTED_CROSS
#define VTK_CROP_INVERTED_CROSS
Definition: vtkVolumeMapper.h:42
vtkVolumeMapper
Abstract class for a volume mapper.
Definition: vtkVolumeMapper.h:46
vtkVolumeMapper::ADDITIVE_BLEND
Definition: vtkVolumeMapper.h:251
vtkVolumeMapper::SetBlendModeToComposite
void SetBlendModeToComposite()
Definition: vtkVolumeMapper.h:106
VTK_CROP_FENCE
#define VTK_CROP_FENCE
Definition: vtkVolumeMapper.h:39
vtkVolumeMapper::MAXIMUM_INTENSITY_BLEND
Definition: vtkVolumeMapper.h:248
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
vtkVolumeMapper::SetBlendModeToIsoSurface
void SetBlendModeToIsoSurface()
Definition: vtkVolumeMapper.h:116
vtkAbstractVolumeMapper::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkVolumeMapper::SetBlendModeToAdditive
void SetBlendModeToAdditive()
Definition: vtkVolumeMapper.h:114
vtkVolumeMapper::BlendMode
int BlendMode
Definition: vtkVolumeMapper.h:267
vtkVolumeMapper::SetCroppingRegionFlagsToSubVolume
void SetCroppingRegionFlagsToSubVolume()
Definition: vtkVolumeMapper.h:176
vtkAbstractVolumeMapper.h
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkAbstractVolumeMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkVolumeMapper::SetBlendModeToMinimumIntensity
void SetBlendModeToMinimumIntensity()
Definition: vtkVolumeMapper.h:110
vtkVolumeMapper::AVERAGE_INTENSITY_BLEND
Definition: vtkVolumeMapper.h:250
vtkX3D::port
Definition: vtkX3D.h:447
vtkVolumeMapper::COMPOSITE_BLEND
Definition: vtkVolumeMapper.h:247
VTK_CROP_SUBVOLUME
#define VTK_CROP_SUBVOLUME
Definition: vtkVolumeMapper.h:38
vtkVolumeMapper::SetCroppingRegionFlagsToFence
void SetCroppingRegionFlagsToFence()
Definition: vtkVolumeMapper.h:178
VTK_CROP_CROSS
#define VTK_CROP_CROSS
Definition: vtkVolumeMapper.h:41
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkVolumeMapper::SetBlendModeToAverageIntensity
void SetBlendModeToAverageIntensity()
Definition: vtkVolumeMapper.h:112
VTK_CROP_INVERTED_FENCE
#define VTK_CROP_INVERTED_FENCE
Definition: vtkVolumeMapper.h:40
vtkVolumeMapper::SetCroppingRegionFlagsToInvertedCross
void SetCroppingRegionFlagsToInvertedCross()
Definition: vtkVolumeMapper.h:184
vtkVolumeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
Definition: vtkVolumeMapper.h:201
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkVolumeMapper::SetCroppingRegionFlagsToCross
void SetCroppingRegionFlagsToCross()
Definition: vtkVolumeMapper.h:182
vtkVolumeMapper::BlendModes
BlendModes
Blend modes.
Definition: vtkVolumeMapper.h:245
vtkVolumeMapper::SetBlendModeToMaximumIntensity
void SetBlendModeToMaximumIntensity()
Definition: vtkVolumeMapper.h:108
vtkAbstractVolumeMapper
Abstract class for a volume mapper.
Definition: vtkAbstractVolumeMapper.h:38
vtkVolumeMapper::MINIMUM_INTENSITY_BLEND
Definition: vtkVolumeMapper.h:249
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:63
vtkVolumeMapper::SetCroppingRegionFlagsToInvertedFence
void SetCroppingRegionFlagsToInvertedFence()
Definition: vtkVolumeMapper.h:180
vtkVolumeMapper::CroppingRegionFlags
int CroppingRegionFlags
Definition: vtkVolumeMapper.h:282
vtkVolumeMapper::Cropping
vtkTypeBool Cropping
Cropping variables, and a method for converting the world coordinate cropping region planes to voxel ...
Definition: vtkVolumeMapper.h:279
vtkVolumeMapper::ISOSURFACE_BLEND
Definition: vtkVolumeMapper.h:252
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkAbstractVolumeMapper::Render
virtual void Render(vtkRenderer *ren, vtkVolume *vol)=0
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...