VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkMesaImageSliceMapper.h 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 =========================================================================*/ 00025 #ifndef __vtkMesaImageSliceMapper_h 00026 #define __vtkMesaImageSliceMapper_h 00027 00028 #include "vtkImageSliceMapper.h" 00029 00030 class vtkWindow; 00031 class vtkRenderer; 00032 class vtkRenderWindow; 00033 class vtkMesaRenderWindow; 00034 class vtkImageSlice; 00035 class vtkImageProperty; 00036 class vtkImageData; 00037 00038 class VTK_RENDERING_EXPORT vtkMesaImageSliceMapper : 00039 public vtkImageSliceMapper 00040 { 00041 public: 00042 static vtkMesaImageSliceMapper *New(); 00043 vtkTypeMacro(vtkMesaImageSliceMapper,vtkImageSliceMapper); 00044 virtual void PrintSelf(ostream& os, vtkIndent indent); 00045 00047 void Render(vtkRenderer *ren, vtkImageSlice *prop); 00048 00052 void ReleaseGraphicsResources(vtkWindow *); 00053 00054 protected: 00055 vtkMesaImageSliceMapper(); 00056 ~vtkMesaImageSliceMapper(); 00057 00059 00060 void RenderColorAndLighting( 00061 double red, double green, double blue, 00062 double alpha, double ambient, double diffuse); 00064 00067 void RenderBackingPolygon(); 00068 00070 00073 void RecursiveRenderTexturedPolygon( 00074 vtkRenderer *ren, vtkImageProperty *property, 00075 vtkImageData *image, int extent[6], bool recursive); 00077 00079 00081 void RenderTexturedPolygon( 00082 vtkRenderer *ren, vtkImageProperty *property, 00083 vtkImageData *image, int extent[6], bool recursive); 00085 00087 vtkStdString BuildFragmentProgram(vtkImageProperty *property); 00088 00090 00095 void ComputeTextureSize( 00096 const int extent[6], int &xdim, int &ydim, 00097 int imageSize[2], int textureSize[2]); 00099 00102 bool TextureSizeOK(const int size[2]); 00103 00105 void CheckOpenGLCapabilities(vtkMesaRenderWindow *renWin); 00106 00107 long Index; // OpenGL ID for texture or display list 00108 long FragmentShaderIndex; // OpenGL ID for fragment shader 00109 vtkRenderWindow *RenderWindow; // RenderWindow used for previous render 00110 int TextureSize[2]; 00111 int TextureBytesPerPixel; 00112 int LastOrientation; 00113 int LastSliceNumber; 00114 00115 vtkTimeStamp LoadTime; 00116 int LoadCount; 00117 00118 bool UsePowerOfTwoTextures; 00119 bool UseClampToEdge; 00120 bool UseFragmentProgram; 00121 00122 private: 00123 vtkMesaImageSliceMapper(const vtkMesaImageSliceMapper&); // Not implemented. 00124 void operator=(const vtkMesaImageSliceMapper&); // Not implemented. 00125 }; 00126 00127 #endif