Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

Rendering/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 =========================================================================*/
00064 #ifndef __vtkVolumeProVP1000Mapper_h
00065 #define __vtkVolumeProVP1000Mapper_h
00066 
00067 #include "vtkVolumeProMapper.h"
00068 
00069 #ifdef _WIN32
00070 #include "VolumePro1000/inc/vli.h" // Needed for VLI internal types
00071 #else
00072 #include "vli3/include/vli.h" // Needed for VLI internal types
00073 #endif
00074 
00075 #define VTK_VOLUME_16BIT 3
00076 #define VTK_VOLUME_32BIT 4
00077 
00078 class VTK_EXPORT vtkVolumeProVP1000Mapper : public vtkVolumeProMapper
00079 {
00080 public:
00081   vtkTypeRevisionMacro(vtkVolumeProVP1000Mapper,vtkVolumeProMapper);
00082   static vtkVolumeProVP1000Mapper *New();
00083   virtual void PrintSelf(ostream& os, vtkIndent indent);
00084 
00086 
00087   virtual void Render( vtkRenderer *, vtkVolume * );
00088   virtual int GetAvailableBoardMemory();
00089   virtual void GetLockSizesForBoardMemory(unsigned int type,
00090                                           unsigned int *xSize,
00091                                           unsigned int *ySize,
00092                                           unsigned int *zSize);
00094   
00095 protected:
00096   vtkVolumeProVP1000Mapper();
00097   ~vtkVolumeProVP1000Mapper();
00098   
00099   // Update the camera - set the camera matrix
00100   void UpdateCamera( vtkRenderer *, vtkVolume * );
00101 
00102   // Update the lights
00103   void UpdateLights( vtkRenderer *, vtkVolume * );
00104 
00105   // Update the properties of the volume including transfer functions
00106   // and material properties
00107   void UpdateProperties( vtkRenderer *, vtkVolume * );
00108 
00109   // Update the volume - create it if necessary
00110   // Set the volume matrix.
00111   void UpdateVolume( vtkRenderer *, vtkVolume * );
00112 
00113   // Set the crop box (as defined in the vtkVolumeMapper superclass)
00114   void UpdateCropping( vtkRenderer *, vtkVolume * );
00115 
00116   // Set the cursor
00117   void UpdateCursor( vtkRenderer *, vtkVolume * );
00118 
00119   // Update the cut plane
00120   void UpdateCutPlane( vtkRenderer *, vtkVolume * );
00121 
00122   // Render the image buffer to the screen
00123   // Defined in the specific graphics implementation.
00124   virtual void RenderImageBuffer( vtkRenderer  * vtkNotUsed(ren),
00125                                   vtkVolume    * vol,
00126                                   int          size[2],
00127                                   unsigned int * outData )
00128     {(void)vol; (void)size; (void)outData;}
00129 
00130   // Render a bounding box of the volume because the texture map would
00131   // be too large.
00132   virtual void RenderBoundingBox( vtkRenderer * vtkNotUsed(ren),
00133                                   vtkVolume   * vol )
00134     {(void)vol;}
00135 
00136   // Get the depth buffer values
00137   virtual void GetDepthBufferValues( vtkRenderer *vtkNotUsed(ren),
00138                                      int size[2],
00139                                      unsigned int *outData )
00140     { (void)outData; }
00141 
00142 #if ((VTK_MAJOR_VERSION == 3)&&(VTK_MINOR_VERSION == 2))
00143   vtkGetVectorMacro( VoxelCroppingRegionPlanes, float, 6 );
00144   void ConvertCroppingRegionPlanesToVoxels();
00145   float                VoxelCroppingRegionPlanes[6];
00146 #endif
00147 
00148   
00149   // Keep track of the size of the data loaded so we know if we can
00150   // simply update when a change occurs or if we need to release and
00151   // create again
00152   int LoadedDataSize[3];
00153 
00154   VLIImageBuffer *ImageBuffer;
00155   VLIDepthBuffer *DepthBuffer;
00156   
00157   VLIStatus CheckSubSampling(const VLIVolume *inVolume,
00158                              const VLIContext *inContext,
00159                              int &outImageWidth, int &outImageHeight);
00160   
00161   int DrawBoundingBox;
00162 
00163 private:
00164   vtkVolumeProVP1000Mapper(const vtkVolumeProVP1000Mapper&); // Not implemented
00165   void operator=(const vtkVolumeProVP1000Mapper&); // Not implemented
00166 };
00167 
00168 
00169 
00170 #endif
00171 
00172 
00173