00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkTiledDisplaySchedule_h
00027 #define __vtkTiledDisplaySchedule_h
00028
00029 #include "vtkObject.h"
00030 class vtkTiledDisplayProcess;
00031 class vtkTiledDisplayElement;
00032
00033 class VTK_EXPORT vtkTiledDisplaySchedule : public vtkObject
00034 {
00035 public:
00036 static vtkTiledDisplaySchedule *New();
00037 vtkTypeRevisionMacro(vtkTiledDisplaySchedule,vtkObject);
00038 void PrintSelf(ostream& os, vtkIndent indent);
00039
00041
00043 int GetProcessTileId(int procIdx);
00044 int GetNumberOfProcessElements(int procIdx);
00045 int GetElementOtherProcessId(int procIdx, int elementIdx);
00046 int GetElementReceiveFlag(int procIdx, int elementIdx);
00047 int GetElementTileId(int procIdx, int elementIdx);
00049
00051
00052 vtkGetMacro(NumberOfProcesses,int);
00054
00056
00057 vtkGetMacro(NumberOfTiles,int);
00059
00064 void InitializeForTile(int tileId, int tileProcess, int numProcs);
00065
00070 void InitializeTiles(int numberOfTiles, int numProcs);
00071
00072
00073 protected:
00074 vtkTiledDisplaySchedule();
00075 ~vtkTiledDisplaySchedule();
00076
00077
00078
00079 int SwapIfApproporiate(int pid1, int pid2,
00080 int* totalProcessLengths);
00081 void ComputeElementOtherProcessIds();
00082
00083 int ShuffleLevel(int level, int numTiles,
00084 vtkTiledDisplaySchedule** tileSchedules);
00085 int FindOtherElementIdx(vtkTiledDisplayProcess* p,
00086 vtkTiledDisplayElement* e,
00087 int pId);
00088
00089
00090 int NumberOfProcesses;
00091 int NumberOfTiles;
00092
00093 int ProcessArrayLength;
00094 vtkTiledDisplayProcess** Processes;
00095
00096
00097 private:
00098 vtkTiledDisplaySchedule(const vtkTiledDisplaySchedule&);
00099 void operator=(const vtkTiledDisplaySchedule&);
00100 };
00101
00102 #endif