VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImageStack.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 =========================================================================*/ 00034 #ifndef vtkImageStack_h 00035 #define vtkImageStack_h 00036 00037 #include "vtkRenderingImageModule.h" // For export macro 00038 #include "vtkImageSlice.h" 00039 00040 class vtkImageSliceCollection; 00041 class vtkImageProperty; 00042 class vtkImageMapper3D; 00043 class vtkCollection; 00044 00045 class VTKRENDERINGIMAGE_EXPORT vtkImageStack : public vtkImageSlice 00046 { 00047 public: 00048 vtkTypeMacro(vtkImageStack,vtkImageSlice); 00049 void PrintSelf(ostream& os, vtkIndent indent); 00050 static vtkImageStack *New(); 00051 00054 void AddImage(vtkImageSlice *prop); 00055 00058 void RemoveImage(vtkImageSlice *prop); 00059 00061 int HasImage(vtkImageSlice *prop); 00062 00064 vtkImageSliceCollection *GetImages() { return this->Images; } 00065 00067 00069 vtkSetMacro(ActiveLayer, int); 00070 int GetActiveLayer() { return this->ActiveLayer; } 00072 00076 vtkImageSlice *GetActiveImage(); 00077 00079 vtkImageMapper3D *GetMapper(); 00080 00082 vtkImageProperty *GetProperty(); 00083 00085 00086 double *GetBounds(); 00087 void GetBounds(double bounds[6]) { this->vtkProp3D::GetBounds( bounds ); }; 00089 00091 unsigned long int GetMTime(); 00092 00097 unsigned long GetRedrawMTime(); 00098 00100 void ShallowCopy(vtkProp *prop); 00101 00105 void GetImages(vtkPropCollection *); 00106 00108 00109 virtual int RenderOverlay(vtkViewport *viewport); 00110 virtual int RenderOpaqueGeometry(vtkViewport *viewport); 00111 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport); 00113 00115 virtual int HasTranslucentPolygonalGeometry(); 00116 00118 void ReleaseGraphicsResources(vtkWindow *win); 00119 00121 00123 void InitPathTraversal(); 00124 vtkAssemblyPath *GetNextPath(); 00125 int GetNumberOfPaths(); 00127 00131 void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path); 00132 00133 protected: 00134 vtkImageStack(); 00135 ~vtkImageStack(); 00136 00137 void SetMapper(vtkImageMapper3D *mapper); 00138 void SetProperty(vtkImageProperty *property); 00139 00140 void PokeMatrices(vtkMatrix4x4 *matrix); 00141 void UpdatePaths(); 00142 00143 vtkTimeStamp PathTime; 00144 vtkCollection *ImageMatrices; 00145 vtkImageSliceCollection *Images; 00146 int ActiveLayer; 00147 00148 private: 00149 vtkImageStack(const vtkImageStack&); // Not implemented. 00150 void operator=(const vtkImageStack&); // Not implemented. 00151 }; 00152 00153 #endif