00001
00002
00003 #ifndef _ssAppplication_h
00004 #define _ssAppplication_h
00005
00010 #include <vtkKWApplication.h>
00011
00012 class ssMultibeamLWWindow;
00013 class ssPolyDatatoPlanStaticFilter;
00014 class ssPolyDatatoBathymetryScrollFilter;
00015 class ssPolyDatatoAttitudeScrollFilter;
00016 class vtkSocketCommunicator;
00017 class ssMultibeamProcess;
00018 class vtkMultiProcessController;
00019 class vtkMutexLock;
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 static void GUIProcess(vtkMultiProcessController *tlc, void *userdata);
00030 static void SDFProcess(vtkMultiProcessController *tlc, void *userdata);
00031
00032
00040 class VTK_EXPORT ssMultibeamLWApplication : public vtkKWApplication
00041 {
00042
00043 public:
00044
00055 static ssMultibeamLWApplication *New();
00056
00060 vtkTypeMacro(ssMultibeamLWApplication,
00061 vtkKWApplication);
00062
00068 void PrintSelf(ostream& os, vtkIndent indent);
00069
00076 vtkObject *MakeTclObject(const char *type, const char *name);
00077
00083 vtkObject *TclToVTKObject(const char *name);
00084
00088 ssMultibeamLWWindow *Window() const;
00089
00097 void GuiProcess(Tcl_Interp *interp,
00098 vtkMultiProcessController *controller,
00099 int argc,
00100 char *argv[]);
00101
00107 void SdfProcess(Tcl_Interp *interp,
00108 vtkMultiProcessController *controller);
00109
00113 vtkMultiProcessController *GuiProcess() const;
00114
00118 vtkMultiProcessController *SdfProcess() const;
00119
00125 virtual int Exit();
00126
00127
00128 protected:
00129
00133 ssMultibeamLWApplication();
00134
00138 ~ssMultibeamLWApplication();
00139
00143 vtkMultiProcessController *guiController;
00144
00148 vtkMultiProcessController *sdfController;
00149
00153 vtkSocketCommunicator *navPort;
00154
00158 vtkSocketCommunicator *bathyPort;
00159
00163 vtkSocketCommunicator *attitudePort;
00164
00168 vtkSocketCommunicator *tidePort;
00169
00173 vtkSocketCommunicator *velocimeterPort;
00174
00178 vtkSocketCommunicator *tempPort;
00179
00183 ssPolyDatatoPlanStaticFilter *planFilter;
00184
00188 ssPolyDatatoBathymetryScrollFilter *swathFilter;
00189
00193 ssPolyDatatoAttitudeScrollFilter *rollFilter;
00194
00198 ssPolyDatatoAttitudeScrollFilter *pitchFilter;
00199
00200
00201 private:
00202
00206 ssMultibeamLWApplication(const ssMultibeamLWApplication& rhs);
00207 ssMultibeamLWApplication& operator=(const ssMultibeamLWApplication& rhs);
00208
00209
00210
00211
00212
00213 public:
00217 void GUIProcess();
00218
00219 private:
00223 void SDFProcess();
00224
00228 void UpdateBathymetrySDF();
00229
00233 void UpdateAttitudeSDF();
00234
00238 void UpdateNavigationSDF();
00239
00243 void UpdateTideSDF();
00244
00248 void UpdateVelocimeterSDF();
00249
00253 void UpdateTemperatureSDF();
00254
00255 friend void ssMultibeamLWApplication_NavigationDAVRMI(void *localArg,
00256 void *,
00257 int,
00258 int remoteProcessId);
00259 friend void ssMultibeamLWApplication_BathymetryDAVRMI(void *localArg,
00260 void *,
00261 int,
00262 int remoteProcessId);
00263 friend void ssMultibeamLWApplication_AttitudeDAVRMI(void *localArg,
00264 void *,
00265 int,
00266 int remoteProcessId);
00267 friend void ssMultibeamLWApplication_TideDAVRMI(void *localArg,
00268 void *,
00269 int,
00270 int remoteProcessId);
00271 friend void ssMultibeamLWApplication_VelocimeterDAVRMI(void *localArg,
00272 void *,
00273 int,
00274 int remoteProcessId);
00275 friend void ssMultibeamLWApplication_TemperatureDAVRMI(void *localArg,
00276 void *,
00277 int,
00278 int remoteProcessId);
00279 friend void GUIProcess(vtkMultiProcessController *tlc, void *userdata);
00280 friend void SDFProcess(vtkMultiProcessController *tlc, void *userdata);
00281
00282 ssMultibeamLWWindow *toplevel;
00283 bool tclInitialized;
00284 vtkMutexLock *tclInitializedLock;
00285 };
00286
00287
00288
00289
00295 void ssMultibeamLWApplication_NavigationDAVRMI(void *localArg,
00296 void *,
00297 int ,
00298 int remoteProcessId);
00299
00305 void ssMultibeamLWApplication_BathymetryDAVRMI(void *localArg,
00306 void *,
00307 int ,
00308 int remoteProcessId);
00309
00315 void ssMultibeamLWApplication_AttitudeDAVRMI(void *localArg,
00316 void *,
00317 int ,
00318 int remoteProcessId);
00319
00325 void ssMultibeamLWApplication_TideDAVRMI(void *localArg,
00326 void *,
00327 int ,
00328 int remoteProcessId);
00329
00335 void ssMultibeamLWApplication_VelocimeterDAVRMI(void *localArg,
00336 void *,
00337 int ,
00338 int remoteProcessId);
00339
00345 void ssMultibeamLWApplication_TemperatureDAVRMI(void *localArg,
00346 void *,
00347 int ,
00348 int remoteProcessId);
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00428 #endif
00429