00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00032
#ifndef __vtkVolumeMapper_h
00033
#define __vtkVolumeMapper_h
00034
00035
#include "vtkAbstractMapper3D.h"
00036
00037
class vtkRenderer;
00038
class vtkVolume;
00039
class vtkImageData;
00040
00041 #define VTK_CROP_SUBVOLUME 0x0002000
00042 #define VTK_CROP_FENCE 0x2ebfeba
00043 #define VTK_CROP_INVERTED_FENCE 0x5140145
00044 #define VTK_CROP_CROSS 0x0417410
00045 #define VTK_CROP_INVERTED_CROSS 0x7be8bef
00046
00047
class vtkWindow;
00048
class vtkImageClip;
00049
00050 class VTK_RENDERING_EXPORT vtkVolumeMapper :
public vtkAbstractMapper3D
00051 {
00052
public:
00053 vtkTypeRevisionMacro(vtkVolumeMapper,
vtkAbstractMapper3D);
00054
void PrintSelf( ostream& os,
vtkIndent indent );
00055
00057
virtual void Update();
00058
00060
00061
virtual void SetInput(
vtkImageData * );
00062
vtkImageData *GetInput();
00064
00066
00081 vtkSetClampMacro( IndependentComponents,
int, 0, 1 );
00082 vtkGetMacro( IndependentComponents,
int );
00083 vtkBooleanMacro( IndependentComponents,
int );
00085
00087
00091 vtkSetClampMacro( ComponentBlendMode,
int,
00092 vtkVolumeMapper::ComponentBlendAdd,
00093 vtkVolumeMapper::ComponentBlendMaxOpacity );
00094 vtkGetMacro( ComponentBlendMode,
int );
00095 void SetComponentBlendModeToAdd()
00096 {this->SetComponentBlendMode(
vtkVolumeMapper::ComponentBlendAdd);};
00097 void SetComponentBlendModeToMaxOpacity()
00098 {this->SetComponentBlendMode(
vtkVolumeMapper::ComponentBlendMaxOpacity);};
00100
00101
00102
00104
00106 vtkSetClampMacro(Cropping,
int,0,1);
00107 vtkGetMacro(Cropping,
int);
00108 vtkBooleanMacro(Cropping,
int);
00110
00112
00115 vtkSetVector6Macro( CroppingRegionPlanes,
float );
00116 vtkGetVectorMacro( CroppingRegionPlanes,
float, 6 );
00118
00120
00122 vtkGetVectorMacro( VoxelCroppingRegionPlanes,
float, 6 );
00124
00126
00135 vtkSetClampMacro( CroppingRegionFlags,
int, 0x0, 0x7ffffff );
00136 vtkGetMacro( CroppingRegionFlags,
int );
00137 void SetCroppingRegionFlagsToSubVolume()
00138 {this->SetCroppingRegionFlags(
VTK_CROP_SUBVOLUME );};
00139 void SetCroppingRegionFlagsToFence()
00140 {this->SetCroppingRegionFlags(
VTK_CROP_FENCE );};
00141 void SetCroppingRegionFlagsToInvertedFence()
00142 {this->SetCroppingRegionFlags(
VTK_CROP_INVERTED_FENCE );};
00143 void SetCroppingRegionFlagsToCross()
00144 {this->SetCroppingRegionFlags(
VTK_CROP_CROSS );};
00145 void SetCroppingRegionFlagsToInvertedCross()
00146 {this->SetCroppingRegionFlags(
VTK_CROP_INVERTED_CROSS );};
00148
00150
00152
virtual float *
GetBounds();
00153 virtual void GetBounds(
float bounds[6])
00154 { this->
vtkAbstractMapper3D::GetBounds(bounds); };
00156
00157
00158
00160
00161 virtual float GetGradientMagnitudeScale() {
return 1.0;};
00162 virtual float GetGradientMagnitudeBias() {
return 0.0;};
00163 virtual float GetGradientMagnitudeScale(
int) {
return 1.0;};
00164 virtual float GetGradientMagnitudeBias(
int) {
return 0.0;};
00166
00167
00170
virtual void Render(
vtkRenderer *ren,
vtkVolume *vol)=0;
00171
00176 virtual void ReleaseGraphicsResources(
vtkWindow *) {};
00177
00178 enum ComponentBlendModes {
00179 ComponentBlendAdd = 0,
00180 ComponentBlendMaxOpacity
00181 };
00182
00183
00184
00186
00188
virtual void SetUseImageClipper(
int);
00189 vtkGetMacro(UseImageClipper,
int );
00190 vtkBooleanMacro(UseImageClipper,
int );
00192
00193
protected:
00194 vtkVolumeMapper();
00195 ~vtkVolumeMapper();
00196
00197
00198
00199 int Cropping;
00200 float CroppingRegionPlanes[6];
00201 float VoxelCroppingRegionPlanes[6];
00202 int CroppingRegionFlags;
00203
void ConvertCroppingRegionPlanesToVoxels();
00204
00205
00206 int IndependentComponents;
00207
00208
00209 int ComponentBlendMode;
00210
00211 vtkTimeStamp BuildTime;
00212
00213
00214 int UseImageClipper;
00215 vtkImageClip *ImageClipper;
00216
00217
00218
private:
00219 vtkVolumeMapper(
const vtkVolumeMapper&);
00220
void operator=(
const vtkVolumeMapper&);
00221 };
00222
00223
00224
#endif
00225
00226