00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00034
#ifndef __vtkCompositeManager_h
00035
#define __vtkCompositeManager_h
00036
00037
#include "vtkObject.h"
00038
00039
class vtkTimerLog;
00040
class vtkFloatArray;
00041
class vtkDataArray;
00042
class vtkRenderWindow;
00043
class vtkRenderWindowInteractor;
00044
class vtkMultiProcessController;
00045
class vtkRenderer;
00046
class vtkCompositer;
00047
class vtkUnsignedCharArray;
00048
00049 class VTK_PARALLEL_EXPORT vtkCompositeManager :
public vtkObject
00050 {
00051
public:
00052
static vtkCompositeManager *
New();
00053 vtkTypeRevisionMacro(vtkCompositeManager,
vtkObject);
00054
void PrintSelf(ostream& os,
vtkIndent indent);
00055
00057
00059 vtkGetObjectMacro(RenderWindow,
vtkRenderWindow);
00060
virtual void SetRenderWindow(
vtkRenderWindow *renWin);
00062
00066
void InitializePieces();
00067
00069
void InitializeOffScreen();
00070
00072
00073
void StartInteractor();
00074
void ExitInteractor();
00075
virtual void StartRender();
00076
virtual void EndRender();
00077
virtual void SatelliteStartRender();
00078
virtual void SatelliteEndRender();
00079
void RenderRMI();
00080
void ResetCamera(
vtkRenderer *ren);
00081
void ResetCameraClippingRange(
vtkRenderer *ren);
00082
void ComputeVisiblePropBoundsRMI();
00084
00087
virtual void InitializeRMIs();
00088
00090
00096
void SetImageReductionFactor(
int factor);
00097 vtkGetMacro(ImageReductionFactor,
int);
00099
00101
00102 void SetReductionFactor(
int f) {this->SetImageReductionFactor(f);}
00103 int GetReductionFactor() {
return this->GetImageReductionFactor();}
00105
00107
00110
void SetUseChar(
int useChar);
00111 vtkGetMacro(UseChar,
int);
00112 vtkBooleanMacro(UseChar,
int);
00114
00116
00121
void SetUseRGB(
int useRGB);
00122 vtkGetMacro(UseRGB,
int);
00123 vtkBooleanMacro(UseRGB,
int);
00125
00127
00128 vtkSetMacro(UseCompositing,
int);
00129 vtkGetMacro(UseCompositing,
int);
00130 vtkBooleanMacro(UseCompositing,
int);
00132
00134
00136 vtkGetMacro(GetBuffersTime,
double);
00137 vtkGetMacro(SetBuffersTime,
double);
00138 vtkGetMacro(CompositeTime,
double);
00139 vtkGetMacro(MaxRenderTime,
double);
00141
00143
double GetZ(
int x,
int y);
00144
00146
00149
void SetController(
vtkMultiProcessController* controller);
00150 vtkGetObjectMacro(Controller,
vtkMultiProcessController);
00152
00153
00154
00155 enum Tags {
00156 RENDER_RMI_TAG=12721,
00157 COMPUTE_VISIBLE_PROP_BOUNDS_RMI_TAG=56563,
00158 WIN_INFO_TAG=22134,
00159 REN_INFO_TAG=22135,
00160 BOUNDS_TAG=94135
00161 };
00162
00164
00167 virtual void CheckForAbortRender() {}
00168 virtual int CheckForAbortComposite() {
return 0;}
00170
00171
00173
virtual void ComputeVisiblePropBounds(
vtkRenderer *ren,
double bounds[6]);
00174
00176
00180 vtkSetMacro(Manual,
int);
00181 vtkGetMacro(Manual,
int);
00182 vtkBooleanMacro(Manual,
int);
00183
void Composite();
00185
00187
00189
virtual void SetCompositer(
vtkCompositer*);
00190 vtkGetObjectMacro(Compositer,
vtkCompositer);
00192
00194
00195
static void DeleteArray(
vtkDataArray* da);
00196
static void ResizeFloatArray(
vtkFloatArray* fa,
int numComp,
00197
vtkIdType size);
00198
static void ResizeUnsignedCharArray(
vtkUnsignedCharArray* uca,
00199
int numComp,
vtkIdType size);
00201
00203
00206
void SetNumberOfProcesses(
int numProcs);
00207 vtkGetMacro(NumberOfProcesses,
int);
00209
00211
00213 vtkSetMacro(DoMagnifyBuffer,
int);
00214 vtkGetMacro(DoMagnifyBuffer,
int);
00216
00217
protected:
00218 vtkCompositeManager();
00219 ~vtkCompositeManager();
00220
00221
void SetRendererSize(
int x,
int y);
00222
void MagnifyBuffer(
vtkDataArray *localPdata,
vtkDataArray* magPdata,
00223
int windowSize[2]);
00224
00225
void ReallocPDataArrays();
00226
00227 vtkRenderWindow* RenderWindow;
00228 vtkRenderWindowInteractor* RenderWindowInteractor;
00229 vtkMultiProcessController* Controller;
00230
00231 unsigned long StartInteractorTag;
00232 unsigned long EndInteractorTag;
00233 unsigned long StartTag;
00234 unsigned long EndTag;
00235 unsigned long ResetCameraTag;
00236 unsigned long ResetCameraClippingRangeTag;
00237 int UseChar;
00238 int UseRGB;
00239 int UseCompositing;
00240
00241
00242
00243
00244
void SetRenderWindowInteractor(
vtkRenderWindowInteractor *iren);
00245
00246
00247 vtkCompositer *Compositer;
00248 int NumberOfProcesses;
00249
00250
00251 vtkDataArray *PData;
00252 vtkFloatArray *ZData;
00253 vtkDataArray *LocalPData;
00254 vtkFloatArray *LocalZData;
00255 int RendererSize[2];
00256
00257
00258 int ImageReductionFactor;
00259
00260 int DoMagnifyBuffer;
00261
00262
00263
00264
00265
00266
00267 int Lock;
00268
00269 double GetBuffersTime;
00270 double SetBuffersTime;
00271 double CompositeTime;
00272 double MaxRenderTime;
00273
00274
00275 vtkTimerLog *Timer;
00276
00277
00278 int Manual;
00279
00280 int FirstRender;
00281
00282
private:
00283 vtkCompositeManager(
const vtkCompositeManager&);
00284
void operator=(
const vtkCompositeManager&);
00285 };
00286
00287
#endif