Common/vtkExtentTranslator.h
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00027 #ifndef __vtkExtentTranslator_h
00028 #define __vtkExtentTranslator_h
00029 
00030 #include "vtkObject.h"
00031 
00032 
00033 class VTK_COMMON_EXPORT vtkExtentTranslator : public vtkObject
00034 {
00035 public:
00036   static vtkExtentTranslator *New();
00037 
00038   vtkTypeRevisionMacro(vtkExtentTranslator,vtkObject);
00039   void PrintSelf(ostream& os, vtkIndent indent);
00040 
00042 
00044   vtkSetVector6Macro(WholeExtent, int);
00045   vtkGetVector6Macro(WholeExtent, int);
00046   vtkSetVector6Macro(Extent, int);
00047   vtkGetVector6Macro(Extent, int);
00048   vtkSetMacro(Piece,int);
00049   vtkGetMacro(Piece,int);
00050   vtkSetMacro(NumberOfPieces,int);
00051   vtkGetMacro(NumberOfPieces,int);
00052   vtkSetMacro(GhostLevel, int);
00053   vtkGetMacro(GhostLevel, int);
00055 
00057 
00062   virtual int PieceToExtent();
00063   virtual int PieceToExtentByPoints();
00064   virtual int PieceToExtentThreadSafe(int piece, int numPieces, 
00065                                       int ghostLevel, int *wholeExtent, 
00066                                       int *resultExtent, int splitMode, 
00067                                       int byPoints);
00069   
00070   
00071   
00073 
00077   void SetSplitModeToBlock()
00078     {this->SplitMode = vtkExtentTranslator::BLOCK_MODE;}
00079   void SetSplitModeToXSlab()
00080     {this->SplitMode = vtkExtentTranslator::X_SLAB_MODE;}
00081  void SetSplitModeToYSlab()
00082     {this->SplitMode = vtkExtentTranslator::Y_SLAB_MODE;}
00083  void SetSplitModeToZSlab()
00084     {this->SplitMode = vtkExtentTranslator::Z_SLAB_MODE;}
00085   vtkGetMacro(SplitMode,int);
00087   
00088 protected:
00089   vtkExtentTranslator();
00090   ~vtkExtentTranslator();
00091 
00093 
00095   int SplitExtent(int piece, int numPieces, int *extent, int splitMode);  
00096   int SplitExtentByPoints(int piece, int numPieces, int *extent, 
00097                           int splitMode);  
00099 
00100   int Piece;
00101   int NumberOfPieces;
00102   int GhostLevel;
00103   int Extent[6];
00104   int WholeExtent[6];
00105   int SplitMode;
00106 
00107 
00108   
00109   
00110   enum Modes {
00111     X_SLAB_MODE=0,
00112     Y_SLAB_MODE=1,
00113     Z_SLAB_MODE=2,
00114     BLOCK_MODE= 3
00115   };
00116 
00117 
00118 private:
00119   vtkExtentTranslator(const vtkExtentTranslator&);  
00120   void operator=(const vtkExtentTranslator&);  
00121 };
00122 
00123 #endif
00124