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.
 
 
 
 
 
 

127 lines
4.3 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkVolumeTextureMapper2D.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 vtkVolumeTextureMapper2D - Abstract class for a volume mapper
// .SECTION Description
// vtkVolumeTextureMapper2D renders a volume using 2D texture mapping.
// .SECTION see also
// vtkVolumeMapper
#ifndef __vtkVolumeTextureMapper2D_h
#define __vtkVolumeTextureMapper2D_h
#include "vtkVolumeTextureMapper.h"
class VTK_VOLUMERENDERING_EXPORT vtkVolumeTextureMapper2D : public vtkVolumeTextureMapper
{
public:
vtkTypeRevisionMacro(vtkVolumeTextureMapper2D,vtkVolumeTextureMapper);
void PrintSelf( ostream& os, vtkIndent indent );
static vtkVolumeTextureMapper2D *New();
// Description:
// Target size in pixels of each size of the texture for downloading. Default is
// 512x512 - so a 512x512 texture will be tiled with as many slices of the volume
// as possible, then all the quads will be rendered. This can be set to optimize
// for a particular architecture. This must be set with numbers that are a power
// of two.
vtkSetVector2Macro( TargetTextureSize, int );
vtkGetVector2Macro( TargetTextureSize, int );
// Description:
// This is the maximum number of planes that will be created for texture mapping
// the volume. If the volume has more voxels than this along the viewing direction,
// then planes of the volume will be skipped to ensure that this maximum is not
// violated. A skip factor is used, and is incremented until the maximum condition
// is satisfied.
vtkSetMacro( MaximumNumberOfPlanes, int );
vtkGetMacro( MaximumNumberOfPlanes, int );
// Description:
// This is the maximum size of saved textures in bytes. If this size is large
// enough to hold the RGBA textures for all three directions (XxYxZx3x4 is
// the approximate value - it is actually a bit larger due to wasted space in
// the textures) then the textures will be saved.
vtkSetMacro( MaximumStorageSize, int );
vtkGetMacro( MaximumStorageSize, 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 *, vtkVolume *) {};
virtual void RenderQuads( int vtkNotUsed(count),
float *vtkNotUsed(v), float *vtkNotUsed(t),
unsigned char *vtkNotUsed(texture),
int vtkNotUsed(size)[2],
int vtkNotUsed(reverseFlag)) {};
// Description:
// Made public only for access from the templated method. Not a vtkGetMacro
// to avoid the PrintSelf defect.
int GetInternalSkipFactor() {return this->InternalSkipFactor;};
int *GetAxisTextureSize() {return &(this->AxisTextureSize[0][0]);};
int GetSaveTextures() {return this->SaveTextures;};
unsigned char *GetTexture() {return this->Texture;};
//ETX
protected:
vtkVolumeTextureMapper2D();
~vtkVolumeTextureMapper2D();
void InitializeRender( vtkRenderer *ren, vtkVolume *vol )
{this->InitializeRender( ren, vol, -1 );}
void InitializeRender( vtkRenderer *ren, vtkVolume *vol, int majorDirection );
void GenerateTexturesAndRenderQuads( vtkRenderer *ren, vtkVolume *vol );
int MajorDirection;
int TargetTextureSize[2];
int MaximumNumberOfPlanes;
int InternalSkipFactor;
int MaximumStorageSize;
unsigned char *Texture;
int TextureSize;
int SaveTextures;
vtkTimeStamp TextureMTime;
int AxisTextureSize[3][3];
void ComputeAxisTextureSize( int axis, int *size );
void RenderSavedTexture();
private:
vtkVolumeTextureMapper2D(const vtkVolumeTextureMapper2D&); // Not implemented.
void operator=(const vtkVolumeTextureMapper2D&); // Not implemented.
};
#endif