00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00029 #ifndef __vtkClientCompositeManager_h
00030 #define __vtkClientCompositeManager_h
00031
00032 #include "vtkParallelRenderManager.h"
00033
00034 class vtkRenderWindow;
00035 class vtkMultiProcessController;
00036 class vtkSocketController;
00037 class vtkCompositer;
00038 class vtkRenderer;
00039 class vtkDataArray;
00040 class vtkFloatArray;
00041 class vtkUnsignedCharArray;
00042 class vtkImageData;
00043 class vtkImageActor;
00044 class vtkCamera;
00045
00046 class VTK_EXPORT vtkClientCompositeManager : public vtkParallelRenderManager
00047 {
00048 public:
00049 static vtkClientCompositeManager *New();
00050 vtkTypeRevisionMacro(vtkClientCompositeManager,vtkParallelRenderManager);
00051 void PrintSelf(ostream& os, vtkIndent indent);
00052
00055 virtual void SetRenderWindow(vtkRenderWindow *renWin);
00056
00058 virtual void InitializeOffScreen();
00059
00061
00062 virtual void StartRender();
00063 virtual void EndRender();
00064 void RenderRMI();
00066
00069 virtual void InitializeRMIs();
00070
00074 void SetController(vtkMultiProcessController* controller);
00075
00077
00078 void SetClientController(vtkSocketController* controller);
00079 vtkGetObjectMacro(ClientController, vtkSocketController);
00081
00083
00085 vtkSetMacro(ClientFlag, int);
00086 vtkGetMacro(ClientFlag, int);
00088
00090
00094 void SetUseRGB(int useRGB);
00095 vtkGetMacro(UseRGB, int);
00096 vtkBooleanMacro(UseRGB, int);
00098
00100
00102 void SetCompositer(vtkCompositer *c);
00103 vtkGetObjectMacro(Compositer,vtkCompositer);
00105
00106
00107 enum Tags {
00108 RENDER_RMI_TAG=12721,
00109 WIN_INFO_TAG=22134,
00110 REN_INFO_TAG=22135,
00111 GATHER_Z_RMI_TAG=987987,
00112 SERVER_Z_TAG=88771,
00113 CLIENT_Z_TAG=88772
00114 };
00115
00116
00118
00120 float GetZBufferValue(int x, int y);
00121 void GatherZBufferValueRMI(int x, int y);
00123
00125
00126 vtkSetClampMacro(SquirtLevel, int, 0, 7);
00127 vtkGetMacro(SquirtLevel, int);
00129
00130 protected:
00131 vtkClientCompositeManager();
00132 ~vtkClientCompositeManager();
00133
00134 vtkSocketController* ClientController;
00135 vtkCompositer *Compositer;
00136
00137 int ClientFlag;
00138 unsigned long StartTag;
00139
00140 void SetPDataSize(int x, int y);
00141 void ReallocPDataArrays();
00142
00143 virtual void SatelliteStartRender();
00144 virtual void SatelliteEndRender();
00145
00146 void PreRenderProcessing() {}
00147 void PostRenderProcessing() {}
00148 vtkImageData *CompositeData;
00149 vtkImageActor *ImageActor;
00150
00151
00152 vtkCamera* SavedCamera;
00153
00154
00155
00156 void MagnifyBuffer(vtkDataArray* localP,
00157 vtkDataArray* magP,
00158 int windowSize[2]);
00159
00160 void DoubleBuffer(vtkDataArray* localP,
00161 vtkDataArray* magP,
00162 int windowSize[2]);
00163
00164
00165
00166 void ReceiveAndSetColorBuffer();
00167
00168 vtkObject *RenderView;
00169 double InternalReductionFactor;
00170
00171 int PDataSize[2];
00172 vtkDataArray *PData;
00173 vtkFloatArray *ZData;
00174
00175 vtkDataArray *PData2;
00176 vtkFloatArray *ZData2;
00177
00178 int SquirtLevel;
00179 vtkUnsignedCharArray *SquirtArray;
00180 void SquirtCompress(vtkUnsignedCharArray *in,
00181 vtkUnsignedCharArray *out,
00182 int compress_level);
00183 void SquirtDecompress(vtkUnsignedCharArray *in,
00184 vtkUnsignedCharArray *out);
00185
00186 vtkUnsignedCharArray *BaseArray;
00187 void DeltaEncode(vtkUnsignedCharArray *buf);
00188 void DeltaDecode(vtkUnsignedCharArray *buf);
00189
00190 int UseRGB;
00191
00192 private:
00193 vtkClientCompositeManager(const vtkClientCompositeManager&);
00194 void operator=(const vtkClientCompositeManager&);
00195 };
00196
00197 #endif