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.
 
 
 
 
 
 

264 lines
7.3 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkVolumeProMapper.cxx,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.
=========================================================================*/
#include "vtkVolumeProMapper.h"
#include "vtkRenderer.h"
#include "vtkToolkits.h"
#if defined (VTK_HAVE_VP1000) || defined (VTK_FORCE_COMPILE_VP1000)
#include "vtkVolumeProVP1000Mapper.h"
#endif
#include "vtkDebugLeaks.h"
#include "vtkObjectFactory.h"
vtkCxxRevisionMacro(vtkVolumeProMapper, "$Revision: 1.1 $");
//----------------------------------------------------------------------------
// Needed when we don't use the vtkStandardNewMacro.
vtkInstantiatorNewMacro(vtkVolumeProMapper);
//----------------------------------------------------------------------------
// Create the mapper. No context has been created, no volume has
// been created yet.
vtkVolumeProMapper::vtkVolumeProMapper()
{
int i;
this->Context = NULL;
this->Volume = NULL;
this->VolumeInput = NULL;
this->VolumeBuildTime = vtkTimeStamp::New();
this->Lights = NULL;
this->NumberOfLights = 0;
this->BlendMode = VTK_BLEND_MODE_COMPOSITE;
// Disable the subvolume
for ( i = 0; i < 6; i++ )
{
this->SubVolume[i] = -1;
}
this->GradientOpacityModulation = 0;
this->GradientDiffuseModulation = 0;
this->GradientSpecularModulation = 0;
this->Cursor = 0;
this->CursorType = VTK_CURSOR_TYPE_CROSSHAIR;
this->CursorPosition[0] = 0.0;
this->CursorPosition[1] = 0.0;
this->CursorPosition[2] = 0.0;
this->CursorXAxisColor[0] = 1.0;
this->CursorXAxisColor[1] = 0.0;
this->CursorXAxisColor[2] = 0.0;
this->CursorYAxisColor[0] = 0.0;
this->CursorYAxisColor[1] = 1.0;
this->CursorYAxisColor[2] = 0.0;
this->CursorZAxisColor[0] = 0.0;
this->CursorZAxisColor[1] = 0.0;
this->CursorZAxisColor[2] = 1.0;
this->CutPlane = 0;
this->CutPlaneEquation[0] = 1.0;
this->CutPlaneEquation[1] = 0.0;
this->CutPlaneEquation[2] = 0.0;
this->CutPlaneEquation[3] = 0.0;
this->CutPlaneThickness = 0.0;
this->CutPlaneFallOffDistance = 0;
this->SuperSampling = 0;
this->SuperSamplingFactor[0] = 1.0;
this->SuperSamplingFactor[1] = 1.0;
this->SuperSamplingFactor[2] = 1.0;
this->NumberOfBoards = 0;
this->MajorBoardVersion = 0;
this->MinorBoardVersion = 0;
this->NoHardware = 0;
this->WrongVLIVersion = 0;
this->DisplayedMessage = 0;
this->Cut = NULL;
this->IntermixIntersectingGeometry = 0;
}
// Destroy the mapper. Delete the context, volume build time, and the
// volume if necessary
vtkVolumeProMapper::~vtkVolumeProMapper()
{
this->VolumeBuildTime->Delete();
}
// Simplified version - just assume the mapper type
vtkVolumeProMapper *vtkVolumeProMapper::New()
{
// First try to create the object from the vtkObjectFactory
vtkObject* ret = vtkObjectFactory::CreateInstance("vtkVolumeProMapper");
if(ret)
{
return (vtkVolumeProMapper*)ret;
}
#if defined (VTK_HAVE_VP1000) || defined (VTK_FORCE_COMPILE_VP1000)
vtkDebugLeaks::DestructClass("vtkVolumeProMapper");
return vtkVolumeProVP1000Mapper::New();
#else
// if not using vli, then return the stub class, which will render
// nothing....
return new vtkVolumeProMapper;
#endif
}
int vtkVolumeProMapper::StatusOK()
{
if ( this->NoHardware )
{
if ( !this->DisplayedMessage )
{
vtkErrorMacro( << "No Hardware Found!" );
this->DisplayedMessage = 1;
}
return 0;
}
if ( this->WrongVLIVersion )
{
if ( !this->DisplayedMessage )
{
vtkErrorMacro( << "Wrong VLI Version found!" );
this->DisplayedMessage = 1;
}
return 0;
}
if ( this->Context == NULL )
{
return 0;
}
if ( this->LookupTable == NULL )
{
return 0;
}
if ( this->Cut == NULL )
{
return 0;
}
return 1;
}
void vtkVolumeProMapper::SetSuperSamplingFactor( double x, double y, double z )
{
if ( x < 0.0 || x > 1.0 ||
y < 0.0 || y > 1.0 ||
z < 0.0 || z > 1.0 )
{
vtkErrorMacro( << "Invalid supersampling factor" << endl <<
"Each component must be between 0 and 1" );
return;
}
this->SuperSamplingFactor[0] = x;
this->SuperSamplingFactor[1] = y;
this->SuperSamplingFactor[2] = z;
this->Modified();
}
void vtkVolumeProMapper::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os,indent);
// don't print this->SubVolume
os << indent << "Number Of Boards: " << this->NumberOfBoards << endl;
os << indent << "Major Board Version: " << this->MajorBoardVersion << endl;
os << indent << "Minor Board Version: " << this->MinorBoardVersion << endl;
os << indent << "Hardware Available: " <<
(this->NoHardware ? "No\n" : "Yes\n");
os << indent << "Correct vli Version: " <<
(this->WrongVLIVersion ? "No\n" : "Yes\n");
os << indent << "Super Sampling: " <<
(this->SuperSampling ? "On\n" : "Off\n");
os << indent << "Super Sampling Factor: " <<
this->SuperSamplingFactor[0] << " by " <<
this->SuperSamplingFactor[1] << " by " <<
this->SuperSamplingFactor[2] << endl;
os << indent << "Intermix Intersecting Geometry: "
<< (this->IntermixIntersectingGeometry ? "On\n" : "Off\n");
os << indent << "Cursor: " << (this->Cursor ? "On\n" : "Off\n");
os << indent << "Cursor Position: (" <<
this->CursorPosition[0] << ", " <<
this->CursorPosition[1] << ", " <<
this->CursorPosition[0] << ")\n";
os << indent << "Cursor X Axis Color: (" <<
this->CursorXAxisColor[0] << ", " <<
this->CursorXAxisColor[1] << ", " <<
this->CursorXAxisColor[0] << ")\n";
os << indent << "Cursor Y Axis Color: (" <<
this->CursorYAxisColor[0] << ", " <<
this->CursorYAxisColor[1] << ", " <<
this->CursorYAxisColor[0] << ")\n";
os << indent << "Cursor Z Axis Color: (" <<
this->CursorZAxisColor[0] << ", " <<
this->CursorZAxisColor[1] << ", " <<
this->CursorZAxisColor[0] << ")\n";
os << indent << "Cursor Type: " << this->GetCursorTypeAsString() << endl;
os << indent << "Blend Mode: " << this->GetBlendModeAsString() << endl;
os << indent << "Cut Plane: " << (this->CutPlane ? "On\n" : "Off\n");
os << indent << "Cut Plane Equation: \n" << indent << " (" <<
this->CutPlaneEquation[0] << ")X + (" <<
this->CutPlaneEquation[1] << ")Y + (" <<
this->CutPlaneEquation[2] << ")Z + (" <<
this->CutPlaneEquation[3] << ") = 0\n";
os << indent << "Cut Plane Thickness " << this->CutPlaneThickness << endl;
os << indent << "Cut Plane FallOff Distance " <<
this->CutPlaneFallOffDistance << endl;
os << indent << "Gradient Opacity Modulation: " <<
(this->GradientOpacityModulation ? "On\n" : "Off\n");
os << indent << "Gradient Specular Modulation: " <<
(this->GradientSpecularModulation ? "On\n" : "Off\n");
os << indent << "Gradient Diffuse Modulation: " <<
(this->GradientDiffuseModulation ? "On\n" : "Off\n");
}