00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkSynchronizedRenderWindows_h
00027 #define __vtkSynchronizedRenderWindows_h
00028
00029 #include "vtkObject.h"
00030
00031 class vtkRenderWindow;
00032 class vtkMultiProcessController;
00033 class vtkCommand;
00034 class vtkMultiProcessStream;
00035
00036 class VTK_PARALLEL_EXPORT vtkSynchronizedRenderWindows : public vtkObject
00037 {
00038 public:
00039 static vtkSynchronizedRenderWindows* New();
00040 vtkTypeMacro(vtkSynchronizedRenderWindows, vtkObject);
00041 void PrintSelf(ostream& os, vtkIndent indent);
00042
00044
00047 void SetRenderWindow(vtkRenderWindow*);
00048 vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
00050
00052
00054 void SetParallelController(vtkMultiProcessController*);
00055 vtkGetObjectMacro(ParallelController, vtkMultiProcessController);
00057
00059
00068 void SetIdentifier(unsigned int id);
00069 vtkGetMacro(Identifier, unsigned int);
00071
00073
00076 vtkSetMacro(ParallelRendering, bool);
00077 vtkGetMacro(ParallelRendering, bool);
00078 vtkBooleanMacro(ParallelRendering, bool);
00080
00081
00082
00083
00084
00085 vtkSetMacro(RenderEventPropagation, bool);
00086 vtkGetMacro(RenderEventPropagation, bool);
00087 vtkBooleanMacro(RenderEventPropagation, bool);
00088
00091 virtual void AbortRender();
00092
00094
00098 vtkSetMacro(RootProcessId, int);
00099 vtkGetMacro(RootProcessId, int);
00101
00102
00103 enum
00104 {
00105 SYNC_RENDER_TAG = 15001,
00106 };
00107 protected:
00108 vtkSynchronizedRenderWindows();
00109 ~vtkSynchronizedRenderWindows();
00110
00111 struct RenderWindowInfo
00112 {
00113 int WindowSize[2];
00114 int TileScale[2];
00115 double TileViewport[4];
00116 double DesiredUpdateRate;
00117
00118
00119 void Save(vtkMultiProcessStream& stream);
00120 bool Restore(vtkMultiProcessStream& stream);
00121 void CopyFrom(vtkRenderWindow*);
00122 void CopyTo(vtkRenderWindow*);
00123 };
00124
00125
00126
00127 virtual void HandleStartRender();
00128 virtual void HandleEndRender() {}
00129 virtual void HandleAbortRender() {}
00130
00131 virtual void MasterStartRender();
00132 virtual void SlaveStartRender();
00133
00134 unsigned int Identifier;
00135 bool ParallelRendering;
00136 bool RenderEventPropagation;
00137 int RootProcessId;
00138
00139 vtkRenderWindow* RenderWindow;
00140 vtkMultiProcessController* ParallelController;
00141
00142 private:
00143 vtkSynchronizedRenderWindows(const vtkSynchronizedRenderWindows&);
00144 void operator=(const vtkSynchronizedRenderWindows&);
00145
00146 class vtkObserver;
00147 vtkObserver* Observer;
00148 friend class vtkObserver;
00149
00150 };
00151
00152 #endif
00153
00154