00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00031
#ifndef __vtkExtentTranslator_h
00032
#define __vtkExtentTranslator_h
00033
00034
#include "vtkObject.h"
00035
00036
00037 class VTK_COMMON_EXPORT vtkExtentTranslator :
public vtkObject
00038 {
00039
public:
00040
static vtkExtentTranslator *
New();
00041
00042 vtkTypeRevisionMacro(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
00092
protected:
00093 vtkExtentTranslator();
00094 ~vtkExtentTranslator();
00095
00097
00099
int SplitExtent(
int piece,
int numPieces,
int *extent,
int splitMode);
00100
int SplitExtentByPoints(
int piece,
int numPieces,
int *extent,
00101
int splitMode);
00103
00104 int Piece;
00105 int NumberOfPieces;
00106 int GhostLevel;
00107 int Extent[6];
00108 int WholeExtent[6];
00109 int SplitMode;
00110
00111
00112
00113
00114 enum Modes {
00115 X_SLAB_MODE=0,
00116 Y_SLAB_MODE=1,
00117 Z_SLAB_MODE=2,
00118 BLOCK_MODE= 3
00119 };
00120
00121
00122
private:
00123 vtkExtentTranslator(
const vtkExtentTranslator&);
00124
void operator=(
const vtkExtentTranslator&);
00125 };
00126
00127
#endif
00128