00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00033 #ifndef __vtkPVDesktopDeliveryServer_h
00034 #define __vtkPVDesktopDeliveryServer_h
00035
00036 #include "vtkParallelRenderManager.h"
00037
00038 class vtkPVDesktopDeliveryServerRendererMap;
00039
00040 class VTK_EXPORT vtkPVDesktopDeliveryServer : public vtkParallelRenderManager
00041 {
00042 public:
00043 vtkTypeRevisionMacro(vtkPVDesktopDeliveryServer, vtkParallelRenderManager);
00044 virtual void PrintSelf(ostream &os, vtkIndent indent);
00045
00046 static vtkPVDesktopDeliveryServer *New();
00047
00052 virtual void SetController(vtkMultiProcessController *controller);
00053
00055
00060 virtual void SetParallelRenderManager(vtkParallelRenderManager *prm);
00061 vtkGetObjectMacro(ParallelRenderManager, vtkParallelRenderManager);
00063
00064 virtual void SetRenderWindow(vtkRenderWindow *renWin);
00065
00067
00072 virtual void SetRemoteDisplay(int);
00073 vtkGetMacro(RemoteDisplay, int);
00074 vtkBooleanMacro(RemoteDisplay, int);
00076
00078
00081 virtual void AddRenderer(vtkRenderer *ren) { this->AddRenderer(0, ren); }
00082 virtual void RemoveRenderer(vtkRenderer *ren) { this->RemoveRenderer(0,ren); }
00083 virtual void RemoveAllRenderers() { this->RemoveAllRenderers(0); }
00084 virtual void AddRenderer(int id, vtkRenderer *ren);
00085 virtual void RemoveRenderer(int id, vtkRenderer *ren);
00086 virtual void RemoveAllRenderers(int id);
00088
00089 virtual void InitializeRMIs();
00090
00092 virtual void UseRendererSet(int id);
00093
00094
00095
00096 enum Tags {
00097 IMAGE_TAG=12433,
00098 IMAGE_SIZE_TAG=12434,
00099 REMOTE_DISPLAY_TAG=834340,
00100 TIMING_METRICS_TAG=834341,
00101 SQUIRT_OPTIONS_TAG=834342,
00102 IMAGE_PARAMS_TAG=834343,
00103 WINDOW_ID_RMI_TAG=502382,
00104 WINDOW_GEOMETRY_TAG=502383
00105 };
00106
00107 struct TimingMetrics {
00108 double ImageProcessingTime;
00109 };
00110
00111 struct WindowGeometry {
00112 int Position[2];
00113 int GUISize[2];
00114 int Id;
00115 int AnnotationLayer;
00116 };
00117
00118 struct SquirtOptions {
00119 int Enabled;
00120 int CompressLevel;
00121 };
00122
00123 struct ImageParams {
00124 int RemoteDisplay;
00125 int SquirtCompressed;
00126 int NumberOfComponents;
00127 int BufferSize;
00128 int ImageSize[2];
00129 };
00130
00131 enum TimingMetricSize {
00132 TIMING_METRICS_SIZE=sizeof(struct TimingMetrics)/sizeof(double)
00133 };
00134 enum WindowGeometrySize {
00135 WINDOW_GEOMETRY_SIZE=sizeof(struct WindowGeometry)/sizeof(int)
00136 };
00137 enum SquirtOptionSize {
00138 SQUIRT_OPTIONS_SIZE=sizeof(struct SquirtOptions)/sizeof(int)
00139 };
00140 enum ImageParamsSize {
00141 IMAGE_PARAMS_SIZE=sizeof(struct ImageParams)/sizeof(int)
00142 };
00143
00144
00145
00146 protected:
00147 vtkPVDesktopDeliveryServer();
00148 virtual ~vtkPVDesktopDeliveryServer();
00149
00150 virtual void PreRenderProcessing();
00151 virtual void PostRenderProcessing();
00152 virtual void LocalComputeVisiblePropBounds(vtkRenderer *, double bounds[6]);
00153
00154 vtkParallelRenderManager *ParallelRenderManager;
00155
00156 unsigned long StartParallelRenderTag;
00157 unsigned long EndParallelRenderTag;
00158
00159 unsigned long ReceiveWindowIdTag;
00160
00161 virtual void SetRenderWindowSize();
00162
00163 virtual void ReadReducedImage();
00164
00165 virtual void ReceiveWindowInformation();
00166 virtual void ReceiveRendererInformation(vtkRenderer *);
00167
00168 int Squirt;
00169 int SquirtCompressionLevel;
00170 void SquirtCompress(vtkUnsignedCharArray *in, vtkUnsignedCharArray *out);
00171
00172 int RemoteDisplay;
00173
00174 vtkUnsignedCharArray *SquirtBuffer;
00175
00176 vtkPVDesktopDeliveryServerRendererMap *RendererMap;
00177
00178 int ClientWindowPosition[2];
00179 int ClientWindowSize[2];
00180 int ClientRequestedImageSize[2];
00181 int ClientGUISize[2];
00182
00183 int AnnotationLayer;
00184
00185 int ImageResized;
00186
00187 vtkUnsignedCharArray *SendImageBuffer;
00188
00189 private:
00190 vtkPVDesktopDeliveryServer(const vtkPVDesktopDeliveryServer &);
00191 void operator=(const vtkPVDesktopDeliveryServer &);
00192 };
00193
00194 #endif
00195