Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

135 lines
4.5 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkVolumeTextureMapper.h,v $
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 vtkVolumeTextureMapper - Abstract class for a volume mapper
// .SECTION Description
// vtkVolumeTextureMapper is the abstract definition of a volume mapper
// that uses a texture mapping approach.
// .SECTION see also
// vtkVolumeMapper
#ifndef __vtkVolumeTextureMapper_h
#define __vtkVolumeTextureMapper_h
#include "vtkVolumeMapper.h"
class vtkEncodedGradientEstimator;
class vtkEncodedGradientShader;
class vtkRenderWindow;
class vtkRenderer;
class vtkVolume;
class VTK_VOLUMERENDERING_EXPORT vtkVolumeTextureMapper : public vtkVolumeMapper
{
public:
vtkTypeRevisionMacro(vtkVolumeTextureMapper,vtkVolumeMapper);
void PrintSelf( ostream& os, vtkIndent indent );
// Description:
// Update the volume rendering pipeline by updating the scalar input
virtual void Update();
// Description:
// Set / Get the gradient estimator used to estimate normals
virtual void SetGradientEstimator( vtkEncodedGradientEstimator *gradest );
vtkGetObjectMacro( GradientEstimator, vtkEncodedGradientEstimator );
// Description:
// Get the gradient shader.
vtkGetObjectMacro( GradientShader, vtkEncodedGradientShader );
//BTX
// Description:
// Allow access to the arrays / variables from the templated functions in the
// subclasses.
float *GetGradientOpacityArray(){return this->GradientOpacityArray;};
unsigned char *GetRGBAArray(){return this->RGBAArray;};
float *GetRedDiffuseShadingTable(){return this->RedDiffuseShadingTable;};
float *GetGreenDiffuseShadingTable(){return this->GreenDiffuseShadingTable;};
float *GetBlueDiffuseShadingTable(){return this->BlueDiffuseShadingTable;};
float *GetRedSpecularShadingTable(){return this->RedSpecularShadingTable;};
float *GetGreenSpecularShadingTable(){return this->GreenSpecularShadingTable;};
float *GetBlueSpecularShadingTable(){return this->BlueSpecularShadingTable;};
unsigned short *GetEncodedNormals(){return this->EncodedNormals;};
unsigned char *GetGradientMagnitudes(){return this->GradientMagnitudes;};
vtkGetMacro( Shade, int );
vtkGetObjectMacro( RenderWindow, vtkRenderWindow );
vtkGetVectorMacro( DataOrigin, double, 3 );
vtkGetVectorMacro( DataSpacing, double, 3 );
// 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)=0;
// Description:
// WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE
// Values needed by the volume
virtual float GetGradientMagnitudeScale();
virtual float GetGradientMagnitudeBias();
virtual float GetGradientMagnitudeScale(int)
{ return this->GetGradientMagnitudeScale(); };
virtual float GetGradientMagnitudeBias(int)
{ return this->GetGradientMagnitudeBias(); };
//ETX
protected:
vtkVolumeTextureMapper();
~vtkVolumeTextureMapper();
void InitializeRender( vtkRenderer *ren, vtkVolume *vol );
virtual void ReportReferences(vtkGarbageCollector*);
// Objects / variables needed for shading / gradient magnitude opacity
vtkEncodedGradientEstimator *GradientEstimator;
vtkEncodedGradientShader *GradientShader;
int Shade;
float *GradientOpacityArray;
unsigned char *RGBAArray;
int ArraySize;
int NumberOfComponents;
float *RedDiffuseShadingTable;
float *GreenDiffuseShadingTable;
float *BlueDiffuseShadingTable;
float *RedSpecularShadingTable;
float *GreenSpecularShadingTable;
float *BlueSpecularShadingTable;
double DataOrigin[3];
double DataSpacing[3];
unsigned short *EncodedNormals;
unsigned char *GradientMagnitudes;
float SampleDistance;
vtkRenderWindow *RenderWindow;
private:
vtkVolumeTextureMapper(const vtkVolumeTextureMapper&); // Not implemented.
void operator=(const vtkVolumeTextureMapper&); // Not implemented.
};
#endif