VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkExtentTranslator.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 =========================================================================*/ 00027 #ifndef __vtkExtentTranslator_h 00028 #define __vtkExtentTranslator_h 00029 00030 #include "vtkCommonDataModelModule.h" // For export macro 00031 #include "vtkObject.h" 00032 00033 00034 class VTKCOMMONDATAMODEL_EXPORT vtkExtentTranslator : public vtkObject 00035 { 00036 public: 00037 static vtkExtentTranslator *New(); 00038 00039 vtkTypeMacro(vtkExtentTranslator,vtkObject); 00040 void PrintSelf(ostream& os, vtkIndent indent); 00041 00043 00045 vtkSetVector6Macro(WholeExtent, int); 00046 vtkGetVector6Macro(WholeExtent, int); 00047 vtkSetVector6Macro(Extent, int); 00048 vtkGetVector6Macro(Extent, int); 00049 vtkSetMacro(Piece,int); 00050 vtkGetMacro(Piece,int); 00051 vtkSetMacro(NumberOfPieces,int); 00052 vtkGetMacro(NumberOfPieces,int); 00053 vtkSetMacro(GhostLevel, int); 00054 vtkGetMacro(GhostLevel, int); 00056 00058 00063 virtual int PieceToExtent(); 00064 virtual int PieceToExtentByPoints(); 00065 virtual int PieceToExtentThreadSafe(int piece, int numPieces, 00066 int ghostLevel, int *wholeExtent, 00067 int *resultExtent, int splitMode, 00068 int byPoints); 00070 00071 00072 00074 00078 void SetSplitModeToBlock() 00079 {this->SplitMode = vtkExtentTranslator::BLOCK_MODE;} 00080 void SetSplitModeToXSlab() 00081 {this->SplitMode = vtkExtentTranslator::X_SLAB_MODE;} 00082 void SetSplitModeToYSlab() 00083 {this->SplitMode = vtkExtentTranslator::Y_SLAB_MODE;} 00084 void SetSplitModeToZSlab() 00085 {this->SplitMode = vtkExtentTranslator::Z_SLAB_MODE;} 00086 vtkGetMacro(SplitMode,int); 00088 00095 void SetSplitPath(int len, int *splitpath); 00096 00097 protected: 00098 vtkExtentTranslator(); 00099 ~vtkExtentTranslator(); 00100 00102 00104 int SplitExtent(int piece, int numPieces, int *extent, int splitMode); 00105 int SplitExtentByPoints(int piece, int numPieces, int *extent, 00106 int splitMode); 00108 00109 int Piece; 00110 int NumberOfPieces; 00111 int GhostLevel; 00112 int Extent[6]; 00113 int WholeExtent[6]; 00114 int SplitMode; 00115 00116 int* SplitPath; 00117 int SplitLen; 00118 00119 //BTX 00120 // Don't change the numbers here - they are used in the code 00121 // to indicate array indices. 00122 enum Modes { 00123 X_SLAB_MODE=0, 00124 Y_SLAB_MODE=1, 00125 Z_SLAB_MODE=2, 00126 BLOCK_MODE= 3 00127 }; 00128 //ETX 00129 00130 private: 00131 vtkExtentTranslator(const vtkExtentTranslator&); // Not implemented. 00132 void operator=(const vtkExtentTranslator&); // Not implemented. 00133 }; 00134 00135 #endif