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