Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkVolumeProVP1000Mapper.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkVolumeProVP1000Mapper.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00053 #ifndef __vtkVolumeProVP1000Mapper_h
00054 #define __vtkVolumeProVP1000Mapper_h
00055 
00056 #include "vtkVolumeProMapper.h"
00057 
00058 #ifdef _WIN32
00059 #include "VolumePro1000/inc/vli.h" // Needed for VLI internal types
00060 #else
00061 #include "vli3/include/vli.h" // Needed for VLI internal types
00062 #endif
00063 
00064 #define VTK_VOLUME_16BIT 3
00065 #define VTK_VOLUME_32BIT 4
00066 
00067 class VTK_EXPORT vtkVolumeProVP1000Mapper : public vtkVolumeProMapper
00068 {
00069 public:
00070   vtkTypeRevisionMacro(vtkVolumeProVP1000Mapper,vtkVolumeProMapper);
00071   static vtkVolumeProVP1000Mapper *New();
00072   virtual void PrintSelf(ostream& os, vtkIndent indent);
00073 
00075 
00076   virtual void Render( vtkRenderer *, vtkVolume * );
00077   virtual int GetAvailableBoardMemory();
00078   virtual void GetLockSizesForBoardMemory(unsigned int type,
00079                                           unsigned int *xSize,
00080                                           unsigned int *ySize,
00081                                           unsigned int *zSize);
00083   
00084 protected:
00085   vtkVolumeProVP1000Mapper();
00086   ~vtkVolumeProVP1000Mapper();
00087   
00088   // Update the camera - set the camera matrix
00089   void UpdateCamera( vtkRenderer *, vtkVolume * );
00090 
00091   // Update the lights
00092   void UpdateLights( vtkRenderer *, vtkVolume * );
00093 
00094   // Update the properties of the volume including transfer functions
00095   // and material properties
00096   void UpdateProperties( vtkRenderer *, vtkVolume * );
00097 
00098   // Update the volume - create it if necessary
00099   // Set the volume matrix.
00100   void UpdateVolume( vtkRenderer *, vtkVolume * );
00101 
00102   // Set the crop box (as defined in the vtkVolumeMapper superclass)
00103   void UpdateCropping( vtkRenderer *, vtkVolume * );
00104 
00105   // Set the cursor
00106   void UpdateCursor( vtkRenderer *, vtkVolume * );
00107 
00108   // Update the cut plane
00109   void UpdateCutPlane( vtkRenderer *, vtkVolume * );
00110 
00111   // Render the image buffer to the screen
00112   // Defined in the specific graphics implementation.
00113   virtual void RenderImageBuffer( vtkRenderer  * vtkNotUsed(ren),
00114                                   vtkVolume    * vol,
00115                                   int          size[2],
00116                                   unsigned int * outData )
00117     {(void)vol; (void)size; (void)outData;}
00118 
00119   // Render a bounding box of the volume because the texture map would
00120   // be too large.
00121   virtual void RenderBoundingBox( vtkRenderer * vtkNotUsed(ren),
00122                                   vtkVolume   * vol )
00123     {(void)vol;}
00124 
00125   // Get the depth buffer values
00126   virtual void GetDepthBufferValues( vtkRenderer *vtkNotUsed(ren),
00127                                      int size[2],
00128                                      unsigned int *outData )
00129     { (void)outData; }
00130 
00131 #if ((VTK_MAJOR_VERSION == 3)&&(VTK_MINOR_VERSION == 2))
00132   vtkGetVectorMacro( VoxelCroppingRegionPlanes, float, 6 );
00133   void ConvertCroppingRegionPlanesToVoxels();
00134   float                VoxelCroppingRegionPlanes[6];
00135 #endif
00136 
00137   
00138   // Keep track of the size of the data loaded so we know if we can
00139   // simply update when a change occurs or if we need to release and
00140   // create again
00141   int LoadedDataSize[3];
00142 
00143   VLIImageBuffer *ImageBuffer;
00144   VLIDepthBuffer *DepthBuffer;
00145   
00146   VLIStatus CheckSubSampling(const VLIVolume *inVolume,
00147                              const VLIContext *inContext,
00148                              int &outImageWidth, int &outImageHeight);
00149   
00150   int DrawBoundingBox;
00151 
00152 private:
00153   vtkVolumeProVP1000Mapper(const vtkVolumeProVP1000Mapper&); // Not implemented
00154   void operator=(const vtkVolumeProVP1000Mapper&); // Not implemented
00155 };
00156 
00157 
00158 
00159 #endif
00160 
00161 
00162