00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00033 #ifndef __vtkDesktopDeliveryServer_h
00034 #define __vtkDesktopDeliveryServer_h
00035
00036 #include "vtkParallelRenderManager.h"
00037
00038 class VTK_EXPORT vtkDesktopDeliveryServer : public vtkParallelRenderManager
00039 {
00040 public:
00041 vtkTypeRevisionMacro(vtkDesktopDeliveryServer, vtkParallelRenderManager);
00042 virtual void PrintSelf(ostream &os, vtkIndent indent);
00043
00044 static vtkDesktopDeliveryServer *New();
00045
00050 virtual void SetController(vtkMultiProcessController *controller);
00051
00053
00058 virtual void SetParallelRenderManager(vtkParallelRenderManager *prm);
00059 vtkGetObjectMacro(ParallelRenderManager, vtkParallelRenderManager);
00061
00062 virtual void SetRenderWindow(vtkRenderWindow *renWin);
00063
00065
00070 virtual void SetRemoteDisplay(int);
00071 vtkGetMacro(RemoteDisplay, int);
00072 vtkBooleanMacro(RemoteDisplay, int);
00074
00075
00076
00077 enum Tags {
00078 IMAGE_TAG=12433,
00079 IMAGE_SIZE_TAG=12434,
00080 REMOTE_DISPLAY_TAG=834340,
00081 TIMING_METRICS_TAG=834341,
00082 SQUIRT_OPTIONS_TAG=834342,
00083 IMAGE_PARAMS_TAG=834343
00084 };
00085
00086 struct TimingMetrics {
00087 double ImageProcessingTime;
00088 };
00089
00090 struct SquirtOptions {
00091 int Enabled;
00092 int CompressLevel;
00093 };
00094
00095 struct ImageParams {
00096 int RemoteDisplay;
00097 int SquirtCompressed;
00098 int NumberOfComponents;
00099 int BufferSize;
00100 int ImageSize[2];
00101 };
00102
00103 enum TimingMetricSize {
00104 TIMING_METRICS_SIZE=sizeof(struct TimingMetrics)/sizeof(double)
00105 };
00106 enum SquirtOptionSize {
00107 SQUIRT_OPTIONS_SIZE=sizeof(struct SquirtOptions)/sizeof(int)
00108 };
00109 enum ImageParamsSize {
00110 IMAGE_PARAMS_SIZE=sizeof(struct ImageParams)/sizeof(int)
00111 };
00112
00113
00114
00115 protected:
00116 vtkDesktopDeliveryServer();
00117 virtual ~vtkDesktopDeliveryServer();
00118
00119 virtual void PreRenderProcessing();
00120 virtual void PostRenderProcessing();
00121 virtual void LocalComputeVisiblePropBounds(vtkRenderer *ren, double bounds[6]);
00122
00123 vtkParallelRenderManager *ParallelRenderManager;
00124
00125 unsigned long StartParallelRenderTag;
00126 unsigned long EndParallelRenderTag;
00127
00128 virtual void SetRenderWindowSize();
00129
00130 virtual void ReadReducedImage();
00131
00132 virtual void ReceiveWindowInformation();
00133
00134 int Squirt;
00135 int SquirtCompressionLevel;
00136 void SquirtCompress(vtkUnsignedCharArray *in, vtkUnsignedCharArray *out);
00137
00138 int RemoteDisplay;
00139
00140 vtkUnsignedCharArray *SquirtBuffer;
00141
00142 private:
00143 vtkDesktopDeliveryServer(const vtkDesktopDeliveryServer &);
00144 void operator=(const vtkDesktopDeliveryServer &);
00145 };
00146
00147 #endif
00148