/usr/include/vtk-5.10/vtkVolumeRayCastFunction.h is in libvtk5-dev 5.10.1+dfsg-2.1build1.
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 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkVolumeRayCastFunction.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 vtkVolumeRayCastFunction - a superclass for ray casting functions
// .SECTION Description
// vtkVolumeRayCastFunction is a superclass for ray casting functions that
// can be used within a vtkVolumeRayCastMapper. This includes for example,
// vtkVolumeRayCastCompositeFunction, vtkVolumeRayCastMIPFunction, and
// vtkVolumeRayCastIsosurfaceFunction.
// .SECTION See Also
// vtkVolumeRayCastCompositeFunction vtkVolumeRayCastMIPFunction
// vtkVolumeRayCastIsosurfaceFunction vtkVolumeRayCastMapper
#ifndef __vtkVolumeRayCastFunction_h
#define __vtkVolumeRayCastFunction_h
#include "vtkObject.h"
class vtkRenderer;
class vtkVolume;
class vtkVolumeRayCastMapper;
// Define a couple of structures we need to hold all the important information
// This first structure hold the dynamic information - stuff that changes per
// ray
typedef struct
{
// These are the return values - RGBA
float Color[4];
float ScalarValue;
// Ray information transformed into local coordinates
float TransformedStart[4];
float TransformedEnd[4];
float TransformedDirection[4];
float TransformedIncrement[3];
// The number of steps we want to take if this is
// a ray caster that takes steps
int NumberOfStepsToTake;
// The number of steps we actually take if this is
// a ray caster that takes steps
int NumberOfStepsTaken;
} vtkVolumeRayCastDynamicInfo;
// This second structure hold the static information - things that don't
// change over the whole image
typedef struct
{
// A pointer to the volume
vtkVolume *Volume;
// A pointer to the renderer
vtkRenderer *Renderer;
// Matrices for switching from view to volume coordinate, and back
float WorldToVoxelsMatrix[16];
float VoxelsToWorldMatrix[16];
float ViewToVoxelsMatrix[16];
float *ClippingPlane;
int NumberOfClippingPlanes;
// The camera thickness (distance between near and far) is necessary
// for computing sampling distance
float CameraThickness;
// The type of the data and a pointer to it, and the information
// about its size, spacing, origin and precomputed increment
int ScalarDataType;
void *ScalarDataPointer;
vtkIdType DataIncrement[3];
int DataSize[3];
double DataSpacing[3];
double DataOrigin[3];
// Information from the vtkVolumeProperty
int Shading;
int ColorChannels;
float Color[3];
int InterpolationType;
// The shading tables from the vtkEncodedGradientShader
// that will be used for shading the volume.
float *RedDiffuseShadingTable;
float *GreenDiffuseShadingTable;
float *BlueDiffuseShadingTable;
float *RedSpecularShadingTable;
float *GreenSpecularShadingTable;
float *BlueSpecularShadingTable;
// Info needed from the gradient estimator
unsigned short *EncodedNormals;
unsigned char *GradientMagnitudes;
// Image information
int ImageInUseSize[2];
int ImageMemorySize[2];
int ImageViewportSize[2];
int ImageOrigin[2];
unsigned char *Image;
int *RowBounds;
// Is a MIP ray cast function in use? This will control
// how subsegments of the ray are combined when non-subvolume
// cropping is used. If maximize opacity is used, the color[3]
// value is used to find the max othersize the dynamicInfo->ScalarValue
// value is used
int MIPFunction;
int MaximizeOpacity;
} vtkVolumeRayCastStaticInfo;
class VTK_VOLUMERENDERING_EXPORT vtkVolumeRayCastFunction : public vtkObject
{
public:
vtkTypeMacro(vtkVolumeRayCastFunction,vtkObject);
virtual void PrintSelf(ostream& os, vtkIndent indent);
//BTX
// Description:
// Do the basic initialization. This includes saving the parameters
// passed in into local variables, as well as grabbing some useful
// info from the volume property and normal encoder. This initialize
// routine is called once per render. It also calls the
// SpecificFunctionInitialize of the subclass function.
void FunctionInitialize( vtkRenderer *ren,
vtkVolume *vol,
vtkVolumeRayCastStaticInfo *staticInfo );
virtual void CastRay( vtkVolumeRayCastDynamicInfo *dynamicInfo,
vtkVolumeRayCastStaticInfo *staticInfo )=0;
//ETX
// Description:
// Get the value below which all scalar values are considered to
// have 0 opacity.
virtual float GetZeroOpacityThreshold( vtkVolume *vol )=0;
protected:
vtkVolumeRayCastFunction() {};
~vtkVolumeRayCastFunction() {};
//BTX
// Description:
// This method gives the subclass a chance to do any special
// initialization that it may need to do
virtual void SpecificFunctionInitialize( vtkRenderer *ren,
vtkVolume *vol,
vtkVolumeRayCastStaticInfo *staticInfo,
vtkVolumeRayCastMapper *mapper )=0;
//ETX
private:
vtkVolumeRayCastFunction(const vtkVolumeRayCastFunction&); // Not implemented.
void operator=(const vtkVolumeRayCastFunction&); // Not implemented.
};
#endif
|