00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkVolumeProVG500Mapper.h,v $ 00005 Language: C++ 00006 00007 00008 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 00009 All rights reserved. 00010 00011 Redistribution and use in source and binary forms, with or without 00012 modification, are permitted provided that the following conditions are met: 00013 00014 * Redistributions of source code must retain the above copyright notice, 00015 this list of conditions and the following disclaimer. 00016 00017 * Redistributions in binary form must reproduce the above copyright notice, 00018 this list of conditions and the following disclaimer in the documentation 00019 and/or other materials provided with the distribution. 00020 00021 * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names 00022 of any contributors may be used to endorse or promote products derived 00023 from this software without specific prior written permission. 00024 00025 * Modified source versions must be plainly marked as such, and must not be 00026 misrepresented as being the original software. 00027 00028 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 00029 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00030 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00031 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR 00032 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00033 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00034 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00035 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00036 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00037 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00038 00039 =========================================================================*/ 00107 #ifndef __vtkVolumeProVG500Mapper_h 00108 #define __vtkVolumeProVG500Mapper_h 00109 00110 #include "vtkVolumeProMapper.h" 00111 #include "vli.h" 00112 00113 class VTK_EXPORT vtkVolumeProVG500Mapper : public vtkVolumeProMapper 00114 { 00115 public: 00116 vtkTypeMacro(vtkVolumeProVG500Mapper,vtkVolumeProMapper); 00117 static vtkVolumeProVG500Mapper *New(); 00119 virtual void Render( vtkRenderer *, vtkVolume * ); 00120 virtual int GetAvailableBoardMemory(); 00121 virtual void GetLockSizesForBoardMemory( unsigned int type, 00122 unsigned int *xSize, 00123 unsigned int *ySize, 00124 unsigned int *zSize ); 00125 protected: 00126 vtkVolumeProVG500Mapper(); 00127 ~vtkVolumeProVG500Mapper(); 00128 vtkVolumeProVG500Mapper(const vtkVolumeProVG500Mapper&) {}; 00129 void operator=(const vtkVolumeProVG500Mapper&) {}; 00130 00131 // Update the camera - set the camera matrix 00132 void UpdateCamera( vtkRenderer *, vtkVolume * ); 00133 00134 // Update the lights 00135 void UpdateLights( vtkRenderer *, vtkVolume * ); 00136 00137 // Update the properties of the volume including transfer functions 00138 // and material properties 00139 void UpdateProperties( vtkRenderer *, vtkVolume * ); 00140 00141 // Update the volume - create it if necessary 00142 // Set the volume matrix. 00143 void UpdateVolume( vtkRenderer *, vtkVolume * ); 00144 00145 // Set the crop box (as defined in the vtkVolumeMapper superclass) 00146 void UpdateCropping( vtkRenderer *, vtkVolume * ); 00147 00148 // Set the cursor 00149 void UpdateCursor( vtkRenderer *, vtkVolume * ); 00150 00151 // Update the cut plane 00152 void UpdateCutPlane( vtkRenderer *, vtkVolume * ); 00153 00154 // Render the hexagon to the screen 00155 // Defined in the specific graphics implementation. 00156 virtual void RenderHexagon( vtkRenderer * vtkNotUsed(ren), 00157 vtkVolume * vtkNotUsed(vol), 00158 VLIPixel * vtkNotUsed(basePlane), 00159 int size[2], 00160 VLIVector3D hexagon[6], 00161 VLIVector2D textureCoords[6] ) 00162 {(void)size; (void)hexagon; (void)textureCoords;} 00163 00164 // Make the base plane size a power of 2 for OpenGL 00165 void CorrectBasePlaneSize( VLIPixel *inBase, int inSize[2], 00166 VLIPixel **outBase, int outSize[2], 00167 VLIVector2D textureCoords[6] ); 00168 00169 00170 }; 00171 00172 00173 00174 #endif 00175 00176 00177