VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
vtkVolumeRayCastSpaceLeapingImageFilter Class Reference

Builds the space leaping data structure. More...

#include <vtkVolumeRayCastSpaceLeapingImageFilter.h>

Inheritance diagram for vtkVolumeRayCastSpaceLeapingImageFilter:
Inheritance graph
[legend]
Collaboration diagram for vtkVolumeRayCastSpaceLeapingImageFilter:
Collaboration graph
[legend]

List of all members.

Public Types

typedef vtkThreadedImageAlgorithm Superclass

Public Member Functions

virtual int IsA (const char *type)
vtkVolumeRayCastSpaceLeapingImageFilterNewInstance () const
void PrintSelf (ostream &os, vtkIndent indent)
int GetNumberOfIndependentComponents ()
unsigned short * GetMinMaxVolume (int dims[4])
virtual void SetCache (vtkImageData *imageCache)
virtual void SetCurrentScalars (vtkDataArray *)
virtual vtkDataArrayGetCurrentScalars ()
virtual void SetIndependentComponents (int)
virtual int GetIndependentComponents ()
virtual void SetComputeGradientOpacity (int)
virtual int GetComputeGradientOpacity ()
virtual void ComputeGradientOpacityOn ()
virtual void ComputeGradientOpacityOff ()
virtual void SetComputeMinMax (int)
virtual int GetComputeMinMax ()
virtual void ComputeMinMaxOn ()
virtual void ComputeMinMaxOff ()
virtual void SetUpdateGradientOpacityFlags (int)
virtual int GetUpdateGradientOpacityFlags ()
virtual void UpdateGradientOpacityFlagsOn ()
virtual void UpdateGradientOpacityFlagsOff ()
unsigned long GetLastMinMaxBuildTime ()
unsigned long GetLastMinMaxFlagTime ()
virtual void SetTableShift (float, float, float, float)
virtual void SetTableShift (float[4])
virtual floatGetTableShift ()
virtual void GetTableShift (float &, float &, float &, float &)
virtual void GetTableShift (float[4])
virtual void SetTableScale (float, float, float, float)
virtual void SetTableScale (float[4])
virtual floatGetTableScale ()
virtual void GetTableScale (float &, float &, float &, float &)
virtual void GetTableScale (float[4])
virtual void SetTableSize (int, int, int, int)
virtual void SetTableSize (int[4])
virtual intGetTableSize ()
virtual void GetTableSize (int &, int &, int &, int &)
virtual void GetTableSize (int[4])
unsigned short * GetMinNonZeroScalarIndex ()
unsigned char * GetMinNonZeroGradientMagnitudeIndex ()
void SetGradientMagnitude (unsigned char **gradientMagnitude)
unsigned char ** GetGradientMagnitude ()
void SetScalarOpacityTable (int c, unsigned short *t)
void SetGradientOpacityTable (int c, unsigned short *t)
vtkIdType ComputeOffset (const int ext[6], const int wholeExt[6], int nComponents)

Static Public Member Functions

static int IsTypeOf (const char *type)
static
vtkVolumeRayCastSpaceLeapingImageFilter
SafeDownCast (vtkObjectBase *o)
static
vtkVolumeRayCastSpaceLeapingImageFilter
New ()
static void ComputeInputExtentsForOutput (int inExt[6], int inDim[3], int outExt[6], vtkImageData *inData)

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 vtkVolumeRayCastSpaceLeapingImageFilter ()
 ~vtkVolumeRayCastSpaceLeapingImageFilter ()
void InternalRequestUpdateExtent (int *, int *)
void ComputeFirstNonZeroOpacityIndices ()
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
void ThreadedRequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int outExt[6], int id)
virtual int RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
void FillScalarOpacityFlags (vtkImageData *minMaxVolume, int outExt[6])
void FillScalarAndGradientOpacityFlags (vtkImageData *minMaxVolume, int outExt[6])
virtual void AllocateOutputData (vtkImageData *out, vtkInformation *outInfo, int *uExtent)
virtual vtkImageDataAllocateOutputData (vtkDataObject *out, vtkInformation *outInfo)

Protected Attributes

int IndependentComponents
vtkTimeStamp LastMinMaxBuildTime
vtkTimeStamp LastMinMaxFlagTime
vtkDataArrayCurrentScalars
float TableShift [4]
float TableScale [4]
int TableSize [4]
int ComputeGradientOpacity
int ComputeMinMax
int UpdateGradientOpacityFlags
unsigned short * MinNonZeroScalarIndex
unsigned char * MinNonZeroGradientMagnitudeIndex
unsigned char ** GradientMagnitude
unsigned short * ScalarOpacityTable [4]
unsigned short * GradientOpacityTable [4]
vtkImageDataCache

Detailed Description

Builds the space leaping data structure.

This is an optimized multi-threaded imaging filter that builds the space leaping datastructure, used by vtkFixedPointVolumeRayCastMapper. Empty space leaping is used to skip large empty regions in the scalar opacity and/or the gradient opacity transfer functions. Depending on the various options set by vtkFixedPointVolumeRayCastMapper, the class will internally invoke one of the many optmized routines to compute the min/max/gradient-max values within a fixed block size, trying to compute everything in a single multi-threaded pass through the data

The block size may be changed at compile time. Its ifdef'ed to 4 in the CXX file.

Definition at line 39 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.


Member Typedef Documentation

Reimplemented from vtkThreadedImageAlgorithm.

Definition at line 42 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.


Constructor & Destructor Documentation


Member Function Documentation

static int vtkVolumeRayCastSpaceLeapingImageFilter::IsTypeOf ( const char *  name) [static]

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkThreadedImageAlgorithm.

virtual int vtkVolumeRayCastSpaceLeapingImageFilter::IsA ( const char *  name) [virtual]

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkThreadedImageAlgorithm.

Reimplemented from vtkThreadedImageAlgorithm.

Reimplemented from vtkThreadedImageAlgorithm.

Reimplemented from vtkThreadedImageAlgorithm.

void vtkVolumeRayCastSpaceLeapingImageFilter::PrintSelf ( ostream &  os,
vtkIndent  indent 
) [virtual]

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkThreadedImageAlgorithm.

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkAlgorithm.

Set the scalars.

Set the scalars.

Do we use independent components, or dependent components ?

Do we use independent components, or dependent components ?

Compute gradient opacity ?

Compute gradient opacity ?

Compute gradient opacity ?

Compute gradient opacity ?

Compute the min max structure ?.

Compute the min max structure ?.

Compute the min max structure ?.

Compute the min max structure ?.

Update the gradient opacity flags. (The scalar opacity flags are always updated upon execution of this filter.)

Update the gradient opacity flags. (The scalar opacity flags are always updated upon execution of this filter.)

Update the gradient opacity flags. (The scalar opacity flags are always updated upon execution of this filter.)

Update the gradient opacity flags. (The scalar opacity flags are always updated upon execution of this filter.)

Get the last execution time. This is updated every time the scalars or the gradient opacity values are computed

Definition at line 84 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Get the last execution time. This is updated every time the flags bits are re-computed.

Definition at line 91 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::SetTableShift ( float  ,
float  ,
float  ,
float   
) [virtual]

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::GetTableShift ( float ,
float ,
float ,
float  
) [virtual]

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::SetTableScale ( float  ,
float  ,
float  ,
float   
) [virtual]

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::GetTableScale ( float ,
float ,
float ,
float  
) [virtual]

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::SetTableSize ( int  ,
int  ,
int  ,
int   
) [virtual]

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::GetTableSize ( int ,
int ,
int ,
int  
) [virtual]

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Is the difference between max and min of the data less than 32768? If so, and if the data is not of float/double type, use a simple offset mapping. If the difference between max and min is 32768 or greater, or the data is of type float or double, we must use an offset / scaling mapping. In this case, the array size will be 32768 - we need to figure out the offset and scale factor.

Get the number of independent components for which we need to keep track of min/max

Get the raw pointer to the final computed space leaping datastructure. The result is only valid after Update() has been called on the filter. Note that this filter holds onto its memory. The dimensions of the min- max volume are in dims. The 4th value in the array indicates the number of independent components, (also queried via GetNumberOfIndependentComponents())

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::SetCache ( vtkImageData imageCache) [virtual]

INTERNAL - Do not use Set the last cached min-max volume, as used by vtkFixedPointVolumeRayCastMapper.

static void vtkVolumeRayCastSpaceLeapingImageFilter::ComputeInputExtentsForOutput ( int  inExt[6],
int  inDim[3],
int  outExt[6],
vtkImageData inData 
) [static]

Compute the extents and dimensions of the input that's required to generate an output min-max structure given by outExt. INTERNAL - Do not use

Get the first non-zero scalar opacity and gradient opacity indices for each independent copmonent INTERNAL - Do not use.

Get the first non-zero scalar opacity and gradient opacity indices for each independent copmonent INTERNAL - Do not use.

void vtkVolumeRayCastSpaceLeapingImageFilter::SetGradientMagnitude ( unsigned char **  gradientMagnitude)

Pointer to the pre-computed gradient magnitude structure. This is pre- computed by the vtkFixedPointVolumeRayCastMapper class. This should be set if one has the ComputeGradientOpacity flag enabled.

Pointer to the pre-computed gradient magnitude structure. This is pre- computed by the vtkFixedPointVolumeRayCastMapper class. This should be set if one has the ComputeGradientOpacity flag enabled.

Set the scalar opacity and gradient opacity tables computed for each component by the vtkFixedPointVolumeRayCastMapper

Set the scalar opacity and gradient opacity tables computed for each component by the vtkFixedPointVolumeRayCastMapper

vtkIdType vtkVolumeRayCastSpaceLeapingImageFilter::ComputeOffset ( const int  ext[6],
const int  wholeExt[6],
int  nComponents 
)

INTERNAL - Do not use Compute the offset within an image of whole extents wholeExt, to access the data starting at extents ext.

See superclass for details

Reimplemented from vtkImageAlgorithm.

void vtkVolumeRayCastSpaceLeapingImageFilter::ThreadedRequestData ( vtkInformation request,
vtkInformationVector **  inputVector,
vtkInformationVector outputVector,
vtkImageData ***  inData,
vtkImageData **  outData,
int  outExt[6],
int  id 
) [protected, virtual]

See superclass for details

Reimplemented from vtkThreadedImageAlgorithm.

virtual int vtkVolumeRayCastSpaceLeapingImageFilter::RequestData ( vtkInformation request,
vtkInformationVector **  inputVector,
vtkInformationVector outputVector 
) [protected, virtual]

See superclass for details

Reimplemented from vtkThreadedImageAlgorithm.

See superclass for details

Reimplemented from vtkImageAlgorithm.

Compute the first non-zero scalar opacity and gradient opacity values that are encountered when marching from the beginning of the transfer function tables.

void vtkVolumeRayCastSpaceLeapingImageFilter::FillScalarOpacityFlags ( vtkImageData minMaxVolume,
int  outExt[6] 
) [protected]

Fill the flags after processing the min/max/gradient structure. This optimized version is invoked when only scalar opacity table is needed.

Fill the flags after processing the min/max/gradient structure. This optimized version is invoked when both scalar and gradient opacity tables need to be visited.

virtual void vtkVolumeRayCastSpaceLeapingImageFilter::AllocateOutputData ( vtkImageData out,
vtkInformation outInfo,
int uExtent 
) [protected, virtual]

Allocate the output data. If we have a cache with the same metadata as the output we are going to generate, re-use the cache as we may not be updating all data in the min-max structure.

Reimplemented from vtkImageAlgorithm.

Allocate the output data. If we have a cache with the same metadata as the output we are going to generate, re-use the cache as we may not be updating all data in the min-max structure.

Reimplemented from vtkImageAlgorithm.


Member Data Documentation

Definition at line 176 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 177 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 178 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 179 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 180 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 181 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 182 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 183 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 184 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 185 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 186 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 187 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 188 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 189 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 190 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.

Definition at line 191 of file vtkVolumeRayCastSpaceLeapingImageFilter.h.


The documentation for this class was generated from the following file: