/usr/include/vtk-6.3/vtkAMRVolumeMapper.h is in libvtk6-dev 6.3.0+dfsg1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkAMRVolumeMapper.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkAMRVolumeMapper - AMR class for a volume mapper
// .SECTION Description
// vtkAMRVolumeMapper is the definition of a volume mapper.
// for AMR Structured Data
// .SECTION see also
//
#ifndef vtkAMRVolumeMapper_h
#define vtkAMRVolumeMapper_h
#include "vtkRenderingVolumeAMRModule.h" // For export macro
#include "vtkVolumeMapper.h"
#include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
class vtkAMRResampleFilter;
class vtkCamera;
class vtkImageData;
class vtkOverlappingAMR;
class vtkSmartVolumeMapper;
class vtkUniformGrid;
class VTKRENDERINGVOLUMEAMR_EXPORT vtkAMRVolumeMapper : public vtkVolumeMapper
{
public:
static vtkAMRVolumeMapper *New();
vtkTypeMacro(vtkAMRVolumeMapper,vtkVolumeMapper);
void PrintSelf( ostream& os, vtkIndent indent );
// Description:
// Set the input data
virtual void SetInputData( vtkImageData* );
virtual void SetInputData( vtkDataSet* );
virtual void SetInputData( vtkOverlappingAMR* );
virtual void SetInputConnection (int port, vtkAlgorithmOutput *input);
virtual void SetInputConnection (vtkAlgorithmOutput *input)
{this->SetInputConnection(0, input);}
// Description:
// Return bounding box (array of six doubles) of data expressed as
// (xmin,xmax, ymin,ymax, zmin,zmax).
virtual double *GetBounds();
virtual void GetBounds(double bounds[6])
{this->vtkVolumeMapper::GetBounds(bounds); };
// Description:
// Control how the mapper works with scalar point data and cell attribute
// data. By default (ScalarModeToDefault), the mapper will use point data,
// and if no point data is available, then cell data is used. Alternatively
// you can explicitly set the mapper to use point data
// (ScalarModeToUsePointData) or cell data (ScalarModeToUseCellData).
// You can also choose to get the scalars from an array in point field
// data (ScalarModeToUsePointFieldData) or cell field data
// (ScalarModeToUseCellFieldData). If scalars are coming from a field
// data array, you must call SelectScalarArray.
virtual void SetScalarMode(int mode);
// Description:
// Set/Get the blend mode. Currently this is only supported
// by the vtkFixedPointVolumeRayCastMapper - other mappers
// have different ways to set this (supplying a function
// to a vtkVolumeRayCastMapper) or don't have any options
// (vtkVolumeTextureMapper2D supports only compositing).
// Additive blend mode adds scalars along the ray and multiply them by
// their opacity mapping value.
virtual void SetBlendMode(int mode);
virtual int GetBlendMode();
// Description:
// When ScalarMode is set to UsePointFieldData or UseCellFieldData,
// you can specify which scalar array to use during rendering.
// The transfer function in the vtkVolumeProperty (attached to the calling
// vtkVolume) will decide how to convert vectors to colors.
virtual void SelectScalarArray(int arrayNum);
virtual void SelectScalarArray(const char* arrayName);
// Description:
// Get the array name or number and component to use for rendering.
virtual char* GetArrayName();
virtual int GetArrayId();
virtual int GetArrayAccessMode();
// Description:
// Return the method for obtaining scalar data.
const char *GetScalarModeAsString();
// Description:
// Turn On/Off orthogonal cropping. (Clipping planes are
// perpendicular to the coordinate axes.)
virtual void SetCropping(int mode);
virtual int GetCropping();
// Description:
// Set/Get the Cropping Region Planes ( xmin, xmax, ymin, ymax, zmin, zmax )
// These planes are defined in volume coordinates - spacing and origin are
// considered.
virtual void SetCroppingRegionPlanes(double arg1, double arg2, double arg3,
double arg4, double arg5, double arg6);
virtual void SetCroppingRegionPlanes(double *planes)
{this->SetCroppingRegionPlanes(
planes[0],planes[1],planes[2],
planes[3],planes[4],planes[5]);}
virtual void GetCroppingRegionPlanes(double *planes);
virtual double *GetCroppingRegionPlanes();
// Description:
// Set the flags for the cropping regions. The clipping planes divide the
// volume into 27 regions - there is one bit for each region. The regions
// start from the one containing voxel (0,0,0), moving along the x axis
// fastest, the y axis next, and the z axis slowest. These are represented
// from the lowest bit to bit number 27 in the integer containing the
// flags. There are several convenience functions to set some common
// configurations - subvolume (the default), fence (between any of the
// clip plane pairs), inverted fence, cross (between any two of the
// clip plane pairs) and inverted cross.
virtual void SetCroppingRegionFlags(int mode);
virtual int GetCroppingRegionFlags();
//BTX
// The possible values for the default and current render mode ivars
enum
{
DefaultRenderMode=0,
RayCastAndTextureRenderMode,
RayCastRenderMode,
TextureRenderMode,
GPURenderMode,
UndefinedRenderMode,
InvalidRenderMode
};
//ETX
// Description:
// Set the requested render mode. The default is
// vtkSmartVolumeMapper::DefaultRenderMode.
void SetRequestedRenderMode(int mode);
int GetRequestedRenderMode();
// Description:
// Set the requested render mode to vtkAMRVolumeMapper::DefaultRenderMode.
// This is the best option for an application that must adapt to different
// data types, hardware, and rendering parameters.
void SetRequestedRenderModeToDefault()
{this->SetRequestedRenderMode(vtkAMRVolumeMapper::DefaultRenderMode);}
// Description:
// Set the requested render mode to
// vtkAMRVolumeMapper::RayCastAndTextureRenderMode.
// This is a good option if you want to avoid using advanced OpenGL
// functionality, but would still like to used 3D texture mapping, if
// available, for interactive rendering.
void SetRequestedRenderModeToRayCastAndTexture()
{this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastAndTextureRenderMode);}
// Description:
// Set the requested render mode to vtkAMRVolumeMapper::RayCastRenderMode.
// This option will use software rendering exclusively. This is a good option
// if you know there is no hardware acceleration.
void SetRequestedRenderModeToRayCast()
{this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastRenderMode);}
// Description:
// Set the requested render mode to
// vtkAMRVolumeMapper::TextureRenderMode.
// This is a good option if you want to use 3D texture mapping, if
// available, for interactive rendering.
void SetRequestedRenderModeToTexture()
{this->SetRequestedRenderMode(vtkAMRVolumeMapper::TextureRenderMode);}
// Description:
// Set the requested render mode to
// vtkAMRVolumeMapper::GPURenderMode.
// This will do the volume rendering on the GPU
void SetRequestedRenderModeToGPU()
{this->SetRequestedRenderMode(vtkAMRVolumeMapper::GPURenderMode);}
// Description:
// Set interpolation mode for downsampling (lowres GPU)
// (initial value: cubic).
void SetInterpolationMode(int mode);
int GetInterpolationMode();
void SetInterpolationModeToNearestNeighbor()
{this->SetInterpolationMode(VTK_RESLICE_NEAREST);}
void SetInterpolationModeToLinear()
{this->SetInterpolationMode(VTK_RESLICE_LINEAR);}
void SetInterpolationModeToCubic()
{this->SetInterpolationMode(VTK_RESLICE_CUBIC);}
// Description:
// Set/Get the number of samples/cells along the i/j/k directions.
// The default is 128x128x128
vtkSetVector3Macro(NumberOfSamples,int);
vtkGetVector3Macro(NumberOfSamples,int);
//BTX
// Description:
// WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE
// DO NOT USE THIS METHOD OUTSIDE OF THE RENDERING PROCESS
// Render the volume
virtual void Render(vtkRenderer *ren, vtkVolume *vol);
// Description:
// WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE
// Release any graphics resources that are being consumed by this mapper.
// The parameter window could be used to determine which graphic
// resources to release.
virtual void ReleaseGraphicsResources(vtkWindow *);
void ProcessUpdateExtentRequest(vtkRenderer *renderer, vtkInformation*info,
vtkInformationVector **inputVector,
vtkInformationVector *outputVector);
void ProcessInformationRequest(vtkRenderer *renderer, vtkInformation*info,
vtkInformationVector **inputVector,
vtkInformationVector *outputVector);
void UpdateResampler(vtkRenderer *ren, vtkOverlappingAMR *amr);
void UpdateResamplerFrustrumMethod(vtkRenderer *ren, vtkOverlappingAMR *amr);
//ETX
// Description:
//Select the type of resampling techinque approach to use.
vtkSetMacro(RequestedResamplingMode, int);
vtkGetMacro(RequestedResamplingMode, int);
vtkSetMacro(FreezeFocalPoint, bool);
vtkGetMacro(FreezeFocalPoint, bool);
// Description:
//Sets/Gets the tolerance used to determine if the resampler needs
// to be updated. Default is 10e-8
vtkSetMacro(ResamplerUpdateTolerance, double);
vtkGetMacro(ResamplerUpdateTolerance, double);
// Description:
//Sets/Gets a flag that indicates the internal volume mapper
// should use the default number of threads. This is useful in applications
// such as ParaView that will turn off multiple threads by default. Default is false
vtkSetMacro(UseDefaultThreading, bool);
vtkGetMacro(UseDefaultThreading, bool);
// Description:
// Utility method used by UpdateResamplerFrustrumMethod() to compute the
// bounds.
static bool ComputeResamplerBoundsFrustumMethod(
vtkCamera* camera, vtkRenderer* renderer,
const double data_bounds[6], double out_bounds[6]);
protected:
vtkAMRVolumeMapper();
~vtkAMRVolumeMapper();
// see algorithm for more info
virtual int FillInputPortInformation(int port, vtkInformation* info);
void UpdateGrid();
vtkSmartVolumeMapper *InternalMapper;
vtkAMRResampleFilter *Resampler;
vtkUniformGrid *Grid;
int NumberOfSamples[3];
double Bounds[6];
// This indicates that the input has meta data for
// doing demand driven operations.
bool HasMetaData;
int RequestedResamplingMode;
bool FreezeFocalPoint;
// Cached values for camera focal point and
// the distance between the camera position and
// focal point
double LastFocalPointPosition[3];
double LastPostionFPDistance;
// This is used when determing if
// either the camera or focal point has
// move enough to cause the resampler to update
double ResamplerUpdateTolerance;
bool GridNeedsToBeUpdated;
bool UseDefaultThreading;
private:
vtkAMRVolumeMapper(const vtkAMRVolumeMapper&); // Not implemented.
void operator=(const vtkAMRVolumeMapper&); // Not implemented.
};
#endif
|