ssMultibeamLWApplication.h

Go to the documentation of this file.
00001 /* $Id: ssMultibeamLWApplication.h,v 1.22 2007/04/12 15:42:34 pfb Exp $ */
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 // typedef vtkKWApplication Superclass;
00022 
00023 //BTX
00024 /*
00025  * This fragment must be BTXed because, if not, an incorrect return type
00026  * will be generated in ssMultibeamLWApplicationTcl.C for the "New"
00027  * command. This indicates a fault in Build/Tools/Wrap/ssParse.y
00028  */
00029 static void GUIProcess(vtkMultiProcessController *tlc, void *userdata);
00030 static void SDFProcess(vtkMultiProcessController *tlc, void *userdata);
00031 //ETX
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    * This is needed for the friend statement in ssMultibeamLWWindow.h. I do
00211    * not understand why GUIProcess needs to be public for a friend. Investigate!
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 //                           global:
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  * $Log: ssMultibeamLWApplication.h,v $
00354  * Revision 1.22  2007/04/12 15:42:34  pfb
00355  * Changes made necessary by the upgrade from Debian Sarge to Etch.
00356  *
00357  * Revision 1.21  2006/08/02 15:43:42  pfb
00358  * Modified SdfProcess().
00359  *
00360  * Revision 1.20  2006/07/28 14:24:09  pfb
00361  * Modified to make objects of this class singletons.
00362  *
00363  * Revision 1.19  2006/07/14 14:13:56  pfb
00364  * Added Tcl_Interp arg to GuiProcess().
00365  *
00366  * Revision 1.18  2006/05/27 11:31:56  pfb
00367  * Worked on documentation.
00368  *
00369  * Revision 1.17  2006/05/08 05:54:30  pfb
00370  * Added BTX to get ssWrapTcl to work.
00371  *
00372  * Revision 1.16  2006/04/26 15:31:02  pfb
00373  * Work in progress.
00374  *
00375  * Revision 1.15  2006/04/05 02:40:58  pfb
00376  * This class makes a mess of vtkKWApplication - specifically it trashes the
00377  * vtkKWMenu in that class. I do not know why. Putting to one side for right
00378  * now.
00379  *
00380  * Revision 1.14  2005/10/19 04:13:44  pfb
00381  * Changes to accomodate update to ParaView 2.2.1
00382  *
00383  * Revision 1.13  2005/06/30 13:42:46  pfb
00384  * Documentation changes. Work in progress.
00385  *
00386  * Revision 1.12  2005/06/25 16:37:47  pfb
00387  * Seperated GUI and SDF controllers.
00388  *
00389  * Revision 1.11  2005/06/24 05:01:07  pfb
00390  * Work in progress.
00391  *
00392  * Revision 1.10  2005/06/07 12:21:58  pfb
00393  * Added Exit().
00394  *
00395  * Revision 1.9  2005/06/04 16:51:20  pfb
00396  * Split into two threads - GUI_PROCESS and SDF_PROCESS. Work in progress.
00397  *
00398  * Revision 1.8  2005/06/01 03:40:11  pfb
00399  * Added Update*SDF() member functions.
00400  *
00401  * Revision 1.7  2005/05/26 16:16:37  pfb
00402  * More on callbacks. Work in progress.
00403  *
00404  * Revision 1.6  2005/05/25 15:46:53  pfb
00405  * Added call backs. Work in progress.
00406  *
00407  * Revision 1.5  2005/05/23 05:23:55  pfb
00408  * API change.
00409  *
00410  * Revision 1.4  2005/05/18 13:14:48  pfb
00411  * Added input SDF. Work in progress.
00412  *
00413  * Revision 1.3  2005/05/10 17:08:00  pfb
00414  * Added module info.
00415  *
00416  * Revision 1.2  2004/11/03 01:47:36  pfb
00417  * Added Window() and Start(), and removed EventLoop().
00418  *
00419  * Revision 1.1  2004/11/01 07:16:07  pfb
00420  * Initial rev.
00421  *
00422  *
00423  */
00424 
00428 #endif
00429