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 =========================================================================*/ 00030 #ifndef __vtkExtentTranslator_h 00031 #define __vtkExtentTranslator_h 00032 00033 #include "vtkCommonDataModelModule.h" // For export macro 00034 #include "vtkObject.h" 00035 00036 00037 class VTKCOMMONDATAMODEL_EXPORT vtkExtentTranslator : public vtkObject 00038 { 00039 public: 00040 static vtkExtentTranslator *New(); 00041 00042 vtkTypeMacro(vtkExtentTranslator,vtkObject); 00043 void PrintSelf(ostream& os, vtkIndent indent); 00044 00046 00048 vtkSetVector6Macro(WholeExtent, int); 00049 vtkGetVector6Macro(WholeExtent, int); 00050 vtkSetVector6Macro(Extent, int); 00051 vtkGetVector6Macro(Extent, int); 00052 vtkSetMacro(Piece,int); 00053 vtkGetMacro(Piece,int); 00054 vtkSetMacro(NumberOfPieces,int); 00055 vtkGetMacro(NumberOfPieces,int); 00056 vtkSetMacro(GhostLevel, int); 00057 vtkGetMacro(GhostLevel, int); 00059 00061 00066 virtual int PieceToExtent(); 00067 virtual int PieceToExtentByPoints(); 00068 virtual int PieceToExtentThreadSafe(int piece, int numPieces, 00069 int ghostLevel, int *wholeExtent, 00070 int *resultExtent, int splitMode, 00071 int byPoints); 00073 00074 00075 00077 00081 void SetSplitModeToBlock() 00082 {this->SplitMode = vtkExtentTranslator::BLOCK_MODE;} 00083 void SetSplitModeToXSlab() 00084 {this->SplitMode = vtkExtentTranslator::X_SLAB_MODE;} 00085 void SetSplitModeToYSlab() 00086 {this->SplitMode = vtkExtentTranslator::Y_SLAB_MODE;} 00087 void SetSplitModeToZSlab() 00088 {this->SplitMode = vtkExtentTranslator::Z_SLAB_MODE;} 00089 vtkGetMacro(SplitMode,int); 00091 00098 void SetSplitPath(int len, int *splitpath); 00099 00100 //BTX 00101 // Don't change the numbers here - they are used in the code 00102 // to indicate array indices. 00103 enum Modes { 00104 X_SLAB_MODE=0, 00105 Y_SLAB_MODE=1, 00106 Z_SLAB_MODE=2, 00107 BLOCK_MODE= 3 00108 }; 00109 //ETX 00110 00111 protected: 00112 vtkExtentTranslator(); 00113 ~vtkExtentTranslator(); 00114 00116 00118 int SplitExtent(int piece, int numPieces, int *extent, int splitMode); 00119 int SplitExtentByPoints(int piece, int numPieces, int *extent, 00120 int splitMode); 00122 00123 int Piece; 00124 int NumberOfPieces; 00125 int GhostLevel; 00126 int Extent[6]; 00127 int WholeExtent[6]; 00128 int SplitMode; 00129 00130 int* SplitPath; 00131 int SplitLen; 00132 00133 private: 00134 vtkExtentTranslator(const vtkExtentTranslator&); // Not implemented. 00135 void operator=(const vtkExtentTranslator&); // Not implemented. 00136 }; 00137 00138 #endif